156 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| // run_all_tests.rhai
 | ||
| // Runs all Buildah module tests
 | ||
| 
 | ||
| print("=== Running Buildah Module Tests ===");
 | ||
| 
 | ||
| // Custom assert function
 | ||
| fn assert_true(condition, message) {
 | ||
|     if !condition {
 | ||
|         print(`ASSERTION FAILED: ${message}`);
 | ||
|         throw message;
 | ||
|     }
 | ||
| }
 | ||
| 
 | ||
| // Helper function to check if buildah is available
 | ||
| fn is_buildah_available() {
 | ||
|     try {
 | ||
|         let result = run("which buildah");
 | ||
|         return result.success;
 | ||
|     } catch(e) {
 | ||
|         return false;
 | ||
|     }
 | ||
| }
 | ||
| 
 | ||
| // Run each test directly
 | ||
| let passed = 0;
 | ||
| let failed = 0;
 | ||
| let skipped = 0;
 | ||
| let total = 0;
 | ||
| 
 | ||
| // Check if buildah is available
 | ||
| let buildah_available = is_buildah_available();
 | ||
| if !buildah_available {
 | ||
|     print("Buildah is not available. Skipping all Buildah tests.");
 | ||
|     skipped = 3; // Skip all three tests
 | ||
|     total = 3;
 | ||
| } else {
 | ||
|     // Test 1: Builder Pattern
 | ||
|     print("\n--- Running Builder Pattern Tests ---");
 | ||
|     try {
 | ||
|         // Create a builder
 | ||
|         let builder = bah_new("rhai_test_container", "alpine:latest");
 | ||
|         
 | ||
|         // Test basic properties
 | ||
|         assert_true(builder.container_id != "", "Container ID should not be empty");
 | ||
|         assert_true(builder.name == "rhai_test_container", "Container name should match");
 | ||
|         
 | ||
|         // Run a simple command
 | ||
|         let result = builder.run("echo 'Hello from container'");
 | ||
|         assert_true(result.success, "Command should succeed");
 | ||
|         
 | ||
|         // Clean up
 | ||
|         builder.remove();
 | ||
|         
 | ||
|         print("--- Builder Pattern Tests completed successfully ---");
 | ||
|         passed += 1;
 | ||
|     } catch(err) {
 | ||
|         print(`!!! Error in Builder Pattern Tests: ${err}`);
 | ||
|         failed += 1;
 | ||
|         
 | ||
|         // Clean up in case of error
 | ||
|         try {
 | ||
|             run("buildah rm rhai_test_container");
 | ||
|         } catch(e) {
 | ||
|             // Ignore errors during cleanup
 | ||
|         }
 | ||
|     }
 | ||
|     total += 1;
 | ||
|     
 | ||
|     // Test 2: Image Operations
 | ||
|     print("\n--- Running Image Operations Tests ---");
 | ||
|     try {
 | ||
|         // Create a temporary directory for testing
 | ||
|         let test_dir = "rhai_test_buildah";
 | ||
|         mkdir(test_dir);
 | ||
|         
 | ||
|         // Create a builder
 | ||
|         let builder = bah_new("rhai_test_container", "alpine:latest");
 | ||
|         
 | ||
|         // List images
 | ||
|         let images = builder.images();
 | ||
|         assert_true(images.len() > 0, "There should be at least one image");
 | ||
|         
 | ||
|         // Clean up
 | ||
|         builder.remove();
 | ||
|         delete(test_dir);
 | ||
|         
 | ||
|         print("--- Image Operations Tests completed successfully ---");
 | ||
|         passed += 1;
 | ||
|     } catch(err) {
 | ||
|         print(`!!! Error in Image Operations Tests: ${err}`);
 | ||
|         failed += 1;
 | ||
|         
 | ||
|         // Clean up in case of error
 | ||
|         try {
 | ||
|             run("buildah rm rhai_test_container");
 | ||
|             delete("rhai_test_buildah");
 | ||
|         } catch(e) {
 | ||
|             // Ignore errors during cleanup
 | ||
|         }
 | ||
|     }
 | ||
|     total += 1;
 | ||
|     
 | ||
|     // Test 3: Container Operations
 | ||
|     print("\n--- Running Container Operations Tests ---");
 | ||
|     try {
 | ||
|         // Create a builder
 | ||
|         let builder = bah_new("rhai_test_container", "alpine:latest");
 | ||
|         
 | ||
|         // Test reset
 | ||
|         builder.reset();
 | ||
|         
 | ||
|         // Create a new container
 | ||
|         builder = bah_new("rhai_test_container", "alpine:latest");
 | ||
|         
 | ||
|         // Run a command
 | ||
|         let result = builder.run("echo 'Hello from container'");
 | ||
|         assert_true(result.success, "Command should succeed");
 | ||
|         
 | ||
|         // Clean up
 | ||
|         builder.remove();
 | ||
|         
 | ||
|         print("--- Container Operations Tests completed successfully ---");
 | ||
|         passed += 1;
 | ||
|     } catch(err) {
 | ||
|         print(`!!! Error in Container Operations Tests: ${err}`);
 | ||
|         failed += 1;
 | ||
|         
 | ||
|         // Clean up in case of error
 | ||
|         try {
 | ||
|             run("buildah rm rhai_test_container");
 | ||
|         } catch(e) {
 | ||
|             // Ignore errors during cleanup
 | ||
|         }
 | ||
|     }
 | ||
|     total += 1;
 | ||
| }
 | ||
| 
 | ||
| print("\n=== Test Summary ===");
 | ||
| print(`Passed: ${passed}`);
 | ||
| print(`Failed: ${failed}`);
 | ||
| print(`Skipped: ${skipped}`);
 | ||
| print(`Total: ${total}`);
 | ||
| 
 | ||
| if failed == 0 {
 | ||
|     if skipped > 0 {
 | ||
|         print("\n⚠️ All tests skipped or passed!");
 | ||
|     } else {
 | ||
|         print("\n✅ All tests passed!");
 | ||
|     }
 | ||
| } else {
 | ||
|     print("\n❌ Some tests failed!");
 | ||
| }
 | ||
| 
 | ||
| // Return the number of failed tests (0 means success)
 | ||
| failed;
 |