From 8ce3b4b4216956a1511f446c2b8efda36041cdb2 Mon Sep 17 00:00:00 2001 From: Spark Date: Sun, 25 Oct 2026 22:38:53 +0000 Subject: [PATCH] =?UTF-8?q?test:=20r=C3=A9parer=20la=20fuite=20mock=5Fhttp?= =?UTF-8?q?=20=E2=86=92=20og=5Ffetcher=20et=20le=20marqueur=20page-templat?= =?UTF-8?q?es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - mock_http (test_agent_web_tools) : og_fetcher, importé paresseusement par url_fetch pendant la fenêtre patchée, figeait la factory mockée 'build' comme shared_client ; son handler répondait ensuite aux fetch_og_metadata des tests suivants du même worker xdist (flake test_v55 : « Titre de la page »). La restauration du finally couvre désormais og_fetcher, comme elle couvrait déjà url_fetch. - test_editor_front_end_wired : depuis la refonte templates (fc85481), le câblage page-templates vit dans page_editor_scripts.js (le picker de base.html passe par le registre unifié /api/templates) ; le marqueur est vérifié dans le fichier qui le porte, à force égale. --- tests/test_agent_web_tools.py | 9 +++++++++ tests/test_v511_v512_wiki_templates.py | 6 +++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/tests/test_agent_web_tools.py b/tests/test_agent_web_tools.py index 99b5f41..faa7924 100644 --- a/tests/test_agent_web_tools.py +++ b/tests/test_agent_web_tools.py @@ -24,6 +24,7 @@ import contextlib import ipaddress import json import socket +import sys import httpx import pytest @@ -108,6 +109,14 @@ def mock_http(handler): from app.services.importers import url_fetch if getattr(url_fetch, "shared_client", None) is build: url_fetch.shared_client = _REAL_SHARED_CLIENT + # Même fuite via og_fetcher : url_fetch l'importe paresseusement + # (parse_og) PENDANT la fenêtre, et son `from … import shared_client` + # fige alors `build` — le handler du test courant répondait ensuite + # aux fetch_og_metadata des tests suivants du même worker xdist + # (flake test_v55 : titre « Titre de la page » au lieu du sien). + og_fetcher = sys.modules.get("app.services.og_fetcher") + if og_fetcher is not None and getattr(og_fetcher, "shared_client", None) is build: + og_fetcher.shared_client = _REAL_SHARED_CLIENT def run(coro): diff --git a/tests/test_v511_v512_wiki_templates.py b/tests/test_v511_v512_wiki_templates.py index 522457b..e0fa219 100644 --- a/tests/test_v511_v512_wiki_templates.py +++ b/tests/test_v511_v512_wiki_templates.py @@ -396,7 +396,11 @@ def test_editor_front_end_wired(client): assert "gtTok" in src and "fd-wiki-chip" in src # chip render + reader assert "wiki/pages" in src and "wiki/titles" in src # picker + label resolution assert "WM={" in src and "fdpage:" in src # [[ picker module - assert "_openTemplatePicker" in base and "page-templates" in base + # Depuis la refonte templates (fc85481), le picker de base.html passe par + # le registre unifié (/api/templates) ; le câblage « page-templates » vit + # dans l'éditeur (fetch /board/api/page-templates) — chaque marqueur est + # donc vérifié dans le fichier qui le porte réellement. + assert "_openTemplatePicker" in base and "page-templates" in src assert "toggleLock" in src and "saveAsTemplate" in src css = pathlib.Path("static/css/app.css").read_text(encoding="utf-8") assert ".fd-wiki-chip" in css and ".fd-lock-banner" in css and ".tpl-picker-modal" in css