This is easier than the old method of adding `DEBUG=true` to the top of test files.
1.8 KiB
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 run the test driver with the --debug
(or -d
short
form) flag, e.g. ./test --debug tests/link-if.bash
. This will enable printing
stdout/stderr.
When finished with testing, it is good to shut down the virtual machine by
running vagrant halt
.