From: Krzysztof Frukacz Date: Tue, 31 Jan 2017 07:03:29 +0000 (+0100) Subject: Add unit tests X-Git-Tag: release/mercury~2 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=8418568d784533505d9f176b259680cccec0ab65;p=vnfsdk%2Fpkgtools.git Add unit tests Added unit tests with tox configuration Change-Id: I99a5107689c0df198cdc22e6272176b8c4747896 Signed-off-by: Krzysztof Frukacz Issue-id: VNFSDK-60 --- diff --git a/cli/__main__.py b/cli/__main__.py index 125fff1..e3fb1c1 100644 --- a/cli/__main__.py +++ b/cli/__main__.py @@ -15,6 +15,7 @@ # from packager import csar +import sys import logging import argparse from aria import install_aria_extensions @@ -61,7 +62,7 @@ def csar_validate_func(namespace): shutil.rmtree(workdir, ignore_errors=True) -def main(): +def parse_args(args_list): """ CLI entry point """ @@ -104,7 +105,10 @@ def main(): 'source', help='CSAR file location') - args = parser.parse_args() + return parser.parse_args(args_list) + +def main(): + args = parse_args(sys.argv) args.func(args) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..d78727c --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1,19 @@ +# +# 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 os + +ROOT_DIR = os.path.dirname(os.path.dirname(__file__)) diff --git a/tests/cli/__init__.py b/tests/cli/__init__.py new file mode 100644 index 0000000..a9e8dd2 --- /dev/null +++ b/tests/cli/__init__.py @@ -0,0 +1,16 @@ +# +# 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. +# + diff --git a/tests/cli/test_cli.py b/tests/cli/test_cli.py new file mode 100644 index 0000000..0be9ec6 --- /dev/null +++ b/tests/cli/test_cli.py @@ -0,0 +1,26 @@ +# +# 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 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:') + diff --git a/tests/packager/__init__.py b/tests/packager/__init__.py new file mode 100644 index 0000000..a9e8dd2 --- /dev/null +++ b/tests/packager/__init__.py @@ -0,0 +1,16 @@ +# +# 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. +# + diff --git a/tests/packager/test_package.py b/tests/packager/test_package.py new file mode 100644 index 0000000..f0c27d4 --- /dev/null +++ b/tests/packager/test_package.py @@ -0,0 +1,37 @@ +# +# 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 filecmp +from packager import csar +import logging +import tempfile +import shutil + +def test_CSARWrite(): + CSAR_RESOURCE_DIR = 'tests/resources/csar' + CSAR_ENTRY_FILE = 'test_entry.yaml' + CSAR_OUTPUT_FILE = 'output.csar' + + csar_target_dir = tempfile.mkdtemp() + csar_extract_dir = tempfile.mkdtemp() + try: + csar.write(CSAR_RESOURCE_DIR, CSAR_ENTRY_FILE, csar_target_dir + '/' + CSAR_OUTPUT_FILE, logging) + csar.read(csar_target_dir + '/' + CSAR_OUTPUT_FILE, csar_extract_dir, logging) + assert filecmp.cmp(CSAR_RESOURCE_DIR + '/' + CSAR_ENTRY_FILE, csar_extract_dir + '/' + CSAR_ENTRY_FILE ) + finally: + shutil.rmtree(csar_target_dir, ignore_errors=True) + shutil.rmtree(csar_extract_dir, ignore_errors=True) + + diff --git a/tests/requirements.txt b/tests/requirements.txt new file mode 100644 index 0000000..9a91772 --- /dev/null +++ b/tests/requirements.txt @@ -0,0 +1,22 @@ +# +# 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. +# + +testtools +mock==1.0.1 +pylint==1.6.4 +pytest==3.0.2 +pytest-cov==2.3.1 +pytest-mock==1.2 \ No newline at end of file diff --git a/tests/resources/csar/test_entry.yaml b/tests/resources/csar/test_entry.yaml new file mode 100644 index 0000000..d1aed3c --- /dev/null +++ b/tests/resources/csar/test_entry.yaml @@ -0,0 +1,23 @@ +# +# 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. +# + +tosca_definitions_version: tosca_simple_yaml_1_0 + +topology_template: + node_templates: + test_node: + type: tosca.nodes.Compute + diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..6e0b55c --- /dev/null +++ b/tox.ini @@ -0,0 +1,37 @@ +# +# 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. +# + +[tox] +envlist=py27 + +[testenv] +passenv = + TRAVIS + PYTHON + PYTHON_VERSION + PYTHON_ARCH +setenv = + INSTALL_CTX=1 +deps = + -rrequirements.txt + -rtests/requirements.txt +basepython = + py27: python2.7 + +[testenv:py27] +commands = + pytest tests --cov-report term-missing --cov packager --cov cli +