nixosTest: Add xclip as example of stdout blocker

Changed files
+18 -9
nixos
doc
manual
+5 -2
nixos/doc/manual/development/writing-nixos-tests.section.md
···
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.
+
a file. Examples of detaching commands are `sleep 365d &`, where the
+
shell forks a new process that can write to stdout and `xclip -i`, where
+
the `xclip` command itself forks without closing stdout.
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
···
- Dereferencing unset variables fail the command.
-
- It will wait for stdout to be closed. See `execute`.
+
- It will wait for stdout to be closed. See `execute` for the
+
implications.
`fail`
+8 -3
nixos/doc/manual/from_md/development/writing-nixos-tests.section.xml
···
for this to consume all output reliably. This can be achieved
by redirecting stdout to stderr <literal>&gt;&amp;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>/dev/null</literal> or a file. Examples of detaching
+
commands are <literal>sleep 365d &amp;</literal>, where the
+
shell forks a new process that can write to stdout and
+
<literal>xclip -i</literal>, where the
+
<literal>xclip</literal> command itself forks without closing
+
stdout. 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
and return -1 instead. This can be used for commands that shut
···
<listitem>
<para>
It will wait for stdout to be closed. See
-
<literal>execute</literal>.
+
<literal>execute</literal> for the implications.
</para>
</listitem>
</itemizedlist>
+4 -3
nixos/doc/manual/from_md/release-notes/rl-2111.section.xml
···
<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(&quot;foo &amp;&quot;)</literal> to close
-
stdout. This can be done with a redirect such as
+
now requires detaching commands such as
+
<literal>succeed(&quot;foo &amp;&quot;)</literal> and
+
<literal>succeed(&quot;foo | xclip -i&quot;)</literal> to
+
close stdout. This can be done with a redirect such as
<literal>succeed(&quot;foo &gt;&amp;2 &amp;&quot;)</literal>.
This breaking change was necessitated by a race condition
causing tests to fail or hang. It applies to all methods that
+1 -1
nixos/doc/manual/release-notes/rl-2111.section.md
···
## 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.
+
- The NixOS VM test framework, `pkgs.nixosTest`/`make-test-python.nix`, now requires detaching commands such as `succeed("foo &")` and `succeed("foo | xclip -i")` 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`.