2021-07-02 12:24:02 +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-02 22:48:56 +00:00
|
|
|
$ nix-build . -A nixosTests.login.driverInteractive
|
2022-01-25 12:45:49 +00:00
|
|
|
$ ./result/bin/nixos-test-driver
|
2022-01-02 22:48:56 +00:00
|
|
|
[...]
|
|
|
|
>>>
|
2021-07-02 12:24:02 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
You can then take any Python statement, e.g.
|
|
|
|
|
|
|
|
```py
|
2022-01-02 22:48:56 +00:00
|
|
|
>>> start_all()
|
|
|
|
>>> test_script()
|
|
|
|
>>> machine.succeed("touch /tmp/foo")
|
|
|
|
>>> print(machine.succeed("pwd")) # Show stdout of command
|
2021-07-02 12:24:02 +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).
|
|
|
|
|
2022-06-15 16:04:41 +00:00
|
|
|
## Reuse VM state {#sec-nixos-test-reuse-vm-state}
|
|
|
|
|
2021-07-02 12:24:02 +00:00
|
|
|
You can re-use the VM states coming from a previous run by setting the
|
|
|
|
`--keep-vm-state` flag.
|
|
|
|
|
|
|
|
```ShellSession
|
2022-01-25 12:45:49 +00:00
|
|
|
$ ./result/bin/nixos-test-driver --keep-vm-state
|
2021-07-02 12:24:02 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
The machine state is stored in the `$TMPDIR/vm-state-machinename`
|
|
|
|
directory.
|
2022-06-15 16:04:41 +00:00
|
|
|
|
|
|
|
## Interactive-only test configuration {#sec-nixos-test-interactive-configuration}
|
|
|
|
|
2022-08-19 10:09:58 +00:00
|
|
|
The `.driverInteractive` attribute combines the regular test configuration with
|
|
|
|
definitions from the [`interactive` submodule](#opt-interactive). This gives you
|
|
|
|
a more usable, graphical, but slightly different configuration.
|
|
|
|
|
|
|
|
You can add your own interactive-only test configuration by adding extra
|
|
|
|
configuration to the [`interactive` submodule](#opt-interactive).
|
|
|
|
|
|
|
|
To interactively run only the regular configuration, build the `<test>.driver` attribute
|
|
|
|
instead, and call it with the flag `result/bin/nixos-test-driver --interactive`.
|