mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Merge bk-internal:/home/bk/mysql-5.1-maint
into shellback.(none):/home/msvensson/mysql/mysql-5.1-maint
This commit is contained in:
@@ -48,13 +48,14 @@ sub collect_test_cases ($) {
|
||||
{
|
||||
# Check that the tests specified was found
|
||||
# in at least one suite
|
||||
foreach my $tname ( @::opt_cases )
|
||||
foreach my $test_name_spec ( @::opt_cases )
|
||||
{
|
||||
my $found= 0;
|
||||
my ($sname, $tname, $extension)= split_testname($test_name_spec);
|
||||
foreach my $test ( @$cases )
|
||||
{
|
||||
if ( $test->{'name'} eq $tname ||
|
||||
mtr_match_extension($test->{'name'}, $tname) )
|
||||
# test->{name} is always in suite.name format
|
||||
if ( $test->{name} =~ /.*\.$tname/ )
|
||||
{
|
||||
$found= 1;
|
||||
}
|
||||
@@ -144,6 +145,45 @@ sub collect_test_cases ($) {
|
||||
|
||||
}
|
||||
|
||||
# Valid extensions and their corresonding component id
|
||||
my %exts = ( 'test' => 'mysqld',
|
||||
'imtest' => 'im'
|
||||
);
|
||||
|
||||
|
||||
# Returns (suitename, testname, extension)
|
||||
sub split_testname {
|
||||
my ($test_name)= @_;
|
||||
|
||||
# Get rid of directory part and split name on .'s
|
||||
my @parts= split(/\./, basename($test_name));
|
||||
|
||||
if (@parts == 1){
|
||||
# Only testname given, ex: alias
|
||||
return (undef , $parts[0], undef);
|
||||
} elsif (@parts == 2) {
|
||||
# Either testname.test or suite.testname given
|
||||
# Ex. main.alias or alias.test
|
||||
|
||||
if (defined $exts{$parts[1]})
|
||||
{
|
||||
return (undef , $parts[0], $parts[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
return ($parts[0], $parts[1], undef);
|
||||
}
|
||||
|
||||
} elsif (@parts == 3) {
|
||||
# Fully specified suitename.testname.test
|
||||
# ex main.alias.test
|
||||
return ( $parts[0], $parts[1], $parts[2]);
|
||||
}
|
||||
|
||||
mtr_error("Illegal format of test name: $test_name");
|
||||
}
|
||||
|
||||
|
||||
sub collect_one_suite($$)
|
||||
{
|
||||
my $suite= shift; # Test suite name
|
||||
@@ -189,77 +229,55 @@ sub collect_one_suite($$)
|
||||
|
||||
if ( @::opt_cases )
|
||||
{
|
||||
# Collect in specified order, no sort
|
||||
foreach my $tname2 ( @::opt_cases )
|
||||
# Collect in specified order
|
||||
foreach my $test_name_spec ( @::opt_cases )
|
||||
{
|
||||
my $tname= $tname2; # Don't modify @::opt_cases !
|
||||
my $elem= undef;
|
||||
my $component_id= undef;
|
||||
my ($sname, $tname, $extension)= split_testname($test_name_spec);
|
||||
|
||||
# Get rid of directory part (path). Leave the extension since it is used
|
||||
# to understand type of the test.
|
||||
# The test name parts have now been defined
|
||||
#print " suite_name: $sname\n";
|
||||
#print " tname: $tname\n";
|
||||
#print " extension: $extension\n";
|
||||
|
||||
$tname = basename($tname);
|
||||
# Check cirrect suite if suitename is defined
|
||||
next if (defined $sname and $suite ne $sname);
|
||||
|
||||
# Get rid of suite part
|
||||
$tname =~ s/^(.*)\.//;
|
||||
|
||||
# Check if the extenstion has been specified.
|
||||
|
||||
if ( mtr_match_extension($tname, "test") )
|
||||
my $component_id;
|
||||
if ( defined $extension )
|
||||
{
|
||||
$elem= $tname;
|
||||
$tname=~ s/\.test$//;
|
||||
$component_id= 'mysqld';
|
||||
}
|
||||
elsif ( mtr_match_extension($tname, "imtest") )
|
||||
{
|
||||
$elem= $tname;
|
||||
$tname =~ s/\.imtest$//;
|
||||
$component_id= 'im';
|
||||
}
|
||||
|
||||
# If target component is known, check that the specified test case
|
||||
# exists.
|
||||
#
|
||||
# Otherwise, try to guess the target component.
|
||||
|
||||
if ( $component_id )
|
||||
{
|
||||
if ( ! -f "$testdir/$elem")
|
||||
my $full_name= "$testdir/$tname.$extension";
|
||||
# Extension was specified, check if the test exists
|
||||
if ( ! -f $full_name)
|
||||
{
|
||||
mtr_error("Test case $tname ($testdir/$elem) is not found");
|
||||
# This is only an error if suite was specified, otherwise it
|
||||
# could exist in another suite
|
||||
mtr_error("Test '$full_name' was not found in suite '$sname'")
|
||||
if $sname;
|
||||
|
||||
next;
|
||||
}
|
||||
$component_id= $exts{$extension};
|
||||
}
|
||||
else
|
||||
{
|
||||
my $mysqld_test_exists = -f "$testdir/$tname.test";
|
||||
my $im_test_exists = -f "$testdir/$tname.imtest";
|
||||
# No extension was specified
|
||||
my ($ext, $component);
|
||||
while (($ext, $component)= each %exts) {
|
||||
my $full_name= "$testdir/$tname.$ext";
|
||||
|
||||
if ( $mysqld_test_exists and $im_test_exists )
|
||||
{
|
||||
mtr_error("Ambiguous test case name ($tname)");
|
||||
}
|
||||
elsif ( ! $mysqld_test_exists and ! $im_test_exists )
|
||||
{
|
||||
# Silently skip, could exist in another suite
|
||||
next;
|
||||
}
|
||||
elsif ( $mysqld_test_exists )
|
||||
{
|
||||
$elem= "$tname.test";
|
||||
$component_id= 'mysqld';
|
||||
}
|
||||
elsif ( $im_test_exists )
|
||||
{
|
||||
$elem= "$tname.imtest";
|
||||
$component_id= 'im';
|
||||
}
|
||||
if ( ! -f $full_name ) {
|
||||
next;
|
||||
}
|
||||
$component_id= $component;
|
||||
$extension= $ext;
|
||||
}
|
||||
# Test not found here, could exist in other suite
|
||||
next unless $component_id;
|
||||
}
|
||||
|
||||
collect_one_test_case($testdir,$resdir,$suite,$tname,
|
||||
$elem,$cases,\%disabled,$component_id,
|
||||
$suite_opts);
|
||||
"$tname.$extension",$cases,\%disabled,
|
||||
$component_id,$suite_opts);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -319,6 +337,8 @@ sub collect_one_test_case($$$$$$$$$) {
|
||||
|
||||
my $path= "$testdir/$elem";
|
||||
|
||||
|
||||
print "collect_one_test_case\n";
|
||||
# ----------------------------------------------------------------------
|
||||
# Skip some tests silently
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user