diff --git a/programs/test/query_compile_time_config.c b/programs/test/query_compile_time_config.c index 6d92de310..5aa023348 100644 --- a/programs/test/query_compile_time_config.c +++ b/programs/test/query_compile_time_config.c @@ -28,20 +28,26 @@ #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif -#define USAGE \ - "usage: %s [ | -l ]\n\n" \ - "This program takes one command line argument which corresponds to\n" \ - "the string representation of a Mbed TLS compile time configuration.\n" \ - "The value 0 will be returned if this configuration is defined in the\n" \ - "Mbed TLS build and the macro expansion of that configuration will be\n" \ - "printed (if any). Otherwise, 1 will be returned.\n" \ - "-l\tPrint all available configuration.\n" +#define USAGE \ + "usage: %s [ -all | -any | -l ] ...\n\n" \ + "This program takes command line arguments which correspond to\n" \ + "the string representation of Mbed TLS compile time configurations.\n\n" \ + "If \"--all\" and \"--any\" are not used, then, if all given arguments\n" \ + "are defined in the Mbed TLS build, 0 is returned; otherwise 1 is\n" \ + "returned. Macro expansions of configurations will be printed (if any).\n" \ + "-l\tPrint all available configuration.\n" \ + "-all\tReturn 0 if all configurations are defined. Otherwise, return 1\n" \ + "-any\tReturn 0 if any configuration is defined. Otherwise, return 1\n" \ + "-h\tPrint this usage\n" + #include #include "query_config.h" int main( int argc, char *argv[] ) { - if ( argc != 2 ) + int i; + + if ( argc == 1 || strcmp( argv[1], "-h" ) == 0 ) { mbedtls_printf( USAGE, argv[0] ); return( MBEDTLS_EXIT_FAILURE ); @@ -53,5 +59,31 @@ int main( int argc, char *argv[] ) return( 0 ); } - return( query_config( argv[1] ) ); + if( strcmp( argv[1], "-all" ) == 0 ) + { + for( i = 2; i < argc; i++ ) + { + if( query_config( argv[i] ) != 0 ) + return( 1 ); + } + return( 0 ); + } + + if( strcmp( argv[1], "-any" ) == 0 ) + { + for( i = 2; i < argc; i++ ) + { + if( query_config( argv[i] ) == 0 ) + return( 0 ); + } + return( 1 ); + } + + for( i = 1; i < argc; i++ ) + { + if( query_config( argv[i] ) != 0 ) + return( 1 ); + } + + return( 0 ); } diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 357a10f20..d498d503c 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -223,6 +223,34 @@ requires_config_disabled() { esac } +requires_all_configs_enabled() { + if ! $P_QUERY -all $* + then + SKIP_NEXT="YES" + fi +} + +requires_all_configs_disabled() { + if $P_QUERY -any $* + then + SKIP_NEXT="YES" + fi +} + +requires_any_configs_enabled() { + if ! $P_QUERY -any $* + then + SKIP_NEXT="YES" + fi +} + +requires_any_configs_disabled() { + if $P_QUERY -all $* + then + SKIP_NEXT="YES" + fi +} + get_config_value_or_default() { # This function uses the query_config command line option to query the # required Mbed TLS compile time configuration from the ssl_server2 @@ -874,12 +902,12 @@ wait_client_done() { ( sleep $CLI_DELAY; echo "===CLIENT_TIMEOUT===" >> $CLI_OUT; kill $CLI_PID ) & DOG_PID=$! - wait $CLI_PID + # For Ubuntu 22.04, `Terminated` message is outputed by wait command. + # To remove it from stdout, redirect stdout/stderr to CLI_OUT + wait $CLI_PID >> $CLI_OUT 2>&1 CLI_EXIT=$? kill $DOG_PID >/dev/null 2>&1 - # For Ubuntu 22.04, `Terminated` message is outputed by wait command. - # To remove it from stdout, redirect stdout/stderr to CLI_OUT wait $DOG_PID >> $CLI_OUT 2>&1 echo "EXIT: $CLI_EXIT" >> $CLI_OUT @@ -1230,7 +1258,9 @@ do_run_test_once() { # terminate the server (and the proxy) kill $SRV_PID - wait $SRV_PID + # For Ubuntu 22.04, `Terminated` message is outputed by wait command. + # To remove it from stdout, redirect stdout/stderr to SRV_OUT + wait $SRV_PID >> $SRV_OUT 2>&1 SRV_RET=$? if [ -n "$PXY_CMD" ]; then