Friday 7 June 2024

+1 Maintenance Report

Hi all,

I was on +1 maintenance from 2024-06-03 until 2024-06-07.

I started my week by looking at the NBS report, the transition tracker,
and looking for any common infrastructure related failures that needed
retries in the meantime. At the time there was only one package that
needed uploading still for the ongoing lz4 transitions, diffoscope, which I
uploaded. I used some of the retry-autopkgtest-regressions recipes that
Bryce shared and continued to find many tests that needed retries.
Like Athos, I also found the following recipe particularly useful this week:

./retry-autopkgtest-regressions --log-regex='unexpected eof from the testbed'


For the rest of the week (Tuesday through Friday) I focused on regressions
due to the Pytest 7 to 8 transition. Most package's upstream already had
relevant pytest 8 fixes that I was able to cherry-pick and fix the
regressions, but where they didn't I created the patch and forwarded it
along. Below is a list of the packages I worked on:

## yt, ipykernel, ipython, and python-dtcwt ##

These packages had nose-style tests which were deprecated in pytest 8.2.
yt, ipykernel, and ipython had some upstream fixes already so I
cherry-picked those and forwarded them to Debian. For python-dtcwt I made
the patch and forwarded it to both upstream and Debian. See LP:#2068046
for yt, LP:#2068672 for ipykernel, LP:#2068674 for ipython, and LP:#2068558
for python-dtcwt.

## terminado ##

This package's test control file was missing a test dependency which
was causing the autopkgtests to fail in environments where it wasn't
also built. It also had some pytest 8 compatibility issues which I
cherry-picked the fixes for from upstream. I forwarded both fixes to Debian.
See LP:#2068055

## skimage ##

skimage's autopkgtests were failing on s390x due to what looked like a
python3.12 and numpy issue. Since I don't have easy access to that hardware
and there was a new version in Debian, it seemed like a good candidate for
a merge; which solved the issue. See LP:#2068531

## protontricks ##

protontricks autopkgtests were failing due to changes in the caplog fixture
in pytest 8+. Upstream already had the changes here too so I cherry-picked
them and forwarded the patch to Debian. See LP:2068659

## pytest ##

Pytest introduced a regression in the teardown method for test classes
which inherited from unittest. This affected flaky test plugins like
python-flaky and pytest-rerunfailures. Coincidentally upstream applied
a fix for this as I was writing the patch, so I cherry-picked that and
forwarded it to Debian. See LP: #2068674.

## silx ##

Silx autopkgtests were failing due to referencing objects after they
had been garbage collected in test teardown. Upstream had a fix that
I cherry-picked and it fixed the issue. I forwarded the patch to Debian.
See LP:#2068521.

## others ##

There were many packages that didn't need any changes applied and simply
required rerunning their tests against newer versions of their dependencies
(other than pytest) in -proposed. In particular a number of packages depend
on python-pytest-asyncio but needed the latest version of that package
from -proposed to work. Eventually I found a common error " 'FixtureDef'
object has no attribute 'unittest' " in the logs and was able to
successfully retry the tests for the rest of the packages affected. At least:
jeepney, jupyter-client, pymodbus, python-channels-redis,
python-pytest-asyncio, and python-redis.

Similarly the i386 missing deps issue reported about last week was fixed
with a new version of astropy in -proposed and required mass retries of the
i386 tests.


# What's left for pytest

Currently there are four issue left to zero out the pytest transition:

## silx

Unrelated to my fix above for this package, there appears to be a separate
regression in ppc64el only. I was unable to reproduce the issue on the
hardware I have access to. See LP:#2068783

## python-pytest-lazy-fixture

I did not have time to investigate exactly what this package would need to
be pytest 8 compatible but since it doesn't seem to be very actively
maintained it may be more worthwhile to help along what appears to be the
alternative: pytest-lazy-fixtures. There is only one reverse-depends of
this package (prettytable). See LP:#2059330

## python-libtmux

There doesn't appear to be a pytest 8 related regression, but the package
needs some work to make the test results consistent across runs. It appears
flaky but potentially just has poor test isolation.

## pytest-rerunfailures

There is a regression in this package with pytest 8.2 which causes
non-function teardown methods to not be called at all. There was a bug
fixed upstream upstream with identical issues but this appears to have a
different cause. I documented the issue on LP:#2068778



Lastly I want to again thank my sponsors for the week. Thank you mwhudson,
dbungert, and tsimonq2.

Best,
Chris P.