xref: /freebsd/contrib/netbsd-tests/usr.bin/sdiff/t_sdiff.sh (revision 9268022b74279434ed6300244e3f977e56a8ceb5)
1*57718be8SEnji Cooper# $NetBSD: t_sdiff.sh,v 1.1 2012/03/17 16:33:15 jruoho Exp $
2*57718be8SEnji Cooper#
3*57718be8SEnji Cooper# Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
4*57718be8SEnji Cooper# All rights reserved.
5*57718be8SEnji Cooper#
6*57718be8SEnji Cooper# Redistribution and use in source and binary forms, with or without
7*57718be8SEnji Cooper# modification, are permitted provided that the following conditions
8*57718be8SEnji Cooper# are met:
9*57718be8SEnji Cooper# 1. Redistributions of source code must retain the above copyright
10*57718be8SEnji Cooper#    notice, this list of conditions and the following disclaimer.
11*57718be8SEnji Cooper# 2. Redistributions in binary form must reproduce the above copyright
12*57718be8SEnji Cooper#    notice, this list of conditions and the following disclaimer in the
13*57718be8SEnji Cooper#    documentation and/or other materials provided with the distribution.
14*57718be8SEnji Cooper#
15*57718be8SEnji Cooper# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
16*57718be8SEnji Cooper# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17*57718be8SEnji Cooper# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18*57718be8SEnji Cooper# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
19*57718be8SEnji Cooper# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20*57718be8SEnji Cooper# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21*57718be8SEnji Cooper# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22*57718be8SEnji Cooper# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23*57718be8SEnji Cooper# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24*57718be8SEnji Cooper# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25*57718be8SEnji Cooper# POSSIBILITY OF SUCH DAMAGE.
26*57718be8SEnji Cooper#
27*57718be8SEnji Cooper
28*57718be8SEnji Cooperatf_test_case flags
29*57718be8SEnji Cooperflags_head()
30*57718be8SEnji Cooper{
31*57718be8SEnji Cooper	atf_set "descr" "Checks -l, -s and -w flags"
32*57718be8SEnji Cooper}
33*57718be8SEnji Cooperflags_body()
34*57718be8SEnji Cooper{
35*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_flags_l.out -s eq:1 \
36*57718be8SEnji Cooper	    sdiff -l "$(atf_get_srcdir)/d_input1" "$(atf_get_srcdir)/d_input2"
37*57718be8SEnji Cooper
38*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_flags_s.out -s eq:1 \
39*57718be8SEnji Cooper	    sdiff -s "$(atf_get_srcdir)/d_input1" "$(atf_get_srcdir)/d_input2"
40*57718be8SEnji Cooper
41*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_flags_w.out -s eq:1 \
42*57718be8SEnji Cooper	    sdiff -w 125 "$(atf_get_srcdir)/d_input1" "$(atf_get_srcdir)/d_input2"
43*57718be8SEnji Cooper}
44*57718be8SEnji Cooper
45*57718be8SEnji Cooperatf_test_case iflags
46*57718be8SEnji Cooperiflags_head()
47*57718be8SEnji Cooper{
48*57718be8SEnji Cooper	atf_set "descr" "Checks flags -l, -s and -w combined with -I"
49*57718be8SEnji Cooper}
50*57718be8SEnji Cooperiflags_body()
51*57718be8SEnji Cooper{
52*57718be8SEnji Cooper	tail1="-w 125 -I .*filename.* $(atf_get_srcdir)/d_input1 $(atf_get_srcdir)/d_input2"
53*57718be8SEnji Cooper	tail2="-w 125 -I .*filename.* $(atf_get_srcdir)/d_input2 $(atf_get_srcdir)/d_input1"
54*57718be8SEnji Cooper
55*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_iflags_a1.out -s eq:1 sdiff ${tail1}
56*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_iflags_a2.out -s eq:1 sdiff ${tail2}
57*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_iflags_b1.out -s eq:1 sdiff -s ${tail1}
58*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_iflags_b2.out -s eq:1 sdiff -s ${tail2}
59*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_iflags_c1.out -s eq:1 sdiff -l ${tail1}
60*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_iflags_c2.out -s eq:1 sdiff -l ${tail2}
61*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_iflags_d1.out -s eq:1 sdiff -s ${tail1}
62*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_iflags_d2.out -s eq:1 sdiff -s ${tail2}
63*57718be8SEnji Cooper}
64*57718be8SEnji Cooper
65*57718be8SEnji Cooperatf_test_case tabs
66*57718be8SEnji Coopertabs_head()
67*57718be8SEnji Cooper{
68*57718be8SEnji Cooper	atf_set "descr" "Checks comparing files containing tabs"
69*57718be8SEnji Cooper}
70*57718be8SEnji Coopertabs_body()
71*57718be8SEnji Cooper{
72*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_tabs.out -s eq:1 \
73*57718be8SEnji Cooper	    sdiff "$(atf_get_srcdir)/d_tabs1.in" "$(atf_get_srcdir)/d_tabs2.in"
74*57718be8SEnji Cooper}
75*57718be8SEnji Cooper
76*57718be8SEnji Cooperatf_test_case tabends
77*57718be8SEnji Coopertabends_head()
78*57718be8SEnji Cooper{
79*57718be8SEnji Cooper	atf_set "descr" "Checks correct handling of lines ended with tabs"
80*57718be8SEnji Cooper}
81*57718be8SEnji Coopertabends_body()
82*57718be8SEnji Cooper{
83*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_tabends_a.out -s eq:1 \
84*57718be8SEnji Cooper	    sdiff -w30 "$(atf_get_srcdir)/d_tabends.in" /dev/null
85*57718be8SEnji Cooper
86*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_tabends_b.out -s eq:1 \
87*57718be8SEnji Cooper	    sdiff -w30 /dev/null "$(atf_get_srcdir)/d_tabends.in"
88*57718be8SEnji Cooper
89*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_tabends_c.out -s eq:1 \
90*57718be8SEnji Cooper	    sdiff -w19 "$(atf_get_srcdir)/d_tabends.in" /dev/null
91*57718be8SEnji Cooper}
92*57718be8SEnji Cooper
93*57718be8SEnji Cooperatf_test_case merge
94*57718be8SEnji Coopermerge_head()
95*57718be8SEnji Cooper{
96*57718be8SEnji Cooper	atf_set "descr" "Checks interactive merging"
97*57718be8SEnji Cooper}
98*57718be8SEnji Coopermerge_body()
99*57718be8SEnji Cooper{
100*57718be8SEnji Cooper	merge_tail="-o merge.out $(atf_get_srcdir)/d_input1 \
101*57718be8SEnji Cooper$(atf_get_srcdir)/d_input2 >/dev/null ; cat merge.out"
102*57718be8SEnji Cooper
103*57718be8SEnji Cooper	cp $(atf_get_srcdir)/d_input* .
104*57718be8SEnji Cooper
105*57718be8SEnji Cooper	atf_check -o file:d_input1 -x "yes l | sdiff ${merge_tail}"
106*57718be8SEnji Cooper	atf_check -o file:d_input2 -x "yes r | sdiff ${merge_tail}"
107*57718be8SEnji Cooper
108*57718be8SEnji Cooper	atf_check -o file:d_input1 -x \
109*57718be8SEnji Cooper		"yes el | EDITOR=cat VISUAL=cat sdiff ${merge_tail}"
110*57718be8SEnji Cooper	atf_check -o file:d_input2 -x \
111*57718be8SEnji Cooper		"yes er | EDITOR=cat VISUAL=cat sdiff ${merge_tail}"
112*57718be8SEnji Cooper
113*57718be8SEnji Cooper	atf_check -o file:d_input1 -x "yes l | sdiff -s ${merge_tail}"
114*57718be8SEnji Cooper	atf_check -o file:d_input2 -x "yes r | sdiff -s ${merge_tail}"
115*57718be8SEnji Cooper	atf_check -o file:d_input1 -x "yes l | sdiff -l ${merge_tail}"
116*57718be8SEnji Cooper	atf_check -o file:d_input2 -x "yes r | sdiff -l ${merge_tail}"
117*57718be8SEnji Cooper	atf_check -o file:d_input1 -x "yes l | sdiff -ls ${merge_tail}"
118*57718be8SEnji Cooper	atf_check -o file:d_input2 -x "yes r | sdiff -ls ${merge_tail}"
119*57718be8SEnji Cooper
120*57718be8SEnji Cooper	atf_check -o file:d_input1 -x "{ while :; do echo s; echo l; \
121*57718be8SEnji Cooperecho v; echo l; done; } | sdiff ${merge_tail}"
122*57718be8SEnji Cooper
123*57718be8SEnji Cooper	atf_check -o file:d_input2 -x "{ while :; do echo s; echo r; \
124*57718be8SEnji Cooperecho v; echo r; done; } | sdiff ${merge_tail}"
125*57718be8SEnji Cooper}
126*57718be8SEnji Cooper
127*57718be8SEnji Cooperatf_test_case same
128*57718be8SEnji Coopersame_head()
129*57718be8SEnji Cooper{
130*57718be8SEnji Cooper	atf_set "descr" "Checks comparing file with itself"
131*57718be8SEnji Cooper}
132*57718be8SEnji Coopersame_body()
133*57718be8SEnji Cooper{
134*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_same.out \
135*57718be8SEnji Cooper	    sdiff "$(atf_get_srcdir)/d_input1" "$(atf_get_srcdir)/d_input1"
136*57718be8SEnji Cooper}
137*57718be8SEnji Cooper
138*57718be8SEnji Cooperatf_test_case oneline
139*57718be8SEnji Cooperoneline_head()
140*57718be8SEnji Cooper{
141*57718be8SEnji Cooper	atf_set "descr" "Checks comparing one-line files"
142*57718be8SEnji Cooper}
143*57718be8SEnji Cooperoneline_body()
144*57718be8SEnji Cooper{
145*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_oneline_a.out -s eq:1 \
146*57718be8SEnji Cooper	    sdiff /dev/null "$(atf_get_srcdir)/d_oneline.in"
147*57718be8SEnji Cooper
148*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_oneline_b.out -s eq:1 \
149*57718be8SEnji Cooper	    sdiff "$(atf_get_srcdir)/d_oneline.in" /dev/null
150*57718be8SEnji Cooper}
151*57718be8SEnji Cooper
152*57718be8SEnji Cooperatf_test_case dot
153*57718be8SEnji Cooperdot_head()
154*57718be8SEnji Cooper{
155*57718be8SEnji Cooper	atf_set "descr" "Checks comparing with file containing only one character"
156*57718be8SEnji Cooper}
157*57718be8SEnji Cooperdot_body()
158*57718be8SEnji Cooper{
159*57718be8SEnji Cooper	echo ".                                                               <" > expout
160*57718be8SEnji Cooper	atf_check -o file:expout -s eq:1 sdiff "$(atf_get_srcdir)/d_dot.in" /dev/null
161*57718be8SEnji Cooper
162*57718be8SEnji Cooper	echo "                                                                > ." > expout
163*57718be8SEnji Cooper	atf_check -o file:expout -s eq:1 sdiff /dev/null "$(atf_get_srcdir)/d_dot.in"
164*57718be8SEnji Cooper}
165*57718be8SEnji Cooper
166*57718be8SEnji Cooperatf_test_case stdin
167*57718be8SEnji Cooperstdin_head()
168*57718be8SEnji Cooper{
169*57718be8SEnji Cooper	atf_set "descr" "Checks reading data from stdin"
170*57718be8SEnji Cooper}
171*57718be8SEnji Cooperstdin_body()
172*57718be8SEnji Cooper{
173*57718be8SEnji Cooper	echo "                                                                > stdin" > expout
174*57718be8SEnji Cooper	atf_check -o file:expout -s eq:1 -x \
175*57718be8SEnji Cooper	    "echo stdin | sdiff /dev/null /dev/stdin"
176*57718be8SEnji Cooper
177*57718be8SEnji Cooper	echo "stdin                                                           <" > expout
178*57718be8SEnji Cooper	atf_check -o file:expout -s eq:1 -x \
179*57718be8SEnji Cooper	    "echo stdin | sdiff /dev/stdin /dev/null"
180*57718be8SEnji Cooper}
181*57718be8SEnji Cooper
182*57718be8SEnji Cooperatf_test_case short
183*57718be8SEnji Coopershort_head()
184*57718be8SEnji Cooper{
185*57718be8SEnji Cooper	atf_set "descr" "Checks premature stop of merging"
186*57718be8SEnji Cooper}
187*57718be8SEnji Coopershort_body()
188*57718be8SEnji Cooper{
189*57718be8SEnji Cooper	atf_check -o file:$(atf_get_srcdir)/d_short.out -x \
190*57718be8SEnji Cooper	    "printf \"r\\nl\\nr\\nl\" | sdiff -o merge.out $(atf_get_srcdir)/d_input1 \
191*57718be8SEnji Cooper$(atf_get_srcdir)/d_input2 >/dev/null ; cat merge.out"
192*57718be8SEnji Cooper}
193*57718be8SEnji Cooper
194*57718be8SEnji Cooperatf_init_test_cases()
195*57718be8SEnji Cooper{
196*57718be8SEnji Cooper	atf_add_test_case flags
197*57718be8SEnji Cooper	atf_add_test_case iflags
198*57718be8SEnji Cooper	atf_add_test_case tabs
199*57718be8SEnji Cooper	atf_add_test_case tabends
200*57718be8SEnji Cooper	atf_add_test_case merge
201*57718be8SEnji Cooper	atf_add_test_case same
202*57718be8SEnji Cooper	atf_add_test_case oneline
203*57718be8SEnji Cooper	atf_add_test_case dot
204*57718be8SEnji Cooper	atf_add_test_case stdin
205*57718be8SEnji Cooper	atf_add_test_case short
206*57718be8SEnji Cooper}
207