diff options
author | Robert Hensing <robert@roberthensing.nl> | 2021-11-05 01:41:32 +0100 |
---|---|---|
committer | Robert Hensing <robert@roberthensing.nl> | 2021-11-05 02:41:25 +0100 |
commit | 698fb089d8276ac6907ae3a13ee1933a59e12112 (patch) | |
tree | ffde097c8a1a01bc0d2832423ac2e7accacca73e /nixos/doc/manual | |
parent | bce05e3b6adab06eedff7cf5813d0936c4f9c5d2 (diff) | |
download | nixpkgs-698fb089d8276ac6907ae3a13ee1933a59e12112.tar nixpkgs-698fb089d8276ac6907ae3a13ee1933a59e12112.tar.gz nixpkgs-698fb089d8276ac6907ae3a13ee1933a59e12112.tar.bz2 nixpkgs-698fb089d8276ac6907ae3a13ee1933a59e12112.tar.lz nixpkgs-698fb089d8276ac6907ae3a13ee1933a59e12112.tar.xz nixpkgs-698fb089d8276ac6907ae3a13ee1933a59e12112.tar.zst nixpkgs-698fb089d8276ac6907ae3a13ee1933a59e12112.zip |
nixosTest: Document stdout waiting behavior
Diffstat (limited to 'nixos/doc/manual')
4 files changed, 39 insertions, 1 deletions
diff --git a/nixos/doc/manual/development/writing-nixos-tests.section.md b/nixos/doc/manual/development/writing-nixos-tests.section.md index bf80099f1a2..a8c54aa6676 100644 --- a/nixos/doc/manual/development/writing-nixos-tests.section.md +++ b/nixos/doc/manual/development/writing-nixos-tests.section.md @@ -159,6 +159,10 @@ The following methods are available on machine objects: `execute` : Execute a shell command, returning a list `(status, stdout)`. + If the command detaches, it must close stdout, as `execute` will wait + for this to consume all output reliably. This can be achieved by + redirecting stdout to stderr `>&2`, to `/dev/console`, `/dev/null` or + a file. Takes an optional parameter `check_return` that defaults to `True`. Setting this parameter to `False` will not check for the return code and return -1 instead. This can be used for commands that shut down @@ -179,6 +183,8 @@ The following methods are available on machine objects: - Dereferencing unset variables fail the command. + - It will wait for stdout to be closed. See `execute`. + `fail` : Like `succeed`, but raising an exception if the command returns a zero diff --git a/nixos/doc/manual/from_md/development/writing-nixos-tests.section.xml b/nixos/doc/manual/from_md/development/writing-nixos-tests.section.xml index a3b63422433..e0fd90f2bac 100644 --- a/nixos/doc/manual/from_md/development/writing-nixos-tests.section.xml +++ b/nixos/doc/manual/from_md/development/writing-nixos-tests.section.xml @@ -266,7 +266,12 @@ start_all() <listitem> <para> Execute a shell command, returning a list - <literal>(status, stdout)</literal>. Takes an optional + <literal>(status, stdout)</literal>. If the command detaches, + it must close stdout, as <literal>execute</literal> will wait + for this to consume all output reliably. This can be achieved + by redirecting stdout to stderr <literal>>&2</literal>, + to <literal>/dev/console</literal>, + <literal>/dev/null</literal> or a file. Takes an optional parameter <literal>check_return</literal> that defaults to <literal>True</literal>. Setting this parameter to <literal>False</literal> will not check for the return code @@ -306,6 +311,12 @@ start_all() Dereferencing unset variables fail the command. </para> </listitem> + <listitem> + <para> + It will wait for stdout to be closed. See + <literal>execute</literal>. + </para> + </listitem> </itemizedlist> </listitem> </varlistentry> diff --git a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml index 121d9e4ad4b..39251105ab7 100644 --- a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml +++ b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml @@ -425,6 +425,23 @@ <itemizedlist> <listitem> <para> + The NixOS VM test framework, + <literal>pkgs.nixosTest</literal>/<literal>make-test-python.nix</literal>, + now requires non-terminating commands such as + <literal>succeed("foo &")</literal> to close + stdout. This can be done with a redirect such as + <literal>succeed("foo >&2 &")</literal>. + This breaking change was necessitated by a race condition + causing tests to fail or hang. It applies to all methods that + invoke commands on the nodes, including + <literal>execute</literal>, <literal>succeed</literal>, + <literal>fail</literal>, + <literal>wait_until_succeeds</literal>, + <literal>wait_until_fails</literal>. + </para> + </listitem> + <listitem> + <para> The <literal>services.wakeonlan</literal> option was removed, and replaced with <literal>networking.interfaces.<name>.wakeOnLan</literal>. diff --git a/nixos/doc/manual/release-notes/rl-2111.section.md b/nixos/doc/manual/release-notes/rl-2111.section.md index 0d114bbde87..ef93e5c44d5 100644 --- a/nixos/doc/manual/release-notes/rl-2111.section.md +++ b/nixos/doc/manual/release-notes/rl-2111.section.md @@ -128,6 +128,10 @@ In addition to numerous new and upgraded packages, this release has the followin ## Backward Incompatibilities {#sec-release-21.11-incompatibilities} +- The NixOS VM test framework, `pkgs.nixosTest`/`make-test-python.nix`, now requires non-terminating commands such as `succeed("foo &")` to close stdout. + This can be done with a redirect such as `succeed("foo >&2 &")`. This breaking change was necessitated by a race condition causing tests to fail or hang. + It applies to all methods that invoke commands on the nodes, including `execute`, `succeed`, `fail`, `wait_until_succeeds`, `wait_until_fails`. + - The `services.wakeonlan` option was removed, and replaced with `networking.interfaces.<name>.wakeOnLan`. - The `security.wrappers` option now requires to always specify an owner, group and whether the setuid/setgid bit should be set. |