Feature 10296 Pip Standardization
Creates standard template for tox.ini
Introduces 'safety' for listing upstream CVEs
Pins all versions of all upstream modules
Removes Makefile step and places all build logic into tox.ini
Change-Id: I841f19700b462aed919cf7bc55f1b0a38728ef3e
Signed-off-by: beierlm <mark.beierl@canonical.com>
diff --git a/tox.ini b/tox.ini
index 68c6211..d244554 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,50 +1,124 @@
-##
-# Copyright 2020 ArctosLabs Scandinavia AB
+#######################################################################################
+# 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
+# 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
+# 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.
-##
+# 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 = py3
+envlist = black, cover, flake8, pylint, safety
+
+[tox:jenkins]
+toxworkdir = /tmp/.tox
[testenv]
+usedevelop = True
basepython = python3
-install_command = python3 -m pip install -U {opts} {packages}
-deps = -rrequirements.txt
- -rtest-requirements.txt
-commands = python3 -m unittest discover -v
+setenv = VIRTUAL_ENV={envdir}
+ PYTHONDONTWRITEBYTECODE = 1
+deps = -r{toxinidir}/requirements.txt
-[testenv:coverage]
-basepython = python3
-deps = -rrequirements.txt
- -rtest-requirements.txt
-commands = coverage run -m unittest discover
- coverage report --omit='*site-packages*','*test*','*__init__*'
- coverage html -d ./.tox/coverage/HTMLreport --omit='*site-packages*','*test*','*__init__*'
- coverage xml -o ./.tox/coverage/XMLreport/coverage.xml --omit='*site-packages*','*test*','*__init__*'
- coverage erase
+#######################################################################################
+[testenv:black]
+deps = black
+skip_install = true
+commands =
+ - black --check --diff osm_pla/
+
+#######################################################################################
+[testenv:cover]
+deps = {[testenv]deps}
+ -r{toxinidir}/requirements-dev.txt
+ -r{toxinidir}/requirements-test.txt
+commands =
+ sh -c 'rm -f nosetests.xml'
+ coverage erase
+ nose2 -C --coverage osm_pla
+ coverage report --omit='*tests*'
+ coverage html -d ./cover --omit='*tests*'
+ coverage xml -o coverage.xml --omit=*tests*
+whitelist_externals = sh
+
+
+#######################################################################################
[testenv:flake8]
-basepython = python3
deps = flake8
- -rrequirements.txt
-commands = flake8 {toxinidir}/osm_pla/ {toxinidir}/setup.py \
- --max-line-length 120 \
- --exclude test_mznmodels.py,.svn,CVS,.gz,.git,__pycache__,.tox,local,temp
+commands =
+ flake8 osm_pla/ setup.py
-[testenv:build]
-basepython = python3
-# changedir ={toxinidir}
-deps = stdeb
- setuptools-version-command
- -rrequirements.txt
-commands = python3 setup.py --command-packages=stdeb.command bdist_deb
+
+#######################################################################################
+[testenv:pylint]
+deps = {[testenv]deps}
+ -r{toxinidir}/requirements-dev.txt
+ -r{toxinidir}/requirements-test.txt
+ pylint
+commands =
+ pylint -E osm_pla
+
+
+#######################################################################################
+[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 'cp requirements.txt osm_pla/requirements.txt'
+ python3 setup.py --command-packages=stdeb.command sdist_dsc
+ sh -c 'cd deb_dist/osm-pla*/ && dpkg-buildpackage -rfakeroot -uc -us'
+ sh -c 'rm osm_pla/requirements.txt'
+whitelist_externals = sh
+
+#######################################################################################
+[flake8]
+ignore =
+ W291,
+ W293,
+ W503,
+ E123,
+ E125,
+ E226,
+ E241
+exclude =
+ .git,
+ __pycache__,
+ .tox,
+ test_mznmodels.py
+max-line-length = 120
+show-source = True
+builtins = _