1f08c3bdfSopenharmony_ci#!/bin/sh 2f08c3bdfSopenharmony_ci# SPDX-License-Identifier: GPL-2.0-or-later 3f08c3bdfSopenharmony_ci# Copyright (c) 2015 Fujitsu Ltd. 4f08c3bdfSopenharmony_ci# Author: Guangwen Feng <fenggw-fnst@cn.fujitsu.com> 5f08c3bdfSopenharmony_ci# 6f08c3bdfSopenharmony_ci# Test which command with some basic options. 7f08c3bdfSopenharmony_ci 8f08c3bdfSopenharmony_ciTST_CNT=10 9f08c3bdfSopenharmony_ciTST_SETUP=setup 10f08c3bdfSopenharmony_ciTST_TESTFUNC=do_test 11f08c3bdfSopenharmony_ciTST_NEEDS_TMPDIR=1 12f08c3bdfSopenharmony_ciTST_NEEDS_CMDS="which" 13f08c3bdfSopenharmony_ci 14f08c3bdfSopenharmony_cisetup() 15f08c3bdfSopenharmony_ci{ 16f08c3bdfSopenharmony_ci touch pname 17f08c3bdfSopenharmony_ci chmod +x pname 18f08c3bdfSopenharmony_ci PATH=$PATH:. 19f08c3bdfSopenharmony_ci 20f08c3bdfSopenharmony_ci mkdir bin 21f08c3bdfSopenharmony_ci touch bin/pname 22f08c3bdfSopenharmony_ci chmod +x bin/pname 23f08c3bdfSopenharmony_ci PATH=$PATH:./bin 24f08c3bdfSopenharmony_ci 25f08c3bdfSopenharmony_ci alias pname='pname -i' 26f08c3bdfSopenharmony_ci} 27f08c3bdfSopenharmony_ci 28f08c3bdfSopenharmony_ciwhich_verify() 29f08c3bdfSopenharmony_ci{ 30f08c3bdfSopenharmony_ci local IFS i j 31f08c3bdfSopenharmony_ci IFS="$IFS_FIRST_LEVEL" 32f08c3bdfSopenharmony_ci for i in $1; do 33f08c3bdfSopenharmony_ci found="no" 34f08c3bdfSopenharmony_ci IFS="$IFS_SECOND_LEVEL" 35f08c3bdfSopenharmony_ci for j in $i; do 36f08c3bdfSopenharmony_ci if grep -F -q "$j" temp; then 37f08c3bdfSopenharmony_ci found="yes" 38f08c3bdfSopenharmony_ci fi 39f08c3bdfSopenharmony_ci done 40f08c3bdfSopenharmony_ci if [ "$found" != "yes" ]; then 41f08c3bdfSopenharmony_ci echo "'$i' not found in:" 42f08c3bdfSopenharmony_ci cat temp 43f08c3bdfSopenharmony_ci echo 44f08c3bdfSopenharmony_ci return 1 45f08c3bdfSopenharmony_ci fi 46f08c3bdfSopenharmony_ci done 47f08c3bdfSopenharmony_ci} 48f08c3bdfSopenharmony_ci 49f08c3bdfSopenharmony_ciwhich_test() 50f08c3bdfSopenharmony_ci{ 51f08c3bdfSopenharmony_ci local which_op=$1 52f08c3bdfSopenharmony_ci local prog_name=$2 53f08c3bdfSopenharmony_ci 54f08c3bdfSopenharmony_ci local which_cmd="which $which_op $prog_name" 55f08c3bdfSopenharmony_ci 56f08c3bdfSopenharmony_ci if [ "$which_op" = "--read-alias" ] || [ "$which_op" = "-i" ] || \ 57f08c3bdfSopenharmony_ci [ "$which_op" = "--skip-alias" ]; then 58f08c3bdfSopenharmony_ci which_cmd="alias | $which_cmd" 59f08c3bdfSopenharmony_ci fi 60f08c3bdfSopenharmony_ci 61f08c3bdfSopenharmony_ci eval ${which_cmd} >temp 2>&1 62f08c3bdfSopenharmony_ci if [ $? -ne 0 ]; then 63f08c3bdfSopenharmony_ci grep -q -E "unknown option|invalid option|Usage" temp 64f08c3bdfSopenharmony_ci if [ $? -eq 0 ]; then 65f08c3bdfSopenharmony_ci tst_res TCONF "'${which_cmd}' not supported." 66f08c3bdfSopenharmony_ci return 67f08c3bdfSopenharmony_ci fi 68f08c3bdfSopenharmony_ci 69f08c3bdfSopenharmony_ci tst_res TFAIL "'${which_cmd}' failed." 70f08c3bdfSopenharmony_ci cat temp 71f08c3bdfSopenharmony_ci return 72f08c3bdfSopenharmony_ci fi 73f08c3bdfSopenharmony_ci 74f08c3bdfSopenharmony_ci if [ $# -gt 2 ]; then 75f08c3bdfSopenharmony_ci shift 2 76f08c3bdfSopenharmony_ci which_verify "$@" 77f08c3bdfSopenharmony_ci if [ $? -ne 0 ]; then 78f08c3bdfSopenharmony_ci tst_res TFAIL "'${which_cmd}' failed, not expected." 79f08c3bdfSopenharmony_ci return 80f08c3bdfSopenharmony_ci fi 81f08c3bdfSopenharmony_ci fi 82f08c3bdfSopenharmony_ci 83f08c3bdfSopenharmony_ci tst_res TPASS "'${which_cmd}' passed." 84f08c3bdfSopenharmony_ci} 85f08c3bdfSopenharmony_ci 86f08c3bdfSopenharmony_ciIFS_FIRST_LEVEL='^' 87f08c3bdfSopenharmony_ciIFS_SECOND_LEVEL='|' 88f08c3bdfSopenharmony_cido_test() 89f08c3bdfSopenharmony_ci{ 90f08c3bdfSopenharmony_ci case $1 in 91f08c3bdfSopenharmony_ci 1) which_test "" "pname" "$PWD/pname|./pname";; 92f08c3bdfSopenharmony_ci 2) which_test "-all" "pname" "$PWD/bin/pname|./bin/pname^$PWD/pname|./pname";; 93f08c3bdfSopenharmony_ci 3) which_test "-a" "pname" "$PWD/bin/pname|./bin/pname^$PWD/pname|./pname";; 94f08c3bdfSopenharmony_ci 4) which_test "--read-alias" "pname" "pname='pname -i'^$PWD/pname";; 95f08c3bdfSopenharmony_ci 5) which_test "-i" "pname" "pname='pname -i'^$PWD/pname";; 96f08c3bdfSopenharmony_ci 6) alias which='which --read-alias'; 97f08c3bdfSopenharmony_ci which_test "--skip-alias" "pname" "$PWD/pname"; 98f08c3bdfSopenharmony_ci unalias which;; 99f08c3bdfSopenharmony_ci 7) which_test "--version";; 100f08c3bdfSopenharmony_ci 8) which_test "-v";; 101f08c3bdfSopenharmony_ci 9) which_test "-V";; 102f08c3bdfSopenharmony_ci 10) which_test "--help";; 103f08c3bdfSopenharmony_ci esac 104f08c3bdfSopenharmony_ci} 105f08c3bdfSopenharmony_ci 106f08c3bdfSopenharmony_ci. tst_test.sh 107f08c3bdfSopenharmony_citst_run 108