File indexing completed on 2024-04-21 03:52:27
0001 #!/bin/bash 0002 set -e 0003 0004 TEST_FRAMEWORKS="kapidox kcoreaddons kitemmodels kauth kcompletion kwidgetsaddons kiconthemes" 0005 0006 PROGNAME=$(basename $0) 0007 0008 oldpwd=$PWD 0009 cd $(dirname $0) 0010 SRC_DIR=$PWD/../src 0011 cd $oldpwd 0012 0013 0014 die() { 0015 echo "$PROGNAME: ERROR: $*" | fold -s -w "${COLUMNS:-80}" >&2 0016 exit 1 0017 } 0018 0019 0020 usage() { 0021 if [ "$*" != "" ] ; then 0022 echo "ERROR: $*" 0023 fi 0024 0025 cat << EOF 0026 Usage: $PROGNAME [OPTION ...] <framework-base-dir> [<test>...] 0027 ...program description... 0028 Options: 0029 -v display command output 0030 --keep keep temporary dir 0031 -h, --help display this usage message and exit 0032 EOF 0033 0034 exit 1 0035 } 0036 0037 is_in_list() { 0038 local wanted="$1" 0039 shift 0040 for item in $* ; do 0041 if [ "$wanted" = "$item" ] ; then 0042 return 0 0043 fi 0044 done 0045 return 1 0046 } 0047 0048 fails="" 0049 run_test() { 0050 local name=$1 0051 local dir=$2 0052 local cmd="$3" 0053 local log="$sandbox_dir/$name.log" 0054 0055 if [ -n "$tests" ] ; then 0056 if ! is_in_list $name $tests ; then 0057 return 0058 fi 0059 fi 0060 0061 cd $dir 0062 local exitcode 0063 if [ "$verbose" = true ] ; then 0064 echo "$name: $cmd" 0065 $cmd 2>&1 | tee $log 0066 exitcode=${PIPESTATUS[0]} 0067 else 0068 echo -n "$name: " 0069 if $cmd > $log 2>&1 ; then 0070 exitcode=0 0071 else 0072 exitcode=$? 0073 fi 0074 fi 0075 if [ $exitcode -eq 0 ] ; then 0076 echo "OK" 0077 else 0078 echo "FAIL, see $log" 0079 fails="$fails $name" 0080 fi 0081 } 0082 0083 0084 show_results() { 0085 echo "------------------" 0086 if [ -n "$fails" ] ; then 0087 echo "Failures: $fails" 0088 echo "$sandbox_dir has been kept for inspection" 0089 exit 1 0090 else 0091 echo "Success" 0092 if [ "$keep_tmp_dir" = "true" ] ; then 0093 echo "$sandbox_dir kept" 0094 else 0095 rm -rf $sandbox_dir 0096 fi 0097 fi 0098 } 0099 0100 0101 src_fw_base_dir="" 0102 verbose=false 0103 keep_tmp_dir=false 0104 tests="" 0105 while [ $# -gt 0 ] ; do 0106 case "$1" in 0107 -h|--help) 0108 usage 0109 ;; 0110 -v) 0111 verbose=true 0112 ;; 0113 --keep) 0114 keep_tmp_dir=true 0115 ;; 0116 -*) 0117 usage "Unknown option '$1'" 0118 ;; 0119 *) 0120 if [ -z "$src_fw_base_dir" ] ; then 0121 src_fw_base_dir="$1" 0122 else 0123 tests="$tests $1" 0124 fi 0125 ;; 0126 esac 0127 shift 0128 done 0129 0130 if [ -z "$src_fw_base_dir" ] ; then 0131 usage "Not enough arguments" 0132 fi 0133 0134 sandbox_dir=$(mktemp --directory --tmpdir kapidox-test-XXXXX) 0135 fw_base_dir=$sandbox_dir/frameworks 0136 mkdir $fw_base_dir 0137 0138 cd $fw_base_dir 0139 for fw in $TEST_FRAMEWORKS ; do 0140 ln -s $src_fw_base_dir/$fw 0141 done 0142 mkdir $sandbox_dir/fwapidox 0143 0144 ls $fw_base_dir 0145 run_test kapidox_generate-kcompletion $fw_base_dir/kcompletion "$SRC_DIR/kapidox_generate $fw_base_dir/kcompletion" 0146 ls $fw_base_dir 0147 run_test kapidox_generate-fw $sandbox_dir/fwapidox "$SRC_DIR/kapidox_generate $fw_base_dir" 0148 show_results