From 87efa815cc5a7df6293d7b17b3f5aa407d889623 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 26 Jun 2019 09:34:04 +0200 Subject: [PATCH] Enable tests --- perl-DBD-MariaDB.spec | 51 +++++++++++++++++++++++++++---------------- test-clean | 6 +++++ test-setup | 44 +++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 19 deletions(-) create mode 100755 test-clean create mode 100755 test-setup diff --git a/perl-DBD-MariaDB.spec b/perl-DBD-MariaDB.spec index f3b1a51..bc171e8 100644 --- a/perl-DBD-MariaDB.spec +++ b/perl-DBD-MariaDB.spec @@ -1,10 +1,12 @@ Name: perl-DBD-MariaDB Version: 1.21 -Release: 1%{?dist} +Release: 2%{?dist} Summary: MariaDB and MySQL driver for the Perl5 Database Interface (DBI) License: GPL+ or Artistic URL: https://metacpan.org/release/DBD-MariaDB/ Source0: https://cpan.metacpan.org/authors/id/P/PA/PALI/DBD-MariaDB-%{version}.tar.gz +Source1: test-setup +Source2: test-clean BuildRequires: findutils BuildRequires: gcc BuildRequires: make @@ -27,22 +29,25 @@ BuildRequires: perl(Getopt::Long) BuildRequires: perl(strict) BuildRequires: perl(utf8) BuildRequires: perl(warnings) -# Tests - not run -#BuildRequires: perl(B) -#BuildRequires: perl(bigint) -#BuildRequires: perl(constant) -#BuildRequires: perl(DBI::Const::GetInfoType) -#BuildRequires: perl(Encode) -#BuildRequires: perl(File::Temp) -#BuildRequires: perl(FindBin) -#BuildRequires: perl(lib) -#BuildRequires: perl(Net::SSLeay) -#BuildRequires: perl(Proc::ProcessTable) -#BuildRequires: perl(Storable) -#BuildRequires: perl(Test::Deep) -#BuildRequires: perl(Test::More) >= 0.90 -#BuildRequires: perl(Time::HiRes) -#BuildRequires: perl(vars) +# Tests +BuildRequires: mariadb +BuildRequires: mariadb-server +BuildRequires: perl(B) +BuildRequires: perl(bigint) +BuildRequires: perl(constant) +BuildRequires: perl(DBI::Const::GetInfoType) +BuildRequires: perl(Encode) +BuildRequires: perl(File::Temp) +BuildRequires: perl(FindBin) +BuildRequires: perl(lib) +BuildRequires: perl(Net::SSLeay) +BuildRequires: perl(Proc::ProcessTable) +BuildRequires: perl(Storable) +BuildRequires: perl(Test::Deep) +BuildRequires: perl(Test::More) >= 0.90 +BuildRequires: perl(Time::HiRes) +BuildRequires: perl(vars) + Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version)) %description @@ -66,8 +71,13 @@ find $RPM_BUILD_ROOT -type f -name '*.bs' -size 0 -delete %{_fixperms} $RPM_BUILD_ROOT/* %check -# Full test coverage requires a live MariaDB database -#make test +# Setup environment and start database +. %{SOURCE1} + +make test + +# Stop database +. %{SOURCE2} %files %license LICENSE @@ -77,5 +87,8 @@ find $RPM_BUILD_ROOT -type f -name '*.bs' -size 0 -delete %{_mandir}/man3/* %changelog +* Wed Jun 26 2019 Jitka Plesnikova - 1.21-2 +- Enable tests + * Thu Jun 13 2019 Jitka Plesnikova - 1.21-1 - Specfile autogenerated by cpanspec 1.78. diff --git a/test-clean b/test-clean new file mode 100755 index 0000000..138a820 --- /dev/null +++ b/test-clean @@ -0,0 +1,6 @@ +#!/bin/bash + +/usr/bin/mysqladmin --user=root --socket=${MYSQL_UNIX_PORT} shutdown 2>&1 || \ +[ ! -s "${MYSQL_PIDFILE}" ] || /bin/kill `cat "${MYSQL_PIDFILE}"` || true +rm -rf ${MYSQL_DIR} + diff --git a/test-setup b/test-setup new file mode 100755 index 0000000..424fda2 --- /dev/null +++ b/test-setup @@ -0,0 +1,44 @@ +#!/bin/bash + +# MySQL setup +export MYSQL_DIR=$PWD/t/testdb +export MYSQL_UNIX_PORT=$MYSQL_DIR/mysql.sock +export MYSQL_PIDFILE=$MYSQL_DIR/mysql.pid +export MYSQL_USER=`whoami` + +# DBD::MariaDB test setup +export DBD_MARIADB_TESTDB=testdb +export DBD_MARIADB_TESTHOST=localhost +export DBD_MARIADB_TESTSOCKET=$MYSQL_UNIX_PORT +export DBD_MARIADB_TESTUSER=testuser +export DBD_MARIADB_TESTPASSWORD=testpassword + +if mysql --version | grep -q MariaDB; then + mysql_install_db --no-defaults --datadir=${MYSQL_DIR} --force --skip-name-resolve --explicit_defaults_for_timestamp --user=${MYSQL_USER} 2>&1 + #mysqld_safe --no-defaults --user=${MYSQL_USER} --socket=${MYSQL_UNIX_PORT} --datadir=${MYSQL_DIR} --pid-file=${MYSQL_PIDFILE} 2>&1 & + MYSQLD=/usr/libexec/mysqld +else + MYSQLD=/usr/sbin/mysqld + $MYSQLD --no-defaults --initialize-insecure --datadir=${MYSQL_DIR} --explicit_defaults_for_timestamp --user=${MYSQL_USER} 2>&1 +fi + +$MYSQLD --no-defaults --user=${MYSQL_USER} --socket=${MYSQL_UNIX_PORT} --datadir=${MYSQL_DIR} --pid-file=${MYSQL_PIDFILE} --explicit_defaults_for_timestamp --skip-networking 2>&1 & +attempts=0 +while ! /usr/bin/mysqladmin --user=root --socket=${MYSQL_UNIX_PORT} ping 2>&1 ; do + sleep 3 + attempts=$((attempts+1)) + if [ ${attempts} -gt 10 ] ; then + echo "skipping test, mariadb/mysql server could not be contacted after 30 seconds" + exit 1 + fi +done + +mysql --user=root --socket=${MYSQL_UNIX_PORT} --execute "CREATE USER '${DBD_MARIADB_TESTUSER}'@'localhost';" 2>&1 +mysql --user=root --socket=${MYSQL_UNIX_PORT} --execute "CREATE DATABASE IF NOT EXISTS ${DBD_MARIADB_TESTDB} CHARACTER SET='utf8mb4';" 2>&1 +mysql --user=root --socket=${MYSQL_UNIX_PORT} --execute "GRANT ALL PRIVILEGES ON ${DBD_MARIADB_TESTDB}.* TO '${DBD_MARIADB_TESTUSER}'@'localhost' IDENTIFIED BY '${DBD_MARIADB_TESTPASSWORD}';" 2>&1 + +if ! /usr/bin/mysqladmin --user=${DBD_MARIADB_TESTUSER} --password=${DBD_MARIADB_TESTPASSWORD} --socket=${DBD_MARIADB_TESTSOCKET} ping 2>&1; then + echo "skipping test, cannot connect to server with test user" + exit 1 +fi +