Skip to content

ci: test on Python 3.12, 3.13 and 3.14 - #2357

Open
jorgeecardona wants to merge 2 commits into
Guake:masterfrom
jorgeecardona:ci-python-3.12-3.15
Open

jorgeecardona wants to merge 2 commits into
Guake:masterfrom
jorgeecardona:ci-python-3.12-3.15

Conversation

@jorgeecardona

Copy link
Copy Markdown
Collaborator

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: the g fixture handed Guake one Path("/foobar") that outlived fs.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: false so one version's failure no longer cancels the others (that is what hid the 3.12 bug).
  • 3.15 left out until pylint 3.3 and black 24 are verified on it. No user-facing change, so no reno note.

All seven versions pass on my fork: https://github.com/jorgeecardona/guake/actions/runs/38172580472

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.
Copilot AI balanced review requested due to automatic review settings October 11, 2026 20:34

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 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 Path objects 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants