Skip to content

test: retry Tk setup when tkinterdnd2 fails to load tkdnd (master CI red since 2026-11-09) - #13

Open
lukisch wants to merge 1 commit into
masterfrom
claude/dreamy-lamport-w6oyd3
Open

lukisch wants to merge 1 commit into
masterfrom
claude/dreamy-lamport-w6oyd3

Conversation

@lukisch

@lukisch lukisch commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator

Der CI-Workflow auf master ist seit bfbcb9a rot (Run 42625549084). Betroffen ist ein Job von 13: Pytest · windows-latest · Py 3.12 mit 253 passed, 5 skipped, 1 error.

Ursache

ERROR tests/test_collection_export_lifecycle.py::test_delayed_close_save_failure_preserves_window_and_edits
  - RuntimeError: Unable to load tkdnd library.

Die Tk-Fixtures versuchen den Aufbau von App() bereits dreimal, fangen dabei aber nur tk.TclError. tkinterdnd2 wandelt ein fehlgeschlagenes package require tkdnd in einen einfachen RuntimeError um (TkinterDnD.py, _require). Dieser eine Fehlertyp ging deshalb am Retry vorbei. Die übrigen 12 Jobs und alle anderen Tests desselben Jobs waren grün; der Fehler ist ein sporadischer Ladefehler auf dem Runner, kein Produktfehler.

Änderung

Nur Tests, kein Produktivcode:

  • tests/test_collection_export_lifecycle.py und tests/test_ui_accessibility.py: Die vorhandene Retry-Schleife fängt zusätzlich RuntimeError, sofern die Meldung tkdnd enthält. Andere RuntimeError werden unverändert weitergereicht.

Prüfung

  • Beide Dateien kompilieren (py_compile).
  • Die Fehlerquelle in tkinterdnd2 habe ich im Paketquelltext nachgelesen.
  • Ausführen konnte ich die Tk-Tests nicht (kein tkinter in meiner Umgebung). Der Beleg ist die CI-Matrix dieses PRs.

Grenze

Die Änderung macht den Lauf gegen einen einzelnen fehlgeschlagenen Ladeversuch robust. Warum tkdnd auf dem Windows-Runner gelegentlich nicht lädt, ist damit nicht geklärt. Schlägt das Laden dreimal hintereinander fehl, wird der Test in test_collection_export_lifecycle.py weiterhin rot und test_ui_accessibility.py überspringt wie bisher.


Generated by Claude Code

tkinterdnd2 converts a failed 'package require tkdnd' into a plain
RuntimeError('Unable to load tkdnd library.'). The existing three-attempt
retry in the Tk test fixtures only caught tk.TclError, so one transient
load failure on a Windows runner errored the test (master run 42625549084,
Windows / Python 3.12: 253 passed, 1 error).

Catch that specific RuntimeError in the same retry loop. Other
RuntimeErrors are re-raised unchanged.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01THB2EyXE5J3ixR7k3GMr13
@github-actions

Copy link
Copy Markdown

Welcome, and thanks for your first pull request in this repository.

A maintainer will review it soon. Please make sure:

  • Your changes are tested
  • Documentation is updated if needed
  • The PR description explains what and why

Thanks for contributing.

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