diff options
Diffstat (limited to 'dev-ruby/mysql2')
-rw-r--r-- | dev-ruby/mysql2/Manifest | 2 | ||||
-rw-r--r-- | dev-ruby/mysql2/mysql2-0.5.5.ebuild | 105 |
2 files changed, 100 insertions, 7 deletions
diff --git a/dev-ruby/mysql2/Manifest b/dev-ruby/mysql2/Manifest index 17bf015ffcdc..a7087d63ef0f 100644 --- a/dev-ruby/mysql2/Manifest +++ b/dev-ruby/mysql2/Manifest @@ -1,3 +1,3 @@ DIST mysql2-0.5.5.tar.gz 124769 BLAKE2B 698b18434691b2b7734c6fa314c931a38e973813a1912166838541f35c181813bff2db2c0967df72e8d9108b9ea71a030af09f39354a9c902674fab287b82331 SHA512 fa43e464bfd495d335c6f95b1897009813b7d6fbfeebe8d9c533c4f88c664a61a140227df73eb892c0314f76ebb5d0f2e06265284512dd35950bbab78d20e0fc -EBUILD mysql2-0.5.5.ebuild 1340 BLAKE2B 859fe60a7be4584f706296d7e1fcf7f7b9219c8ebf01569118b08d5c32a8485b0da7ad06b67e573e1e229c7a1f788d947eb91b10024b77bb51a06b87be6b9a3a SHA512 6f11baa48837b335f5f6661e63c5bd9428fe702c4a76a0e3cfd796a3b7509826bf2f5516c479fbaab400b5ef0aada82651a99cec22538db823f45a6d80e9d793 +EBUILD mysql2-0.5.5.ebuild 3465 BLAKE2B 0d4ed6858b1085b7ed5a5d80ffb8831570e5ef93713ec41a9b32f4fbd4e22806f91e7691147580a485c39466618c8405228445a2708dd7ffbce652008f28e142 SHA512 8780a4ba58d98e113c46dc3c1e6a84d8a567157d00bea3ea343bc3930ae43a9e27a17db5e7d6b1ca64f795f6a79148dfc7b27345e09d43662f4d7cb08de48da2 MISC metadata.xml 414 BLAKE2B 38309330df062150b84012dff2bacfaeccc80ad855697c841708611e167ed12f07ba7284dd4ec8d349cfe8c13c363d0c6949370ac1357057ec9efcd43b6236fe SHA512 8fa3177228145a7f3e1b2cb8d1124ad1ed3639112f17885d6464dd266858d0855ef2645954ea0238011597e3d3d99d9fcc02f6b900315c18f48386ffbe3b8ff3 diff --git a/dev-ruby/mysql2/mysql2-0.5.5.ebuild b/dev-ruby/mysql2/mysql2-0.5.5.ebuild index b247f8f33093..5ec2338a5603 100644 --- a/dev-ruby/mysql2/mysql2-0.5.5.ebuild +++ b/dev-ruby/mysql2/mysql2-0.5.5.ebuild @@ -2,10 +2,10 @@ # Distributed under the terms of the GNU General Public License v2 EAPI=8 -USE_RUBY="ruby27 ruby30 ruby31" -# Tests require a live MySQL database but should all pass. -RUBY_FAKEGEM_TASK_TEST="" +USE_RUBY="ruby27 ruby30 ruby31 ruby32" + +RUBY_FAKEGEM_RECIPE_TEST="rspec3" RUBY_FAKEGEM_TASK_DOC="" @@ -28,9 +28,15 @@ KEYWORDS="amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~sparc ~x86" IUSE="mysql mariadb" REQUIRED_USE="^^ ( mariadb mysql )" -MDEPEND="mysql? ( dev-db/mysql-connector-c:= ) mariadb? ( dev-db/mariadb-connector-c:= )" -DEPEND="${DEPEND} ${MDEPEND}" -RDEPEND="${RDEPEND} ${MDEPEND}" +SQL_DEPEND="mysql? ( dev-db/mysql-connector-c:= ) mariadb? ( dev-db/mariadb-connector-c:= )" +DEPEND="${DEPEND} ${SQL_DEPEND}" +RDEPEND="${RDEPEND} ${SQL_DEPEND}" +BDEPEND=" + test? ( + mariadb? ( dev-db/mariadb:* ) + mysql? ( >=dev-db/mysql-8:* ) + ) +" all_ruby_prepare() { sed -i -e '/s.version/ s/Mysql2::VERSION/"'${PV}'"/' ${RUBY_FAKEGEM_GEMSPEC} || die @@ -47,3 +53,90 @@ each_ruby_configure() { ${RUBY} -Cext/mysql2 extconf.rb --with-mysql-config="${config}" || die } + +each_ruby_test() { + local -x USER=$(whoami) + + if use mariadb ; then + local -x PATH="${BROOT}/usr/share/mariadb/scripts:${PATH}" + fi + + einfo "Creating mysql test instance ..." + mkdir -p "${T}"/mysql || die + if use mariadb ; then + mysql_install_db \ + --no-defaults \ + --auth-root-authentication-method=normal \ + --basedir="${EPREFIX}/usr" \ + --datadir="${T}"/mysql 1>"${T}"/mysqld_install.log || die + else + mysqld \ + --no-defaults \ + --initialize-insecure \ + --user ${USER} \ + --basedir="${EPREFIX}/usr" \ + --datadir="${T}"/mysql 1>"${T}"/mysqld_install.log || die + fi + + einfo "Starting mysql test instance ..." + # TODO: random port + mysqld \ + --no-defaults \ + --character-set-server=utf8 \ + --bind-address=127.0.0.1 \ + --pid-file="${T}"/mysqld.pid \ + --socket="${T}"/mysqld.sock \ + --datadir="${T}"/mysql 1>"${T}"/mysqld.log 2>&1 & + + # wait for it to start + local i + for (( i = 0; i < 10; i++ )); do + [[ -S ${T}/mysqld.sock ]] && break + sleep 1 + done + [[ ! -S ${T}/mysqld.sock ]] && die "mysqld failed to start" + + einfo "Configuring test mysql instance ..." + + mysql -u root --socket="${T}"/mysqld.sock -s -e ' + CREATE DATABASE test1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; + ' || die "Failed to create test databases" + + # https://github.com/brianmario/mysql2/blob/master/ci/setup.sh + mysql -u root \ + -e 'CREATE DATABASE /*M!50701 IF NOT EXISTS */ test' \ + -S "${T}"/mysqld.sock || die + + # https://github.com/brianmario/mysql2/blob/master/tasks/rspec.rake + cat <<-EOF > spec/configuration.yml || die + root: + host: localhost + username: root + password: + database: test + socket: ${T}/mysqld.sock + + user: + host: localhost + username: root + password: + database: mysql2_test + socket: ${T}/mysqld.sock + EOF + + nonfatal each_fakegem_test + local ret=${?} + + einfo "Stopping mysql test instance ..." + pkill -F "${T}"/mysqld.pid || die + # wait for it to stop + local i + for (( i = 0; i < 10; i++ )); do + [[ -S ${T}/mysqld.sock ]] || break + sleep 1 + done + + rm -rf "${T}"/mysql || die + + [[ ${ret} -ne 0 ]] && die +} |