You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
2.4 KiB
116 lines
2.4 KiB
#!/bin/sh |
|
# |
|
# Copyright (c) 2015 Fujitsu Ltd. |
|
# Author: Guangwen Feng <fenggw-fnst@cn.fujitsu.com> |
|
# |
|
# This program is free software; you can redistribute it and/or modify |
|
# it under the terms of the GNU General Public License as published by |
|
# the Free Software Foundation; either version 2 of the License, or |
|
# (at your option) any later version. |
|
# |
|
# This program is distributed in the hope that it will be useful, |
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See |
|
# the GNU General Public License for more details. |
|
# |
|
# Test which command with some basic options. |
|
# |
|
|
|
TST_ID="which01" |
|
TST_CNT=10 |
|
TST_SETUP=setup |
|
TST_TESTFUNC=do_test |
|
TST_NEEDS_TMPDIR=1 |
|
TST_NEEDS_CMDS="which" |
|
. tst_test.sh |
|
|
|
setup() |
|
{ |
|
touch pname |
|
chmod +x pname |
|
PATH=$PATH:. |
|
|
|
mkdir bin |
|
touch bin/pname |
|
chmod +x bin/pname |
|
PATH=$PATH:./bin |
|
|
|
alias pname='pname -i' |
|
} |
|
|
|
which_verify() |
|
{ |
|
until [ -z "$1" ] |
|
do |
|
found="no" |
|
for i in $1; do |
|
if grep -q "$i" temp; then |
|
found="yes" |
|
fi |
|
done |
|
if [ "$found" != "yes" ]; then |
|
echo "'$1' not found in:" |
|
cat temp |
|
echo |
|
return 1 |
|
fi |
|
shift |
|
done |
|
} |
|
|
|
which_test() |
|
{ |
|
local which_op=$1 |
|
local prog_name=$2 |
|
|
|
local which_cmd="which $which_op $prog_name" |
|
|
|
if [ "$which_op" = "--read-alias" ] || [ "$which_op" = "-i" ] || \ |
|
[ "$which_op" = "--skip-alias" ]; then |
|
which_cmd="alias | $which_cmd" |
|
fi |
|
|
|
eval ${which_cmd} >temp 2>&1 |
|
if [ $? -ne 0 ]; then |
|
grep -q -E "unknown option|invalid option|Usage" temp |
|
if [ $? -eq 0 ]; then |
|
tst_res TCONF "'${which_cmd}' not supported." |
|
return |
|
fi |
|
|
|
tst_res TFAIL "'${which_cmd}' failed." |
|
cat temp |
|
return |
|
fi |
|
|
|
if [ $# -gt 2 ]; then |
|
shift 2 |
|
which_verify "$@" |
|
if [ $? -ne 0 ]; then |
|
tst_res TFAIL "'${which_cmd}' failed, not expected." |
|
return |
|
fi |
|
fi |
|
|
|
tst_res TPASS "'${which_cmd}' passed." |
|
} |
|
|
|
do_test() |
|
{ |
|
case $1 in |
|
1) which_test "" "pname" "$PWD/pname ./pname";; |
|
2) which_test "--all" "pname" "$PWD/bin/pname" "$PWD/pname";; |
|
3) which_test "-a" "pname" "$PWD/bin/pname ./bin/pname" "$PWD/pname ./pname";; |
|
4) which_test "--read-alias" "pname" "pname='pname -i'" "$PWD/pname";; |
|
5) which_test "-i" "pname" "pname='pname -i'" "$PWD/pname";; |
|
6) alias which='which --read-alias'; |
|
which_test "--skip-alias" "pname" "$PWD/pname"; |
|
unalias which;; |
|
7) which_test "--version";; |
|
8) which_test "-v";; |
|
9) which_test "-V";; |
|
10) which_test "--help";; |
|
esac |
|
} |
|
|
|
tst_run
|
|
|