sci-biology/bioperl-db: Restrict tests re bug #421701
authorKent Fredric <kentnl@gentoo.org>
Tue, 18 Jul 2017 04:37:22 +0000 (16:37 +1200)
committerKent Fredric <kentnl@gentoo.org>
Tue, 18 Jul 2017 04:38:42 +0000 (16:38 +1200)
I've tried an excessive amount to get tests working here. But they
still need a lot of love. The work I've done so far only gets
a mysql test instance up, ( and then, only tested with mariadb )

Somebody needs to work out what's missing to provision the databases
that the tests use.

Somebody needs to add support for initializing the other kinds of
database.

Any help here encouraged, but disabling non-functioning tests
is the best we can do for now.

Package-Manager: Portage-2.3.6, Repoman-2.3.2

sci-biology/bioperl-db/bioperl-db-1.6.9-r1.ebuild
sci-biology/bioperl-db/bioperl-db-1.6.9.ebuild
sci-biology/bioperl-db/files/bioperl-db-1.6.9-db.patch

index fd3a4280fa03f0c7095d6fe662aeb4123d7241d8..facab7d5ffbe7ab49418a2c849404949f61f932a 100644 (file)
@@ -15,10 +15,11 @@ HOMEPAGE="http://www.bioperl.org/"
 
 SLOT="0"
 KEYWORDS="~amd64 ~x86"
+RESTRICT="test"
 IUSE="test"
 
 DIST_TEST="do" # Parallelism probably bad
-
+PATCHES=( "${FILESDIR}/${PN}-1.6.9-db.patch" )
 RDEPEND="
        >=sci-biology/bioperl-${PV}
        dev-perl/DBD-mysql
@@ -34,20 +35,8 @@ DEPEND="${RDEPEND}
                virtual/perl-Test-Simple
        )
 "
