2008-03-24 20:33:47 +00:00
|
|
|
#!/bin/sh
|
|
|
|
# Copyright 2008 by Denys Vlasenko
|
|
|
|
# Licensed under GPL v2, see file LICENSE for details.
|
|
|
|
|
2009-11-04 23:41:22 +00:00
|
|
|
. ./testing.sh
|
2008-03-24 20:33:47 +00:00
|
|
|
|
|
|
|
# testing "test name" "options" "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" \
|
2010-01-18 00:04:20 +00:00
|
|
|
'diff - -; echo $?; wc -c' \
|
2008-03-24 20:33:47 +00:00
|
|
|
"0\n5\n" \
|
|
|
|
"" \
|
|
|
|
"stdin"
|
|
|
|
|
2010-01-21 20:58:03 +00:00
|
|
|
testing "diff of empty file against nonempty one" \
|
|
|
|
"diff -u - input | $TRIM_TAB" \
|
|
|
|
"\
|
|
|
|
--- -
|
|
|
|
+++ input
|
|
|
|
@@ -0,0 +1 @@
|
|
|
|
+a
|
|
|
|
" \
|
|
|
|
"a\n" \
|
|
|
|
""
|
|
|
|
|
2010-01-18 00:04:20 +00:00
|
|
|
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"
|
|
|
|
|
2010-01-21 20:58:03 +00:00
|
|
|
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"
|
|
|
|
|
2010-01-18 00:04:20 +00:00
|
|
|
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"
|
|
|
|
|
2008-03-24 20:33:47 +00:00
|
|
|
# testing "test name" "options" "expected result" "file input" "stdin"
|
|
|
|
|
|
|
|
rm -rf diff1 diff2
|
|
|
|
mkdir diff1 diff2 diff2/subdir
|
|
|
|
echo qwe >diff1/-
|
|
|
|
echo asd >diff2/subdir/-
|
2010-05-11 01:53:57 +00:00
|
|
|
optional FEATURE_DIFF_DIR
|
2008-03-24 20:33:47 +00:00
|
|
|
testing "diff diff1 diff2/subdir" \
|
|
|
|
"diff -ur diff1 diff2/subdir | $TRIM_TAB" \
|
|
|
|
"\
|
|
|
|
--- diff1/-
|
|
|
|
+++ diff2/subdir/-
|
|
|
|
@@ -1 +1 @@
|
|
|
|
-qwe
|
|
|
|
+asd
|
|
|
|
" \
|
|
|
|
"" ""
|
2010-05-11 01:53:57 +00:00
|
|
|
SKIP=
|
2008-03-24 20:33:47 +00:00
|
|
|
|
|
|
|
# using directory structure from prev test...
|
2010-05-11 01:53:57 +00:00
|
|
|
optional FEATURE_DIFF_DIR
|
2008-03-24 20:33:47 +00:00
|
|
|
testing "diff dir dir2/file/-" \
|
|
|
|
"diff -ur diff1 diff2/subdir/- | $TRIM_TAB" \
|
|
|
|
"\
|
|
|
|
--- diff1/-
|
|
|
|
+++ diff2/subdir/-
|
|
|
|
@@ -1 +1 @@
|
|
|
|
-qwe
|
|
|
|
+asd
|
|
|
|
" \
|
|
|
|
"" ""
|
2010-05-11 01:53:57 +00:00
|
|
|
SKIP=
|
2008-03-24 20:33:47 +00:00
|
|
|
|
|
|
|
# using directory structure from prev test...
|
|
|
|
mkdir diff1/test
|
|
|
|
mkfifo diff2/subdir/test
|
2010-05-11 01:53:57 +00:00
|
|
|
optional FEATURE_DIFF_DIR
|
2008-03-24 20:33:47 +00:00
|
|
|
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
|
|
|
|
" \
|
|
|
|
"" ""
|
2010-05-11 01:53:57 +00:00
|
|
|
SKIP=
|
2008-03-24 20:33:47 +00:00
|
|
|
|
|
|
|
# using directory structure from prev test...
|
|
|
|
rmdir diff1/test
|
|
|
|
echo >diff1/test
|
2010-05-11 01:53:57 +00:00
|
|
|
optional FEATURE_DIFF_DIR
|
2008-03-24 20:33:47 +00:00
|
|
|
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
|
|
|
|
" \
|
|
|
|
"" ""
|
2010-05-11 01:53:57 +00:00
|
|
|
SKIP=
|
2008-03-24 20:33:47 +00:00
|
|
|
|
|
|
|
# using directory structure from prev test...
|
|
|
|
mkfifo diff1/test2
|
2010-05-11 01:53:57 +00:00
|
|
|
optional FEATURE_DIFF_DIR
|
2008-03-24 20:33:47 +00:00
|
|
|
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
|
|
|
|
" \
|
|
|
|
"" ""
|
2010-05-11 01:53:57 +00:00
|
|
|
SKIP=
|
2008-03-24 20:33:47 +00:00
|
|
|
|
|
|
|
# clean up
|
|
|
|
rm -rf diff1 diff2
|
|
|
|
|
|
|
|
exit $FAILCOUNT
|