diff --git a/.gitignore b/.gitignore index cd8707b..1f6c195 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/DBD-mysql-4.050.tar.gz +SOURCES/DBD-mysql-4.053.tar.gz diff --git a/.perl-DBD-MySQL.metadata b/.perl-DBD-MySQL.metadata index 71f12b4..8472fed 100644 --- a/.perl-DBD-MySQL.metadata +++ b/.perl-DBD-MySQL.metadata @@ -1 +1 @@ -ff19efb5c5a9add075eafa1ad082cc74c2214f2a SOURCES/DBD-mysql-4.050.tar.gz +8ea3528d29a4cc306639fedc3da3f58f37a9f1cc SOURCES/DBD-mysql-4.053.tar.gz diff --git a/SOURCES/test-clean.t b/SOURCES/test-clean.t new file mode 100755 index 0000000..a8c52df --- /dev/null +++ b/SOURCES/test-clean.t @@ -0,0 +1,16 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use File::Path; +use Test::More tests => 2; + +my $MYSQL_DIR = $ENV{'MYSQL_DIR'}; +my $MYSQL_UNIX_PORT = $ENV{'MYSQL_UNIX_PORT'}; +my $MYSQL_PIDFILE = $ENV{'MYSQL_PIDFILE'}; + +ok(system("/usr/bin/mysqladmin --user=root --socket=$MYSQL_UNIX_PORT shutdown 2>&1 || [ ! -s \"$MYSQL_PIDFILE\" ] || /bin/kill `cat \"$MYSQL_PIDFILE\"`") == 0); +my $removed_count = rmtree($MYSQL_DIR, 1, 1); +ok($removed_count > 0); + diff --git a/SOURCES/test-env.sh b/SOURCES/test-env.sh new file mode 100755 index 0000000..7913c4d --- /dev/null +++ b/SOURCES/test-env.sh @@ -0,0 +1,14 @@ +#!/usr/bin/bash + +# MariaDB setup +export MYSQL_DIR=$PWD/t/testdb +export MYSQL_UNIX_PORT=$MYSQL_DIR/mysql.sock +export MYSQL_PIDFILE=$MYSQL_DIR/mysql.pid + +# DBD::mysql test setup +export DBD_MYSQL_TESTDB=test +export DBD_MYSQL_TESTHOST=localhost +export DBD_MYSQL_TESTSOCKET=$MYSQL_UNIX_PORT +export DBD_MYSQL_TESTUSER=testuserdbd +export DBD_MYSQL_TESTPASSWORD=testpasswordDBD + diff --git a/SOURCES/test-setup.t b/SOURCES/test-setup.t new file mode 100755 index 0000000..6f4fa55 --- /dev/null +++ b/SOURCES/test-setup.t @@ -0,0 +1,51 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Test::More tests => 7; + +# MySQL setup +my $MYSQL_DIR = $ENV{'MYSQL_DIR'}; +my $MYSQL_UNIX_PORT = $ENV{'MYSQL_UNIX_PORT'}; +my $MYSQL_PIDFILE = $ENV{'MYSQL_PIDFILE'}; + +# DBD::MariaDB test setup +my $DBD_MYSQL_TESTDB = $ENV{'DBD_MYSQL_TESTDB'}; +my $DBD_MYSQL_TESTHOST = $ENV{'DBD_MYSQL_TESTHOST'}; +my $DBD_MYSQL_TESTSOCKET = $ENV{'DBD_MYSQL_TESTSOCKET'}; +my $DBD_MYSQL_TESTUSER = $ENV{'DBD_MYSQL_TESTUSER'}; +my $DBD_MYSQL_TESTPASSWORD = $ENV{'DBD_MYSQL_TESTPASSWORD'}; + +my $MYSQLD = '/usr/sbin/mysqld'; +# Initialize MySQL data directory +system("$MYSQLD --no-defaults --initialize-insecure --user=mysql --datadir=$MYSQL_DIR >/dev/null 2>&1"); +is($?, 0); + +# Starting the server +my $cmd = "$MYSQLD --no-defaults --socket=$MYSQL_UNIX_PORT --datadir=$MYSQL_DIR --pid-file=$MYSQL_PIDFILE --explicit_defaults_for_timestamp --skip-networking >/dev/null 2>&1 &"; +system($cmd); +is($?, 0); + +my $attempts = 0; +while (system("/usr/bin/mysqladmin --socket=$MYSQL_UNIX_PORT ping >/dev/null 2>&1") != 0) { + sleep 3; + $attempts++; + if ($attempts > 10) { + fail("skipping test, mysql server could not be contacted after 30 seconds\n"); + } +} +ok(1); + +# Create database +system("mysql -u root --skip-password --execute \"CREATE DATABASE IF NOT EXISTS $DBD_MYSQL_TESTDB CHARACTER SET='utf8mb4';\" 2>&1"); +is($?, 0); + +# The test user has to have the proper privileges that these tests require +system("mysql -u root --skip-password --execute \"CREATE USER '$DBD_MYSQL_TESTUSER'\@'localhost' IDENTIFIED BY '$DBD_MYSQL_TESTPASSWORD'; \" 2>&1"); +is($?, 0); +system("mysql -u root --skip-password --execute \"GRANT ALL PRIVILEGES ON $DBD_MYSQL_TESTDB.* TO '$DBD_MYSQL_TESTUSER'\@'localhost';\" 2>&1"); +is($?, 0); + +system("/usr/bin/mysqladmin --user=$DBD_MYSQL_TESTUSER --password=$DBD_MYSQL_TESTPASSWORD --socket=$DBD_MYSQL_TESTSOCKET ping >/dev/null 2>&1"); +is($?, 0); diff --git a/SOURCES/testrules.yml b/SOURCES/testrules.yml new file mode 100644 index 0000000..b03a5b6 --- /dev/null +++ b/SOURCES/testrules.yml @@ -0,0 +1,11 @@ +seq: + - seq: t/test-setup.t + - seq: t/00base.t + - seq: t/05dbcreate.t + - seq: t/10connect.t + - seq: t/87async.t + - seq: t/rt75353-innodb-lock-timeout.t + - seq: t/rt85919-fetch-lost-connection.t + - par: + - par: ** + - seq: t/test-clean.t diff --git a/SPECS/perl-DBD-MySQL.spec b/SPECS/perl-DBD-MySQL.spec index d3f244e..cd378da 100644 --- a/SPECS/perl-DBD-MySQL.spec +++ b/SPECS/perl-DBD-MySQL.spec @@ -1,30 +1,33 @@ +# mysql is not available on ix86 +ExcludeArch: %{ix86} + Name: perl-DBD-MySQL -Version: 4.050 -Release: 13%{?dist} +Version: 4.053 +Release: 1%{?dist} Summary: A MySQL interface for Perl License: GPL+ or Artistic URL: https://metacpan.org/release/DBD-mysql Source0: https://cpan.metacpan.org/authors/id/D/DV/DVEEDEN/DBD-mysql-%{version}.tar.gz +Source1: test-setup.t +Source2: test-clean.t +Source3: testrules.yml +Source4: test-env.sh # Remove a useless shebang, bug #1813195, # Patch0: DBD-mysql-4.050-Remove-a-useless-shebang-from-DBD-mysql.patch -BuildRequires: make BuildRequires: coreutils BuildRequires: findutils BuildRequires: gcc -BuildRequires: mariadb-connector-c -BuildRequires: mariadb-connector-c-devel +BuildRequires: make +BuildRequires: mysql-devel BuildRequires: openssl-devel BuildRequires: perl-devel BuildRequires: perl-generators BuildRequires: perl-interpreter -BuildRequires: perl(Carp) BuildRequires: perl(Config) BuildRequires: perl(Data::Dumper) -BuildRequires: perl(DBI) >= 1.609 BuildRequires: perl(DBI::DBD) BuildRequires: perl(Devel::CheckLib) >= 1.09 -BuildRequires: perl(DynaLoader) BuildRequires: perl(ExtUtils::MakeMaker) >= 6.76 BuildRequires: perl(File::Basename) BuildRequires: perl(File::Copy) @@ -35,6 +38,24 @@ BuildRequires: perl(strict) BuildRequires: perl(utf8) BuildRequires: perl(warnings) BuildRequires: zlib-devel +# Run-time +BuildRequires: perl(Carp) +BuildRequires: perl(DBI) >= 1.609 +BuildRequires: perl(DBI::Const::GetInfoType) +BuildRequires: perl(DynaLoader) +# Tests +BuildRequires: mysql +BuildRequires: mysql-server +BuildRequires: perl(B) +BuildRequires: perl(bigint) +# Required to process t/testrules.yml +BuildRequires: perl(CPAN::Meta::YAML) +BuildRequires: perl(Encode) +BuildRequires: perl(lib) +BuildRequires: perl(Test::Deep) +BuildRequires: perl(Test::More) +BuildRequires: perl(Time::HiRes) +BuildRequires: perl(vars) Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version)) Provides: perl-DBD-mysql = %{version}-%{release} @@ -48,14 +69,23 @@ management system. %prep %setup -q -n DBD-mysql-%{version} -%patch0 -p1 +%patch -P0 -p1 # Correct file permissions find . -type f | xargs chmod -x +cp %{SOURCE1} %{SOURCE2} %{SOURCE3} t/ +cp %{SOURCE4} . + %build +. %{SOURCE4} perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="%{optflags}" \ - NO_PACKLIST=1 NO_PERLLOCAL=1 + NO_PACKLIST=1 NO_PERLLOCAL=1 \ + --testdb=$DBD_MYSQL_TESTDB \ + --testuser=$DBD_MYSQL_TESTUSER \ + --testpassword=$DBD_MYSQL_TESTPASSWORD \ + --testhost=$DBD_MYSQL_TESTHOST \ + --testsocket=$DBD_MYSQL_TESTSOCKET %{make_build} %install @@ -64,8 +94,10 @@ find %{buildroot} -type f -name '*.bs' -empty -delete %{_fixperms} %{buildroot}/* %check -# Full test coverage requires a live MySQL database -#make test +# Set MySQL and DBD::mysql test environment +. %{SOURCE4} +unset RELEASE_TESTING +make test %{?with_perl_DBD_MySQL_enables_leak_test:EXTENDED_TESTING=1} %files %license LICENSE @@ -76,6 +108,11 @@ find %{buildroot} -type f -name '*.bs' -empty -delete %{_mandir}/man3/*.3* %changelog +* Thu Mar 13 2025 Jitka Plesnikova - 4.053-1 +- Resolves: RHEL-53861, RHEL-77083 +- Update check for SSL connection +- Enable testing + * Mon Aug 09 2021 Mohan Boddu - 4.050-13 - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags Related: rhbz#1991688