summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/unit/suite.pm
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:00:34 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:00:34 +0000
commit3f619478f796eddbba6e39502fe941b285dd97b1 (patch)
treee2c7b5777f728320e5b5542b6213fd3591ba51e2 /mysql-test/suite/unit/suite.pm
parentInitial commit. (diff)
downloadmariadb-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.pm61
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 } };
+}