xref: /src/usr.bin/yes/tests/yes_test.sh (revision 67728a18b9c18e55cc60e063380825b80f25b1b9)
1#
2# Copyright (c) 2026 Klara, Inc.
3#
4# SPDX-License-Identifier: BSD-2-Clause
5#
6
7atf_test_case none
8none_head()
9{
10	atf_set "descr" "No arguments"
11}
12none_body()
13{
14	atf_check \
15	    -o inline:"y\ny\ny\ny\ny\n" \
16	    -x "yes | head -5"
17}
18
19atf_test_case one
20one_head()
21{
22	atf_set "descr" "One argument"
23}
24one_body()
25{
26	local y="Hello, world!"
27	atf_check \
28	    -o inline:"${y}\n${y}\n${y}\n${y}\n${y}\n" \
29	    -x "yes '${y}' | head -5"
30}
31
32atf_test_case multi
33multi_head()
34{
35	atf_set "descr" "Multiple arguments"
36}
37multi_body()
38{
39	set -- The Magic Words are Squeamish Ossifrage
40	local y="$*"
41	atf_check \
42	    -o inline:"${y}\n${y}\n${y}\n${y}\n${y}\n" \
43	    -x "yes $* | head -5"
44}
45
46atf_test_case argv
47argv_head()
48{
49	atf_set "descr" "Verify that argv is unmolested"
50}
51argv_body()
52{
53	yes y >/dev/null &
54	local pid=$!
55	atf_check -o inline:"yes y\n" ps -o args= $pid
56	kill $pid
57	wait
58}
59
60atf_test_case stdout
61stdout_head()
62{
63	atf_set descr "Error writing to stdout"
64}
65stdout_body()
66{
67	(
68		trap "" PIPE
69		# Give true(1) some time to exit.
70		sleep 1
71		yes 2>stderr
72		echo $? >result
73	) | true
74	atf_check -o inline:"1\n" cat result
75	atf_check -o match:"stdout" cat stderr
76}
77
78atf_init_test_cases()
79{
80	atf_add_test_case none
81	atf_add_test_case one
82	atf_add_test_case multi
83	atf_add_test_case argv
84	atf_add_test_case stdout
85}
86