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;
|