Repository navigation
ci: test on Python 3.12, 3.13 and 3.14 - #2357
Open
jorgeecardona wants to merge 2 commits into
Open
jorgeecardona wants to merge 2 commits into
jorgeecardona wants to merge 2 commits into
Conversation
The fixture handed Guake a single Path("/foobar") object that outlived
the fs.pause()/resume() around Guake(). That breaks depending on the
Python version: a FakePath created before the pause fails on 3.12 while
paused (pyfakefs looks up os.path.filesystem, which is gone), and a real
Path created during the pause bypasses the fake fs on 3.8-3.10, where
pathlib binds the accessor at construction. Return a fresh Path from each
call instead, so it is always created under the filesystem active at
that moment. Verified on 3.8-3.14 in CI.
Nothing proved Guake runs on a current Python; the matrix stopped at 3.11. The locked dependencies install on 3.12-3.14 unchanged. 3.15 is left out until the lint toolchain (pylint 3.3, black 24) is verified on it. fail-fast: false so one failing version no longer cancels the others and every version's result is visible.
There was a problem hiding this comment.
🟢 Approval recommended
The focused compatibility changes are correct and validated across every configured Python version.
0 open findings
What changed in this PR
Extends CI coverage through Python 3.14 and fixes a pyfakefs fixture compatibility issue.
Changes:
- Tests Python 3.8–3.14 without fail-fast cancellation.
- Creates filesystem-sensitive
Pathobjects per invocation. - Verified all seven Python jobs pass in the linked run.
| File | Description |
|---|---|
.github/workflows/ci.yml |
Expands the Python matrix and disables fail-fast. |
guake/tests/test_guake.py |
Fixes Path lifecycle across pyfakefs pause/resume. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
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.
The matrix stopped at 3.11, so nothing showed whether Guake runs on a current Python. It does: the locked dependencies install unchanged on 3.12 to 3.14, and the only failure was a test-fixture bug.
tests: thegfixture handed Guake onePath("/foobar")that outlivedfs.pause()/resume(). A FakePath fails on 3.12 while paused; a real Path bypasses the fake fs on 3.8 to 3.10. Return a fresh Path per call instead.ci: add 3.12, 3.13, 3.14.fail-fast: falseso one version's failure no longer cancels the others (that is what hid the 3.12 bug).All seven versions pass on my fork: https://github.com/jorgeecardona/guake/actions/runs/38172580472