[DTP-Worker] hardening correctness · le critère CLI de l'audit 4Big (q4lib/criteria.py) détectait l'entrypoint __main__ par un littéral figé double-quoté → loupait silencieusement les gardes simple-quotées / « Yoda » / sans-espaces (toutes du Python valide) → sous-scorage CLI −20 pts d'un module sain (violation #6)
Même racine que le fix ASCII ac595d0 : une détection assume une graphie là où le langage admet plusieurs formes. Fix = regex de FORME (_MAIN_GUARD_RE : 2 styles de guillemets · ordre inversé · espacement libre) + teeth test_cli_detects_single_quoted_and_yoda_guards (3 fixtures, prouvé mordant : ancien littéral rend False sur les 3, nouvelle regex True). Robustesse pure : les 50 gardes du dépôt sont double-quotées et toujours matchées → aucun score ne bouge, quality_report.json byte-identique (audit_4big s'auto-exclut de son scoring). Cascade régression uniquement : 626/609 → 627/610 (nouveau test) + fiches qa/audit_4big 35→36 & agrégat & backend 626→627 re-dérivés (RED check_readme_claims). Sweep préalable : classe ASCII-vs-Unicode close au niveau CODE (générateurs+libs+gates shell tous ASCII-par-domaine sauf les 2 compteurs test déjà \w).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -137,6 +137,27 @@ class CriteriaTest(unittest.TestCase):
|
||||
mod = _make_module(d, cli=False)
|
||||
self.assertFalse(criteria.crit_cli(mod)["passed"])
|
||||
|
||||
def test_cli_detects_single_quoted_and_yoda_guards(self):
|
||||
# Robustesse : `if __name__ == '__main__':` (simple quote) et la forme
|
||||
# « Yoda » `if "__main__" == __name__:` sont du Python VALIDE — un
|
||||
# entrypoint réel. Le littéral figé `'__name__ == "__main__"'` les
|
||||
# loupait → sous-scorage silencieux du critère CLI (−20 pts sur un
|
||||
# module sain), en violation du cœur anti-invention #6 de l'audit.
|
||||
for guard in ("if __name__ == '__main__':\n pass\n",
|
||||
'if "__main__" == __name__:\n pass\n',
|
||||
"if __name__=='__main__':\n pass\n"):
|
||||
with tempfile.TemporaryDirectory() as d:
|
||||
mod = os.path.join(d, "mod")
|
||||
os.makedirs(mod)
|
||||
with open(os.path.join(mod, "mod_gen.py"), "w",
|
||||
encoding="utf-8") as fh:
|
||||
fh.write('import argparse\n'
|
||||
'ap = argparse.ArgumentParser()\n'
|
||||
'sub = ap.add_subparsers()\n'
|
||||
'sub.add_parser("build")\n' + guard)
|
||||
self.assertTrue(criteria.crit_cli(mod)["passed"],
|
||||
f"garde non détectée : {guard!r}")
|
||||
|
||||
def test_handoff_fails_without_manifest(self):
|
||||
with tempfile.TemporaryDirectory() as d:
|
||||
mod = _make_module(d, handoff=False)
|
||||
|
||||
Reference in New Issue
Block a user