mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
61 lines
1.5 KiB
Perl
61 lines
1.5 KiB
Perl
package My::Suite::CTest;
|
|
use Cwd;
|
|
|
|
@ISA = qw(My::Suite);
|
|
|
|
sub list_cases {
|
|
my ($self) = @_;
|
|
keys %{$self->{ctests}}
|
|
}
|
|
|
|
sub start_test {
|
|
my ($self, $tinfo)= @_;
|
|
my $args;
|
|
my $path;
|
|
my $cmd = $self->{ctests}->{$tinfo->{shortname}};
|
|
|
|
if ($cmd =~ /[ "'><%!*?]/) {
|
|
($path, $args) = ('/bin/sh', [ '-c', $cmd ])
|
|
} else {
|
|
($path, $args) = ($cmd, , [ ])
|
|
}
|
|
|
|
my $oldpwd=getcwd();
|
|
chdir $::opt_vardir;
|
|
my $proc=My::SafeProcess->new
|
|
(
|
|
name => $tinfo->{shortname},
|
|
path => $path,
|
|
args => \$args,
|
|
append => 1,
|
|
output => $::path_current_testlog,
|
|
error => $::path_current_testlog,
|
|
);
|
|
chdir $oldpwd;
|
|
$proc;
|
|
}
|
|
|
|
{
|
|
my $bin=$ENV{MTR_BINDIR} || '..';
|
|
return "Not run for embedded server" if $::opt_embedded_server;
|
|
return "Not configured to run ctest" unless -f "$bin/CTestTestfile.cmake";
|
|
my ($ctest_vs)= $::multiconfig ? "-C ".substr($::multiconfig,1) : "";
|
|
my (@ctest_list)= `cd "$bin" && ctest $ctest_vs --show-only --verbose`;
|
|
return "No ctest" if $?;
|
|
|
|
$ENV{MYSQL_TEST_PLUGINDIR}=$::plugindir;
|
|
|
|
my ($command, %tests, $prefix);
|
|
for (@ctest_list) {
|
|
chomp;
|
|
if (/^\d+: Test command: +([^ \t]+.*)/) {
|
|
$command= $1;
|
|
$prefix= /libmariadb/ ? 'conc_' : '';
|
|
} elsif (/^ +Test +#\d+: ([^ \t]+.*)/) {
|
|
if ($command ne "NOT_AVAILABLE" && $command ne "/bin/sh") {
|
|
$tests{$prefix.$1}=$command;
|
|
}
|
|
}
|
|
}
|
|
bless { ctests => { %tests } };
|
|
}
|