#
# Copyright (c) 2017 GigaSpaces Technologies Ltd. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#

import pytest
from vnfsdk_pkgtools.cli import  __main__

def test_main(capsys):
    with pytest.raises(SystemExit):
        args = __main__.parse_args(['csar-create', '-h'])
        args.func(args)
    out, err = capsys.readouterr()
    assert out.startswith('usage:')

