mirror of
https://https.git.savannah.gnu.org/git/diffutils.git
synced 2026-01-27 01:44:20 +00:00
* tests/colors: Allow an exit code of not just 141 (SIGPIPE), but also "error": 2. Reported by Tomasz Kłoczko in http://bugs.gnu.org/59905.
137 lines
3.0 KiB
Bash
Executable File
137 lines
3.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
. "${srcdir=.}/init.sh"; path_prepend_ ../src
|
|
|
|
TZ=UTC0
|
|
export TZ
|
|
|
|
fail=0
|
|
|
|
echo a > a
|
|
echo b > b
|
|
|
|
# On systems lacking fractional timestamp support, diff -u does not print
|
|
# a decimal point and 9-digit nanosecond suffix.
|
|
nanosecond_zeros=$(diff -u a b|grep '\.' > /dev/null && echo .000000000)
|
|
|
|
epoch='1970-01-01 00:00:00'
|
|
touch -t 197001010000.00 a b
|
|
|
|
e=$(printf '\033')
|
|
tab=$(printf '\t')
|
|
|
|
gen_exp_u()
|
|
{
|
|
local epoch_plus="$epoch$nanosecond_zeros +0000"
|
|
local rs=$(printf "$e[${rs}m")
|
|
local hd=$(printf "$e[${hd}m")
|
|
local ad=$(printf "$e[${ad}m")
|
|
local de=$(printf "$e[${de}m")
|
|
local ln=$(printf "$e[${ln}m")
|
|
printf '%s' \
|
|
"$hd--- a$tab$epoch_plus$rs
|
|
$hd+++ b$tab$epoch_plus$rs
|
|
${ln}@@ -1 +1 @@$rs
|
|
$de-a$rs
|
|
$ad+b$rs
|
|
"
|
|
}
|
|
|
|
gen_exp_c()
|
|
{
|
|
local epoch_posix_1003_1_2001="Thu Jan 1 00:00:00 1970"
|
|
local rs=$(printf "$e[${rs}m")
|
|
local hd=$(printf "$e[${hd}m")
|
|
local ad=$(printf "$e[${ad}m")
|
|
local de=$(printf "$e[${de}m")
|
|
local ln=$(printf "$e[${ln}m")
|
|
printf '%s' \
|
|
"$hd*** a$tab$epoch_posix_1003_1_2001$rs
|
|
$hd--- b$tab$epoch_posix_1003_1_2001$rs
|
|
***************
|
|
$ln*** 1 ****$rs
|
|
$de! a$rs
|
|
$ln--- 1 ----$rs
|
|
$ad! b$rs
|
|
"
|
|
}
|
|
|
|
gen_exp_default()
|
|
{
|
|
printf '%s' \
|
|
"1c1
|
|
< a
|
|
---
|
|
> b
|
|
"
|
|
}
|
|
|
|
gen_exp_default_colors()
|
|
{
|
|
local rs=$(printf "$e[${rs}m")
|
|
local hd=$(printf "$e[${hd}m")
|
|
local ad=$(printf "$e[${ad}m")
|
|
local de=$(printf "$e[${de}m")
|
|
local ln=$(printf "$e[${ln}m")
|
|
printf '%s' \
|
|
"${ln}1c1$rs
|
|
$de< a$rs
|
|
---
|
|
$ad> b$rs
|
|
"
|
|
}
|
|
|
|
# Compare with some known outputs
|
|
|
|
rs=0 hd=1 ad=32 de=31 ln=36
|
|
|
|
returns_ 1 diff --color=auto a b > out || fail=1
|
|
gen_exp_default > exp || framework_failure_
|
|
compare exp out || fail=1
|
|
|
|
returns_ 1 env PATH="$PATH" TERM=dumb \
|
|
diff ---presume-output-tty --color=auto a b > out \
|
|
|| fail=1
|
|
gen_exp_default > exp || framework_failure_
|
|
compare exp out || fail=1
|
|
|
|
returns_ 1 diff --color=never a b > out || fail=1
|
|
gen_exp_default > exp || framework_failure_
|
|
compare exp out || fail=1
|
|
|
|
returns_ 1 diff a b > out || fail=1
|
|
gen_exp_default > exp || framework_failure_
|
|
compare exp out || fail=1
|
|
|
|
returns_ 1 diff --color=always a b > out || fail=1
|
|
gen_exp_default_colors > exp || framework_failure_
|
|
compare exp out || fail=1
|
|
|
|
returns_ 1 diff -u --color=always a b > out || fail=1
|
|
gen_exp_u > exp || framework_failure_
|
|
compare exp out || fail=1
|
|
|
|
returns_ 1 diff -c --color=always a b > out || fail=1
|
|
gen_exp_c > exp || framework_failure_
|
|
compare exp out || fail=1
|
|
|
|
rs=0 hd=33 ad=34 de=35 ln=36
|
|
returns_ 1 diff -u --color=always \
|
|
--palette="rs=0:hd=33:ad=34:de=35:ln=36" a b > out || fail=1
|
|
gen_exp_u > exp || framework_failure_
|
|
compare exp out || fail=1
|
|
|
|
# Before the fix in http://debbugs.gnu.org/22067,
|
|
# this test would trigger an infinite loop bug.
|
|
mkfifo fifo
|
|
printf '%1000000s-a' > a
|
|
printf '%1000000s-b' > b
|
|
head -c 10 < fifo > /dev/null &
|
|
diff --color=always ---presume-output-tty a b > fifo
|
|
|
|
# Depending on version of GNU make (4.3.92-4.4 set SIGPIPE to "ignore"),
|
|
# either of these is acceptable.
|
|
case $? in 2|141) ;; *) fail=1 ;; esac
|
|
|
|
Exit $fail
|