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