mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 20:36:16 +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 } };
 | 
						|
}
 |