[Python-apps-team] Bug#943449: mu-editor: autopkgtest unnecessarily tests against non-default python

Steve Langasek steve.langasek at canonical.com
Thu Oct 24 22:07:14 BST 2019


Package: mu-editor
Version: 1.0.2+dfsg-3
Severity: normal
Tags: patch
User: ubuntu-devel at lists.ubuntu.com
Usertags: origin-ubuntu focal ubuntu-patch

Dear maintainers,

With the introduction of python3.8 as a "supported" python in Ubuntu, the
mu-editor autopkgtest is now failing, looks like it's because its
dependencies are not yet python3.8-enabled:

[...]
autopkgtest [17:52:34]: test mu-editor: [-----------------------
=== python3.8 ===
============================= test session starts ==============================
platform linux -- Python 3.8.0, pytest-4.6.5, py-1.8.0, pluggy-0.13.0 -- /usr/bin/python3.8
cachedir: .pytest_cache
Using --random-order-bucket=module
Using --random-order-seed=375701

rootdir: /tmp/autopkgtest.YC64py/autopkgtest_tmp
plugins: xvfb-1.2.0, random-order-1.0.4
collecting ... collected 301 items / 11 errors / 290 selected

==================================== ERRORS ====================================
______________________ ERROR collecting tests/test_app.py ______________________
ImportError while importing test module '/tmp/autopkgtest.YC64py/autopkgtest_tmp/tests/test_app.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
tests/test_app.py:8: in <module>
    from mu.app import excepthook, run, setup_logging, debug, setup_modes
/usr/share/mu-editor/mu/app.py:34: in <module>
    from mu.interface import Window
/usr/share/mu-editor/mu/interface/__init__.py:1: in <module>
    from .main import Window
/usr/share/mu-editor/mu/interface/main.py:34: in <module>
    from mu.interface.panes import (DebugInspector, DebugInspectorItem,
/usr/share/mu-editor/mu/interface/panes.py:37: in <module>
    from qtconsole.rich_jupyter_widget import RichJupyterWidget
/usr/lib/python3/dist-packages/qtconsole/rich_jupyter_widget.py:14: in <module>
    from .jupyter_widget import JupyterWidget
/usr/lib/python3/dist-packages/qtconsole/jupyter_widget.py:24: in <module>
    from .frontend_widget import FrontendWidget
/usr/lib/python3/dist-packages/qtconsole/frontend_widget.py:22: in <module>
    from qtconsole.base_frontend_mixin import BaseFrontendMixin
/usr/lib/python3/dist-packages/qtconsole/base_frontend_mixin.py:3: in <module>
    from jupyter_client import BlockingKernelClient
/usr/lib/python3/dist-packages/jupyter_client/__init__.py:4: in <module>
    from .connect import *
/usr/lib/python3/dist-packages/jupyter_client/connect.py:23: in <module>
    import zmq
/usr/lib/python3/dist-packages/zmq/__init__.py:47: in <module>
    from zmq import backend
/usr/lib/python3/dist-packages/zmq/backend/__init__.py:40: in <module>
    reraise(*exc_info)
/usr/lib/python3/dist-packages/zmq/utils/sixcerpt.py:34: in reraise
    raise value
/usr/lib/python3/dist-packages/zmq/backend/__init__.py:27: in <module>
    _ns = select_backend(first)
/usr/lib/python3/dist-packages/zmq/backend/select.py:27: in select_backend
    mod = __import__(name, fromlist=public_api)
/usr/lib/python3/dist-packages/zmq/backend/cython/__init__.py:6: in <module>
    from . import (constants, error, message, context,
E   ImportError: cannot import name 'constants' from partially initialized module 'zmq.backend.cython' (most likely due to a circular import) (/usr/lib/python3/dist-packages/zmq/backend/cython/__init__.py)
[...]

  (http://autopkgtest.ubuntu.com/packages/m/mu-editor/focal/amd64)

I understand that it's useful to get early indications that your software is
incompatible with upcoming versions of python, but it's not appropriate to
use autopkgtests in this way, because mu-editor is an application not a
module and will only ever be executed using /usr/bin/python3 on the system -
you have added an artificial test dependency on python3-all and as a result
these failing tests will artificially block the addition of python3.8 as a
supported (but not default) python version in the archive.

The attached patch adjusts the test and the build-dependencies so that the
mu-editor tests instead test the actual behavior that is relevant to the
package.

-- 
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
Ubuntu Developer                                   https://www.debian.org/
slangasek at ubuntu.com                                     vorlon at debian.org
-------------- next part --------------
diff -Nru mu-editor-1.0.2+dfsg/debian/control mu-editor-1.0.2+dfsg/debian/control
--- mu-editor-1.0.2+dfsg/debian/control	2019-06-17 17:34:00.000000000 -0700
+++ mu-editor-1.0.2+dfsg/debian/control	2019-10-24 14:03:24.000000000 -0700
@@ -8,7 +8,7 @@
  dh-python,
  fonts-inconsolata,
  pandoc,
- python3-all (>= 3.6),
+ python3 (>= 3.6),
  python3-appdirs (>= 1.4.3),
  python3-matplotlib (>= 2.2.2),
  python3-mock,
diff -Nru mu-editor-1.0.2+dfsg/debian/tests/mu-editor mu-editor-1.0.2+dfsg/debian/tests/mu-editor
--- mu-editor-1.0.2+dfsg/debian/tests/mu-editor	2019-06-17 17:34:00.000000000 -0700
+++ mu-editor-1.0.2+dfsg/debian/tests/mu-editor	2019-10-24 14:02:47.000000000 -0700
@@ -7,12 +7,7 @@
 export HOME="$AUTOPKGTEST_TMP"
 export PYTHONPATH=/usr/share/mu-editor
 
-pythons="$(py3versions -s)"
-
 cp -a tests $AUTOPKGTEST_TMP
 cd "$AUTOPKGTEST_TMP"
 
-for py in $pythons; do
-    echo "=== $py ==="
-    xvfb-run -a $py -m pytest --random-order --tb=long --verbose
-done
+xvfb-run -a python3 -m pytest --random-order --tb=long --verbose


More information about the Python-apps-team mailing list