Detect Solaris and use GNU versions of awk, sed and grep.

Don't use %N as a date format unless we're on Linux.
Avoid using GNUisms with cmp & sort.
This commit is contained in:
Daniel O'Connor 2012-09-06 16:41:24 +09:30
parent bc6681f4d7
commit 9f22073ab6
2 changed files with 28 additions and 15 deletions

View File

@ -379,7 +379,7 @@ get_servald_pids() {
fi fi
local mypid=$$ local mypid=$$
# XXX The following line will not find any PIDs if there are spaces in "$servald". # XXX The following line will not find any PIDs if there are spaces in "$servald".
local pids=$(ps -u$UID -o pid,args | awk -v mypid="$mypid" -v servald="$servald" '$1 != mypid && $2 == servald {print $1}') local pids=$(ps -u$UID -o pid,args | $AWK -v mypid="$mypid" -v servald="$servald" '$1 != mypid && $2 == servald {print $1}')
[ -n "$var" ] && eval "$var=($pids)" [ -n "$var" ] && eval "$var=($pids)"
[ -n "$pids" ] [ -n "$pids" ]
} }
@ -427,7 +427,7 @@ create_identity() {
executeOk_servald keyring add executeOk_servald keyring add
assert [ -e "$SERVALINSTANCE_PATH/serval.keyring" ] assert [ -e "$SERVALINSTANCE_PATH/serval.keyring" ]
executeOk_servald keyring list executeOk_servald keyring list
SID=$(replayStdout | sed -ne "1s/^\($rexp_sid\):.*\$/\1/p") SID=$(replayStdout | $SED -ne "1s/^\($rexp_sid\):.*\$/\1/p")
assert --message='main identity known' [ -n "$SID" ] assert --message='main identity known' [ -n "$SID" ]
DID="${1-$((5550000 + $instance_number))}" DID="${1-$((5550000 + $instance_number))}"
NAME="${2-Agent $instance_name Smith}" NAME="${2-Agent $instance_name Smith}"

View File

@ -54,10 +54,23 @@
# } # }
# runTests "$@" # runTests "$@"
# abspath isn't available on Solaris AWK=awk
type abspath 2>/dev/null SED=sed
if [ $? -ne 0 ]; then GREP=grep
TSFMT='+%Y-%m-%d %H:%M:%S'
SYSTYPE=`uname -s`
if [ $SYSTYPE = "SunOS" ]; then
abspath () { case "$1" in /*)printf "%s\n" "$1";; *)printf "%s\n" "$PWD/$1";; esac; } abspath () { case "$1" in /*)printf "%s\n" "$1";; *)printf "%s\n" "$PWD/$1";; esac; }
AWK=gawk
SED=gsed
GREP=ggrep
fi
if [ $SYSTYPE = "Linux" ]; then
# Get nanosecond resolution
TSFMT='+%Y-%m-%d %H:%M:%S.%N'
fi fi
usage() { usage() {
@ -262,7 +275,7 @@ runTests() {
} >"$_tfw_logdir/$testNumber.$testName.$result" } >"$_tfw_logdir/$testNumber.$testName.$result"
exit 0 exit 0
) </dev/null & ) </dev/null &
local job=$(jobs %% | sed -n -e '1s/^\[\([0-9]\{1,\}\)\].*/\1/p') local job=$(jobs %% | $SED -n -e '1s/^\[\([0-9]\{1,\}\)\].*/\1/p')
_tfw_running_jobs+=($job) _tfw_running_jobs+=($job)
_tfw_job_pgids[$job]=$(jobs -p %%) _tfw_job_pgids[$job]=$(jobs -p %%)
ln -f -s "$_tfw_results_dir/$testName" "$_tfw_results_dir/job-$job" ln -f -s "$_tfw_results_dir/$testName" "$_tfw_results_dir/job-$job"
@ -730,7 +743,7 @@ _tfw_abspath() {
} }
_tfw_timestamp() { _tfw_timestamp() {
local ts=$(date '+%Y-%m-%d %H:%M:%S.%N') local ts=$(date "$TSFMT")
echo "${ts%[0-9][0-9][0-9][0-9][0-9][0-9]}" echo "${ts%[0-9][0-9][0-9][0-9][0-9][0-9]}"
} }
@ -829,7 +842,7 @@ _tfw_execute() {
_tfw_parse_times_to_milliseconds() { _tfw_parse_times_to_milliseconds() {
local label="$1" local label="$1"
local var="$2" local var="$2"
local milliseconds=$(awk '$1 == "'"$label"'" { local milliseconds=$($AWK '$1 == "'"$label"'" {
value = $2 value = $2
minutes = 0 minutes = 0
if (match(value, "[0-9]+m")) { if (match(value, "[0-9]+m")) {
@ -941,7 +954,7 @@ _tfw_matches_rexp() {
local rexp="$1" local rexp="$1"
shift shift
for arg; do for arg; do
if ! echo "$arg" | grep -q -e "$rexp"; then if ! echo "$arg" | $GREP -q -e "$rexp"; then
return 1 return 1
fi fi
done done
@ -1000,11 +1013,11 @@ _tfw_assert_stdxxx_is() {
fi fi
case "$_tfw_opt_line" in case "$_tfw_opt_line" in
'') ln -f "$_tfw_tmp/$qual" "$_tfw_tmp/content";; '') ln -f "$_tfw_tmp/$qual" "$_tfw_tmp/content";;
*) sed -n -e "${_tfw_opt_line}p" "$_tfw_tmp/$qual" >"$_tfw_tmp/content";; *) $SED -n -e "${_tfw_opt_line}p" "$_tfw_tmp/$qual" >"$_tfw_tmp/content";;
esac esac
local message="${_tfw_message:-${_tfw_opt_line:+line $_tfw_opt_line of }$qual of ($executed) is $(shellarg "$@")}" local message="${_tfw_message:-${_tfw_opt_line:+line $_tfw_opt_line of }$qual of ($executed) is $(shellarg "$@")}"
echo -n "$@" >$_tfw_tmp/stdxxx_is.tmp echo -n "$@" >$_tfw_tmp/stdxxx_is.tmp
if ! cmp --quiet $_tfw_tmp/stdxxx_is.tmp "$_tfw_tmp/content"; then if ! cmp -s $_tfw_tmp/stdxxx_is.tmp "$_tfw_tmp/content"; then
_tfw_failmsg "assertion failed: $message" _tfw_failmsg "assertion failed: $message"
_tfw_backtrace _tfw_backtrace
return 1 return 1
@ -1056,7 +1069,7 @@ _tfw_assert_grep() {
_tfw_error "$file is not readable" _tfw_error "$file is not readable"
ret=$? ret=$?
else else
local matches=$(( $(grep --regexp="$pattern" "$file" | wc -l) + 0 )) local matches=$(( $($GREP --regexp="$pattern" "$file" | wc -l) + 0 ))
local done=false local done=false
local ret=0 local ret=0
local info="$matches match"$([ $matches -ne 1 ] && echo "es") local info="$matches match"$([ $matches -ne 1 ] && echo "es")
@ -1167,10 +1180,10 @@ _tfw_find_tests() {
_tfw_shopt oo -s extdebug _tfw_shopt oo -s extdebug
local name local name
for name in $(builtin declare -F | for name in $(builtin declare -F |
sed -n -e '/^declare -f test_[A-Za-z]/s/^declare -f test_//p' | $SED -n -e '/^declare -f test_[A-Za-z]/s/^declare -f test_//p' |
while read name; do builtin declare -F "test_$name"; done | while read name; do builtin declare -F "test_$name"; done |
sort --key 2,2n --key 3,3 | sort -k 2,2n -k 3,3 |
sed -e 's/^test_//' -e 's/[ ].*//') $SED -e 's/^test_//' -e 's/[ ].*//')
do do
local number=$((${#_tfw_tests[*]} + 1)) local number=$((${#_tfw_tests[*]} + 1))
local testName= local testName=