This commit is contained in:
Stephen Simpson
2025-11-26 08:15:00 -06:00
parent 3cbd4525a0
commit bb829c9b63
18 changed files with 2440 additions and 349 deletions

60
scripts/run-test.sh Executable file
View File

@@ -0,0 +1,60 @@
#!/bin/bash
TEST_NAME="$1"
TEST_REPO="$2"
GOLDEN_IMAGE="$3"
SSH_KEY="${4:-$HOME/.ssh/id_rsa}"
if [ -z "$TEST_NAME" ] || [ -z "$TEST_REPO" ] || [ -z "$GOLDEN_IMAGE" ]; then
echo "Usage: $0 <test_name> <test_repo_url> <golden_image> [ssh_key]"
exit 1
fi
VM_NAME="$TEST_NAME-$$"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
WORK_DIR="/tmp/test-$VM_NAME"
mkdir -p "$WORK_DIR"
cd "$WORK_DIR"
cleanup() {
echo "Cleaning up..."
"$SCRIPT_DIR/cleanup_vm.sh" "$VM_NAME" 2>/dev/null || true
cd /tmp
rm -rf "$WORK_DIR"
}
trap cleanup EXIT
echo "Provisioning VM..."
VM_IP=$("$SCRIPT_DIR/provision_vm.sh" "$VM_NAME" "$GOLDEN_IMAGE" 60 | tail -1)
if [ -z "$VM_IP" ] || [ "$VM_IP" = "ERROR" ]; then
echo "ERROR: Failed to provision VM"
exit 1
fi
echo "VM ready at $VM_IP"
echo "Cloning test repository..."
git clone "$TEST_REPO" test-repo
SPARROWFILE=$(find test-repo -name "main.raku" -o -name "sparrowfile" | head -1)
if [ -z "$SPARROWFILE" ]; then
echo "ERROR: No sparrowfile found"
exit 1
fi
echo "Running test: $SPARROWFILE"
sparrowdo \
--host="$VM_IP" \
--ssh_user=rocky \
--ssh_private_key="$SSH_KEY" \
--ssh_args="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" \
--no_sudo \
--sparrowfile="$SPARROWFILE" \
--verbose \
--color
echo "Test completed successfully"