61 lines
1.3 KiB
Bash
Executable File
61 lines
1.3 KiB
Bash
Executable File
#!/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"
|