67 lines
1.2 KiB
Bash
67 lines
1.2 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# For each virtual machine where tests run, this script performs the following:
|
|
# - starts VM
|
|
# - starts the test suite witin a VM
|
|
# - stops the VM after the test suite is done
|
|
|
|
# global variable for script exit value
|
|
export EXIT_VALUE=0
|
|
|
|
register_failing_specs() {
|
|
EXIT_VALUE=1
|
|
}
|
|
|
|
run_vagrant() {
|
|
local box="$1"
|
|
vagrant up "$box"
|
|
}
|
|
|
|
# Halt vagrant after tests are done running, unless KEEP_RUNNING environment
|
|
# variable is set to 'true'.
|
|
stop_vagrant() {
|
|
local box="$1"
|
|
if [ -z "$KEEP_RUNNING" ]; then
|
|
vagrant halt "$box"
|
|
else
|
|
echo
|
|
echo "KEEP_RUNNING is set. Vagrant not halted."
|
|
fi
|
|
}
|
|
|
|
run_tests() {
|
|
local box="$1"
|
|
local test_file="/vagrant/test/run-tests-within-vm"
|
|
echo "Running test suite on $box from: $test_file"
|
|
echo
|
|
vagrant ssh "$box" -c "cd /vagrant; $test_file"
|
|
}
|
|
|
|
exit_message() {
|
|
local exit_val="$1"
|
|
echo
|
|
if [ $exit_val == 0 ]; then
|
|
echo "Success, tests pass!"
|
|
else
|
|
echo "Tests failed!" 1>&2
|
|
fi
|
|
}
|
|
|
|
run_tests_on_vm() {
|
|
local vm="$1"
|
|
run_vagrant "$vm"
|
|
run_tests "$vm"
|
|
local tests_exit_value="$?"
|
|
stop_vagrant "$vm"
|
|
if [ $tests_exit_value -gt 0 ]; then
|
|
register_failing_specs
|
|
fi
|
|
}
|
|
|
|
main() {
|
|
run_tests_on_vm "ubuntu_two_five"
|
|
|
|
exit_message "$EXIT_VALUE"
|
|
exit "$EXIT_VALUE"
|
|
}
|
|
main
|