#!/usr/bin/env python3 """ Test script to verify the build configuration """ import sys import subprocess from pathlib import Path def test_imports(): """Test if all required packages can be imported""" print("๐Ÿ” Testing package imports...") required_packages = [ "torch", "transformers", "accelerate", "peft", "datasets", "gradio", "flask", "requests", "numpy", "sklearn" ] failed_imports = [] for package in required_packages: try: __import__(package) print(f"โœ… {package}") except ImportError as e: print(f"โŒ {package}: {e}") failed_imports.append(package) return len(failed_imports) == 0 def test_scripts(): """Test if scripts can be found and are executable""" print("\n๐Ÿ” Testing scripts...") scripts_dir = Path("scripts") if not scripts_dir.exists(): print("โŒ Scripts directory not found") return False required_scripts = [ "check_training_ready.py", "create_sample_dataset.py", "setup_textilindo_training.py", "train_textilindo_ai.py", "test_textilindo_ai.py" ] missing_scripts = [] for script in required_scripts: script_path = scripts_dir / script if script_path.exists(): print(f"โœ… {script}") else: print(f"โŒ {script} not found") missing_scripts.append(script) return len(missing_scripts) == 0 def test_config_files(): """Test if configuration files exist""" print("\n๐Ÿ” Testing configuration files...") config_files = [ "requirements.txt", "app.py", "app_hf_spaces.py", "health_check.py" ] missing_files = [] for config_file in config_files: if Path(config_file).exists(): print(f"โœ… {config_file}") else: print(f"โŒ {config_file} not found") missing_files.append(config_file) return len(missing_files) == 0 def test_script_execution(): """Test if a simple script can be executed""" print("\n๐Ÿ” Testing script execution...") try: # Test the check_training_ready script result = subprocess.run([ sys.executable, "scripts/check_training_ready.py" ], capture_output=True, text=True, timeout=30) if result.returncode == 0: print("โœ… Script execution successful") return True else: print(f"โŒ Script execution failed: {result.stderr}") return False except subprocess.TimeoutExpired: print("โŒ Script execution timed out") return False except Exception as e: print(f"โŒ Script execution error: {e}") return False def main(): """Main test function""" print("๐Ÿงช Textilindo AI Assistant - Build Test") print("=" * 50) tests = [ ("Package Imports", test_imports), ("Scripts Availability", test_scripts), ("Configuration Files", test_config_files), ("Script Execution", test_script_execution) ] results = [] for test_name, test_func in tests: print(f"\n๐Ÿ“‹ {test_name}") print("-" * 30) result = test_func() results.append((test_name, result)) print("\n" + "=" * 50) print("๐Ÿ“Š Test Results:") all_passed = True for test_name, result in results: status = "โœ… PASS" if result else "โŒ FAIL" print(f"{status} {test_name}") if not result: all_passed = False if all_passed: print("\n๐ŸŽ‰ All tests passed! Build configuration is ready.") print("\n๐Ÿ“‹ Next steps:") print("1. Push to Hugging Face Space") print("2. Set environment variables") print("3. Deploy and test") else: print("\nโŒ Some tests failed. Please fix the issues above.") sys.exit(1) if __name__ == "__main__": main()