1248590Smm# $NetBSD: t_sdiff.sh,v 1.2 2010/06/04 08:39:42 jmmv Exp $
2248590Smm#
3248590Smm# Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
4248590Smm# All rights reserved.
5248590Smm#
6248590Smm# Redistribution and use in source and binary forms, with or without
7248590Smm# modification, are permitted provided that the following conditions
8248590Smm# are met:
9248590Smm# 1. Redistributions of source code must retain the above copyright
10248590Smm#    notice, this list of conditions and the following disclaimer.
11248590Smm# 2. Redistributions in binary form must reproduce the above copyright
12248590Smm#    notice, this list of conditions and the following disclaimer in the
13248590Smm#    documentation and/or other materials provided with the distribution.
14248590Smm#
15248590Smm# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
16248590Smm# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17248590Smm# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18248590Smm# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
19248590Smm# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20248590Smm# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21248590Smm# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22248590Smm# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23248590Smm# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24248590Smm# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25248590Smm# POSSIBILITY OF SUCH DAMAGE.
26248590Smm#
27248590Smm
28248590Smmatf_test_case flags
29248590Smmflags_head()
30248590Smm{
31248590Smm	atf_set "descr" "Checks -l, -s and -w flags"
32248590Smm}
33248590Smmflags_body()
34248590Smm{
35248590Smm	atf_check -o file:$(atf_get_srcdir)/d_flags_l.out -s eq:1 \
36248590Smm	    sdiff -l "$(atf_get_srcdir)/d_input1" "$(atf_get_srcdir)/d_input2"
37248590Smm
38248590Smm	atf_check -o file:$(atf_get_srcdir)/d_flags_s.out -s eq:1 \
39248590Smm	    sdiff -s "$(atf_get_srcdir)/d_input1" "$(atf_get_srcdir)/d_input2"
40248590Smm
41248590Smm	atf_check -o file:$(atf_get_srcdir)/d_flags_w.out -s eq:1 \
42248590Smm	    sdiff -w 125 "$(atf_get_srcdir)/d_input1" "$(atf_get_srcdir)/d_input2"
43248590Smm}
44248590Smm
45248590Smmatf_test_case iflags
46248590Smmiflags_head()
47248590Smm{
48248590Smm	atf_set "descr" "Checks flags -l, -s and -w combined with -I"
49248590Smm}
50248590Smmiflags_body()
51248590Smm{
52248590Smm	tail1="-w 125 -I .*filename.* $(atf_get_srcdir)/d_input1 $(atf_get_srcdir)/d_input2"
53248590Smm	tail2="-w 125 -I .*filename.* $(atf_get_srcdir)/d_input2 $(atf_get_srcdir)/d_input1"
54248590Smm
55248590Smm	atf_check -o file:$(atf_get_srcdir)/d_iflags_a1.out -s eq:1 sdiff ${tail1}
56248590Smm	atf_check -o file:$(atf_get_srcdir)/d_iflags_a2.out -s eq:1 sdiff ${tail2}
57248590Smm	atf_check -o file:$(atf_get_srcdir)/d_iflags_b1.out -s eq:1 sdiff -s ${tail1}
58248590Smm	atf_check -o file:$(atf_get_srcdir)/d_iflags_b2.out -s eq:1 sdiff -s ${tail2}
59248590Smm	atf_check -o file:$(atf_get_srcdir)/d_iflags_c1.out -s eq:1 sdiff -l ${tail1}
60248590Smm	atf_check -o file:$(atf_get_srcdir)/d_iflags_c2.out -s eq:1 sdiff -l ${tail2}
61248590Smm	atf_check -o file:$(atf_get_srcdir)/d_iflags_d1.out -s eq:1 sdiff -s ${tail1}
62248590Smm	atf_check -o file:$(atf_get_srcdir)/d_iflags_d2.out -s eq:1 sdiff -s ${tail2}
63248590Smm}
64248590Smm
65248590Smmatf_test_case tabs
66248590Smmtabs_head()
67248590Smm{
68248590Smm	atf_set "descr" "Checks comparing files containing tabs"
69248590Smm}
70248590Smmtabs_body()
71248590Smm{
72248590Smm	atf_check -o file:$(atf_get_srcdir)/d_tabs.out -s eq:1 \
73248590Smm	    sdiff "$(atf_get_srcdir)/d_tabs1.in" "$(atf_get_srcdir)/d_tabs2.in"
74248590Smm}
75248590Smm
76248590Smmatf_test_case tabends
77248590Smmtabends_head()
78248590Smm{
79248590Smm	atf_set "descr" "Checks correct handling of lines ended with tabs"
80248590Smm}
81248590Smmtabends_body()
82248590Smm{
83248590Smm	atf_check -o file:$(atf_get_srcdir)/d_tabends_a.out -s eq:1 \
84248590Smm	    sdiff -w30 "$(atf_get_srcdir)/d_tabends.in" /dev/null
85248590Smm
86248590Smm	atf_check -o file:$(atf_get_srcdir)/d_tabends_b.out -s eq:1 \
87248590Smm	    sdiff -w30 /dev/null "$(atf_get_srcdir)/d_tabends.in"
88248590Smm
89248590Smm	atf_check -o file:$(atf_get_srcdir)/d_tabends_c.out -s eq:1 \
90248590Smm	    sdiff -w19 "$(atf_get_srcdir)/d_tabends.in" /dev/null
91248590Smm}
92248590Smm
93248590Smmatf_test_case merge
94248590Smmmerge_head()
95248590Smm{
96248590Smm	atf_set "descr" "Checks interactive merging"
97248590Smm}
98248590Smmmerge_body()
99248590Smm{
100248590Smm	merge_tail="-o merge.out $(atf_get_srcdir)/d_input1 \
101248590Smm$(atf_get_srcdir)/d_input2 >/dev/null ; cat merge.out"
102248590Smm
103248590Smm	cp $(atf_get_srcdir)/d_input* .
104248590Smm
105248590Smm	atf_check -o file:d_input1 -x "yes l | sdiff ${merge_tail}"
106248590Smm	atf_check -o file:d_input2 -x "yes r | sdiff ${merge_tail}"
107248590Smm
108248590Smm	atf_check -o file:d_input1 -x \
109248590Smm		"yes el | EDITOR=cat VISUAL=cat sdiff ${merge_tail}"
110248590Smm	atf_check -o file:d_input2 -x \
111248590Smm		"yes er | EDITOR=cat VISUAL=cat sdiff ${merge_tail}"
112248590Smm
113248590Smm	atf_check -o file:d_input1 -x "yes l | sdiff -s ${merge_tail}"
114248590Smm	atf_check -o file:d_input2 -x "yes r | sdiff -s ${merge_tail}"
115248590Smm	atf_check -o file:d_input1 -x "yes l | sdiff -l ${merge_tail}"
116248590Smm	atf_check -o file:d_input2 -x "yes r | sdiff -l ${merge_tail}"
117248590Smm	atf_check -o file:d_input1 -x "yes l | sdiff -ls ${merge_tail}"
118248590Smm	atf_check -o file:d_input2 -x "yes r | sdiff -ls ${merge_tail}"
119248590Smm
120248590Smm	atf_check -o file:d_input1 -x "{ while :; do echo s; echo l; \
121248590Smmecho v; echo l; done; } | sdiff ${merge_tail}"
122248590Smm
123248590Smm	atf_check -o file:d_input2 -x "{ while :; do echo s; echo r; \
124248590Smmecho v; echo r; done; } | sdiff ${merge_tail}"
125248590Smm}
126248590Smm
127248590Smmatf_test_case same
128248590Smmsame_head()
129248590Smm{
130248590Smm	atf_set "descr" "Checks comparing file with itself"
131248590Smm}
132248590Smmsame_body()
133248590Smm{
134248590Smm	atf_check -o file:$(atf_get_srcdir)/d_same.out \
135248590Smm	    sdiff "$(atf_get_srcdir)/d_input1" "$(atf_get_srcdir)/d_input1"
136248590Smm}
137248590Smm
138248590Smmatf_test_case oneline
139248590Smmoneline_head()
140248590Smm{
141248590Smm	atf_set "descr" "Checks comparing one-line files"
142248590Smm}
143248590Smmoneline_body()
144248590Smm{
145248590Smm	atf_check -o file:$(atf_get_srcdir)/d_oneline_a.out -s eq:1 \
146248590Smm	    sdiff /dev/null "$(atf_get_srcdir)/d_oneline.in"
147248590Smm
148248590Smm	atf_check -o file:$(atf_get_srcdir)/d_oneline_b.out -s eq:1 \
149248590Smm	    sdiff "$(atf_get_srcdir)/d_oneline.in" /dev/null
150248590Smm}
151248590Smm
152248590Smmatf_test_case dot
153248590Smmdot_head()
154248590Smm{
155248590Smm	atf_set "descr" "Checks comparing with file containing only one character"
156248590Smm}
157248590Smmdot_body()
158248590Smm{
159248590Smm	echo ".                                                               <" > expout
160248590Smm	atf_check -o file:expout -s eq:1 sdiff "$(atf_get_srcdir)/d_dot.in" /dev/null
161248590Smm
162248590Smm	echo "                                                                > ." > expout
163248590Smm	atf_check -o file:expout -s eq:1 sdiff /dev/null "$(atf_get_srcdir)/d_dot.in"
164248590Smm}
165248590Smm
166248590Smmatf_test_case stdin
167248590Smmstdin_head()
168248590Smm{
169248590Smm	atf_set "descr" "Checks reading data from stdin"
170248590Smm}
171248590Smmstdin_body()
172248590Smm{
173248590Smm	echo "                                                                > stdin" > expout
174248590Smm	atf_check -o file:expout -s eq:1 -x \
175248590Smm	    "echo stdin | sdiff /dev/null /dev/stdin"
176248590Smm
177248590Smm	echo "stdin                                                           <" > expout
178248590Smm	atf_check -o file:expout -s eq:1 -x \
179248590Smm	    "echo stdin | sdiff /dev/stdin /dev/null"
180248590Smm}
181248590Smm
182248590Smmatf_test_case short
183248590Smmshort_head()
184248590Smm{
185248590Smm	atf_set "descr" "Checks premature stop of merging"
186248590Smm}
187248590Smmshort_body()
188248590Smm{
189248590Smm	atf_check -o file:$(atf_get_srcdir)/d_short.out -x \
190248590Smm	    "printf \"r\\nl\\nr\\nl\" | sdiff -o merge.out $(atf_get_srcdir)/d_input1 \
191248590Smm$(atf_get_srcdir)/d_input2 >/dev/null ; cat merge.out"
192248590Smm}
193248590Smm
194248590Smmatf_init_test_cases()
195248590Smm{
196248590Smm	atf_add_test_case flags
197248590Smm	atf_add_test_case iflags
198248590Smm	atf_add_test_case tabs
199248590Smm	atf_add_test_case tabends
200248590Smm	atf_add_test_case merge
201248590Smm	atf_add_test_case same
202248590Smm	atf_add_test_case oneline
203248590Smm	atf_add_test_case dot
204248590Smm	atf_add_test_case stdin
205248590Smm	atf_add_test_case short
206248590Smm}
207248590Smm