2021-07-03 03:11:41 +00:00
|
|
|
# Running Tests interactively {#sec-running-nixos-tests-interactively}
|
|
|
|
|
|
|
|
The test itself can be run interactively. This is particularly useful
|
|
|
|
when developing or debugging a test:
|
|
|
|
|
|
|
|
```ShellSession
|
2022-01-13 20:06:32 +00:00
|
|
|
$ nix-build . -A nixosTests.login.driverInteractive
|
2021-08-08 23:34:03 +00:00
|
|
|
$ ./result/bin/nixos-test-driver --interactive
|
2022-01-13 20:06:32 +00:00
|
|
|
[...]
|
|
|
|
>>>
|
2021-07-03 03:11:41 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
You can then take any Python statement, e.g.
|
|
|
|
|
|
|
|
```py
|
2022-01-13 20:06:32 +00:00
|
|
|
>>> start_all()
|
|
|
|
>>> test_script()
|
|
|
|
>>> machine.succeed("touch /tmp/foo")
|
|
|
|
>>> print(machine.succeed("pwd")) # Show stdout of command
|
2021-07-03 03:11:41 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
The function `test_script` executes the entire test script and drops you
|
|
|
|
back into the test driver command line upon its completion. This allows
|
|
|
|
you to inspect the state of the VMs after the test (e.g. to debug the
|
|
|
|
test script).
|
|
|
|
|
|
|
|
You can re-use the VM states coming from a previous run by setting the
|
|
|
|
`--keep-vm-state` flag.
|
|
|
|
|
|
|
|
```ShellSession
|
2021-08-08 23:34:03 +00:00
|
|
|
$ ./result/bin/nixos-test-driver --interactive --keep-vm-state
|
2021-07-03 03:11:41 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
The machine state is stored in the `$TMPDIR/vm-state-machinename`
|
|
|
|
directory.
|