12b30b764SAndrew Jones#!/bin/bash 22b30b764SAndrew Jones 32b30b764SAndrew Jonesif [ ! -f config.mak ]; then 42b30b764SAndrew Jones echo "run ./configure && make first. See ./configure -h" 52b30b764SAndrew Jones exit 62b30b764SAndrew Jonesfi 72b30b764SAndrew Jonessource config.mak 82b30b764SAndrew Jonessource scripts/functions.bash 92b30b764SAndrew Jones 1007a07ffeSRadim Krčmářescape () 1107a07ffeSRadim Krčmář{ 1207a07ffeSRadim Krčmář for arg in "${@}"; do 1307a07ffeSRadim Krčmář printf "%q " "$arg"; # XXX: trailing whitespace 1407a07ffeSRadim Krčmář done 1507a07ffeSRadim Krčmář} 1607a07ffeSRadim Krčmář 17ba4a6fcfSRadim Krčmářtemp_file () 18ba4a6fcfSRadim Krčmář{ 19ba4a6fcfSRadim Krčmář local var="$1" 20ba4a6fcfSRadim Krčmář local file="$2" 21ba4a6fcfSRadim Krčmář 22ba4a6fcfSRadim Krčmář echo "$var=\`mktemp\`" 23ba4a6fcfSRadim Krčmář echo "cleanup=\"\$$var \$cleanup\"" 24ba4a6fcfSRadim Krčmář echo "base64 -d << 'BIN_EOF' | zcat > \$$var || exit 1" 25ba4a6fcfSRadim Krčmář 26ba4a6fcfSRadim Krčmář gzip - < $file | base64 27ba4a6fcfSRadim Krčmář 28ba4a6fcfSRadim Krčmář echo "BIN_EOF" 29ba4a6fcfSRadim Krčmář echo "chmod +x \$$var" 30ba4a6fcfSRadim Krčmář} 31ba4a6fcfSRadim Krčmář 32eec22c7cSRadim Krčmářgenerate_test () 332b30b764SAndrew Jones{ 3407a07ffeSRadim Krčmář local args=( $(escape "${@}") ) 352b30b764SAndrew Jones 36949e210fSRadim Krčmář echo "#!/bin/bash" 37f5738f77SRadim Krčmář grep '^ARCH=' config.mak 38560cd30bSRadim Krčmář 392b30b764SAndrew Jones if [ ! -f $kernel ]; then 4007a07ffeSRadim Krčmář echo 'echo "skip '"$testname"' (test kernel not present)"' 41d4c68647SRadim Krčmář echo 'exit 1' 42eec22c7cSRadim Krčmář return 1 43eec22c7cSRadim Krčmář fi 44d4c68647SRadim Krčmář 45949e210fSRadim Krčmář echo "trap 'rm -f \$cleanup' EXIT" 46ba4a6fcfSRadim Krčmář 47ba4a6fcfSRadim Krčmář temp_file bin "$kernel" 4807a07ffeSRadim Krčmář args[3]='$bin' 4907a07ffeSRadim Krčmář 507e35f25aSRadim Krčmář temp_file RUNTIME_arch_run "$TEST_DIR/run" 51ba4a6fcfSRadim Krčmář 5207a07ffeSRadim Krčmář cat scripts/runtime.bash 532b30b764SAndrew Jones 5407a07ffeSRadim Krčmář echo "run ${args[@]}" 5507a07ffeSRadim Krčmář echo "exit 0" 56eec22c7cSRadim Krčmář} 57eec22c7cSRadim Krčmář 58eec22c7cSRadim Krčmářfunction mkstandalone() 59eec22c7cSRadim Krčmář{ 60eec22c7cSRadim Krčmář local testname="$1" 61eec22c7cSRadim Krčmář 62eec22c7cSRadim Krčmář if [ -z "$testname" ]; then 63eec22c7cSRadim Krčmář return 1 642b30b764SAndrew Jones fi 65d4c68647SRadim Krčmář 66eec22c7cSRadim Krčmář if [ -n "$one_testname" ] && [ "$testname" != "$one_testname" ]; then 67eec22c7cSRadim Krčmář return 1 68eec22c7cSRadim Krčmář fi 69eec22c7cSRadim Krčmář 70eec22c7cSRadim Krčmář standalone=tests/$testname 71eec22c7cSRadim Krčmář 72eec22c7cSRadim Krčmář generate_test "$@" > $standalone 73eec22c7cSRadim Krčmář 742b30b764SAndrew Jones chmod +x $standalone 75560cd30bSRadim Krčmář 762b30b764SAndrew Jones return 0 772b30b764SAndrew Jones} 782b30b764SAndrew Jones 792b30b764SAndrew Jonestrap 'rm -f $cfg' EXIT 802b30b764SAndrew Jonescfg=$(mktemp) 812b30b764SAndrew Jones 82*2800cc92SRadim Krčmářunittests=$TEST_DIR/unittests.cfg 83*2800cc92SRadim Krčmářone_kernel="$1" 84*2800cc92SRadim Krčmář 85*2800cc92SRadim Krčmářif [ "$one_kernel" ]; then 86*2800cc92SRadim Krčmář [ ! -f $one_kernel ] && { 87*2800cc92SRadim Krčmář echo "$one_kernel doesn't exist" 88*2800cc92SRadim Krčmář exit 1 89*2800cc92SRadim Krčmář } 90*2800cc92SRadim Krčmář 91*2800cc92SRadim Krčmář one_kernel_base=$(basename $one_kernel) 92*2800cc92SRadim Krčmář one_testname="${2:-${one_kernel_base%.*}}" 93*2800cc92SRadim Krčmář 942b30b764SAndrew Jones if grep -q "\[$one_testname\]" $unittests; then 952b30b764SAndrew Jones sed -n "/\\[$one_testname\\]/,/^\\[/p" $unittests \ 962b30b764SAndrew Jones | awk '!/^\[/ || NR == 1' > $cfg 972b30b764SAndrew Jones else 982b30b764SAndrew Jones echo "[$one_testname]" > $cfg 992b30b764SAndrew Jones echo "file = $one_kernel_base" >> $cfg 1002b30b764SAndrew Jones fi 1012b30b764SAndrew Joneselse 1022b30b764SAndrew Jones cp -f $unittests $cfg 1032b30b764SAndrew Jonesfi 1042b30b764SAndrew Jones 105*2800cc92SRadim Krčmářmkdir -p tests 106*2800cc92SRadim Krčmář 1072b30b764SAndrew Jonesfor_each_unittest $cfg mkstandalone 108