quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

run-metatests.sh (2090B)


      1 #!/bin/sh
      2 
      3 help () {
      4     cat <<EOF
      5 Usage: $0 [OPTION] [PLATFORM]...
      6 Run all the metatests whose platform matches any of the given PLATFORM.
      7 A PLATFORM can contain shell wildcards.
      8 
      9 Expected output: a lot of scary-looking error messages, since each
     10 metatest is expected to report a failure. The final line should be
     11 "Ran N metatests, all good."
     12 
     13 If something goes wrong: the final line should be
     14 "Ran N metatests, X unexpected successes". Look for "Unexpected success"
     15 in the logs above.
     16 
     17   -l  List the available metatests, don't run them.
     18 EOF
     19 }
     20 
     21 # Copyright The Mbed TLS Contributors
     22 # SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
     23 
     24 set -e -u
     25 
     26 if [ -d programs ]; then
     27     METATEST_PROGRAM=programs/test/metatest
     28 elif [ -d ../programs ]; then
     29     METATEST_PROGRAM=../programs/test/metatest
     30 elif [ -d ../../programs ]; then
     31     METATEST_PROGRAM=../../programs/test/metatest
     32 else
     33     echo >&2 "$0: FATAL: programs/test/metatest not found"
     34     exit 120
     35 fi
     36 
     37 LIST_ONLY=
     38 while getopts hl OPTLET; do
     39     case $OPTLET in
     40         h) help; exit;;
     41         l) LIST_ONLY=1;;
     42         \?) help >&2; exit 120;;
     43     esac
     44 done
     45 shift $((OPTIND - 1))
     46 
     47 list_matches () {
     48     while read name platform junk; do
     49         for pattern in "$@"; do
     50             case $platform in
     51                 $pattern) echo "$name"; break;;
     52             esac
     53         done
     54     done
     55 }
     56 
     57 count=0
     58 errors=0
     59 run_metatest () {
     60     ret=0
     61     "$METATEST_PROGRAM" "$1" || ret=$?
     62     if [ $ret -eq 0 ]; then
     63         echo >&2 "$0: Unexpected success: $1"
     64         errors=$((errors + 1))
     65     fi
     66     count=$((count + 1))
     67 }
     68 
     69 # Don't pipe the output of metatest so that if it fails, this script exits
     70 # immediately with a failure status.
     71 full_list=$("$METATEST_PROGRAM" list)
     72 matching_list=$(printf '%s\n' "$full_list" | list_matches "$@")
     73 
     74 if [ -n "$LIST_ONLY" ]; then
     75     printf '%s\n' $matching_list
     76     exit
     77 fi
     78 
     79 for name in $matching_list; do
     80     run_metatest "$name"
     81 done
     82 
     83 if [ $errors -eq 0 ]; then
     84     echo "Ran $count metatests, all good."
     85     exit 0
     86 else
     87     echo "Ran $count metatests, $errors unexpected successes."
     88     exit 1
     89 fi