Add unit tests
authorKrzysztof Frukacz <krzysztof.frukacz@gigaspaces.com>
Tue, 31 Jan 2017 07:03:29 +0000 (08:03 +0100)
committerKrzysztof Frukacz <krzysztof.frukacz@gigaspaces.com>
Tue, 31 Jan 2017 08:37:10 +0000 (09:37 +0100)
Added unit tests with tox configuration

Change-Id: I99a5107689c0df198cdc22e6272176b8c4747896
Signed-off-by: Krzysztof Frukacz <krzysztof.frukacz@gigaspaces.com>
Issue-id: VNFSDK-60

cli/__main__.py
tests/__init__.py [new file with mode: 0644]
tests/cli/__init__.py [new file with mode: 0644]
tests/cli/test_cli.py [new file with mode: 0644]
tests/packager/__init__.py [new file with mode: 0644]
tests/packager/test_package.py [new file with mode: 0644]
tests/requirements.txt [new file with mode: 0644]
tests/resources/csar/test_entry.yaml [new file with mode: 0644]
tox.ini [new file with mode: 0644]

index 125fff1..e3fb1c1 100644 (file)
@@ -15,6 +15,7 @@
 #\r
 \r
 from packager import csar\r
+import sys\r
 import logging\r
 import argparse\r
 from aria import install_aria_extensions\r
@@ -61,7 +62,7 @@ def csar_validate_func(namespace):
         shutil.rmtree(workdir, ignore_errors=True)\r
 \r
 \r
-def main():\r
+def parse_args(args_list):\r
     """\r
     CLI entry point\r
     """\r
@@ -104,7 +105,10 @@ def main():
         'source',\r
         help='CSAR file location')\r
 \r
-    args = parser.parse_args()\r
+    return parser.parse_args(args_list)\r
+\r
+def main():\r
+    args = parse_args(sys.argv)\r
     args.func(args)\r
 \r
 \r
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644 (file)
index 0000000..d78727c
--- /dev/null
@@ -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 (file)
index 0000000..a9e8dd2
--- /dev/null
@@ -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 (file)
index 0000000..0be9ec6
--- /dev/null
@@ -0,0 +1,26 @@
+#\r
+# Copyright (c) 2017 GigaSpaces Technologies Ltd. All rights reserved.\r
+#\r
+# Licensed under the Apache License, Version 2.0 (the "License"); you may\r
+# not use this file except in compliance with the License. You may obtain\r
+# a copy of the License at\r
+#\r
+#      http://www.apache.org/licenses/LICENSE-2.0\r
+#\r
+# Unless required by applicable law or agreed to in writing, software\r
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\r
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r
+# License for the specific language governing permissions and limitations\r
+# under the License.\r
+#\r
+\r
+import pytest\r
+from cli import  __main__\r
+\r
+def test_main(capsys):\r
+    with pytest.raises(SystemExit):\r
+        args = __main__.parse_args(['csar-create', '-h'])\r
+        args.func(args)\r
+    out, err = capsys.readouterr()\r
+    assert out.startswith('usage:')\r
+\r
diff --git a/tests/packager/__init__.py b/tests/packager/__init__.py
new file mode 100644 (file)
index 0000000..a9e8dd2
--- /dev/null
@@ -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 (file)
index 0000000..f0c27d4
--- /dev/null
@@ -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 (file)
index 0000000..9a91772
--- /dev/null
@@ -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 (file)
index 0000000..d1aed3c
--- /dev/null
@@ -0,0 +1,23 @@
+#\r
+# Copyright (c) 2017 GigaSpaces Technologies Ltd. All rights reserved.\r
+#\r
+# Licensed under the Apache License, Version 2.0 (the "License"); you may\r
+# not use this file except in compliance with the License. You may obtain\r
+# a copy of the License at\r
+#\r
+#      http://www.apache.org/licenses/LICENSE-2.0\r
+#\r
+# Unless required by applicable law or agreed to in writing, software\r
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\r
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r
+# License for the specific language governing permissions and limitations\r
+# under the License.\r
+#\r
+\r
+tosca_definitions_version:  tosca_simple_yaml_1_0\r
+\r
+topology_template:\r
+  node_templates:\r
+    test_node:\r
+      type: tosca.nodes.Compute\r
+\r
diff --git a/tox.ini b/tox.ini
new file mode 100644 (file)
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
+