When running CI jobs for the operations-puppet repository, tox comes pre-installed and has run once inside the docker image:
Then when running again for the tests, if you did any modifications to files included with -r/path/to/file those are not picked up.
It seems due to a bug in tox <4:
So this task is to keep track and upgrade (whenever possible) to tox>4.
Note that we are installing tox from the debian repos, so it's tied to them.
As a workaround, you can change the path included with -r (ex. from relative to full path), or add the extra dependency at the tox level (duplicates things, but forces it to upgrade).
py2-pep8 && nagios_common
py2-pep8: skipped because could not find python interpreter with spec(s): python2.7 py2-pep8: SKIP ⚠ in 0.12 seconds
nagios_common: skipped because could not find python interpreter with spec(s): python2.7 nagios_common: SKIP (0.12 seconds) evaluation failed :( (0.25 seconds)
python2.7 is in the container`:
$ podman run --rm -it --entrypoint=python2.7 docker-registry.wikimedia.org/releng/operations-puppet:0.9.0 --version Python 2.7.16
I guess tox 4.8.0 no more recognizes python2.7 and thus we can't use it anymore. Then I am not sure whether anything in operations/puppet still relies on Python 2.7.
For py2-pep8 it is feed files having a python2 shebang which yields only two scripts:
modules/admin/files/home/ori/.binned/py:1:#!/usr/bin/env python2 modules/pybal/files/check_pybal_ipvs_diff.py:1:#!/usr/bin/env python2
tslua: failed with /bin/sh (resolves to /bin/sh) is not allowed, use allowlist_externals to allow it tslua: FAIL ✖ in 0.02 seconds
My guess is /bin/sh was previously always in the allow list
That one passes but the suite writes to stderr which is now rendered by tox with a new line and colored in red which might be confusing:
Before (tox 3.7.0):
After (tox 4.8.0):