ci: run the suite where a GNOME 50 desktop is, not where it isn't - #5
Merged
Conversation
CI has been red on main since the v2 rebuild started — six runs, every one
of them for the environment rather than for the code.
The ubuntu job could not pass in any configuration, and it took three
separate experiments to establish that:
* as it stands, `import gi` fails and pytest aborts during collection.
apt puts PyGObject in /usr/lib/python3/dist-packages, for the runner's
own python3; the venv is built from actions/setup-python, whose
--system-site-packages points at the tool-cache tree instead. The 22
"skipped" in that same line were the Gio-backed tests skipping for the
same reason, so the tier was proving far less than the log suggested.
* give the venv PyGObject and 44 tests fail: 19 of them are every
settings write being skipped with "your desktop session wasn't
running", because there is no session bus on a CI runner.
* add a private session bus and 14 remain, all of them the runner being
a 2024 desktop: ubuntu-24.04 ships gsettings-desktop-schemas 46, which
has no `accent-color` key and no org.gnome.shell, so every bundled
Look plans zero add-ons.
The archlinux container already had the right userspace and the session
bus; it was only missing packages. So the split moves: the container runs
the whole suite (`-m "not sandbox"`, both tiers), and ubuntu keeps the two
things that genuinely need no desktop — ruff and the packaging tests.
Also in the container's package list, which is what its own ten failures
were about: gsettings-desktop-schemas, gnome-settings-daemon, mutter and
gnome-shell for the schemas the pages read; gnome-desktop-4 for the
GnomeDesktop-4.0 typelib the thumbnailer needs; gnome-backgrounds for the
wallpaper catalogue the Wallpaper page scans; desktop-file-utils and
appstream so the packaging tests do not skip themselves there.
release.yml had the same broken pre-flight, so a v2.0.0 tag would have
failed before it built anything. Its "Test before shipping" step is now
the same container job, and the wheel build waits on it.
Two test modules import gi at module scope under `pytestmark =
pytest.mark.gtk`, but a marker deselects after collection, so -m "not gtk"
never got the chance. They now carry the importorskip guard the other
gi-dependent modules already use: on a machine with no PyGObject they
skip instead of aborting the run. Verified both ways — the abort
reproduces without the guard, collection is clean with it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0165p9a9fF1VfbWaQEGD7yYW
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
blyatiful1
pushed a commit
that referenced
this pull request
Aug 26, 2026
Brings in the CI restructure from #5 so this PR's checks run against the container job rather than the ubuntu one that could not pass.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CI has been red on
mainsince the v2 rebuild started — six runs, every one of them failing for the environment rather than for the code. This is what #4 stood down on, fixed properly.What was wrong
The ubuntu job could not pass in any configuration. Three experiments, run against a matching ubuntu-24.04 box:
giin the venv)giproblem is the venv, not the apt line.python3-gilands in/usr/lib/python3/dist-packages, for the runner's ownpython3; the venv is built fromactions/setup-python, whose--system-site-packagespoints at the tool-cache tree instead. The 22 "skipped" in that same log line were the Gio-backed tests skipping for the same reason — the tier was proving much less than it looked.your desktop session wasn't running, which is 19 failures that say nothing about the diff.gsettings-desktop-schemas46. Noaccent-colorkey, noorg.gnome.shell, so every bundled Look plans zero add-ons:hyperclass declares 6 add-ons and plans 0.The archlinux container already had the right userspace and the session bus (
dbus-run-session). It was only missing packages — its own ten failures wereNamespace GnomeDesktop not available, threeschema '…' is not installed, and an empty wallpaper catalogue.What changed
ci.yml— the split moves rather than gets patched:tests(Arch container) runs the whole suite,-m "not sandbox", both tiers at once, under broadway +dbus-run-session. Package list gainsgsettings-desktop-schemas,gnome-settings-daemon,mutter,gnome-shell(the schemas the pages read),gnome-desktop-4(theGnomeDesktop-4.0typelib the thumbnailer needs),gnome-backgrounds(the catalogue the Wallpaper page scans), anddesktop-file-utils+appstreamso the packaging tests don't skip themselves there.lint-and-packaging(ubuntu) keeps only what genuinely needs no desktop: ruff, and the three packaging suites.release.ymlhad the same broken pre-flight — av2.0.0tag would have failed before building anything. "Test before shipping" is now that same container job, and the wheel buildneeds:it.tests/unit/test_applyrunner.py,tests/unit/test_window.pyimportgiat module scope underpytestmark = pytest.mark.gtk, but a marker deselects after collection, so-m "not gtk"never got the chance. They now carry the samepytest.importorskip("gi", …)guard the other gi-dependent modules already use.Verification
Run on an ubuntu-24.04 box with the runner's own apt packages:
Interrupted: 2 errors during collection), clean with it (1340/1417 tests collected).--system-site-packagesdoes seegi— that's the mechanism the old job was missing.dbus-run-session.ruffclean,31 passed, 1 skippedacross the three packaging suites, with no PyGObject and no session.python -m build --wheelstill produces the wheel.What I could not run here is the Arch container itself (no container runtime in this environment), so this PR's own CI is the first execution of the container job. If the remaining three widget failures (
ActionRowhas noset_value, and two reset-button assertions) turn out not to be schema-caused after all, they're real findings and I'll chase them here.Checklist
python -m pytest -qpasses — for the parts runnable without a GNOME 50 desktop; see Verification.python -m gtheme validate allpasses — not run: needs the desktop this environment does not have.Generated by Claude Code