The branch main has been updated by jilles:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=73e0d6b44038d1c7764c5013a54ae17a8f680a69

commit 73e0d6b44038d1c7764c5013a54ae17a8f680a69
Author:     Jilles Tjoelker <[email protected]>
AuthorDate: 2026-06-03 22:10:08 +0000
Commit:     Jilles Tjoelker <[email protected]>
CommitDate: 2026-06-03 22:10:08 +0000

    tests: Avoid sleep when causing a write error
    
    Cause a write error using a fifo and wait, rather than needing a sleep
    to wait for something to terminate. This is faster and avoids a
    potential test failure on a heavily loaded system.
    
    Using /dev/full would be simpler, but it is not portable enough (it
    tends not to be available in jails, even). Starting programs with stdout
    not open or only open for read/execute/search may have unexpected side
    effects.
    
    Reviewed by:    ngie, des
    Differential Revision:  https://reviews.freebsd.org/D57213
---
 bin/pwd/tests/pwd_test.sh               | 15 ++++++++-------
 usr.bin/asa/tests/asa_test.sh           | 12 +++++++-----
 usr.bin/cmp/tests/cmp_test2.sh          | 12 +++++++-----
 usr.bin/du/tests/du_test.sh             | 12 +++++++-----
 usr.bin/env/tests/env_test.sh           | 12 +++++++-----
 usr.bin/ident/tests/ident_test.sh       | 12 +++++++-----
 usr.bin/printenv/tests/printenv_test.sh | 13 +++++++------
 usr.bin/uniq/tests/uniq_test.sh         | 13 +++++++------
 usr.bin/yes/tests/yes_test.sh           | 13 +++++++------
 9 files changed, 64 insertions(+), 50 deletions(-)

diff --git a/bin/pwd/tests/pwd_test.sh b/bin/pwd/tests/pwd_test.sh
index a8805582cc4d..db062b253a0d 100644
--- a/bin/pwd/tests/pwd_test.sh
+++ b/bin/pwd/tests/pwd_test.sh
@@ -75,14 +75,15 @@ stdout_body()
 {
        pwd=$(which pwd)
        [ -f "$pwd" ] || atf_skip "unable to distinguish binary from builtin"
-       (
+       mkfifo fifo
+       : <fifo &
+       {
+               wait
                trap "" PIPE
-               # Give true(1) some time to exit.
-               sleep 1
-               $pwd 2>stderr
-               echo $? >result
-       ) | true
-       atf_check -o inline:"1\n" cat result
+               "$pwd" 2>stderr
+               result=$?
+       } >fifo
+       atf_check_equal 1 "$result"
        atf_check -o match:"stdout" cat stderr
 }
 
diff --git a/usr.bin/asa/tests/asa_test.sh b/usr.bin/asa/tests/asa_test.sh
index 2b8fecb12d98..d6cb9f404318 100644
--- a/usr.bin/asa/tests/asa_test.sh
+++ b/usr.bin/asa/tests/asa_test.sh
@@ -68,13 +68,15 @@ stdout_head() {
        atf_set descr "Failure to write to stdout"
 }
 stdout_body() {
-       (
+       mkfifo fifo
+       : <fifo &
+       {
+               wait
                trap "" PIPE
-               sleep 1
                echo " $a $b" | asa 2>stderr
-               echo $? >result
-       ) | true
-       atf_check -o inline:"1\n" cat result
+               result=$?
+       } >fifo
+       atf_check_equal 1 "$result"
        atf_check -o match:"stdout" cat stderr
 }
 
diff --git a/usr.bin/cmp/tests/cmp_test2.sh b/usr.bin/cmp/tests/cmp_test2.sh
index bca8fc18a6b8..b148e77b62b2 100755
--- a/usr.bin/cmp/tests/cmp_test2.sh
+++ b/usr.bin/cmp/tests/cmp_test2.sh
@@ -136,13 +136,15 @@ bflag_body()
 # Helper for stdout test case
 atf_check_stdout()
 {
-       (
+       mkfifo fifo
+       : <fifo &
+       {
+               wait
                trap "" PIPE
-               sleep 1
                cmp "$@" 2>stderr
-               echo $? >result
-       ) | true
-       atf_check -o inline:"2\n" cat result
+               result=$?
+       } >fifo
+       atf_check_equal 2 "$result"
        atf_check -o match:"stdout" cat stderr
 }
 
