54 lines
2.3 KiB
Python
54 lines
2.3 KiB
Python
"""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 lui aussi verbatim : la source
|
|
commons v0.4.1 y ajoute le resserrement du menu compte
|
|
(min-width 248 → 232 px, demande de Bruno, @edde1b5).
|
|
- 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 <svg> 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/ ; branche du
|
|
# correctif v0.4.1 @edde1b5 : JS espace de noms SVG, CSS
|
|
# menu compte resserré à 232 px).
|
|
SHA256_CSS_V041 = "874b26eafba5b3e174140280415edbae00cd38bc4beb39d897a4b4c5b923af6e"
|
|
SHA256_JS_V041 = "82c4940e8e115ed71d95f7c0dcdc906b93e49855580cc0fec7a1ccba34f85a42"
|
|
|
|
|
|
def _sha256(chemin):
|
|
return hashlib.sha256((R / chemin).read_bytes()).hexdigest()
|
|
|
|
|
|
def test_barre_css_js_verbatim_commons_v041():
|
|
# Remplacé en 0.46.1 : la re-vendange v0.5.0 (HUB-18, thème
|
|
# commun) supersède l'empreinte JS v0.4.1 — l'empreinte courante
|
|
# est verrouillée par tests/test_barre_v050.py. Le CSS, inchangé
|
|
# en v0.5.0, garde son empreinte v0.4.1 ; le JS a quitté la v0.4.1.
|
|
assert _sha256("static/css/draco-barre.css") == SHA256_CSS_V041
|
|
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
|