commit: 0e2e2731b6f02a900bf2ab99b03496c10e5da089
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jun 11 20:18:16 2020 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jun 11 20:33:02 2020 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0e2e2731
dev-python/pymysql: Enable tests
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
dev-python/pymysql/pymysql-0.9.3.ebuild | 55 ++++++++++++++++++++++++++++++---
1 file changed, 51 insertions(+), 4 deletions(-)
diff --git a/dev-python/pymysql/pymysql-0.9.3.ebuild
b/dev-python/pymysql/pymysql-0.9.3.ebuild
index e0580ba4984..5ab0788a13a 100644
--- a/dev-python/pymysql/pymysql-0.9.3.ebuild
+++ b/dev-python/pymysql/pymysql-0.9.3.ebuild
@@ -13,18 +13,65 @@ MY_P="${MY_PN}-${PV}"
DESCRIPTION="Pure-Python MySQL Driver"
HOMEPAGE="https://github.com/PyMySQL/PyMySQL"
SRC_URI="https://github.com/${MY_PN}/${MY_PN}/archive/v${PV}.tar.gz ->
${P}.tar.gz"
+S=${WORKDIR}/${MY_P}
LICENSE="MIT"
SLOT="0"
KEYWORDS="amd64 ~arm64 x86"
IUSE="test"
+RESTRICT="!test? ( test )"
-S=${WORKDIR}/${MY_P}
+# TODO: support other mysql variants
+BDEPEND="
+ test? ( dev-db/mariadb[server] )"
+
+src_prepare() {
+ find -name '*.py' -exec sed -i -e 's:unittest2:unittest:' {} + || die
+ distutils-r1_src_prepare
+}
+
+src_test() {
+ mkdir -p "${T}"/mysql || die
+ "${BROOT}"/usr/share/mariadb/scripts/mysql_install_db \
+ --no-defaults \
+ --auth-root-authentication-method=normal \
+ --basedir="${BROOT}/usr" \
+ --datadir="${T}"/mysql || die
+ # TODO: random port
+ mysqld \
+ --no-defaults \
+ --character-set-server=utf8 \
+ --bind-address=127.0.0.1 \
+ --port=3306 \
+ --socket="${T}"/mysqld.sock \
+ --datadir="${T}"/mysql &
+ local pid=${!}
-DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
+ # 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"
-# While tests exist, they require an unsecure server to run without manual
config file
-RESTRICT="test"
+ # create test databases
+ mysql -uroot --socket="${T}"/mysqld.sock -e '
+ create database test1 DEFAULT CHARACTER SET utf8mb4;
+ create database test2 DEFAULT CHARACTER SET utf8mb4;
+
+ create user test2 identified by "some password";
+ grant all on test2.* to test2;
+
+ create user test2@localhost identified by "some password";
+ grant all on test2.* to test2@localhost;
+ ' || die
+
+ distutils-r1_src_test
+
+ kill "${pid}"
+ wait "${pid}"
+}
python_test() {
${PYTHON} runtests.py || die