Skip to content

check_exec_ratchet TestCli: crash decode cp1252 (em-dash stderr) sur main Windows — stderr=None masque le verdict #17427

Description

@jsboige

Constat

scripts/notebook_tools/tests/test_check_exec_ratchet.py::TestCli — 2 tests échouent sur main propre sous Windows (vérifié le 2026-09-22) :

  • test_exit_1_on_regression — TypeError: argument of type 'NoneType' is not iterable sur assert "::error file=a.ipynb" in out.stderr
  • test_failure_points_to_failbydesign_protocol — même signature

Cause

Le test lance check_exec_ratchet.py en subprocess dont le stderr contient un em-dash (byte 0x97 en cp1252 Windows). Le reader thread du subprocess.run(text=True) décode en UTF-8 par défaut → UnicodeDecodeError: 'utf-8' codec can't decode byte 0x97 in position 111 → stderr=None → le assert échoue sur None (le vrai échec d'origine étant masqué).

Classe connue : subprocess sans encoding="utf-8" explicite sous Windows cp1252 (famille leçon cp1252 consolidée).

Repro

python -m pytest scripts/notebook_tools/tests/test_check_exec_ratchet.py::TestCli -q
# 2 failed (stderr=None / UnicodeDecodeError)

PYTHONIOENCODING=utf-8 python -m pytest scripts/notebook_tools/tests/test_check_exec_ratchet.py::TestCli -q
# 4 passed

Vérifié identique sur main propre et sur la branche feature/17416-causalbridges-renum — base-inherited, découvert via le check Exec-sequence ratchet (base vs PR) de la PR #17421 (étape « Organ unit tests »).

Attendu

Passer encoding="utf-8" (ou errors="replace") au subprocess.run du harnais de test (et vérifier les appels de l'organe lui-même) pour que le verdict du test porte sur le ratchet, pas sur la page de code de la machine.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions