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