blob: 84d853852002541881ae4f8bc0006a06550d975e [file] [log] [blame]
Denis Vlasenkocee01cf2008-03-24 20:33:47 +00001#!/bin/sh
2# Copyright 2008 by Denys Vlasenko
Denys Vlasenko0ef64bd2010-08-16 20:14:46 +02003# Licensed under GPLv2, see file LICENSE in this source tree.
Denis Vlasenkocee01cf2008-03-24 20:33:47 +00004
Mike Frysingercaa79402009-11-04 18:41:22 -05005. ./testing.sh
Denis Vlasenkocee01cf2008-03-24 20:33:47 +00006
Matheus Izvekov61f5f782010-07-09 19:40:00 +02007# testing "test name" "commands" "expected result" "file input" "stdin"
Denis Vlasenkocee01cf2008-03-24 20:33:47 +00008
9# diff outputs date/time in the header, which should not be analysed
10# NB: sed has tab character in s command!
11TRIM_TAB="sed 's/ .*//'"
12
13testing "diff of stdin" \
14 "diff -u - input | $TRIM_TAB" \
15"\
16--- -
17+++ input
18@@ -1 +1,3 @@
19+qwe
20 asd
21+zxc
22" \
23 "qwe\nasd\nzxc\n" \
24 "asd\n"
25
26testing "diff of stdin, no newline in the file" \
27 "diff -u - input | $TRIM_TAB" \
28"\
29--- -
30+++ input
31@@ -1 +1,3 @@
32+qwe
33 asd
34+zxc
35\\ No newline at end of file
36" \
37 "qwe\nasd\nzxc" \
38 "asd\n"
39
40# we also test that stdin is in fact NOT read
41testing "diff of stdin, twice" \
Denys Vlasenkob972f942010-01-18 01:04:20 +010042 'diff - -; echo $?; wc -c' \
Denis Vlasenkocee01cf2008-03-24 20:33:47 +000043 "0\n5\n" \
44 "" \
45 "stdin"
46
Denys Vlasenko39f01722015-01-11 16:41:54 +010047testing "diff of empty file against stdin" \
48 "diff -u - input | $TRIM_TAB" \
49"\
50--- -
51+++ input
52@@ -1 +0,0 @@
53-a
54" \
55 "" \
56 "a\n"
57
Matheus Izvekov6f99c912010-01-21 18:58:03 -020058testing "diff of empty file against nonempty one" \
59 "diff -u - input | $TRIM_TAB" \
60"\
61--- -
62+++ input
63@@ -0,0 +1 @@
64+a
65" \
66 "a\n" \
67 ""
68
Denys Vlasenkob972f942010-01-18 01:04:20 +010069testing "diff -b treats EOF as whitespace" \
70 'diff -ub - input; echo $?' \
71 "0\n" \
72 "abc" \
73 "abc "
74
Denys Vlasenkob972f942010-01-18 01:04:20 +010075testing "diff -b treats all spaces as equal" \
76 'diff -ub - input; echo $?' \
77 "0\n" \
78 "a \t c\n" \
79 "a\t \tc\n"
80
Matheus Izvekov6f99c912010-01-21 18:58:03 -020081testing "diff -B ignores changes whose lines are all blank" \
82 'diff -uB - input; echo $?' \
83 "0\n" \
84 "a\n" \
85 "\na\n\n"
86
87testing "diff -B does not ignore changes whose lines are not all blank" \
88 "diff -uB - input | $TRIM_TAB" \
89"\
90--- -
91+++ input
92@@ -1,3 +1 @@
93-
94-b
95-
96+a
97" \
98 "a\n" \
99 "\nb\n\n"
100
Denys Vlasenkob972f942010-01-18 01:04:20 +0100101testing "diff always takes context from old file" \
102 "diff -ub - input | $TRIM_TAB" \
103"\
104--- -
105+++ input
106@@ -1 +1,3 @@
107+abc
108 a c
109+def
110" \
111 "abc\na c\ndef\n" \
112 "a c\n"
113
Matheus Izvekov61f5f782010-07-09 19:40:00 +0200114# testing "test name" "commands" "expected result" "file input" "stdin"
Denis Vlasenkocee01cf2008-03-24 20:33:47 +0000115
Matheus Izvekov61f5f782010-07-09 19:40:00 +0200116# clean up
Denis Vlasenkocee01cf2008-03-24 20:33:47 +0000117rm -rf diff1 diff2
Matheus Izvekov61f5f782010-07-09 19:40:00 +0200118
Denis Vlasenkocee01cf2008-03-24 20:33:47 +0000119mkdir diff1 diff2 diff2/subdir
120echo qwe >diff1/-
121echo asd >diff2/subdir/-
Denys Vlasenkobfa1b2e2010-05-11 03:53:57 +0200122optional FEATURE_DIFF_DIR
Denis Vlasenkocee01cf2008-03-24 20:33:47 +0000123testing "diff diff1 diff2/subdir" \
124 "diff -ur diff1 diff2/subdir | $TRIM_TAB" \
125"\
126--- diff1/-
127+++ diff2/subdir/-
128@@ -1 +1 @@
129-qwe
130+asd
131" \
132 "" ""
Denys Vlasenkobfa1b2e2010-05-11 03:53:57 +0200133SKIP=
Denis Vlasenkocee01cf2008-03-24 20:33:47 +0000134
135# using directory structure from prev test...
Denys Vlasenkobfa1b2e2010-05-11 03:53:57 +0200136optional FEATURE_DIFF_DIR
Denis Vlasenkocee01cf2008-03-24 20:33:47 +0000137testing "diff dir dir2/file/-" \
138 "diff -ur diff1 diff2/subdir/- | $TRIM_TAB" \
139"\
140--- diff1/-
141+++ diff2/subdir/-
142@@ -1 +1 @@
143-qwe
144+asd
145" \
146 "" ""
Denys Vlasenkobfa1b2e2010-05-11 03:53:57 +0200147SKIP=
Denis Vlasenkocee01cf2008-03-24 20:33:47 +0000148
149# using directory structure from prev test...
150mkdir diff1/test
151mkfifo diff2/subdir/test
Denys Vlasenkobfa1b2e2010-05-11 03:53:57 +0200152optional FEATURE_DIFF_DIR
Denis Vlasenkocee01cf2008-03-24 20:33:47 +0000153testing "diff of dir and fifo" \
154 "diff -ur diff1 diff2/subdir | $TRIM_TAB" \
155"\
156--- diff1/-
157+++ diff2/subdir/-
158@@ -1 +1 @@
159-qwe
160+asd
161Only in diff2/subdir: test
162" \
163 "" ""
Denys Vlasenkobfa1b2e2010-05-11 03:53:57 +0200164SKIP=
Denis Vlasenkocee01cf2008-03-24 20:33:47 +0000165
166# using directory structure from prev test...
167rmdir diff1/test
168echo >diff1/test
Denys Vlasenkobfa1b2e2010-05-11 03:53:57 +0200169optional FEATURE_DIFF_DIR
Denis Vlasenkocee01cf2008-03-24 20:33:47 +0000170testing "diff of file and fifo" \
171 "diff -ur diff1 diff2/subdir | $TRIM_TAB" \
172"\
173--- diff1/-
174+++ diff2/subdir/-
175@@ -1 +1 @@
176-qwe
177+asd
178File diff2/subdir/test is not a regular file or directory and was skipped
179" \
180 "" ""
Denys Vlasenkobfa1b2e2010-05-11 03:53:57 +0200181SKIP=
Denis Vlasenkocee01cf2008-03-24 20:33:47 +0000182
183# using directory structure from prev test...
184mkfifo diff1/test2
Denys Vlasenkobfa1b2e2010-05-11 03:53:57 +0200185optional FEATURE_DIFF_DIR
Denis Vlasenkocee01cf2008-03-24 20:33:47 +0000186testing "diff -rN does not read non-regular files" \
187 "diff -urN diff1 diff2/subdir | $TRIM_TAB" \
188"\
189--- diff1/-
190+++ diff2/subdir/-
191@@ -1 +1 @@
192-qwe
193+asd
194File diff2/subdir/test is not a regular file or directory and was skipped
195File diff1/test2 is not a regular file or directory and was skipped
196" \
197 "" ""
Denys Vlasenkobfa1b2e2010-05-11 03:53:57 +0200198SKIP=
Denis Vlasenkocee01cf2008-03-24 20:33:47 +0000199
200# clean up
201rm -rf diff1 diff2
202
Matheus Izvekov61f5f782010-07-09 19:40:00 +0200203# NOT using directory structure from prev test...
204mkdir diff1 diff2
205echo qwe >diff1/-
206echo rty >diff2/-
207optional FEATURE_DIFF_DIR
208testing "diff diff1 diff2/" \
209 "diff -ur diff1 diff2/ | $TRIM_TAB; diff -ur .///diff1 diff2//// | $TRIM_TAB" \
210"\
211--- diff1/-
212+++ diff2/-
213@@ -1 +1 @@
214-qwe
215+rty
216--- .///diff1/-
217+++ diff2////-
218@@ -1 +1 @@
219-qwe
220+rty
221" \
222 "" ""
223SKIP=
224
225# clean up
226rm -rf diff1 diff2
227
Denis Vlasenkocee01cf2008-03-24 20:33:47 +0000228exit $FAILCOUNT