diff options
author | msvensson@neptunus.(none) <> | 2006-10-07 19:12:10 +0200 |
---|---|---|
committer | msvensson@neptunus.(none) <> | 2006-10-07 19:12:10 +0200 |
commit | 3faa1fcd4f82e095d0ec65623894382fcc1ec97b (patch) | |
tree | 9715fe9a36dc01fd920cd2a2b4eabfa912b7a406 /mysql-test | |
parent | 098164e601b2fcecd2b6e624ae993345d3bd5f52 (diff) | |
parent | 804d2effa254415fce10993b97817215b76663ce (diff) | |
download | mariadb-git-3faa1fcd4f82e095d0ec65623894382fcc1ec97b.tar.gz |
Merge neptunus.(none):/home/msvensson/mysql/mysql-4.1-maint
into neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/lib/mtr_cases.pl | 70 |
1 files changed, 52 insertions, 18 deletions
diff --git a/mysql-test/lib/mtr_cases.pl b/mysql-test/lib/mtr_cases.pl index 517a42d88c1..435ea73e8a3 100644 --- a/mysql-test/lib/mtr_cases.pl +++ b/mysql-test/lib/mtr_cases.pl @@ -143,7 +143,7 @@ sub collect_test_cases ($) { { next; } - + next if $::opt_do_test and ! defined mtr_match_prefix($elem,$::opt_do_test); collect_one_test_case($testdir,$resdir,$tname,$elem,$cases,\%disabled, @@ -159,37 +159,71 @@ sub collect_test_cases ($) { { my %sort_criteria; - my $tinfo; # Make a mapping of test name to a string that represents how that test # should be sorted among the other tests. Put the most important criterion # first, then a sub-criterion, then sub-sub-criterion, et c. - foreach $tinfo (@$cases) + foreach my $tinfo (@$cases) { - my @this_criteria = (); - - # - # Append the criteria for sorting, in order of importance. - # + my @criteria = (); - push(@this_criteria, "ndb=" . ($tinfo->{'ndb_test'} ? "1" : "0")); - push(@this_criteria, "restart=" . ($tinfo->{'master_restart'} ? "1" : "0")); - # Group test with similar options together. - # Ending with "~" makes empty sort later than filled - push(@this_criteria, join("!", sort @{$tinfo->{'master_opt'}}) . "~"); + # Look for tests that muct be in run in a defined order + # that is defined by test having the same name except for + # the ending digit - # Finally, order by the name - push(@this_criteria, $tinfo->{'name'}); + # Put variables into hash + my $test_name= $tinfo->{'name'}; + my $depend_on_test_name; + if ( $test_name =~ /^([\D]+)([0-9]{1})$/ ) + { + my $base_name= $1; + my $idx= $2; + mtr_verbose("$test_name => $base_name idx=$idx"); + if ( $idx > 1 ) + { + $idx-= 1; + $base_name= "$base_name$idx"; + mtr_verbose("New basename $base_name"); + } + + foreach my $tinfo2 (@$cases) + { + if ( $tinfo2->{'name'} eq $base_name ) + { + mtr_verbose("found dependent test $tinfo2->{'name'}"); + $depend_on_test_name=$base_name; + } + } + } - $sort_criteria{$tinfo->{"name"}} = join(" ", @this_criteria); + if ( defined $depend_on_test_name ) + { + mtr_verbose("Giving $test_name same critera as $depend_on_test_name"); + $sort_criteria{$test_name} = $sort_criteria{$depend_on_test_name}; + } + else + { + # + # Append the criteria for sorting, in order of importance. + # + push(@criteria, "ndb=" . ($tinfo->{'ndb_test'} ? "1" : "0")); + push(@criteria, "restart=" . ($tinfo->{'master_restart'} ? "1" : "0")); + # Group test with equal options together. + # Ending with "~" makes empty sort later than filled + push(@criteria, join("!", sort @{$tinfo->{'master_opt'}}) . "~"); + + $sort_criteria{$test_name} = join(" ", @criteria); + } } - @$cases = sort { $sort_criteria{$a->{"name"}} cmp $sort_criteria{$b->{"name"}}; } @$cases; + @$cases = sort { + $sort_criteria{$a->{'name'}} . $a->{'name'} cmp + $sort_criteria{$b->{'name'}} . $b->{'name'}; } @$cases; if ( $::opt_script_debug ) { # For debugging the sort-order - foreach $tinfo (@$cases) + foreach my $tinfo (@$cases) { print("$sort_criteria{$tinfo->{'name'}} -> \t$tinfo->{'name'}\n"); } |