diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 18:00:34 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 18:00:34 +0000 |
commit | 3f619478f796eddbba6e39502fe941b285dd97b1 (patch) | |
tree | e2c7b5777f728320e5b5542b6213fd3591ba51e2 /mysql-test/suite/unit/suite.pm | |
parent | Initial commit. (diff) | |
download | mariadb-3f619478f796eddbba6e39502fe941b285dd97b1.tar.xz mariadb-3f619478f796eddbba6e39502fe941b285dd97b1.zip |
Adding upstream version 1:10.11.6.upstream/1%10.11.6upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'mysql-test/suite/unit/suite.pm')
-rw-r--r-- | mysql-test/suite/unit/suite.pm | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/mysql-test/suite/unit/suite.pm b/mysql-test/suite/unit/suite.pm new file mode 100644 index 00000000..6031c4be --- /dev/null +++ b/mysql-test/suite/unit/suite.pm @@ -0,0 +1,61 @@ +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 } }; +} |