@@ -62,20 +62,42 @@ sub dsn {
6262 if ( $driver =~ / MySQL|MariaDB/ ) {
6363 if ( $driver eq ' MariaDB' && !$test_mysqld_dsn ) {
6464 my $help = ` mysql --help` ;
65- my ($mariadb_version ) = $help =~ / \A .*?([0-9]+\. [0-9]+)\. [0-9]+\- MariaDB/ ;
65+ my ($mariadb_major_version , $mariadb_minor_version ) = $help =~ / \A .*?([0-9]+) \. ( [0-9]+)\. [0-9]+\- MariaDB/ ;
6666 no warnings ' redefine' ;
6767 $test_mysqld_dsn = \&Test::mysqld::dsn;
6868 *Test::mysqld::dsn = sub {
6969 my $dsn = $test_mysqld_dsn -> (@_ );
7070 # cf. https://github.com/kazuho/p5-test-mysqld/issues/32
71- $dsn =~ s / ;user=root// if $mariadb_version && $mariadb_version > 10. 3;
71+ $dsn =~ s / ;user=root// if $mariadb_major_version && $mariadb_major_version >= 10 && $mariadb_minor_version > 3;
7272 $dsn ;
7373 };
7474 }
75+ if ($driver eq ' MySQL' ) {
76+ *Test::mysqld::wait_for_stop = sub {
77+ my $self = shift ;
78+ local $? ; # waitpid may change this value :/
79+ my $ct = 0;
80+ # XXX: modified
81+ while (waitpid ($self -> pid, POSIX::WNOHANG()) <= 0) {
82+ sleep 1;
83+ if ($ct ++ > 10) {
84+ kill 9, $self -> pid;
85+ }
86+ }
87+ $self -> pid(undef );
88+ # might remain for example when sending SIGKILL
89+ unlink $self -> my_cnf-> {' pid-file' };
90+ };
91+ }
7592 $TestDB {$dbname } ||= Test::mysqld-> new(
7693 my_cnf => {
7794 ' skip-networking' => ' ' , # no TCP socket
95+ ' skip-name-resolve' => ' ' ,
96+ ' default_authentication_plugin' => ' mysql_native_password' ,
7897 ' sql-mode' => ' TRADITIONAL,NO_AUTO_VALUE_ON_ZERO,ONLY_FULL_GROUP_BY' ,
98+ ' bind-address' => ' 127.0.0.1' ,
99+ ' disable-log-bin' => ' ' ,
100+ ' performance_schema' => ' OFF' ,
79101 }
80102 ) or die $Test::mysqld::errstr ;
81103 my $dsn = $TestDB {$dbname }-> dsn;
0 commit comments