Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F133119511
D48195.id153964.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D48195.id153964.diff
View Options
diff --git a/etc/mtree/BSD.tests.dist b/etc/mtree/BSD.tests.dist
--- a/etc/mtree/BSD.tests.dist
+++ b/etc/mtree/BSD.tests.dist
@@ -1207,6 +1207,8 @@
..
tar
..
+ tee
+ ..
tftp
..
touch
diff --git a/usr.bin/tee/Makefile b/usr.bin/tee/Makefile
--- a/usr.bin/tee/Makefile
+++ b/usr.bin/tee/Makefile
@@ -1,3 +1,8 @@
+.include <src.opts.mk>
+
PROG= tee
+HAS_TESTS=
+SUBDIR.${MK_TESTS}+= tests
+
.include <bsd.prog.mk>
diff --git a/usr.bin/tee/tests/Makefile b/usr.bin/tee/tests/Makefile
new file mode 100644
--- /dev/null
+++ b/usr.bin/tee/tests/Makefile
@@ -0,0 +1,6 @@
+PACKAGE= tests
+
+ATF_TESTS_SH+= tee_test
+${PACKAGE}FILES+= sigint.orch
+
+.include <bsd.test.mk>
diff --git a/usr.bin/tee/tests/sigint.orch b/usr.bin/tee/tests/sigint.orch
new file mode 100644
--- /dev/null
+++ b/usr.bin/tee/tests/sigint.orch
@@ -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()
diff --git a/usr.bin/tee/tests/tee_test.sh b/usr.bin/tee/tests/tee_test.sh
new file mode 100644
--- /dev/null
+++ b/usr.bin/tee/tests/tee_test.sh
@@ -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
+}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Oct 24, 3:30 AM (11 h, 59 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24116495
Default Alt Text
D48195.id153964.diff (3 KB)
Attached To
Mode
D48195: tee: add some basic tests
Attached
Detach File
Event Timeline
Log In to Comment