hush/testsuite/diff.tests
Matheus Izvekov d4a7728dc3 diff: rewrite. much smaller and more correct
function                                             old     new   delta
diffreg                                             1815    3156   +1341
diff_main                                            860    1194    +334
read_token                                             -     161    +161
skip_dir                                               -      44     +44
seek_ft                                                -      31     +31
fetch                                                362     392     +30
line_compar                                            -      21     +21
add_to_dirlist                                        65      61      -4
print_only                                            16       -     -16
skipline                                              51       -     -51
newcand                                               85       -     -85
asciifile                                             89       -     -89
print_status                                         178      73    -105
make_temp                                            148       -    -148
files_differ                                         168       -    -168
get_recursive_dirlist                                182       -    -182
sort                                                 226       -    -226
prepare                                              283       -    -283
change                                               283       -    -283
do_diff                                              416       -    -416
dump_unified_vec                                     457       -    -457
check                                               1512     595    -917
------------------------------------------------------------------------------
(add/remove: 4/12 grow/shrink: 3/3 up/down: 1962/-3430)     Total: -1468 bytes

Signed-off-by: Matheus Izvekov <mizvekov@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-01-18 04:57:17 +01:00

150 lines
2.6 KiB
Bash
Executable File

#!/bin/sh
# Copyright 2008 by Denys Vlasenko
# Licensed under GPL v2, see file LICENSE for details.
. ./testing.sh
# 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" \
'diff - -; echo $?; wc -c' \
"0\n5\n" \
"" \
"stdin"
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 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" "options" "expected result" "file input" "stdin"
rm -rf diff1 diff2
mkdir diff1 diff2 diff2/subdir
echo qwe >diff1/-
echo asd >diff2/subdir/-
testing "diff diff1 diff2/subdir" \
"diff -ur diff1 diff2/subdir | $TRIM_TAB" \
"\
--- diff1/-
+++ diff2/subdir/-
@@ -1 +1 @@
-qwe
+asd
" \
"" ""
# using directory structure from prev test...
testing "diff dir dir2/file/-" \
"diff -ur diff1 diff2/subdir/- | $TRIM_TAB" \
"\
--- diff1/-
+++ diff2/subdir/-
@@ -1 +1 @@
-qwe
+asd
" \
"" ""
# using directory structure from prev test...
mkdir diff1/test
mkfifo diff2/subdir/test
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
" \
"" ""
# using directory structure from prev test...
rmdir diff1/test
echo >diff1/test
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
" \
"" ""
# using directory structure from prev test...
mkfifo diff1/test2
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
" \
"" ""
# clean up
rm -rf diff1 diff2
exit $FAILCOUNT