#!/bin/bash #testing "name" "command" "result" "infile" "stdin" seq 10 > left seq 11 > right testcmd "unknown argument" '--oops left right 2>/dev/null ; echo $?' "2\n" "" "" testcmd "missing" 'missing1 missing2 2>/dev/null ; echo $?' "2\n" "" "" testcmd "- -" '- - ; echo $?' "0\n" "" "whatever" testcmd "simple" "-u -L lll -L rrr left right" '--- lll +++ rrr @@ -8,3 +8,4 @@ 8 9 10 +11 ' "" "" mkdir -p tree1 tree2 echo foo > tree1/file echo food > tree2/file # Debian's diff gratuitously echoes its command line with -r. No idea why. testcmd "-r" "-u -r -L tree1/file -L tree2/file tree1 tree2 | grep -v ^diff" \ '--- tree1/file +++ tree2/file @@ -1 +1 @@ -foo +food ' "" "" echo -e "hello\r\nworld\r\n"> a echo -e "hello\nworld\n"> b testcmd "--strip-trailing-cr off" "-q a b" "Files a and b differ\n" "" "" testcmd "--strip-trailing-cr on" '-u --strip-trailing-cr a b; echo $?' \ "0\n" "" "" echo -e "1\n2" > aa echo -e "1\n3" > bb testcmd "line format" "--unchanged-line-format=U%l --old-line-format=D%l --new-line-format=A%l aa bb" "U1D2A3" "" "" testcmd "line format empty" "--unchanged-line-format= --old-line-format=D%l --new-line-format=A%l aa bb" "D2A3" "" "" mkfifo fifo1 mkfifo fifo2 echo -e "1\n2" > fifo1& echo -e "1\n3" > fifo2& testcmd "fifos" "-u -L fifo1 -L fifo2 fifo1 fifo2" '--- fifo1 +++ fifo2 @@ -1,2 +1,2 @@ 1 -2 +3 ' "" "" echo -e 'int bar() { } int foo() { } int baz() { 1 {2 3 4 foo } '> a echo -e 'int barbar() { } int foo() { } int baz() { 1a {2 3 4 bar } '> b testcmd 'show function' "--show-function-line=' {$' -U1 -L lll -L rrr a b" \ '--- lll +++ rrr @@ -1,2 +1,2 @@ -int bar() { +int barbar() { } @@ -7,3 +7,3 @@ int foo() { int baz() { - 1 + 1a {2 @@ -11,3 +11,3 @@ int baz() { 4 - foo + bar } ' \ '' '' seq 1 100000 > one seq 1 4 100000 > two testcmd 'big hunk' '-u --label nope --label nope one two' \ "$(echo -e '--- nope\n+++ nope\n@@ -1,100000 +1,25000 @@'; for((i=1;i<=100000;i++)); do (((i-1)&3)) && echo "-$i" || echo " $i"; done)\n" '' '' rm one two