test_autusm.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. #!/usr/bin/env python3
  2. """
  3. Simple test script for autusm to verify the implementation.
  4. """
  5. import sys
  6. import tempfile
  7. from pathlib import Path
  8. # Add the src directory to the path so we can import autusm
  9. sys.path.insert(0, str(Path(__file__).parent / "src"))
  10. from autusm.models import PackageInfo, BuildSystem, BuildSystemType, USMManifest
  11. from autusm.generator import ScriptGenerator
  12. from autusm.manifest import ManifestGenerator
  13. def test_models():
  14. """Test the data models."""
  15. print("Testing data models...")
  16. # Test PackageInfo
  17. package_info = PackageInfo(
  18. name="test-package",
  19. version="1.0.0",
  20. summary="A test package",
  21. description="This is a test package for autusm"
  22. )
  23. print(f"Created PackageInfo: {package_info.name} v{package_info.version}")
  24. # Test BuildSystem
  25. build_system = BuildSystem(
  26. type=BuildSystemType.CMAKE,
  27. config_files=["CMakeLists.txt"],
  28. build_files=["CMakeLists.txt"]
  29. )
  30. print(f"Created BuildSystem: {build_system.type.value}")
  31. # Test USMManifest
  32. manifest = USMManifest.from_package_info(package_info)
  33. print(f"Created USMManifest: {manifest.name}")
  34. print("✓ Data models test passed\n")
  35. def test_script_generator():
  36. """Test the script generator."""
  37. print("Testing script generator...")
  38. package_info = PackageInfo(
  39. name="test-package",
  40. version="1.0.0",
  41. summary="A test package"
  42. )
  43. build_system = BuildSystem(
  44. type=BuildSystemType.CMAKE,
  45. config_files=["CMakeLists.txt"]
  46. )
  47. generator = ScriptGenerator()
  48. with tempfile.TemporaryDirectory() as temp_dir:
  49. output_dir = Path(temp_dir) / "scripts"
  50. generator.generate_scripts(package_info, build_system, output_dir)
  51. # Check if scripts were created
  52. acquire_script = output_dir / "acquire"
  53. build_script = output_dir / "build"
  54. install_script = output_dir / "install"
  55. if acquire_script.exists() and build_script.exists() and install_script.exists():
  56. print("✓ Scripts generated successfully")
  57. else:
  58. print("✗ Script generation failed")
  59. print("✓ Script generator test passed\n")
  60. def test_manifest_generator():
  61. """Test the manifest generator."""
  62. print("Testing manifest generator...")
  63. package_info = PackageInfo(
  64. name="test-package",
  65. version="1.0.0",
  66. summary="A test package",
  67. description="This is a test package for autusm",
  68. url="https://github.com/example/test-package"
  69. )
  70. build_system = BuildSystem(
  71. type=BuildSystemType.CMAKE,
  72. config_files=["CMakeLists.txt"]
  73. )
  74. generator = ManifestGenerator()
  75. manifest = generator.generate(package_info, build_system)
  76. # Check if manifest was created correctly
  77. if (manifest.name == "test-package" and
  78. manifest.version == "1.0.0" and
  79. manifest.summary == "A test package"):
  80. print("✓ Manifest generated successfully")
  81. # Test JSON serialization
  82. json_str = manifest.to_json()
  83. if '"name": "test-package"' in json_str:
  84. print("✓ JSON serialization works")
  85. else:
  86. print("✗ JSON serialization failed")
  87. else:
  88. print("✗ Manifest generation failed")
  89. print("✓ Manifest generator test passed\n")
  90. def main():
  91. """Run all tests."""
  92. print("Running autusm implementation tests...\n")
  93. try:
  94. test_models()
  95. test_script_generator()
  96. test_manifest_generator()
  97. print("All tests passed! ✓")
  98. return 0
  99. except Exception as e:
  100. print(f"Test failed: {e}")
  101. import traceback
  102. traceback.print_exc()
  103. return 1
  104. if __name__ == "__main__":
  105. sys.exit(main())