summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrzysztof Frukacz <krzysztof.frukacz@gigaspaces.com>2017-01-31 08:03:29 +0100
committerKrzysztof Frukacz <krzysztof.frukacz@gigaspaces.com>2017-01-31 09:37:10 +0100
commit8418568d784533505d9f176b259680cccec0ab65 (patch)
treedf3ff7ca6137095d6bcd91d8c13d4e4a0dfdab9b
parent056955f18a4deb5b9aa6dfc1745fc61e9a66c0cc (diff)
Add unit tests
Added unit tests with tox configuration Change-Id: I99a5107689c0df198cdc22e6272176b8c4747896 Signed-off-by: Krzysztof Frukacz <krzysztof.frukacz@gigaspaces.com> Issue-id: VNFSDK-60
-rw-r--r--cli/__main__.py8
-rw-r--r--tests/__init__.py19
-rw-r--r--tests/cli/__init__.py16
-rw-r--r--tests/cli/test_cli.py26
-rw-r--r--tests/packager/__init__.py16
-rw-r--r--tests/packager/test_package.py37
-rw-r--r--tests/requirements.txt22
-rw-r--r--tests/resources/csar/test_entry.yaml23
-rw-r--r--tox.ini37
9 files changed, 202 insertions, 2 deletions
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
+