mirror of
https://github.com/MariaDB/server.git
synced 2025-01-30 18:41:56 +01:00
45 lines
1.1 KiB
Perl
45 lines
1.1 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 $oldpwd=getcwd();
|
|
chdir $::opt_vardir;
|
|
my $proc=My::SafeProcess->new
|
|
(
|
|
name => $tinfo->{shortname},
|
|
path => $self->{ctests}->{$tinfo->{shortname}},
|
|
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)= $::opt_vs_config ? "-C ".substr($::opt_vs_config,1) : "";
|
|
my (@ctest_list)= `cd $bin && ctest $ctest_vs --show-only --verbose`;
|
|
return "No ctest" if $?;
|
|
|
|
my ($command, %tests);
|
|
for (@ctest_list) {
|
|
chomp;
|
|
$command= $' if /^\d+: Test command: +/;
|
|
$tests{$'}=$command if /^ +Test +#\d+: +/;
|
|
}
|
|
bless { ctests => { %tests } };
|
|
}
|