mirror of
https://github.com/opnsense/src.git
synced 2026-02-18 18:20:26 -05:00
tee: add some basic tests
The cases are ordered in such a way that we naturally progress through the functionality, with the earliest failures perhaps shedding light on any later failures. sysutils/porch is used for one test if it's available, just to cleanly check that SIGINT is being ignored properly. Reviewed by: des, emaste (cherry picked from commit 85ff0b08ee699ff323404727998993275b4d2e2a)
This commit is contained in:
parent
ba560cd8fb
commit
00640ea314
5 changed files with 101 additions and 0 deletions
|
|
@ -1147,6 +1147,8 @@
|
|||
..
|
||||
tar
|
||||
..
|
||||
tee
|
||||
..
|
||||
tftp
|
||||
..
|
||||
touch
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
# @(#)Makefile 8.1 (Berkeley) 6/6/93
|
||||
|
||||
.include <src.opts.mk>
|
||||
|
||||
PROG= tee
|
||||
|
||||
HAS_TESTS=
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
|
|
|||
6
usr.bin/tee/tests/Makefile
Normal file
6
usr.bin/tee/tests/Makefile
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
PACKAGE= tests
|
||||
|
||||
ATF_TESTS_SH+= tee_test
|
||||
${PACKAGE}FILES+= sigint.orch
|
||||
|
||||
.include <bsd.test.mk>
|
||||
14
usr.bin/tee/tests/sigint.orch
Normal file
14
usr.bin/tee/tests/sigint.orch
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
-- We expect the caller to have spawned the appropriate application
|
||||
write "text\r"
|
||||
match "text"
|
||||
|
||||
write "^C"
|
||||
|
||||
-- If SIGINT isn't being ignored, we'll bail out somewhere in the process of
|
||||
-- writing to the pty or trying to read from it to perform the following match.
|
||||
write "text\r"
|
||||
match "text"
|
||||
|
||||
-- Finally, just close it out cleanly.
|
||||
write "^D"
|
||||
eof()
|
||||
74
usr.bin/tee/tests/tee_test.sh
Normal file
74
usr.bin/tee/tests/tee_test.sh
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
#
|
||||
# Copyright (c) 2024 Kyle Evans <kevans@FreeBSD.org>
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
|
||||
atf_test_case single_file
|
||||
single_file_body()
|
||||
{
|
||||
atf_check -o inline:"text\n" -x "echo text | tee file"
|
||||
atf_check -o inline:"text\n" cat file
|
||||
}
|
||||
|
||||
atf_test_case device
|
||||
device_body()
|
||||
{
|
||||
atf_check -e inline:"text\n" -o inline:"text\n" -x \
|
||||
"echo text | tee /dev/stderr"
|
||||
}
|
||||
|
||||
atf_test_case multiple_file
|
||||
multiple_file_body()
|
||||
{
|
||||
atf_check -o inline:"text\n" -x "echo text | tee file1 file2"
|
||||
atf_check -o inline:"text\n" cat file1
|
||||
atf_check -o inline:"text\n" cat file2
|
||||
}
|
||||
|
||||
atf_test_case append
|
||||
append_body()
|
||||
{
|
||||
atf_check -o ignore -x "echo text | tee file"
|
||||
atf_check -o inline:"text\n" cat file
|
||||
|
||||
# Should overwrite if done again
|
||||
atf_check -o ignore -x "echo text | tee file"
|
||||
atf_check -o inline:"text\n" cat file
|
||||
|
||||
# Should duplicate if we use -a
|
||||
atf_check -o ignore -x "echo text | tee -a file"
|
||||
atf_check -o inline:"text\ntext\n" cat file
|
||||
}
|
||||
|
||||
atf_test_case sigint_ignored
|
||||
sigint_ignored_head()
|
||||
{
|
||||
# This is most cleanly tested with interactive input, to avoid adding
|
||||
# a lot of complexity in trying to manage an input and signal delivery
|
||||
# dance purely in shell.
|
||||
atf_set "require.progs" "porch"
|
||||
}
|
||||
sigint_ignored_body()
|
||||
{
|
||||
|
||||
# sigint.orch will write "text" to the file twice if we're properly
|
||||
# ignoring SIGINT, so we'll do one test to confirm that SIGINT is not
|
||||
# being ignored by porch(1), then another to confirm that tee(1) will
|
||||
# ignore SIGINT when instructed to.
|
||||
atf_check -s exit:1 -e ignore \
|
||||
porch -f $(atf_get_srcdir)/sigint.orch tee file
|
||||
atf_check -o inline:"text\n" cat file
|
||||
|
||||
atf_check porch -f $(atf_get_srcdir)/sigint.orch tee -i file
|
||||
atf_check -o inline:"text\ntext\n" cat file
|
||||
}
|
||||
|
||||
atf_init_test_cases()
|
||||
{
|
||||
atf_add_test_case single_file
|
||||
atf_add_test_case device
|
||||
atf_add_test_case multiple_file
|
||||
atf_add_test_case append
|
||||
atf_add_test_case sigint_ignored
|
||||
}
|
||||
Loading…
Reference in a new issue