"""Barre commune v0.4.1 (correctif fusion #125) — re-vendange 0.45.12. - JS vendangé VERBATIM depuis dracodev-commons, branche menu-compte-icones-svg-ns-v0-4-1 (PR commons #11), ui/barre-apps/. Le CSS est inchangé par rapport à la v0.4.0. - Correctif : en v0.4.0, les icônes du menu compte étaient créées via document.createElement() — espace de noms HTML, jamais dessinées par le navigateur (libellés décalés d'un cran d'icône, aucun glyphe visible en production). La v0.4.1 crée le et ses primitives via document.createElementNS() (espace de noms SVG). """ import hashlib from pathlib import Path R = Path(__file__).resolve().parents[1] # Empreintes SHA-256 de la source commons # (Projets/dracodev-commons, ui/barre-apps/ ; CSS : v0.4.0 # inchangé, JS : branche du correctif v0.4.1 @32a729f). SHA256_CSS_V040 = "d8cf53b2f6700ebc7499d43869d5cae256d1f74636f0113bffb174b8a6bd06ec" SHA256_JS_V041 = "82c4940e8e115ed71d95f7c0dcdc906b93e49855580cc0fec7a1ccba34f85a42" def _sha256(chemin): return hashlib.sha256((R / chemin).read_bytes()).hexdigest() def test_barre_css_js_verbatim_commons_v041(): assert _sha256("static/css/draco-barre.css") == SHA256_CSS_V040 assert _sha256("static/js/draco-barre.js") == SHA256_JS_V041 def test_js_icones_espace_de_noms_svg(): js = (R / "static/js/draco-barre.js").read_text(encoding="utf-8") assert "MENU_ICONES" in js # Le correctif : création dans l'espace de noms SVG… assert 'createElementNS(SVG_NS, "svg")' in js assert "createElementNS(SVG_NS, spec[0])" in js # …et plus aucune création HTML du svg ou des primitives. assert 'createElement("svg")' not in js assert "createElement(spec[0])" not in js # Comportements conservés. assert 'hub: "https://hub.dracodev.net/"' in js assert '"profil", "Profil"' in js assert 'data-compte-act", "deconnexion"' in js