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