mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
53 lines
1.3 KiB
Perl
53 lines
1.3 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;
|
|
}
|
|
|
|
{
|
|
return "Not run for embedded server" if $::opt_embedded_server;
|
|
return "Not configured to run ctest" unless -f "../CTestTestfile.cmake";
|
|
my ($ctest_vs)= $opt_vs_config ? "--build-config $opt_vs_config" : "";
|
|
my (@ctest_list)= `cd .. && ctest $opt_vs_config --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 } };
|
|
}
|