From 8418568d784533505d9f176b259680cccec0ab65 Mon Sep 17 00:00:00 2001 From: Krzysztof Frukacz Date: Tue, 31 Jan 2017 08:03:29 +0100 Subject: Add unit tests Added unit tests with tox configuration Change-Id: I99a5107689c0df198cdc22e6272176b8c4747896 Signed-off-by: Krzysztof Frukacz Issue-id: VNFSDK-60 --- tests/__init__.py | 19 ++++++++++++++++++ tests/cli/__init__.py | 16 ++++++++++++++++ tests/cli/test_cli.py | 26 +++++++++++++++++++++++++ tests/packager/__init__.py | 16 ++++++++++++++++ tests/packager/test_package.py | 37 ++++++++++++++++++++++++++++++++++++ tests/requirements.txt | 22 +++++++++++++++++++++ tests/resources/csar/test_entry.yaml | 23 ++++++++++++++++++++++ 7 files changed, 159 insertions(+) create mode 100644 tests/__init__.py create mode 100644 tests/cli/__init__.py create mode 100644 tests/cli/test_cli.py create mode 100644 tests/packager/__init__.py create mode 100644 tests/packager/test_package.py create mode 100644 tests/requirements.txt create mode 100644 tests/resources/csar/test_entry.yaml (limited to 'tests') 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 + -- cgit 1.2.3-korg