123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- #!/bin/sh
- # Copyright 2008 by Denys Vlasenko
- # Licensed under GPLv2, see file LICENSE in this source tree.
- . ./testing.sh
- # testing "test name" "commands" "expected result" "file input" "stdin"
- # diff outputs date/time in the header, which should not be analysed
- # NB: sed has tab character in s command!
- TRIM_TAB="sed 's/ .*//'"
- testing "diff of stdin" \
- "diff -u - input | $TRIM_TAB" \
- "\
- --- -
- +++ input
- @@ -1 +1,3 @@
- +qwe
- asd
- +zxc
- " \
- "qwe\nasd\nzxc\n" \
- "asd\n"
- testing "diff of stdin, no newline in the file" \
- "diff -u - input | $TRIM_TAB" \
- "\
- --- -
- +++ input
- @@ -1 +1,3 @@
- +qwe
- asd
- +zxc
- \\ No newline at end of file
- " \
- "qwe\nasd\nzxc" \
- "asd\n"
- # we also test that stdin is in fact NOT read
- testing "diff of stdin, twice" \
- 'diff - -; echo $?; wc -c' \
- "0\n5\n" \
- "" \
- "stdin"
- testing "diff of empty file against stdin" \
- "diff -u - input | $TRIM_TAB" \
- "\
- --- -
- +++ input
- @@ -1 +0,0 @@
- -a
- " \
- "" \
- "a\n"
- testing "diff of empty file against nonempty one" \
- "diff -u - input | $TRIM_TAB" \
- "\
- --- -
- +++ input
- @@ -0,0 +1 @@
- +a
- " \
- "a\n" \
- ""
- testing "diff -b treats EOF as whitespace" \
- 'diff -ub - input; echo $?' \
- "0\n" \
- "abc" \
- "abc "
- testing "diff -b treats all spaces as equal" \
- 'diff -ub - input; echo $?' \
- "0\n" \
- "a \t c\n" \
- "a\t \tc\n"
- testing "diff -B ignores changes whose lines are all blank" \
- 'diff -uB - input; echo $?' \
- "0\n" \
- "a\n" \
- "\na\n\n"
- testing "diff -B does not ignore changes whose lines are not all blank" \
- "diff -uB - input | $TRIM_TAB" \
- "\
- --- -
- +++ input
- @@ -1,3 +1 @@
- -
- -b
- -
- +a
- " \
- "a\n" \
- "\nb\n\n"
- testing "diff -B ignores blank single line change" \
- 'diff -qB - input; echo $?' \
- "0\n" \
- "\n1\n" \
- "1\n"
- testing "diff -B does not ignore non-blank single line change" \
- 'diff -qB - input; echo $?' \
- "Files - and input differ\n1\n" \
- "0\n" \
- "1\n"
- testing "diff always takes context from old file" \
- "diff -ub - input | $TRIM_TAB" \
- "\
- --- -
- +++ input
- @@ -1 +1,3 @@
- +abc
- a c
- +def
- " \
- "abc\na c\ndef\n" \
- "a c\n"
- # testing "test name" "commands" "expected result" "file input" "stdin"
- # clean up
- rm -rf diff1 diff2
- mkdir diff1 diff2 diff2/subdir
- echo qwe >diff1/-
- echo asd >diff2/subdir/-
- optional FEATURE_DIFF_DIR
- testing "diff diff1 diff2/subdir" \
- "diff -ur diff1 diff2/subdir | $TRIM_TAB" \
- "\
- --- diff1/-
- +++ diff2/subdir/-
- @@ -1 +1 @@
- -qwe
- +asd
- " \
- "" ""
- SKIP=
- # using directory structure from prev test...
- optional FEATURE_DIFF_DIR
- testing "diff dir dir2/file/-" \
- "diff -ur diff1 diff2/subdir/- | $TRIM_TAB" \
- "\
- --- diff1/-
- +++ diff2/subdir/-
- @@ -1 +1 @@
- -qwe
- +asd
- " \
- "" ""
- SKIP=
- # using directory structure from prev test...
- mkdir diff1/test
- mkfifo diff2/subdir/test
- optional FEATURE_DIFF_DIR
- testing "diff of dir and fifo" \
- "diff -ur diff1 diff2/subdir | $TRIM_TAB" \
- "\
- --- diff1/-
- +++ diff2/subdir/-
- @@ -1 +1 @@
- -qwe
- +asd
- Only in diff2/subdir: test
- " \
- "" ""
- SKIP=
- # using directory structure from prev test...
- rmdir diff1/test
- echo >diff1/test
- optional FEATURE_DIFF_DIR
- testing "diff of file and fifo" \
- "diff -ur diff1 diff2/subdir | $TRIM_TAB" \
- "\
- --- diff1/-
- +++ diff2/subdir/-
- @@ -1 +1 @@
- -qwe
- +asd
- File diff2/subdir/test is not a regular file or directory and was skipped
- " \
- "" ""
- SKIP=
- # using directory structure from prev test...
- mkfifo diff1/test2
- optional FEATURE_DIFF_DIR
- testing "diff -rN does not read non-regular files" \
- "diff -urN diff1 diff2/subdir | $TRIM_TAB" \
- "\
- --- diff1/-
- +++ diff2/subdir/-
- @@ -1 +1 @@
- -qwe
- +asd
- File diff2/subdir/test is not a regular file or directory and was skipped
- File diff1/test2 is not a regular file or directory and was skipped
- " \
- "" ""
- SKIP=
- # clean up
- rm -rf diff1 diff2
- # NOT using directory structure from prev test...
- mkdir diff1 diff2
- echo qwe >diff1/-
- echo rty >diff2/-
- optional FEATURE_DIFF_DIR
- testing "diff diff1 diff2/" \
- "diff -ur diff1 diff2/ | $TRIM_TAB; diff -ur .///diff1 diff2//// | $TRIM_TAB" \
- "\
- --- diff1/-
- +++ diff2/-
- @@ -1 +1 @@
- -qwe
- +rty
- --- .///diff1/-
- +++ diff2////-
- @@ -1 +1 @@
- -qwe
- +rty
- " \
- "" ""
- SKIP=
- # clean up
- rm -rf diff1 diff2
- exit $FAILCOUNT
|