xref: /freebsd/usr.bin/yes/tests/yes_test.sh (revision c5961b6fcfe0f3587be11187a9c666a7fa200f4b)
167728a18SDag-Erling Smørgrav#
267728a18SDag-Erling Smørgrav# Copyright (c) 2026 Klara, Inc.
367728a18SDag-Erling Smørgrav#
467728a18SDag-Erling Smørgrav# SPDX-License-Identifier: BSD-2-Clause
567728a18SDag-Erling Smørgrav#
667728a18SDag-Erling Smørgrav
767728a18SDag-Erling Smørgravatf_test_case none
867728a18SDag-Erling Smørgravnone_head()
967728a18SDag-Erling Smørgrav{
1067728a18SDag-Erling Smørgrav	atf_set "descr" "No arguments"
1167728a18SDag-Erling Smørgrav}
1267728a18SDag-Erling Smørgravnone_body()
1367728a18SDag-Erling Smørgrav{
1467728a18SDag-Erling Smørgrav	atf_check \
1567728a18SDag-Erling Smørgrav	    -o inline:"y\ny\ny\ny\ny\n" \
1667728a18SDag-Erling Smørgrav	    -x "yes | head -5"
1767728a18SDag-Erling Smørgrav}
1867728a18SDag-Erling Smørgrav
1967728a18SDag-Erling Smørgravatf_test_case one
2067728a18SDag-Erling Smørgravone_head()
2167728a18SDag-Erling Smørgrav{
2267728a18SDag-Erling Smørgrav	atf_set "descr" "One argument"
2367728a18SDag-Erling Smørgrav}
2467728a18SDag-Erling Smørgravone_body()
2567728a18SDag-Erling Smørgrav{
2667728a18SDag-Erling Smørgrav	local y="Hello, world!"
2767728a18SDag-Erling Smørgrav	atf_check \
2867728a18SDag-Erling Smørgrav	    -o inline:"${y}\n${y}\n${y}\n${y}\n${y}\n" \
2967728a18SDag-Erling Smørgrav	    -x "yes '${y}' | head -5"
3067728a18SDag-Erling Smørgrav}
3167728a18SDag-Erling Smørgrav
3267728a18SDag-Erling Smørgravatf_test_case multi
3367728a18SDag-Erling Smørgravmulti_head()
3467728a18SDag-Erling Smørgrav{
3567728a18SDag-Erling Smørgrav	atf_set "descr" "Multiple arguments"
3667728a18SDag-Erling Smørgrav}
3767728a18SDag-Erling Smørgravmulti_body()
3867728a18SDag-Erling Smørgrav{
3967728a18SDag-Erling Smørgrav	set -- The Magic Words are Squeamish Ossifrage
4067728a18SDag-Erling Smørgrav	local y="$*"
4167728a18SDag-Erling Smørgrav	atf_check \
4267728a18SDag-Erling Smørgrav	    -o inline:"${y}\n${y}\n${y}\n${y}\n${y}\n" \
4367728a18SDag-Erling Smørgrav	    -x "yes $* | head -5"
4467728a18SDag-Erling Smørgrav}
4567728a18SDag-Erling Smørgrav
4667728a18SDag-Erling Smørgravatf_test_case argv
4767728a18SDag-Erling Smørgravargv_head()
4867728a18SDag-Erling Smørgrav{
4967728a18SDag-Erling Smørgrav	atf_set "descr" "Verify that argv is unmolested"
5067728a18SDag-Erling Smørgrav}
5167728a18SDag-Erling Smørgravargv_body()
5267728a18SDag-Erling Smørgrav{
5367728a18SDag-Erling Smørgrav	yes y >/dev/null &
5467728a18SDag-Erling Smørgrav	local pid=$!
55*c5961b6fSOlivier Cochard	# Wait for yes(1) to exec before checking args
56*c5961b6fSOlivier Cochard	sleep 0.1
5767728a18SDag-Erling Smørgrav	atf_check -o inline:"yes y\n" ps -o args= $pid
5867728a18SDag-Erling Smørgrav	kill $pid
5967728a18SDag-Erling Smørgrav	wait
6067728a18SDag-Erling Smørgrav}
6167728a18SDag-Erling Smørgrav
6267728a18SDag-Erling Smørgravatf_test_case stdout
6367728a18SDag-Erling Smørgravstdout_head()
6467728a18SDag-Erling Smørgrav{
6567728a18SDag-Erling Smørgrav	atf_set descr "Error writing to stdout"
6667728a18SDag-Erling Smørgrav}
6767728a18SDag-Erling Smørgravstdout_body()
6867728a18SDag-Erling Smørgrav{
6967728a18SDag-Erling Smørgrav	(
7067728a18SDag-Erling Smørgrav		trap "" PIPE
7167728a18SDag-Erling Smørgrav		# Give true(1) some time to exit.
7267728a18SDag-Erling Smørgrav		sleep 1
7367728a18SDag-Erling Smørgrav		yes 2>stderr
7467728a18SDag-Erling Smørgrav		echo $? >result
7567728a18SDag-Erling Smørgrav	) | true
7667728a18SDag-Erling Smørgrav	atf_check -o inline:"1\n" cat result
7767728a18SDag-Erling Smørgrav	atf_check -o match:"stdout" cat stderr
7867728a18SDag-Erling Smørgrav}
7967728a18SDag-Erling Smørgrav
8067728a18SDag-Erling Smørgravatf_init_test_cases()
8167728a18SDag-Erling Smørgrav{
8267728a18SDag-Erling Smørgrav	atf_add_test_case none
8367728a18SDag-Erling Smørgrav	atf_add_test_case one
8467728a18SDag-Erling Smørgrav	atf_add_test_case multi
8567728a18SDag-Erling Smørgrav	atf_add_test_case argv
8667728a18SDag-Erling Smørgrav	atf_add_test_case stdout
8767728a18SDag-Erling Smørgrav}
88