diff --git a/usr.bin/du/tests/du_test.sh b/usr.bin/du/tests/du_test.sh
index 16accdcb42a1..5b298785c058 100755
--- a/usr.bin/du/tests/du_test.sh
+++ b/usr.bin/du/tests/du_test.sh
@@ -306,13 +306,15 @@ stdout_head()
 }
 stdout_body()
 {
-       (
+       mkfifo fifo
+       : <fifo &
+       {
+               wait
                trap "" PIPE
-               sleep 1
                du 2>stderr
-               echo $? >result
-       ) | true
-       atf_check -o inline:"1\n" cat result
+               result=$?
+       } >fifo
+       atf_check_equal 1 "$result"
        atf_check -o match:"stdout" cat stderr
 }
 
diff --git a/usr.bin/env/tests/env_test.sh b/usr.bin/env/tests/env_test.sh
index 3210361eb223..ed1d82f38281 100644
--- a/usr.bin/env/tests/env_test.sh
+++ b/usr.bin/env/tests/env_test.sh
@@ -137,13 +137,15 @@ stdout_head()
 }
 stdout_body()
 {
-       (
+       mkfifo fifo
+       : <fifo &
+       {
+               wait
                trap "" PIPE
-               sleep 1
                env 2>stderr
-               echo $? >result
-       ) | true
-       atf_check -o inline:"1\n" cat result
+               result=$?
+       } >fifo
+       atf_check_equal 1 "$result"
        atf_check -o match:"stdout" cat stderr
 }
 
diff --git a/usr.bin/ident/tests/ident_test.sh 
b/usr.bin/ident/tests/ident_test.sh
index 9dcc45a1625f..2fae2fe8d1e1 100755
--- a/usr.bin/ident/tests/ident_test.sh
+++ b/usr.bin/ident/tests/ident_test.sh
@@ -70,13 +70,15 @@ stdout_head()
 stdout_body()
 {
        local dir=$(atf_get_srcdir)
-       (
+       mkfifo fifo
+       : <fifo &
+       {
+               wait
                trap "" PIPE
-               sleep 1
                ident "${dir}"/test.in 2>stderr
-               echo $? >result
-       ) | true
-       atf_check -o inline:"1\n" cat result
+               result=$?
+       } >fifo
+       atf_check_equal 1 "$result"
        atf_check -o match:"stdout" cat stderr
 }
 
diff --git a/usr.bin/printenv/tests/printenv_test.sh 
b/usr.bin/printenv/tests/printenv_test.sh
index 83535a555b17..8a9650819d82 100644
--- a/usr.bin/printenv/tests/printenv_test.sh
+++ b/usr.bin/printenv/tests/printenv_test.sh
@@ -78,14 +78,15 @@ stdout_head()
 }
 stdout_body()
 {
-       local dir=$(atf_get_srcdir)
-       (
+       mkfifo fifo
+       : <fifo &
+       {
+               wait
                trap "" PIPE
-               sleep 1
                printenv 2>stderr
-               echo $? >result
-       ) | true
-       atf_check -o inline:"1\n" cat result
+               result=$?
+       } >fifo
+       atf_check_equal 1 "$result"
        atf_check -o match:"stdout" cat stderr
 }
 
diff --git a/usr.bin/uniq/tests/uniq_test.sh b/usr.bin/uniq/tests/uniq_test.sh
index fc143632bdd2..46233640b5de 100755
--- a/usr.bin/uniq/tests/uniq_test.sh
+++ b/usr.bin/uniq/tests/uniq_test.sh
@@ -197,14 +197,15 @@ stdout_head() {
        atf_set descr "error writing to stdout"
 }
 stdout_body() {
-       (
+       mkfifo fifo
+       : <fifo &
+       {
+               wait
                trap "" PIPE
-               # Give true(1) some time to exit.
-               sleep 1
                echo a | uniq 2>stderr
-               echo $? >result
-       ) | true
-       atf_check -o inline:"1\n" cat result
+               result=$?
+       } >fifo
+       atf_check_equal 1 "$result"
        atf_check -o match:"stdout" cat stderr
 }
 
diff --git a/usr.bin/yes/tests/yes_test.sh b/usr.bin/yes/tests/yes_test.sh
index 797ac5f6ac9f..5f2f4566d01a 100644
--- a/usr.bin/yes/tests/yes_test.sh
+++ b/usr.bin/yes/tests/yes_test.sh
@@ -66,14 +66,15 @@ stdout_head()
 }
 stdout_body()
 {
-       (
+       mkfifo fifo
+       : <fifo &
+       {
+               wait
                trap "" PIPE
-               # Give true(1) some time to exit.
-               sleep 1
                yes 2>stderr
-               echo $? >result
-       ) | true
-       atf_check -o inline:"1\n" cat result
+               result=$?
+       } >fifo
+       atf_check_equal 1 "$result"
        atf_check -o match:"stdout" cat stderr
 }
 

Reply via email to