Simplify the logic to select configurations

User-visible changes:
* With no argument, configurations are now tested in a deterministic order.
* When given arguments, configurations are now tested in the order given.
* When given arguments, if the same configuration is passed multiple times,
  it will now be tested multiple times.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
Gilles Peskine 2022-02-26 18:16:07 +01:00
parent 588d7a7538
commit d7df877183

View file

@ -57,17 +57,14 @@ my %configs = (
# If no config-name is provided, use all known configs. # If no config-name is provided, use all known configs.
# Otherwise, use the provided names only. # Otherwise, use the provided names only.
my @configs_to_test = sort keys %configs;
if ($#ARGV >= 0) { if ($#ARGV >= 0) {
my %configs_ori = ( %configs ); foreach my $conf_name ( @ARGV ) {
%configs = (); if( ! exists $configs{$conf_name} ) {
foreach my $conf_name (@ARGV) {
if( ! exists $configs_ori{$conf_name} ) {
die "Unknown configuration: $conf_name\n"; die "Unknown configuration: $conf_name\n";
} else {
$configs{$conf_name} = $configs_ori{$conf_name};
} }
} }
@configs_to_test = @ARGV;
} }
-d 'library' && -d 'include' && -d 'tests' or die "Must be run from root\n"; -d 'library' && -d 'include' && -d 'tests' or die "Must be run from root\n";
@ -155,13 +152,13 @@ sub perform_test {
} }
} }
while( my ($conf, $data) = each %configs ) { foreach my $conf ( @configs_to_test ) {
my $test_with_psa = $data->{'test_again_with_use_psa'}; my $test_with_psa = $configs{$conf}{'test_again_with_use_psa'};
if ( $test_with_psa ) if ( $test_with_psa )
{ {
perform_test( $conf, $data, $test_with_psa ); perform_test( $conf, $configs{$conf}, $test_with_psa );
} }
perform_test( $conf, $data, 0 ); perform_test( $conf, $configs{$conf}, 0 );
} }
system( "mv $config_h.bak $config_h" ) and warn "$config_h not restored\n"; system( "mv $config_h.bak $config_h" ) and warn "$config_h not restored\n";