1# $FreeBSD$ 2 3atf_test_case simple 4atf_test_case unified 5atf_test_case header 6atf_test_case header_ns 7atf_test_case ifdef 8atf_test_case group_format 9atf_test_case side_by_side 10atf_test_case brief_format 11atf_test_case b230049 12atf_test_case stripcr_o 13atf_test_case b252515 14atf_test_case Bflag 15atf_test_case Nflag 16atf_test_case tabsize 17atf_test_case conflicting_format 18atf_test_case label 19atf_test_case report_identical 20atf_test_case non_regular_file 21atf_test_case binary 22atf_test_case functionname 23 24simple_body() 25{ 26 atf_check -o file:$(atf_get_srcdir)/simple.out -s eq:1 \ 27 diff "$(atf_get_srcdir)/input1.in" "$(atf_get_srcdir)/input2.in" 28 29 atf_check -o file:$(atf_get_srcdir)/simple_e.out -s eq:1 \ 30 diff -e "$(atf_get_srcdir)/input1.in" "$(atf_get_srcdir)/input2.in" 31 32 atf_check -o file:$(atf_get_srcdir)/simple_u.out -s eq:1 \ 33 diff -u -L input1 -L input2 "$(atf_get_srcdir)/input1.in" "$(atf_get_srcdir)/input2.in" 34 35 atf_check -o file:$(atf_get_srcdir)/simple_n.out -s eq:1 \ 36 diff -n "$(atf_get_srcdir)/input1.in" "$(atf_get_srcdir)/input2.in" 37 38 atf_check -o inline:"Files $(atf_get_srcdir)/input1.in and $(atf_get_srcdir)/input2.in differ\n" -s eq:1 \ 39 diff -q "$(atf_get_srcdir)/input1.in" "$(atf_get_srcdir)/input2.in" 40 41 atf_check \ 42 diff -q "$(atf_get_srcdir)/input1.in" "$(atf_get_srcdir)/input1.in" 43 44 atf_check -o file:$(atf_get_srcdir)/simple_i.out -s eq:1 \ 45 diff -i "$(atf_get_srcdir)/input_c1.in" "$(atf_get_srcdir)/input_c2.in" 46 47 atf_check -o file:$(atf_get_srcdir)/simple_w.out -s eq:1 \ 48 diff -w "$(atf_get_srcdir)/input_c1.in" "$(atf_get_srcdir)/input_c2.in" 49 50 atf_check -o file:$(atf_get_srcdir)/simple_b.out -s eq:1 \ 51 diff -b "$(atf_get_srcdir)/input_c1.in" "$(atf_get_srcdir)/input_c2.in" 52 53 atf_check -o file:$(atf_get_srcdir)/simple_p.out -s eq:1 \ 54 diff --label input_c1.in --label input_c2.in -p "$(atf_get_srcdir)/input_c1.in" "$(atf_get_srcdir)/input_c2.in" 55} 56 57unified_body() 58{ 59 atf_check -o file:$(atf_get_srcdir)/unified_p.out -s eq:1 \ 60 diff -up -L input_c1.in -L input_c2.in "$(atf_get_srcdir)/input_c1.in" "$(atf_get_srcdir)/input_c2.in" 61 atf_check -o file:$(atf_get_srcdir)/unified_9999.out -s eq:1 \ 62 diff -u9999 -L input_c1.in -L input_c2.in "$(atf_get_srcdir)/input_c1.in" "$(atf_get_srcdir)/input_c2.in" 63} 64 65b230049_body() 66{ 67 printf 'a\nb\r\nc\n' > b230049_a.in 68 printf 'a\r\nb\r\nc\r\n' > b230049_b.in 69 atf_check -o empty -s eq:0 \ 70 diff -up --strip-trailing-cr -L b230049_a.in -L b230049_b.in \ 71 b230049_a.in b230049_b.in 72} 73 74stripcr_o_body() 75{ 76 printf 'a\nX\nc\n' > stripcr_o_X.in 77 printf 'a\r\nY\r\nc\r\n' > stripcr_o_Y.in 78 atf_check -o "file:$(atf_get_srcdir)/strip_o.out" -s eq:1 \ 79 diff -L1 -L2 -u --strip-trailing-cr stripcr_o_X.in stripcr_o_Y.in 80} 81 82b252515_body() 83{ 84 printf 'a b\n' > b252515_a.in 85 printf 'a b\n' > b252515_b.in 86 atf_check -o empty -s eq:0 \ 87 diff -qw b252515_a.in b252515_b.in 88} 89 90header_body() 91{ 92 export TZ=UTC 93 : > empty 94 echo hello > hello 95 touch -d 2015-04-03T01:02:03 empty 96 touch -d 2016-12-22T11:22:33 hello 97 atf_check -o "file:$(atf_get_srcdir)/header.out" -s eq:1 \ 98 diff -u empty hello 99} 100 101header_ns_body() 102{ 103 export TZ=UTC 104 : > empty 105 echo hello > hello 106 touch -d 2015-04-03T01:02:03.123456789 empty 107 touch -d 2016-12-22T11:22:33.987654321 hello 108 atf_check -o "file:$(atf_get_srcdir)/header_ns.out" -s eq:1 \ 109 diff -u empty hello 110} 111 112ifdef_body() 113{ 114 atf_check -o file:$(atf_get_srcdir)/ifdef.out -s eq:1 \ 115 diff -D PLOP "$(atf_get_srcdir)/input_c1.in" \ 116 "$(atf_get_srcdir)/input_c2.in" 117} 118 119group_format_body() 120{ 121 atf_check -o file:$(atf_get_srcdir)/group-format.out -s eq:1 \ 122 diff --changed-group-format='<<<<<<< (local) 123%<======= 124%>>>>>>>> (stock) 125' "$(atf_get_srcdir)/input_c1.in" "$(atf_get_srcdir)/input_c2.in" 126} 127 128side_by_side_body() 129{ 130 atf_check -o save:A printf "A\nB\nC\n" 131 atf_check -o save:B printf "D\nB\nE\n" 132 133 exp_output=$(printf "A[[:space:]]+|[[:space:]]+D\nB[[:space:]]+B\nC[[:space:]]+|[[:space:]]+E") 134 exp_output_suppressed=$(printf "A[[:space:]]+|[[:space:]]+D\nC[[:space:]]+|[[:space:]]+E") 135 136 atf_check -o match:"$exp_output" -s exit:1 \ 137 diff --side-by-side A B 138 atf_check -o match:"$exp_output" -s exit:1 \ 139 diff -y A B 140 atf_check -o match:"$exp_output_suppressed" -s exit:1 \ 141 diff -y --suppress-common-lines A B 142 atf_check -o match:"$exp_output_suppressed" -s exit:1 \ 143 diff -W 65 -y --suppress-common-lines A B 144} 145 146brief_format_body() 147{ 148 atf_check mkdir A B 149 150 atf_check -x "echo 1 > A/test-file" 151 atf_check -x "echo 2 > B/test-file" 152 153 atf_check cp -Rf A C 154 atf_check cp -Rf A D 155 156 atf_check -x "echo 3 > D/another-test-file" 157 158 atf_check \ 159 -s exit:1 \ 160 -o inline:"Files A/test-file and B/test-file differ\n" \ 161 diff -rq A B 162 163 atf_check diff -rq A C 164 165 atf_check \ 166 -s exit:1 \ 167 -o inline:"Only in D: another-test-file\n" \ 168 diff -rq A D 169 170 atf_check \ 171 -s exit:1 \ 172 -o inline:"Files A/another-test-file and D/another-test-file differ\n" \ 173 diff -Nrq A D 174} 175 176Bflag_body() 177{ 178 atf_check -x 'printf "A\nB\n" > A' 179 atf_check -x 'printf "A\n\nB\n" > B' 180 atf_check -x 'printf "A\n \nB\n" > C' 181 atf_check -x 'printf "A\nC\nB\n" > D' 182 atf_check -x 'printf "A\nB\nC\nD\nE\nF\nG\nH" > E' 183 atf_check -x 'printf "A\n\nB\nC\nD\nE\nF\nX\nH" > F' 184 185 atf_check -s exit:0 -o inline:"" diff -B A B 186 atf_check -s exit:1 -o file:"$(atf_get_srcdir)/Bflag_C.out" diff -B A C 187 atf_check -s exit:1 -o file:"$(atf_get_srcdir)/Bflag_D.out" diff -B A D 188 atf_check -s exit:1 -o file:"$(atf_get_srcdir)/Bflag_F.out" diff -B E F 189} 190 191Nflag_body() 192{ 193 atf_check -x 'printf "foo" > A' 194 195 atf_check -s exit:1 -o ignore -e ignore diff -N A NOFILE 196 atf_check -s exit:1 -o ignore -e ignore diff -N NOFILE A 197 atf_check -s exit:2 -o ignore -e ignore diff -N NOFILE1 NOFILE2 198} 199 200tabsize_body() 201{ 202 printf "\tA\n" > A 203 printf "\tB\n" > B 204 205 atf_check -s exit:1 \ 206 -o inline:"1c1\n< A\n---\n> B\n" \ 207 diff -t --tabsize 1 A B 208} 209 210conflicting_format_body() 211{ 212 printf "\tA\n" > A 213 printf "\tB\n" > B 214 215 atf_check -s exit:2 -e ignore diff -c -u A B 216 atf_check -s exit:2 -e ignore diff -e -f A B 217 atf_check -s exit:2 -e ignore diff -y -q A B 218 atf_check -s exit:2 -e ignore diff -q -u A B 219 atf_check -s exit:2 -e ignore diff -q -c A B 220 atf_check -s exit:2 -e ignore diff --normal -c A B 221 atf_check -s exit:2 -e ignore diff -c --normal A B 222 223 atf_check -s exit:1 -o ignore -e ignore diff -u -u A B 224 atf_check -s exit:1 -o ignore -e ignore diff -e -e A B 225 atf_check -s exit:1 -o ignore -e ignore diff -y -y A B 226 atf_check -s exit:1 -o ignore -e ignore diff -q -q A B 227 atf_check -s exit:1 -o ignore -e ignore diff -c -c A B 228 atf_check -s exit:1 -o ignore -e ignore diff --normal --normal A B 229} 230 231label_body() 232{ 233 printf "\tA\n" > A 234 235 atf_check -o inline:"Files hello and world are identical\n" \ 236 -s exit:0 diff --label hello --label world -s A A 237 238 atf_check -o inline:"Binary files hello and world differ\n" \ 239 -s exit:1 diff --label hello --label world `which diff` `which ls` 240} 241 242report_identical_head() 243{ 244 atf_set "require.config" unprivileged_user 245 atf_set "require.user" root 246} 247report_identical_body() 248{ 249 UNPRIVILEGED_USER=$(atf_config_get unprivileged_user) 250 printf "\tA\n" > A 251 printf "\tB\n" > B 252 chmod -r B 253 atf_check -s exit:2 -e inline:"diff: B: Permission denied\n" \ 254 -o empty su -m "$UNPRIVILEGED_USER" -c 'diff -s A B' 255} 256 257non_regular_file_body() 258{ 259 printf "\tA\n" > A 260 mkfifo B 261 printf "\tA\n" > B & 262 263 atf_check diff A B 264 printf "\tB\n" > B & 265 atf_check -s exit:1 \ 266 -o inline:"--- A\n+++ B\n@@ -1 +1 @@\n-\tA\n+\tB\n" \ 267 diff --label A --label B -u A B 268} 269 270binary_body() 271{ 272 # the NUL byte has to be after at least BUFSIZ bytes to trick asciifile() 273 yes 012345678901234567890123456789012345678901234567890 | head -n 174 > A 274 cp A B 275 printf '\n\0\n' >> A 276 printf '\nx\n' >> B 277 278 atf_check -o inline:"Binary files A and B differ\n" -s exit:1 diff A B 279 atf_check -o inline:"176c\nx\n.\n" -s exit:1 diff -ae A B 280} 281 282functionname_body() 283{ 284 atf_check -o empty -x "which diff" 285 286 atf_check -o file:$(atf_get_srcdir)/functionname_c.out -s exit:1 \ 287 diff -u -p -L functionname.in -L functionname_c.in \ 288 "$(atf_get_srcdir)/functionname.in" "$(atf_get_srcdir)/functionname_c.in" 289 290 atf_check -o file:$(atf_get_srcdir)/functionname_objcm.out -s exit:1 \ 291 diff -u -p -L functionname.in -L functionname_objcm.in \ 292 "$(atf_get_srcdir)/functionname.in" "$(atf_get_srcdir)/functionname_objcm.in" 293 294 atf_check -o file:$(atf_get_srcdir)/functionname_objcclassm.out -s exit:1 \ 295 diff -u -p -L functionname.in -L functionname_objcclassm.in \ 296 "$(atf_get_srcdir)/functionname.in" "$(atf_get_srcdir)/functionname_objcclassm.in" 297} 298 299atf_init_test_cases() 300{ 301 atf_add_test_case simple 302 atf_add_test_case unified 303 atf_add_test_case header 304 atf_add_test_case header_ns 305 atf_add_test_case ifdef 306 atf_add_test_case group_format 307 atf_add_test_case side_by_side 308 atf_add_test_case brief_format 309 atf_add_test_case b230049 310 atf_add_test_case stripcr_o 311 atf_add_test_case b252515 312 atf_add_test_case Bflag 313 atf_add_test_case Nflag 314 atf_add_test_case tabsize 315 atf_add_test_case conflicting_format 316 atf_add_test_case label 317 atf_add_test_case report_identical 318 atf_add_test_case non_regular_file 319 atf_add_test_case binary 320 atf_add_test_case functionname 321} 322