Ajoute l'assistant IA "Ruby" (Claude + Scenario) et corrige plusieurs bugs de la scène
Intègre un chat IA capable de manipuler la scène via les mêmes fonctions que l'éditeur manuel (objets, variables, déclencheurs, images générées), avec conversations multiples par écran façon Claude. Corrige au passage le rafraîchissement pjax hors-ordre, l'onglet IA/déclencheurs vide après sélection d'un objet, la comparaison de booléens dans les conditions, et le blocage du glisser-déposer hors du cadre caméra après un redimensionnement de fond par l'IA. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
ab6635eee0
commit
b07b231a61
@@ -0,0 +1,34 @@
|
||||
""".env local (voir plan Phase 2, §1, core/flask_app.py::load_dotenv())
|
||||
— propriété de sécurité dont dépend l'isolation des tests
|
||||
(tests/conftest.py pose FORGE_USERS_DB_PATH etc. AVANT cet import) :
|
||||
une variable déjà présente dans os.environ ne doit JAMAIS être écrasée
|
||||
par un .env local, même sur un poste où un vrai .env existe avec de
|
||||
vraies clés IA."""
|
||||
import inspect
|
||||
import os
|
||||
import tempfile
|
||||
|
||||
from dotenv import load_dotenv
|
||||
|
||||
import core.flask_app
|
||||
|
||||
|
||||
def test_load_dotenv_never_overrides_an_already_set_variable(monkeypatch):
|
||||
monkeypatch.setenv("FORGE_TEST_DOTENV_VAR", "valeur-deja-posee")
|
||||
with tempfile.NamedTemporaryFile("w", suffix=".env", delete=False) as f:
|
||||
f.write("FORGE_TEST_DOTENV_VAR=valeur-du-fichier-env\n")
|
||||
env_path = f.name
|
||||
try:
|
||||
load_dotenv(env_path)
|
||||
assert os.environ["FORGE_TEST_DOTENV_VAR"] == "valeur-deja-posee"
|
||||
finally:
|
||||
os.remove(env_path)
|
||||
|
||||
|
||||
def test_core_flask_app_does_not_pass_override_true_to_load_dotenv():
|
||||
"""Garde-fou direct sur le code lui-même : si quelqu'un ajoute un
|
||||
jour `override=True`, un .env local avec une VRAIE clé écraserait
|
||||
silencieusement l'isolation des tests (voir ci-dessus)."""
|
||||
source = inspect.getsource(core.flask_app)
|
||||
assert "load_dotenv()" in source
|
||||
assert "override=True" not in source
|
||||
Reference in New Issue
Block a user