tangetools/find-first-fail/testsuite
2022-11-08 18:15:06 +01:00

117 lines
2.8 KiB
Bash

#!/bin/bash
test_unexported_function() {
myprog() { perl -e 'exit (shift > 12345678)' "$@"; }
# myprog is a function, so source find-first-fail first
. "$(command -v find-first-fail)"
echo Find 12345678 in unexported function
find-first-fail myprog
}
test_exported_function() {
myprog() { perl -e 'exit (shift > 12345678)' "$@"; }
# myprog is an exported function
export -f myprog
echo Find 12345678
find-first-fail myprog
}
test_startvalue() {
# exit value changes at 100 and 12345678
myprog() { perl -e '$a=shift;if($a <= 123) { exit 0; }
else { exit ($a <= 12345678) }' "$@"; }
export -f myprog
echo Find 123
find-first-fail myprog
echo Find 12345678
find-first-fail -s 200 myprog
}
test_s_v_12() {
# Multiple options
myprog() { perl -e 'exit (shift > 12)' "$@"; }
export -f myprog
echo Find 12 with progress
find-first-fail -v -s 10 myprog
echo Find 12 with progress quiet
find-first-fail -v -q -s 10 myprog
}
test_file() {
tmp=$(mktemp)
(echo Header
seq 100
echo 10
echo 12
echo 15) > "$tmp"
10_to_15() { grep ^10$ "$1" && grep ^15$ "$1"; }
export -f 10_to_15
echo 10..15
find-first-fail -s1 -qf "$tmp" 10_to_15
echo not 10..15
find-first-fail -s1 -qf "$tmp" not 10_to_15
rm "$tmp"
}
test_header() {
tmp=$(mktemp)
(echo Header
seq 10
echo 1000
seq 10) > "$tmp"
myparser() { perl -ne 'if($_ > 100) { exit 1 }' "$@"; }
export -f myparser
echo Should give:
echo Header
echo 1000
find-first-fail -s1 -f "$tmp" myparser
}
test_file_start_middle_end() {
tmp=$(mktemp)
testfile() {
(echo MyHeader
echo "$1"
echo 2
echo "$2"
echo 4
echo "$3") > "$tmp"
}
myparser() { perl -ne 'if($_ > 10) { exit 1 }' "$@"; }
export -f myparser
echo 'Find 1001'
testfile 1001 3 5
find-first-fail -s1 -f "$tmp" myparser
echo 'Find 1003'
testfile 1 1003 5
find-first-fail -s1 -f "$tmp" myparser
echo 'Find 1005'
testfile 1 3 1005
find-first-fail -s1 -f "$tmp" myparser
echo 'Find 1001 or 1005'
testfile 1001 3 1005
find-first-fail -s1 -f "$tmp" myparser
echo 'Find 1001 or 1003 or 1005'
testfile 1001 1003 1005
find-first-fail -s1 -f "$tmp" myparser
}
test_end() {
echo 'Find 12'
myprog() { perl -e 'exit (shift > 12)' "$@"; }
export -f myprog
find-first-fail -v -e 13 myprog
find-first-fail -v -s 11 -e 15 myprog
}
test_dashdash() {
echo 'Test -- will allow a function named -q'
-q() { perl -e 'exit (shift > 12)' "$@"; }
export -f -- -q
find-first-fail -q -- -q
}
export -f $(compgen -A function | grep test_)
compgen -A function | grep test_ | LC_ALL=C sort |
parallel --timeout 1000% --tag -k --joblog /tmp/jl-"$(basename "$0")" '{} 2>&1'