import os from unittest.mock import patch import sys # Ensure current directory is in sys.path sys.path.append(os.getcwd()) def test_fallback(): print("Testing HF_TOKEN fallback with Mocks...") # Mock load_dotenv to do nothing so it doesn't reload the real .env with patch('dotenv.load_dotenv'), \ patch('os.getenv') as mocked_getenv: # 1. Test Fallback to HF_TOKEN def side_effect(key, default=None): if key == "HF_API_TOKEN": return None if key == "HF_TOKEN": return "mock_hf_token" return os.environ.get(key, default) mocked_getenv.side_effect = side_effect # We need to reload the modules or just test the logic if they are already loaded # Since they are imported at the top level in CoraEngine, we might need to re-import import cora_engine import cora_curator import importlib importlib.reload(cora_engine) importlib.reload(cora_curator) engine = cora_engine.CoraEngine() curator = cora_curator.CoraCurator() print(f"Engine HF_TOKEN: {engine.HF_TOKEN}") print(f"Curator HF_TOKEN: {curator.HF_TOKEN}") assert engine.HF_TOKEN == "mock_hf_token", "Engine failed fallback" assert curator.HF_TOKEN == "mock_hf_token", "Curator failed fallback" print("✅ Fallback to HF_TOKEN verified via Mock.") # 2. Test Error Message mocked_getenv.side_effect = lambda key, default=None: None importlib.reload(cora_engine) engine_no_token = cora_engine.CoraEngine() try: engine_no_token.generate_from_text("test") except ValueError as e: print(f"✅ Correctly caught missing token error:\n{e}") if "Space Settings" in str(e): print("✅ Error message contains guidance for HF Spaces.") else: print("❌ Error message missing guidance.") sys.exit(1) if __name__ == "__main__": test_fallback()