diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index c457b72..8c7a394 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -27,7 +27,12 @@ jobs: perl-version: ${{ matrix.perl }} - run: | author/ci_install_mysql.sh - cpanm --quiet --installdeps --notest --with-recommends . + cpanm --quiet --installdeps --notest . + if [[ "DATABASE_ADAPTER" == "mariadb" ]]; then + cpanm DBD::MariaDB + else + cpanm DBD::mysql + fi prove -lvr env: DATABASE_ADAPTER: ${{ matrix.mysql }} diff --git a/cpanfile b/cpanfile index b0cb544..8cd6483 100644 --- a/cpanfile +++ b/cpanfile @@ -1,5 +1,6 @@ requires 'Class::Accessor::Lite'; -requires 'DBD::mysql'; +recommends 'DBD::mysql'; +recommends 'DBD::MariaDB'; requires 'DBI'; requires 'File::Copy::Recursive'; requires 'File::Temp'; diff --git a/lib/Test/mysqld.pm b/lib/Test/mysqld.pm index 62b860d..f3839ef 100644 --- a/lib/Test/mysqld.pm +++ b/lib/Test/mysqld.pm @@ -12,6 +12,22 @@ use File::Temp qw(tempdir); use POSIX qw(SIGTERM WNOHANG); use Time::HiRes qw(sleep); +my $driver = 'mysql'; +BEGIN { + eval { + require DBD::mysql; + }; + if ($@) { + eval { + require DBD::MariaDB; + $driver = 'MariaDB'; + }; + if ($@) { + die "DBD::mysql or DBD::MariaDB is required to use Test::mysqld"; + } + } +} + our $VERSION = '1.0020'; our $errstr; @@ -27,6 +43,7 @@ my %Defaults = ( pid => undef, copy_data_from => undef, _owner_pid => undef, + driver => $driver, ); Class::Accessor::Lite->mk_accessors(keys %Defaults); @@ -97,7 +114,7 @@ sub dsn { } } $args{dbname} ||= 'test'; - return 'DBI:mysql:' . join(';', map { "$_=$args{$_}" } sort keys %args); + return "DBI:$self->{driver}:" . join(';', map { "$_=$args{$_}" } sort keys %args); } sub start {