-
 src_prepare() {
-       if use test; then
-               eapply "${FILESDIR}/${PN}-1.6.9-db.patch"
-               einfo "Using the following configuration details for test database:"
-               einfo "  GENTOO_DB_TEST_HOST     : ${GENTOO_DB_TEST_HOST:=localhost}"
-               einfo "  GENTOO_DB_TEST_USER     : ${GENTOO_DB_TEST_USER:=portage}"
-               einfo "  GENTOO_DB_TEST_PORT     : ${GENTOO_DB_TEST_PORT:=3306}"
-               einfo "  GENTOO_DB_TEST_PASSWOWRD: ${GENTOO_DB_TEST_PASSWORD:=sekrit}"
-               einfo "  GENTOO_DB_TEST_DATABASE : ${GENTOO_DB_TEST_DB:=biosql_test}"
-               einfo "Please ensure the relevant mysql database is configured and/or tweak"
-               einfo "environment variables to suit"
-               export GENTOO_DB_TEST_HOST GENTOO_DB_TEST_USER GENTOO_DB_TEST_PORT GENTOO_DB_TEST_PASSWORD GENTOO_DB_TEST_DB
-       fi
+       export GENTOO_DB_HOSTNAME=localhost
        perl-module_src_prepare
 }
 src_install() {
@@ -57,5 +46,39 @@ src_install() {
 src_test() {
        einfo "Removing bundled test libraries t/lib"
        rm -r "${S}/t/lib" || die "Cannot remove t/lib"
+
+       ebegin "Setting up test database"
+
+       local mysqld="${EPREFIX}/usr/sbin/mysqld"
+       local socket="${T}/mysql.sock"
+       local pidfile="${T}/mysql.pid"
+       local datadir="${T}/mysql-data-dir"
+       local mysql="${EPREFIX}/usr/bin/mysql"
+
+       mkdir -p "${datadir}" || die "Can't make mysql database dir";
+       chmod 755 "${datadir}" || die "Can't fix mysql database dir perms";
+
+       if $mysqld --help | grep -q MariaDB ; then
+               "${EPREFIX}"/usr/share/mysql/scripts/mysql_install_db \
+                       --basedir="${EPREFIX}/usr" \
+                       --datadir="${datadir}" \
+                       --user=$(whoami) || die "Can't initalize database"
+       fi
+
+       ${mysqld} --no-defaults --user=$(whoami) --skip-networking \
+                                                       --socket="${socket}" \
+                                                       --pid-file="${pidfile}" \
+                                                       --datadir="${datadir}" &
+       maxtry=20
+       while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do
+               maxtry=$((${maxtry}-1))
+               echo -n "."
+               sleep 1
+       done
+       eend $?
+       export MYSQL_UNIX_PORT="${socket}"
        perl-module_src_test
+       ebegin "Shutting down mysql test database"
+       pkill -F "${pidfile}"
+       eend $?
 }
index 7075ef2428504e0cd2f9563b05b27a02fc913ea7..e6f0c45958a9136286159f034ff73661302a4fd3 100644 (file)
@@ -16,6 +16,7 @@ HOMEPAGE="http://www.bioperl.org/"
 SLOT="0"
 KEYWORDS="amd64 x86"
 IUSE="test"
+RESTRICT="test"
 SRC_TEST="do"
 
 CDEPEND="
index 9a2d5e7bb0b69fa374134c719627d32d66264ef0..36698651c7d138496eaa7eda471352e4faf78f2a 100644 (file)
@@ -1,57 +1,45 @@
-From a63725a70ab6d5cbf419d1896007b49609ac5cfa Mon Sep 17 00:00:00 2001
+From d689a1473977b0aa368590ba1f913521e4f466c7 Mon Sep 17 00:00:00 2001
 From: Kent Fredric <kentfredric@gmail.com>
-Date: Tue, 18 Jul 2017 11:06:05 +1200
-Subject: [PATCH] Add env db test controls
+Date: Tue, 18 Jul 2017 16:02:26 +1200
+Subject: [PATCH] Allow custom host/port configurations
 
 ---
- Build.PL           | 10 +++++-----
- t/DBTestHarness.pm | 11 ++++++-----
- 2 files changed, 11 insertions(+), 10 deletions(-)
+ Build.PL           | 4 ++--
+ t/DBTestHarness.pm | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
 
 diff --git a/Build.PL b/Build.PL
-index ecc402e..4d55f3a 100755
+index ecc402e..a61190f 100755
 --- a/Build.PL
 +++ b/Build.PL
-@@ -97,11 +97,11 @@ sub biosql_conf {
+@@ -97,9 +97,9 @@ sub biosql_conf {
          or die "Error: could not write to config file '$config_file'\n";
      
      my %config = (driver     => $drivers[0],
 -                  host       => '127.0.0.1',
--                  user       => 'root',
++                  host       => $ENV{GENTOO_DB_HOSTNAME} || '127.0.0.1',
+                   user       => 'root',
 -                  port       => 3306,
--                  password   => '',
--                  dbname     => 'bioseqdb',
-+                  host       => $ENV{GENTOO_DB_TEST_HOST},
-+                  user       => $ENV{GENTOO_DB_TEST_USER},
-+                  port       => $ENV{GENTOO_DB_TEST_PORT},
-+                  password   => $ENV{GENTOO_DB_TEST_PASSWORD},
-+                  dbname     => $ENV{GENTOO_DB_TEST_DB},
++                  port       => $ENV{GENTOO_DB_PORT} || undef,
+                   password   => '',
+                   dbname     => 'bioseqdb',
                    database   => 'biosql',
-                   schema_sql => '../biosql-schema/sql/biosqldb-mysql.sql');
-     
 diff --git a/t/DBTestHarness.pm b/t/DBTestHarness.pm
-index b660429..bd0b3b7 100755
+index b660429..91e0c54 100755
 --- a/t/DBTestHarness.pm
 +++ b/t/DBTestHarness.pm
-@@ -47,12 +47,13 @@ my $counter=0;
+@@ -47,9 +47,9 @@ my $counter=0;
  # Default settings as a hash
  my $dflt = {
      'driver'        => 'mysql',
 -    'host'          => 'localhost',
--    'user'          => 'root',
++    'host'          => $ENV{GENTOO_DB_HOST} || 'localhost',
+     'user'          => 'root',
 -    'port'          => undef,
--    'password'      => '',
-+    'host'          => $ENV{GENTOO_DB_HOST},
-+    'user'          => $ENV{GENTOO_DB_TEST_USER},
-+    'port'          => ( defined $ENV{GENTOO_DB_TEST_PORT} and length $ENV{GENTOO_DB_TEST_PORT} ) ?
-+                       $ENV{GENTOO_DB_TEST_PORT} : undef,
-+    'password'      => $ENV{GENTOO_DB_TEST_PASSWORD},
++    'port'          => $ENV{GENTOO_DB_PORT} || undef,
+     'password'      => '',
      'schema_sql'    => ['../biosql-schema/sql/biosqldb-mysql.sql'],
--    'database'      => 'biosql',
-+    'database'      => $ENV{GENTOO_DB_TEST_DB},
-     'module'        => 'Bio::DB::BioSQL::DBAdaptor'
-     };
+     'database'      => 'biosql',
 -- 
 2.13.1