Open
Description
This issue is perhaps one of the weirdest and most obscure I've seen. My investigation began in jaraco/jaraco.xonsh#1. The summary is this:
- In GitHub actions (only), during collection, when attempting to collect
docs/conf.py
, something outside the call stack attempts toimport jaraco.xonsh.docs
, even thoughjaraco.xonsh
is a module anddocs
is a sibling ofjaraco
. - The issue is present in multiple Python versions (at least 3.10-3.12).
- The issue does not replicate when testing locally (either in a Linux Docker container or in macOS).
- The issue does replicate when using act to simulate the GitHub actions using Docker.
- Pinning to pytest<8.2 suppresses the failure.
- Disabling the xonsh plugin suppresses the failure.
- Note that jaraco.xonsh is a xonsh module in a PEP 420 namespace.
- Importing
jaraco.xonsh
might not be problematic except:- xonsh itself has a pytest plugin that configures subprocesses to raise on error
- The
jaraco.xonsh
module hasn't been collected or tested (in earlier runs or with pytest 8.2 when it passes locally).
As you might imagine, creating a minimal example is near impossible given the peculiarities of this scenario. The jaraco.xonsh project is nearly a minimal example in itself. The easiest way to replicate the issue is to clone the project at 249226010f9c9e5490dab851947efba2dceecb63, install act, and run the command in jaraco/jaraco.xonsh#1 (comment).
Questions for which I'm hoping to find answers:
- What is it about GHA that the issue only occurs there?
- What is it that's trying to import
jaraco.xonsh.docs
and why doesn't it show up in the stack trace? - What's new in pytest 8.2 that would trigger this behavior?
- How is it that collecting "docs/conf.py" would ever try to import "jaraco.xonsh.docs"?