#!/usr/bin/env python3 """ Test script to demonstrate particle-os Debian stages working together. This script simulates the pipeline execution without requiring the full osbuild framework. """ import os import tempfile import sys # Add src directory to Python path sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'src')) def test_pipeline(): """Test a complete pipeline with our Debian stages""" print("šŸš€ Testing particle-os Debian pipeline...") with tempfile.TemporaryDirectory() as temp_dir: print(f"šŸ“ Created test directory: {temp_dir}") # Stage 1: Sources print("\nšŸ“‹ Stage 1: Configuring APT sources...") from stages.org.osbuild.debian.sources import main as sources_main try: result = sources_main(temp_dir, { "suite": "trixie", "mirror": "https://deb.debian.org/debian", "components": ["main", "contrib", "non-free"] }) if result == 0: print("āœ… Sources configured successfully") else: print("āŒ Sources configuration failed") return False except Exception as e: print(f"āŒ Sources stage error: {e}") return False # Stage 2: Locale print("\nšŸŒ Stage 2: Configuring locale...") from stages.org.osbuild.debian.locale import main as locale_main try: result = locale_main(temp_dir, { "language": "en_US.UTF-8", "additional_locales": ["en_GB.UTF-8"], "default_locale": "en_US.UTF-8" }) if result == 0: print("āœ… Locale configured successfully") else: print("āŒ Locale configuration failed") return False except Exception as e: print(f"āŒ Locale stage error: {e}") return False # Stage 3: Timezone print("\nā° Stage 3: Configuring timezone...") from stages.org.osbuild.debian.timezone import main as timezone_main try: result = timezone_main(temp_dir, { "timezone": "UTC" }) if result == 0: print("āœ… Timezone configured successfully") else: print("āŒ Timezone configuration failed") return False except Exception as e: print(f"āŒ Timezone stage error: {e}") return False # Stage 4: Users print("\nšŸ‘„ Stage 4: Creating users...") from stages.org.osbuild.debian.users import main as users_main try: result = users_main(temp_dir, { "users": { "debian": { "uid": 1000, "gid": 1000, "home": "/home/debian", "shell": "/bin/bash", "groups": ["sudo", "users"], "comment": "Debian User" } } }) if result == 0: print("āœ… Users created successfully") else: print("āŒ User creation failed") return False except Exception as e: print(f"āŒ Users stage error: {e}") return False # Verify results print("\nšŸ” Verifying results...") # Check sources.list sources_file = os.path.join(temp_dir, "etc", "apt", "sources.list") if os.path.exists(sources_file): print("āœ… sources.list created") with open(sources_file, 'r') as f: content = f.read() if "deb https://deb.debian.org/debian trixie main contrib non-free" in content: print("āœ… sources.list content correct") else: print("āŒ sources.list content incorrect") else: print("āŒ sources.list not created") return False # Check locale configuration locale_file = os.path.join(temp_dir, "etc", "default", "locale") if os.path.exists(locale_file): print("āœ… locale configuration created") else: print("āŒ locale configuration not created") return False # Check timezone configuration timezone_file = os.path.join(temp_dir, "etc", "timezone") if os.path.exists(timezone_file): print("āœ… timezone configuration created") else: print("āŒ timezone configuration not created") return False # Check user configuration user_file = os.path.join(temp_dir, "etc", "passwd") if os.path.exists(user_file): print("āœ… user configuration created") else: print("āŒ user configuration not created") return False print("\nšŸŽ‰ All stages completed successfully!") print(f"šŸ“ Test filesystem created in: {temp_dir}") return True if __name__ == "__main__": success = test_pipeline() if success: print("\nāœ… Pipeline test PASSED") sys.exit(0) else: print("\nāŒ Pipeline test FAILED") sys.exit(1)