1458cbf0aSEnji Cooper# $NetBSD: t_sdiff.sh,v 1.1 2012/03/17 16:33:15 jruoho Exp $ 2458cbf0aSEnji Cooper# 3458cbf0aSEnji Cooper# Copyright (c) 2008, 2009 The NetBSD Foundation, Inc. 4458cbf0aSEnji Cooper# All rights reserved. 5458cbf0aSEnji Cooper# 6458cbf0aSEnji Cooper# Redistribution and use in source and binary forms, with or without 7458cbf0aSEnji Cooper# modification, are permitted provided that the following conditions 8458cbf0aSEnji Cooper# are met: 9458cbf0aSEnji Cooper# 1. Redistributions of source code must retain the above copyright 10458cbf0aSEnji Cooper# notice, this list of conditions and the following disclaimer. 11458cbf0aSEnji Cooper# 2. Redistributions in binary form must reproduce the above copyright 12458cbf0aSEnji Cooper# notice, this list of conditions and the following disclaimer in the 13458cbf0aSEnji Cooper# documentation and/or other materials provided with the distribution. 14458cbf0aSEnji Cooper# 15458cbf0aSEnji Cooper# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 16458cbf0aSEnji Cooper# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 17458cbf0aSEnji Cooper# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18458cbf0aSEnji Cooper# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 19458cbf0aSEnji Cooper# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20458cbf0aSEnji Cooper# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21458cbf0aSEnji Cooper# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22458cbf0aSEnji Cooper# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23458cbf0aSEnji Cooper# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24458cbf0aSEnji Cooper# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25458cbf0aSEnji Cooper# POSSIBILITY OF SUCH DAMAGE. 26458cbf0aSEnji Cooper# 27458cbf0aSEnji Cooper 28458cbf0aSEnji Cooperatf_test_case flags 29458cbf0aSEnji Cooperflags_head() 30458cbf0aSEnji Cooper{ 31458cbf0aSEnji Cooper atf_set "descr" "Checks -l, -s and -w flags" 32458cbf0aSEnji Cooper} 33458cbf0aSEnji Cooperflags_body() 34458cbf0aSEnji Cooper{ 35458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_flags_l.out -s eq:1 \ 36458cbf0aSEnji Cooper sdiff -l "$(atf_get_srcdir)/d_input1" "$(atf_get_srcdir)/d_input2" 37458cbf0aSEnji Cooper 38458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_flags_s.out -s eq:1 \ 39458cbf0aSEnji Cooper sdiff -s "$(atf_get_srcdir)/d_input1" "$(atf_get_srcdir)/d_input2" 40458cbf0aSEnji Cooper 41458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_flags_w.out -s eq:1 \ 42458cbf0aSEnji Cooper sdiff -w 125 "$(atf_get_srcdir)/d_input1" "$(atf_get_srcdir)/d_input2" 43458cbf0aSEnji Cooper} 44458cbf0aSEnji Cooper 45458cbf0aSEnji Cooperatf_test_case iflags 46458cbf0aSEnji Cooperiflags_head() 47458cbf0aSEnji Cooper{ 48458cbf0aSEnji Cooper atf_set "descr" "Checks flags -l, -s and -w combined with -I" 49458cbf0aSEnji Cooper} 50458cbf0aSEnji Cooperiflags_body() 51458cbf0aSEnji Cooper{ 52458cbf0aSEnji Cooper tail1="-w 125 -I .*filename.* $(atf_get_srcdir)/d_input1 $(atf_get_srcdir)/d_input2" 53458cbf0aSEnji Cooper tail2="-w 125 -I .*filename.* $(atf_get_srcdir)/d_input2 $(atf_get_srcdir)/d_input1" 54458cbf0aSEnji Cooper 55458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_iflags_a1.out -s eq:1 sdiff ${tail1} 56458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_iflags_a2.out -s eq:1 sdiff ${tail2} 57458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_iflags_b1.out -s eq:1 sdiff -s ${tail1} 58458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_iflags_b2.out -s eq:1 sdiff -s ${tail2} 59458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_iflags_c1.out -s eq:1 sdiff -l ${tail1} 60458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_iflags_c2.out -s eq:1 sdiff -l ${tail2} 61458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_iflags_d1.out -s eq:1 sdiff -s ${tail1} 62458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_iflags_d2.out -s eq:1 sdiff -s ${tail2} 63458cbf0aSEnji Cooper} 64458cbf0aSEnji Cooper 65458cbf0aSEnji Cooperatf_test_case tabs 66458cbf0aSEnji Coopertabs_head() 67458cbf0aSEnji Cooper{ 68458cbf0aSEnji Cooper atf_set "descr" "Checks comparing files containing tabs" 69458cbf0aSEnji Cooper} 70458cbf0aSEnji Coopertabs_body() 71458cbf0aSEnji Cooper{ 72458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_tabs.out -s eq:1 \ 73458cbf0aSEnji Cooper sdiff "$(atf_get_srcdir)/d_tabs1.in" "$(atf_get_srcdir)/d_tabs2.in" 74458cbf0aSEnji Cooper} 75458cbf0aSEnji Cooper 76458cbf0aSEnji Cooperatf_test_case tabends 77458cbf0aSEnji Coopertabends_head() 78458cbf0aSEnji Cooper{ 79458cbf0aSEnji Cooper atf_set "descr" "Checks correct handling of lines ended with tabs" 80458cbf0aSEnji Cooper} 81458cbf0aSEnji Coopertabends_body() 82458cbf0aSEnji Cooper{ 83458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_tabends_a.out -s eq:1 \ 84458cbf0aSEnji Cooper sdiff -w30 "$(atf_get_srcdir)/d_tabends.in" /dev/null 85458cbf0aSEnji Cooper 86458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_tabends_b.out -s eq:1 \ 87458cbf0aSEnji Cooper sdiff -w30 /dev/null "$(atf_get_srcdir)/d_tabends.in" 88458cbf0aSEnji Cooper 89458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_tabends_c.out -s eq:1 \ 90458cbf0aSEnji Cooper sdiff -w19 "$(atf_get_srcdir)/d_tabends.in" /dev/null 91458cbf0aSEnji Cooper} 92458cbf0aSEnji Cooper 93458cbf0aSEnji Cooperatf_test_case merge 94458cbf0aSEnji Coopermerge_head() 95458cbf0aSEnji Cooper{ 96458cbf0aSEnji Cooper atf_set "descr" "Checks interactive merging" 97458cbf0aSEnji Cooper} 98458cbf0aSEnji Coopermerge_body() 99458cbf0aSEnji Cooper{ 100458cbf0aSEnji Cooper merge_tail="-o merge.out $(atf_get_srcdir)/d_input1 \ 101458cbf0aSEnji Cooper$(atf_get_srcdir)/d_input2 >/dev/null ; cat merge.out" 102458cbf0aSEnji Cooper 103458cbf0aSEnji Cooper cp $(atf_get_srcdir)/d_input* . 104458cbf0aSEnji Cooper 105458cbf0aSEnji Cooper atf_check -o file:d_input1 -x "yes l | sdiff ${merge_tail}" 106458cbf0aSEnji Cooper atf_check -o file:d_input2 -x "yes r | sdiff ${merge_tail}" 107458cbf0aSEnji Cooper 108458cbf0aSEnji Cooper atf_check -o file:d_input1 -x \ 109458cbf0aSEnji Cooper "yes el | EDITOR=cat VISUAL=cat sdiff ${merge_tail}" 110458cbf0aSEnji Cooper atf_check -o file:d_input2 -x \ 111458cbf0aSEnji Cooper "yes er | EDITOR=cat VISUAL=cat sdiff ${merge_tail}" 112458cbf0aSEnji Cooper 113458cbf0aSEnji Cooper atf_check -o file:d_input1 -x "yes l | sdiff -s ${merge_tail}" 114458cbf0aSEnji Cooper atf_check -o file:d_input2 -x "yes r | sdiff -s ${merge_tail}" 115458cbf0aSEnji Cooper atf_check -o file:d_input1 -x "yes l | sdiff -l ${merge_tail}" 116458cbf0aSEnji Cooper atf_check -o file:d_input2 -x "yes r | sdiff -l ${merge_tail}" 117458cbf0aSEnji Cooper atf_check -o file:d_input1 -x "yes l | sdiff -ls ${merge_tail}" 118458cbf0aSEnji Cooper atf_check -o file:d_input2 -x "yes r | sdiff -ls ${merge_tail}" 119458cbf0aSEnji Cooper 120458cbf0aSEnji Cooper atf_check -o file:d_input1 -x "{ while :; do echo s; echo l; \ 121458cbf0aSEnji Cooperecho v; echo l; done; } | sdiff ${merge_tail}" 122458cbf0aSEnji Cooper 123458cbf0aSEnji Cooper atf_check -o file:d_input2 -x "{ while :; do echo s; echo r; \ 124458cbf0aSEnji Cooperecho v; echo r; done; } | sdiff ${merge_tail}" 125458cbf0aSEnji Cooper} 126458cbf0aSEnji Cooper 127458cbf0aSEnji Cooperatf_test_case same 128458cbf0aSEnji Coopersame_head() 129458cbf0aSEnji Cooper{ 130458cbf0aSEnji Cooper atf_set "descr" "Checks comparing file with itself" 131458cbf0aSEnji Cooper} 132458cbf0aSEnji Coopersame_body() 133458cbf0aSEnji Cooper{ 134458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_same.out \ 135458cbf0aSEnji Cooper sdiff "$(atf_get_srcdir)/d_input1" "$(atf_get_srcdir)/d_input1" 136458cbf0aSEnji Cooper} 137458cbf0aSEnji Cooper 138458cbf0aSEnji Cooperatf_test_case oneline 139458cbf0aSEnji Cooperoneline_head() 140458cbf0aSEnji Cooper{ 141458cbf0aSEnji Cooper atf_set "descr" "Checks comparing one-line files" 142458cbf0aSEnji Cooper} 143458cbf0aSEnji Cooperoneline_body() 144458cbf0aSEnji Cooper{ 145458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_oneline_a.out -s eq:1 \ 146458cbf0aSEnji Cooper sdiff /dev/null "$(atf_get_srcdir)/d_oneline.in" 147458cbf0aSEnji Cooper 148458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_oneline_b.out -s eq:1 \ 149458cbf0aSEnji Cooper sdiff "$(atf_get_srcdir)/d_oneline.in" /dev/null 150458cbf0aSEnji Cooper} 151458cbf0aSEnji Cooper 152458cbf0aSEnji Cooperatf_test_case dot 153458cbf0aSEnji Cooperdot_head() 154458cbf0aSEnji Cooper{ 155458cbf0aSEnji Cooper atf_set "descr" "Checks comparing with file containing only one character" 156458cbf0aSEnji Cooper} 157458cbf0aSEnji Cooperdot_body() 158458cbf0aSEnji Cooper{ 159458cbf0aSEnji Cooper echo ". <" > expout 160458cbf0aSEnji Cooper atf_check -o file:expout -s eq:1 sdiff "$(atf_get_srcdir)/d_dot.in" /dev/null 161458cbf0aSEnji Cooper 162458cbf0aSEnji Cooper echo " > ." > expout 163458cbf0aSEnji Cooper atf_check -o file:expout -s eq:1 sdiff /dev/null "$(atf_get_srcdir)/d_dot.in" 164458cbf0aSEnji Cooper} 165458cbf0aSEnji Cooper 166458cbf0aSEnji Cooperatf_test_case stdin 167458cbf0aSEnji Cooperstdin_head() 168458cbf0aSEnji Cooper{ 169458cbf0aSEnji Cooper atf_set "descr" "Checks reading data from stdin" 170458cbf0aSEnji Cooper} 171458cbf0aSEnji Cooperstdin_body() 172458cbf0aSEnji Cooper{ 173458cbf0aSEnji Cooper echo " > stdin" > expout 174458cbf0aSEnji Cooper atf_check -o file:expout -s eq:1 -x \ 175458cbf0aSEnji Cooper "echo stdin | sdiff /dev/null /dev/stdin" 176458cbf0aSEnji Cooper 177458cbf0aSEnji Cooper echo "stdin <" > expout 178458cbf0aSEnji Cooper atf_check -o file:expout -s eq:1 -x \ 179458cbf0aSEnji Cooper "echo stdin | sdiff /dev/stdin /dev/null" 180458cbf0aSEnji Cooper} 181458cbf0aSEnji Cooper 182458cbf0aSEnji Cooperatf_test_case short 183458cbf0aSEnji Coopershort_head() 184458cbf0aSEnji Cooper{ 185458cbf0aSEnji Cooper atf_set "descr" "Checks premature stop of merging" 186458cbf0aSEnji Cooper} 187458cbf0aSEnji Coopershort_body() 188458cbf0aSEnji Cooper{ 189458cbf0aSEnji Cooper atf_check -o file:$(atf_get_srcdir)/d_short.out -x \ 190458cbf0aSEnji Cooper "printf \"r\\nl\\nr\\nl\" | sdiff -o merge.out $(atf_get_srcdir)/d_input1 \ 191458cbf0aSEnji Cooper$(atf_get_srcdir)/d_input2 >/dev/null ; cat merge.out" 192458cbf0aSEnji Cooper} 193458cbf0aSEnji Cooper 194a834edfcSDag-Erling Smørgravatf_test_case tflag 195a834edfcSDag-Erling Smørgravtflag_head() 196a834edfcSDag-Erling Smørgrav{ 197a834edfcSDag-Erling Smørgrav atf_set "descr" "Checks tab expansion" 198a834edfcSDag-Erling Smørgrav} 199a834edfcSDag-Erling Smørgravtflag_body() 200a834edfcSDag-Erling Smørgrav{ 201a834edfcSDag-Erling Smørgrav printf "a\tb\n" >a 202a834edfcSDag-Erling Smørgrav printf "b\ta\n" >b 203a834edfcSDag-Erling Smørgrav atf_check -s exit:1 -o match:$'a\tb' \ 204a834edfcSDag-Erling Smørgrav sdiff a b 205a834edfcSDag-Erling Smørgrav atf_check -s exit:1 -o match:"a {7}b" \ 206a834edfcSDag-Erling Smørgrav sdiff -t a b 207a834edfcSDag-Erling Smørgrav atf_check -s exit:1 -o match:"a {3}b" \ 208a834edfcSDag-Erling Smørgrav sdiff -t --tabsize 4 a b 209a834edfcSDag-Erling Smørgrav} 210a834edfcSDag-Erling Smørgrav 211*ad7bef8bSDag-Erling Smørgravatf_test_case binary 212*ad7bef8bSDag-Erling Smørgravbinary_head() 213*ad7bef8bSDag-Erling Smørgrav{ 214*ad7bef8bSDag-Erling Smørgrav atf_set "descr" "Checks binary file handling" 215*ad7bef8bSDag-Erling Smørgrav} 216*ad7bef8bSDag-Erling Smørgravbinary_body() 217*ad7bef8bSDag-Erling Smørgrav{ 218*ad7bef8bSDag-Erling Smørgrav printf "a\0\n" >a 219*ad7bef8bSDag-Erling Smørgrav printf "b\0\n" >b 220*ad7bef8bSDag-Erling Smørgrav atf_check -o empty sdiff a a 221*ad7bef8bSDag-Erling Smørgrav atf_check -o empty sdiff a - <a 222*ad7bef8bSDag-Erling Smørgrav atf_check -s exit:1 -o match:"Binary files .* differ" \ 223*ad7bef8bSDag-Erling Smørgrav sdiff a b 224*ad7bef8bSDag-Erling Smørgrav atf_check -s exit:1 -o match:"Binary files .* differ" \ 225*ad7bef8bSDag-Erling Smørgrav sdiff a - <b 226*ad7bef8bSDag-Erling Smørgrav} 227*ad7bef8bSDag-Erling Smørgrav 228458cbf0aSEnji Cooperatf_init_test_cases() 229458cbf0aSEnji Cooper{ 230458cbf0aSEnji Cooper atf_add_test_case flags 231458cbf0aSEnji Cooper atf_add_test_case iflags 232458cbf0aSEnji Cooper atf_add_test_case tabs 233458cbf0aSEnji Cooper atf_add_test_case tabends 234458cbf0aSEnji Cooper atf_add_test_case merge 235458cbf0aSEnji Cooper atf_add_test_case same 236458cbf0aSEnji Cooper atf_add_test_case oneline 237458cbf0aSEnji Cooper atf_add_test_case dot 238458cbf0aSEnji Cooper atf_add_test_case stdin 239458cbf0aSEnji Cooper atf_add_test_case short 240a834edfcSDag-Erling Smørgrav atf_add_test_case tflag 241*ad7bef8bSDag-Erling Smørgrav atf_add_test_case binary 242458cbf0aSEnji Cooper} 243