6d24613b0b
This patch makes the tests (including the test driver) run entirely inside Vagrant, which avoids calling the very slow `vagrant` driver many times for running the tests. On my machine, `./test` runs in 22 seconds, down from hundreds of seconds prior to this patch. This also has the nice side effect of matching how the Travis CI tests were run, so there's no need for a separate `test_travis` anymore. |
||
---|---|---|
.. | ||
tests | ||
.editorconfig | ||
.gitignore | ||
driver-lib.bash | ||
README.md | ||
test | ||
test-lib.bash | ||
Vagrantfile |
Testing
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
Debian-based distributions
- Install the test requirements
sudo apt install vagrant virtualbox
- Install Dotbot dependencies
git submodule update --init --recursive
macOS
-
Install the test requirements
-
Install Dotbot dependencies
git submodule update --init --recursive
Running the Tests
Before running the tests, you must SSH into the VM. Start it with vagrant up
and SSH in with vagrant ssh
. All following commands must be run inside the
VM.
First, you must install a version of Python to test against, using pyenv install -s {version}
. You can choose any version you like, e.g. 3.8.1
. It
isn't particularly important to test against all supported versions of Python
in the VM, because they will be tested by CI. Once you've installed a specific
version of Python, activate it with pyenv global {version}
.
The VM mounts the Dotbot directory in /dotbot
as read-only (you can make
edits on your host machine). You can run the test suite by cd /dotbot/test
and then running ./test
. Selected tests can be run by passing paths to the
tests as arguments, e.g. ./test tests/create.bash tests/defaults.bash
.
To debug tests, you can prepend the line DEBUG=true
as the first line to any
individual test (a .bash
file inside test/tests
). This will enable printing
stdout/stderr.
When finished with testing, it is good to shut down the virtual machine by
running vagrant halt
.