Spaces:
Paused
Paused
| #!/usr/bin/env python3 | |
| """ | |
| Test script to verify that the configuration override fix works correctly. | |
| This script tests that .env file settings are respected when not explicitly overridden by command line arguments. | |
| """ | |
| import os | |
| import sys | |
| import tempfile | |
| def test_config_fix(): | |
| """Test that environment variables from .env are respected.""" | |
| # Create a temporary .env file with test values | |
| env_content = """ | |
| DEBUG_LOGS_ENABLED=true | |
| TRACE_LOGS_ENABLED=true | |
| AUTO_SAVE_AUTH=true | |
| LAUNCH_MODE=normal | |
| SERVER_LOG_LEVEL=DEBUG | |
| """ | |
| with tempfile.NamedTemporaryFile(mode="w", suffix=".env", delete=False) as f: | |
| f.write(env_content) | |
| temp_env_path = f.name | |
| try: | |
| # Test 1: Check if launcher reads .env values correctly when no CLI args provided | |
| print("=== Test 1: Reading .env values without CLI overrides ===") | |
| # Set environment variables to simulate .env file loading | |
| os.environ["DEBUG_LOGS_ENABLED"] = "true" | |
| os.environ["TRACE_LOGS_ENABLED"] = "true" | |
| os.environ["AUTO_SAVE_AUTH"] = "true" | |
| os.environ["LAUNCH_MODE"] = "normal" | |
| os.environ["SERVER_LOG_LEVEL"] = "DEBUG" | |
| # Test the argument parsing by importing the launcher config | |
| sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) | |
| try: | |
| from launcher.config import parse_args | |
| # Test without CLI args - should use .env defaults | |
| original_argv = sys.argv.copy() | |
| sys.argv = ["launch_camoufox.py"] | |
| args = parse_args() | |
| print(f"DEBUG_LOGS_ENABLED from config: {args.debug_logs}") | |
| print(f"TRACE_LOGS_ENABLED from config: {args.trace_logs}") | |
| print(f"AUTO_SAVE_AUTH from config: {args.auto_save_auth}") | |
| print( | |
| f"debug_logs_from_cli flag: {getattr(args, 'debug_logs_from_cli', 'NOT SET')}" | |
| ) | |
| print( | |
| f"trace_logs_from_cli flag: {getattr(args, 'trace_logs_from_cli', 'NOT SET')}" | |
| ) | |
| print( | |
| f"auto_save_auth_from_cli flag: {getattr(args, 'auto_save_auth_from_cli', 'NOT SET')}" | |
| ) | |
| # Verify the fix: args should reflect .env values when no CLI args provided | |
| assert args.debug_logs, f"Expected debug_logs=True, got {args.debug_logs}" | |
| assert args.trace_logs, f"Expected trace_logs=True, got {args.trace_logs}" | |
| assert args.auto_save_auth, ( | |
| f"Expected auto_save_auth=True, got {args.auto_save_auth}" | |
| ) | |
| assert not getattr(args, "debug_logs_from_cli", False), ( | |
| "debug_logs_from_cli should be False" | |
| ) | |
| assert not getattr(args, "trace_logs_from_cli", False), ( | |
| "trace_logs_from_cli should be False" | |
| ) | |
| assert not getattr(args, "auto_save_auth_from_cli", False), ( | |
| "auto_save_auth_from_cli should be False" | |
| ) | |
| print("OK Test 1 PASSED: .env values correctly loaded") | |
| except Exception as e: | |
| print(f"X Test 1 FAILED: {e}") | |
| return False | |
| finally: | |
| sys.argv = original_argv | |
| if "launcher.config" in sys.modules: | |
| del sys.modules["launcher.config"] | |
| # Test 2: Check if CLI args override .env values | |
| print("\n=== Test 2: CLI args override .env values ===") | |
| try: | |
| # Reset the module to force re-import | |
| if "launcher.config" in sys.modules: | |
| del sys.modules["launcher.config"] | |
| # Test with CLI args - should override .env defaults | |
| original_argv = sys.argv.copy() | |
| sys.argv = [ | |
| "launch_camoufox.py", | |
| "--debug-logs", | |
| "--trace-logs", | |
| "--auto-save-auth", | |
| ] | |
| args = parse_args() | |
| print(f"DEBUG_LOGS_ENABLED from config: {args.debug_logs}") | |
| print(f"TRACE_LOGS_ENABLED from config: {args.trace_logs}") | |
| print(f"AUTO_SAVE_AUTH from config: {args.auto_save_auth}") | |
| print( | |
| f"debug_logs_from_cli flag: {getattr(args, 'debug_logs_from_cli', 'NOT SET')}" | |
| ) | |
| print( | |
| f"trace_logs_from_cli flag: {getattr(args, 'trace_logs_from_cli', 'NOT SET')}" | |
| ) | |
| print( | |
| f"auto_save_auth_from_cli flag: {getattr(args, 'auto_save_auth_from_cli', 'NOT SET')}" | |
| ) | |
| # Verify CLI override: args should be True and CLI flags should be True | |
| assert args.debug_logs, f"Expected debug_logs=True, got {args.debug_logs}" | |
| assert args.trace_logs, f"Expected trace_logs=True, got {args.trace_logs}" | |
| assert args.auto_save_auth, ( | |
| f"Expected auto_save_auth=True, got {args.auto_save_auth}" | |
| ) | |
| assert getattr(args, "debug_logs_from_cli", False), ( | |
| "debug_logs_from_cli should be True" | |
| ) | |
| assert getattr(args, "trace_logs_from_cli", False), ( | |
| "trace_logs_from_cli should be True" | |
| ) | |
| assert getattr(args, "auto_save_auth_from_cli", False), ( | |
| "auto_save_auth_from_cli should be True" | |
| ) | |
| print("OK Test 2 PASSED: CLI args correctly override .env values") | |
| except Exception as e: | |
| print(f"X Test 2 FAILED: {e}") | |
| return False | |
| finally: | |
| sys.argv = original_argv | |
| if "launcher.config" in sys.modules: | |
| del sys.modules["launcher.config"] | |
| return True | |
| finally: | |
| # Clean up temporary file | |
| try: | |
| os.unlink(temp_env_path) | |
| except OSError: | |
| pass | |
| if __name__ == "__main__": | |
| print("Testing configuration override fix...") | |
| print("=" * 60) | |
| success = test_config_fix() | |
| print("\n" + "=" * 60) | |
| if success: | |
| print("ALL TESTS PASSED! Configuration fix is working correctly.") | |
| print("\nSummary of the fix:") | |
| print("- .env file values are now respected when no CLI args are provided") | |
| print("- CLI arguments still properly override .env values when specified") | |
| print( | |
| "- The launcher distinguishes between defaults and explicit user settings" | |
| ) | |
| else: | |
| print("TESTS FAILED! Configuration fix needs more work.") | |
| sys.exit(1) | |