Feature 10296 Pip Standardization
Creates standard template for tox.ini
Introduces 'safety' for listing upstream CVEs
Pins all versions of all upstream modules
Removes dependencies from Makefile and Dockerfile
and places them into requirements.txt
Change-Id: If2c52b101bad455534096567b4d68c2baba05d22
Signed-off-by: beierlm <mark.beierl@canonical.com>
diff --git a/tox.ini b/tox.ini
index d8d9e3b..54128a0 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,3 +1,6 @@
+#######################################################################################
+# Copyright ETSI Contributors and Others.
+#
# 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
@@ -10,26 +13,107 @@
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
+#######################################################################################
[tox]
-envlist = py3
-toxworkdir={homedir}/.tox
+envlist = black, cover, flake8, pylint, safety
+
+[tox:jenkins]
+toxworkdir = /tmp/.tox
[testenv]
-deps=nose
- mock
- pyyaml
-commands=nosetests
-
-[testenv:flake8]
+usedevelop = True
basepython = python3
-deps = flake8
+setenv = VIRTUAL_ENV={envdir}
+ PYTHONDONTWRITEBYTECODE = 1
+passenv = HOME
+deps = -r{toxinidir}/requirements.txt
+skip_install = true
+
+
+#######################################################################################
+[testenv:black]
+commands = python3 -c 'print("Skipping due to generated code")'
+
+
+#######################################################################################
+[testenv:cover]
+skip_install = false
+deps = {[testenv]deps}
+ -r{toxinidir}/requirements-test.txt
commands =
- flake8 setup.py
+ sh -c 'make clean'
+ sh -c 'make models Q=""'
+ sh -c 'rm -f nosetests.xml'
+ coverage erase
+ nose2 -C --coverage osm_im -s tests
+ coverage report --omit='*tests*'
+ coverage html -d ./cover --omit='*tests*'
+ coverage xml -o coverage.xml --omit=*tests*
+whitelist_externals = sh
-[testenv:build]
-basepython = python3
-deps = stdeb
- setuptools-version-command
-commands = python3 setup.py --command-packages=stdeb.command bdist_deb
+#######################################################################################
+[testenv:flake8]
+commands = python3 -c 'print("Skipping due to generated code")'
+
+
+#######################################################################################
+[testenv:pylint]
+commands = python3 -c 'print("Skipping due to generated code")'
+
+
+#######################################################################################
+[testenv:safety]
+setenv =
+ LC_ALL=C.UTF-8
+ LANG=C.UTF-8
+deps = {[testenv]deps}
+ safety
+commands =
+ - safety check --full-report
+
+
+#######################################################################################
+[testenv:pip-compile]
+deps = pip-tools==5.5.0
+commands =
+ - sh -c 'for file in requirements*.in ; do pip-compile -rU --no-header $file ;\
+ out=`echo $file | sed "s/.in/.txt/"` ; \
+ head -16 tox.ini >> $out ;\
+ done'
+whitelist_externals = sh
+
+
+#######################################################################################
+[testenv:dist]
+deps = {[testenv]deps}
+ -r{toxinidir}/requirements-dist.txt
+
+# In the commands, we copy the requirements.txt to be presented as a source file (.py)
+# so it gets included in the .deb package for others to consume
+commands =
+ sh -c 'make clean'
+ sh -c 'make Q=""'
+ sh -c 'cp requirements.txt osm_im/requirements.txt'
+ python3 setup.py --command-packages=stdeb.command sdist_dsc
+ sh -c 'cd deb_dist/osm-im*/ && dpkg-buildpackage -rfakeroot -uc -us'
+ sh -c 'rm osm_im/requirements.txt'
+whitelist_externals = sh
+
+#######################################################################################
+[flake8]
+ignore =
+ W291,
+ W293,
+ E123,
+ E125,
+ E226,
+ E241
+exclude =
+ .git,
+ __pycache__,
+ .tox,
+max-line-length = 120
+show-source = True
+builtins = _