diff --git a/test/README.md b/test/README.md index e553936..993a753 100644 --- a/test/README.md +++ b/test/README.md @@ -1,12 +1,8 @@ Testing ======= -Dotbot testing code uses [Vagrant][vagrant] to run all tests inside a virtual -machine to have tests be completely isolated from the host machine. The test -driver relies on the [Sahara][sahara] plugin to snapshot and roll back virtual -machine state. The tests are deterministic, and each test is run in a virtual -machine with fresh state, ensuring that tests that modify system state are -easily repeatable. +Dotbot testing code uses [Vagrant] to run all tests inside a virtual machine to +have tests be completely isolated from the host machine. Installing the Test environnement --------------------------------- @@ -19,12 +15,6 @@ Installing the Test environnement sudo apt install vagrant virtualbox ``` -- Install the [Sahara][sahara] Vagrant plugin - -```bash -vagrant plugin install sahara -``` - - Install Dotbot dependencies ```bash @@ -34,14 +24,8 @@ git submodule update --init --recursive ### macOS - Install the test requirements - - [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - - [Vagrant](https://www.vagrantup.com/downloads.html) - -- Install the [Sahara][sahara] Vagrant plugin - -```bash -vagrant plugin install sahara -``` + - [VirtualBox] + - [Vagrant] - Install Dotbot dependencies @@ -64,5 +48,5 @@ Tests can be run with a specific Python version by running `./test --version When finished with testing, it is good to shut down the virtual machine by running `vagrant halt`. -[vagrant]: https://www.vagrantup.com/ -[sahara]: https://github.com/jedi4ever/sahara +[VirtualBox]: https://www.virtualbox.org/wiki/Downloads +[Vagrant]: https://www.vagrantup.com/ diff --git a/test/driver-lib.bash b/test/driver-lib.bash index 56a0740..02a71a5 100644 --- a/test/driver-lib.bash +++ b/test/driver-lib.bash @@ -31,10 +31,6 @@ check_prereqs() { >&2 echo "vagrant vm must be running." return 1 fi - if ! (vagrant plugin list | grep '^sahara\s\+') >/dev/null 2>&1; then - >&2 echo "vagrant plugin 'sahara' is not installed." - return 1 - fi } until_success() { @@ -56,23 +52,26 @@ wait_for_vagrant() { until_success vagrant ssh -c 'exit' } -rollback() { - vagrant sandbox rollback >/dev/null 2>&1 && - wait_for_vagrant && - vagrant rsync >/dev/null 2>&1 +cleanup() { + vagrant ssh -c " + find . -not \\( \ + -path './.pyenv' -o \ + -path './.pyenv/*' -o \ + -path './.bashrc' -o \ + -path './.profile' -o \ + -path './.ssh' -o \ + -path './.ssh/*' \ + \\) -delete" >/dev/null 2>&1 } initialize() { echo "initializing." - vagrant sandbox on >/dev/null 2>&1 if ! vagrant ssh -c "pyenv local ${2}" >/dev/null 2>&1; then - wait_for_vagrant && vagrant sandbox rollback >/dev/null 2>&1 - wait_for_vagrant if ! vagrant ssh -c "pyenv install -s ${2} && pyenv local ${2}" >/dev/null 2>&1; then die "could not install python ${2}" fi - vagrant sandbox commit >/dev/null 2>&1 fi + vagrant rsync >/dev/null 2>&1 tests_run=0 tests_passed=0 tests_failed=0 @@ -96,7 +95,7 @@ fail() { run_test() { tests_run=$((tests_run + 1)) printf '[%d/%d] (%s)\n' "${tests_run}" "${tests_total}" "${1}" - rollback || die "unable to rollback vm." # start with a clean slate + cleanup vagrant ssh -c "pyenv local ${2}" >/dev/null 2>&1 if vagrant ssh -c "cd /dotbot/test/tests && bash ${1}" 2>/dev/null; then pass