commit:     c7717708c0eb326a6fffafb90f08f4ea07616463
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Apr 13 13:28:57 2021 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Apr 13 13:29:05 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c7717708

dev-python/mongoengine: Run local mongodb instance for testing

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/mongoengine/mongoengine-0.23.0.ebuild | 37 ++++++++++++++++++++++--
 1 file changed, 35 insertions(+), 2 deletions(-)

diff --git a/dev-python/mongoengine/mongoengine-0.23.0.ebuild 
b/dev-python/mongoengine/mongoengine-0.23.0.ebuild
index d6ca245f7e8..70ccf79efec 100644
--- a/dev-python/mongoengine/mongoengine-0.23.0.ebuild
+++ b/dev-python/mongoengine/mongoengine-0.23.0.ebuild
@@ -13,8 +13,6 @@ 
SRC_URI="https://github.com/MongoEngine/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.
 LICENSE="BSD"
 SLOT="0"
 KEYWORDS="~amd64 ~x86"
-# TODO: make it run a local database server
-RESTRICT="test"
 
 RDEPEND="dev-python/blinker[${PYTHON_USEDEP}]
        dev-python/pillow[${PYTHON_USEDEP}]
@@ -42,3 +40,38 @@ src_prepare() {
 
        distutils-r1_src_prepare
 }
+
+python_test() {
+       local dbpath=${TMPDIR}/mongo.db
+       local logpath=${TMPDIR}/mongod.log
+
+       mkdir -p "${dbpath}" || die
+       ebegin "Trying to start mongod on port ${DB_PORT}"
+
+       LC_ALL=C \
+       mongod --dbpath "${dbpath}" --nojournal \
+               --bind_ip 127.0.0.1 --port 27017 \
+               --unixSocketPrefix "${TMPDIR}" \
+               --logpath "${logpath}" --fork || die
+       sleep 2
+
+       # Now we need to check if the server actually started...
+       if [[ -S "${TMPDIR}"/mongodb-27017.sock ]]; then
+               # yay!
+               eend 0
+       else
+               eend 1
+               eerror "Unable to start mongod for tests. See the server log:"
+               eerror "        ${logpath}"
+               die "Unable to start mongod for tests."
+       fi
+
+       local failed
+       nonfatal epytest || failed=1
+
+       mongod --dbpath "${dbpath}" --shutdown || die
+
+       [[ ${failed} ]] && die "Tests fail with ${EPYTHON}"
+
+       rm -rf "${dbpath}" || die
+}

Reply via email to