Get more granular with Python warnings in tests
authorJeremy Stanley <fungi@yuggoth.org>
Sat, 17 Apr 2021 15:44:36 +0000 (15:44 +0000)
committerJeremy Stanley <fungi@yuggoth.org>
Sat, 17 Apr 2021 15:44:36 +0000 (15:44 +0000)
Apparently, the PYTHONWARNINGS envvar has a rather flexible grammar
which can do things like exclude specific modules. Take advantage of
this to temporarily whitelist persistent problems in dependencies
(particularly packaging ecosystem tools/libraries) until they're
solved by their respective upstreams.

tox.ini

diff --git a/tox.ini b/tox.ini
index 7cbc5e4..7c88da9 100644 (file)
--- a/tox.ini
+++ b/tox.ini
@@ -12,14 +12,22 @@ ignore_basepython_conflict = True
 description = run the functional selftest with optimized configuration
 basepython = python3
 usedevelop = True
-# TODO(fungi) Switch this to "error" once
-# https://github.com/pypa/setuptools/issues/2086 and
-# https://github.com/pypa/setuptools/issues/2466 are fixed in a new release of
-# Setuptools and the vendored copy in Python 3.8 and later updated with it;
-# also that won't work for Python 3.6 due to the older Setuptools there still
-# calling imp instead of importlib so probably not while we still support 3.6
+# TODO(fungi) Switch this to "error" once the following are solved
+#
+# py310... importlib._bootstrap raises ImportWarning:
+#   _SixMetaPathImporter.find_spec() not found; falling back to find_module()
+# all... pip._vendor.packaging.version raises DeprecationWarning: Creating a
+#   LegacyVersion has been deprecated and will be removed in the next major
+#   release
+# yamllint... pip._vendor.packaging.specifiers raises DeprecationWarning:
+#   Creating a LegacyVersion has been deprecated and will be removed in the
+#   next major release
+# py310... pip._vendor.packaging.tags and setuptools both raise
+#   DeprecationWarning: The distutils package is deprecated and slated for
+#   removal in Python 3.12. Use setuptools or check PEP 632 for potential
+#   alternatives
 setenv =
-    PYTHONWARNINGS=default::DeprecationWarning
+    PYTHONWARNINGS = error, ignore:::importlib._bootstrap, ignore:::pip._vendor.packaging.version, ignore:::pip._vendor.packaging.specifiers, ignore:::pip._vendor.packaging.tags, ignore:::setuptools
     VIRTUALENV_CREATOR = venv
 commands = mudpy_selftest mudpy/tests/fixtures/test_daemon.yaml