--- /dev/null
+#!/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 "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