diff: fix flag -B, cleanups and a couple more tests V2

function                                             old     new   delta
diffreg                                             1157    1268    +111
uni_range                                             51       -     -51

Signed-off-by: Matheus Izvekov <mizvekov@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/testsuite/diff.tests b/testsuite/diff.tests
index f7bde2f..72ebb6c 100755
--- a/testsuite/diff.tests
+++ b/testsuite/diff.tests
@@ -44,6 +44,17 @@
 	"" \
 	"stdin"
 
+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" \
@@ -56,6 +67,26 @@
 	"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 always takes context from old file" \
 	"diff -ub - input | $TRIM_TAB" \
 "\