xref: /freebsd/usr.bin/ident/tests/ident_test.sh (revision 73e0d6b44038d1c7764c5013a54ae17a8f680a69)
1#
2# Copyright (c) 2026 Dag-Erling Smørgrav <des@FreeBSD.org>
3#
4# SPDX-License-Identifier: BSD-2-Clause
5#
6
7atf_test_case stdin
8stdin_head()
9{
10	atf_set "descr" "Read from stdin"
11}
12stdin_body()
13{
14	local dir=$(atf_get_srcdir)
15	atf_check -o file:"${dir}/test.out" \
16		ident < "${dir}/test.in"
17}
18
19atf_test_case file
20file_head()
21{
22	atf_set "descr" "Read from a file"
23}
24file_body()
25{
26	local dir=$(atf_get_srcdir)
27	echo "${dir}/test.in:" >out
28	cat "${dir}/test.out" >>out
29	atf_check -o file:out ident "${dir}/test.in"
30}
31
32atf_test_case noid
33noid_head()
34{
35	atf_set "descr" "No id keywords in input"
36}
37noid_body()
38{
39	local dir=$(atf_get_srcdir)
40	atf_check \
41	    -s exit:1 \
42	    -o inline:"${dir}/testnoid:\n" \
43	    -e inline:"ident warning: no id keywords in ${dir}/testnoid\n" \
44	    ident "${dir}/testnoid"
45}
46
47atf_test_case multi
48multi_head()
49{
50	atf_set "descr" "Multiple inputs"
51}
52multi_body()
53{
54	local dir=$(atf_get_srcdir)
55	echo "${dir}/test.in:" >out
56	cat "${dir}/test.out" >>out
57	echo "${dir}/testnoid:" >>out
58	atf_check \
59	    -s exit:1 \
60	    -o file:out \
61	    -e inline:"ident warning: no id keywords in ${dir}/testnoid\n" \
62	    ident "${file}"
63}
64
65atf_test_case stdout
66stdout_head()
67{
68	atf_set "descr" "Failure to write to stdout"
69}
70stdout_body()
71{
72	local dir=$(atf_get_srcdir)
73	mkfifo fifo
74	: <fifo &
75	{
76		wait
77		trap "" PIPE
78		ident "${dir}"/test.in 2>stderr
79		result=$?
80	} >fifo
81	atf_check_equal 1 "$result"
82	atf_check -o match:"stdout" cat stderr
83}
84
85atf_init_test_cases()
86{
87	atf_add_test_case stdin
88	atf_add_test_case file
89	atf_add_test_case noid
90	atf_add_test_case stdout
91}
92