diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 8c7a394..f10c4a1 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -12,10 +12,8 @@ jobs: fail-fast: false matrix: perl: - - '5.36' - '5.38' mysql: - - 'mysql-5.6' - 'mysql-5.7' - 'mysql-8.0' - 'mariadb' @@ -25,14 +23,17 @@ jobs: uses: shogo82148/actions-setup-perl@v1 with: perl-version: ${{ matrix.perl }} - - run: | + - name: Install dependencies + run: | author/ci_install_mysql.sh cpanm --quiet --installdeps --notest . - if [[ "DATABASE_ADAPTER" == "mariadb" ]]; then - cpanm DBD::MariaDB + if [[ "$DATABASE_ADAPTER" == "mariadb" ]]; then + cpanm --quiet --notest DBD::MariaDB else - cpanm DBD::mysql + cpanm --quiet --notest DBD::mysql fi - prove -lvr env: DATABASE_ADAPTER: ${{ matrix.mysql }} + - run: mysql --version + - name: test + run: prove -lvr diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 3541dbd..0000000 --- a/.travis.yml +++ /dev/null @@ -1,19 +0,0 @@ -language: perl -perl: - - "5.14" - - "5.22" - - "5.26" -env: - - "DATABASE_ADAPTER=mysql-5.5" - - "DATABASE_ADAPTER=mysql-5.6" - - "DATABASE_ADAPTER=mysql-5.7" - - "DATABASE_ADAPTER=mariadb-10.0" -before_install: - - "sudo apt-get update -qq" - - bash author/travis_install_mysql.sh -install: - - cpanm --installdeps --notest . -before_script: - - mysql --version -script: - - prove -lvr diff --git a/Changes b/Changes index 5cd3d7b..459f79a 100644 --- a/Changes +++ b/Changes @@ -1,6 +1,7 @@ Revision history for Perl extension Test::mysqld. {{$NEXT}} + - Support DBD::MariaDB 1.0020 2024-04-05T16:35:54Z - introduce GitHub Actions for CI diff --git a/META.json b/META.json index 07939a3..5c3e3aa 100644 --- a/META.json +++ b/META.json @@ -42,9 +42,12 @@ } }, "runtime" : { + "recommends" : { + "DBD::MariaDB" : "0", + "DBD::mysql" : "0" + }, "requires" : { "Class::Accessor::Lite" : "0", - "DBD::mysql" : "0", "DBI" : "0", "File::Copy::Recursive" : "0", "File::Temp" : "0", @@ -82,11 +85,11 @@ "John Napiorkowski ", "Kazuho Oku ", "Kazuho Oku ", - "Masayuki Matsuki ", "Matthew Horsfall ", "NAKAGAWA Masaki ", "Naoto Nakamura ", "Petr Písař ", + "Songmu ", "Yoshikazu Sawa <883514+yoshikazusawa@users.noreply.github.com>", "Yusuke Watase ", "Zhenjun Wang ", diff --git a/author/ci_install_mysql.sh b/author/ci_install_mysql.sh index a98bf16..5fb1ea6 100755 --- a/author/ci_install_mysql.sh +++ b/author/ci_install_mysql.sh @@ -1,26 +1,27 @@ #!/bin/bash set -ex -if [[ $DATABASE_ADAPTER =~ (mariadb|mysql-(5\.[67]|8\.0)) ]]; then +if [[ $DATABASE_ADAPTER =~ (mariadb|mysql-(5\.7|8\.0)) ]]; then sudo service mysql stop sudo apt-get install software-properties-common - sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B7B3B788A8D3785C if [[ $DATABASE_ADAPTER =~ mariadb ]]; then + sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B7B3B788A8D3785C # https://mariadb.com/kb/en/mariadb-package-repository-setup-and-usage/ curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash - sudo apt-get update - sudo DEBIAN_FRONTEND=noninteractive apt-get -q --yes --force-yes -f --option DPkg::Options::=--force-confnew install mariadb-server - sudo apt-get install libmariadb-dev + sudo apt-get update -q + sudo apt-get install -q --yes --force-yes -f --option DPkg::Options::=--force-confnew mariadb-server libmariadb-dev sudo mariadb-upgrade - elif [[ $DATABASE_ADAPTER =~ mysql-(5\.[67]|8\.0) ]]; then + elif [[ $DATABASE_ADAPTER =~ mysql-(5\.7|8\.0) ]]; then + sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29 + # XXX: The switch to mysql 5.7 is not currently working.... cat < undef, pid => undef, copy_data_from => undef, - _owner_pid => undef, driver => $driver, + _owner_pid => undef, ); Class::Accessor::Lite->mk_accessors(keys %Defaults); @@ -108,7 +106,8 @@ sub dsn { # } } else { - $args{mysql_socket} ||= $self->my_cnf->{socket}; + my $socket_attr = $self->{driver} eq 'MariaDB' ? 'mariadb_socket' : 'mysql_socket'; + $args{$socket_attr} ||= $self->my_cnf->{socket}; if (!$self->_use_unix_socket_auth) { $args{user} ||= 'root'; } diff --git a/t/01-raii.t b/t/01-raii.t index af5f67b..290118b 100644 --- a/t/01-raii.t +++ b/t/01-raii.t @@ -16,11 +16,20 @@ plan tests => 5; my $base_dir = $mysqld->base_dir; my $dsn = $mysqld->dsn; +my %expect = ( + mysql => { + 1 => "DBI:mysql:dbname=test;mysql_socket=$base_dir/tmp/mysql.sock", + 0 => "DBI:mysql:dbname=test;mysql_socket=$base_dir/tmp/mysql.sock;user=root", + }, + MariaDB => { + 1 => "DBI:MariaDB:dbname=test;mariadb_socket=$base_dir/tmp/mysql.sock", + 0 => "DBI:MariaDB:dbname=test;mariadb_socket=$base_dir/tmp/mysql.sock;user=root", + }, +); + is( $dsn, - $mysqld->_use_unix_socket_auth ? - "DBI:mysql:dbname=test;mysql_socket=$base_dir/tmp/mysql.sock" : - "DBI:mysql:dbname=test;mysql_socket=$base_dir/tmp/mysql.sock;user=root", + $expect{$mysqld->{driver}}{$mysqld->_use_unix_socket_auth ? 1 : 0}, 'check dsn', );