mirror of
				https://github.com/Mbed-TLS/mbedtls.git
				synced 2025-10-31 21:50:31 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| help () {
 | |
|     cat <<EOF
 | |
| Usage: $0 [OPTION] [PLATFORM]...
 | |
| Run all the metatests whose platform matches any of the given PLATFORM.
 | |
| A PLATFORM can contain shell wildcards.
 | |
| 
 | |
| Expected output: a lot of scary-looking error messages, since each
 | |
| metatest is expected to report a failure. The final line should be
 | |
| "Ran N metatests, all good."
 | |
| 
 | |
| If something goes wrong: the final line should be
 | |
| "Ran N metatests, X unexpected successes". Look for "Unexpected success"
 | |
| in the logs above.
 | |
| 
 | |
|   -l  List the available metatests, don't run them.
 | |
| EOF
 | |
| }
 | |
| 
 | |
| # Copyright The Mbed TLS Contributors
 | |
| # SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
 | |
| 
 | |
| set -e -u
 | |
| 
 | |
| if [ -d programs ]; then
 | |
|     METATEST_PROGRAM=programs/test/metatest
 | |
| elif [ -d ../programs ]; then
 | |
|     METATEST_PROGRAM=../programs/test/metatest
 | |
| elif [ -d ../../programs ]; then
 | |
|     METATEST_PROGRAM=../../programs/test/metatest
 | |
| else
 | |
|     echo >&2 "$0: FATAL: programs/test/metatest not found"
 | |
|     exit 120
 | |
| fi
 | |
| 
 | |
| LIST_ONLY=
 | |
| while getopts hl OPTLET; do
 | |
|     case $OPTLET in
 | |
|         h) help; exit;;
 | |
|         l) LIST_ONLY=1;;
 | |
|         \?) help >&2; exit 120;;
 | |
|     esac
 | |
| done
 | |
| shift $((OPTIND - 1))
 | |
| 
 | |
| list_matches () {
 | |
|     while read name platform junk; do
 | |
|         for pattern in "$@"; do
 | |
|             case $platform in
 | |
|                 $pattern) echo "$name"; break;;
 | |
|             esac
 | |
|         done
 | |
|     done
 | |
| }
 | |
| 
 | |
| count=0
 | |
| errors=0
 | |
| run_metatest () {
 | |
|     ret=0
 | |
|     "$METATEST_PROGRAM" "$1" || ret=$?
 | |
|     if [ $ret -eq 0 ]; then
 | |
|         echo >&2 "$0: Unexpected success: $1"
 | |
|         errors=$((errors + 1))
 | |
|     fi
 | |
|     count=$((count + 1))
 | |
| }
 | |
| 
 | |
| # Don't pipe the output of metatest so that if it fails, this script exits
 | |
| # immediately with a failure status.
 | |
| full_list=$("$METATEST_PROGRAM" list)
 | |
| matching_list=$(printf '%s\n' "$full_list" | list_matches "$@")
 | |
| 
 | |
| if [ -n "$LIST_ONLY" ]; then
 | |
|     printf '%s\n' $matching_list
 | |
|     exit
 | |
| fi
 | |
| 
 | |
| for name in $matching_list; do
 | |
|     run_metatest "$name"
 | |
| done
 | |
| 
 | |
| if [ $errors -eq 0 ]; then
 | |
|     echo "Ran $count metatests, all good."
 | |
|     exit 0
 | |
| else
 | |
|     echo "Ran $count metatests, $errors unexpected successes."
 | |
|     exit 1
 | |
| fi
 |