Hello all.

Here is an analog of postgresql.port.mk for MariaDB.
It helps to setup test environment for MySQL/MariaDB-enabled
software, avoiding TEST_INTERACTIVE requirement and network
communication. Already tested with (slightly tweaked)
p5-DBD-mysql port.

Usage is similar to the postgresql.port.mk. Documentation
bits to follow.

It took a long time because I initially lost my work in
an accident (who needs to back up his /usr/ports, ever?!) and
then had no time to re-do and finish the work.

Since a lot of water flowed since then, I'm asking for
explicit okay to proceed.

--
WBR,
  Vadim Zhukov


# $OpenBSD$
#
# Helps testing MySQL/MariaDB-based software, no B/L/R-DEPS here.

MODMARIADB_TEST_CMD ?= \
        ${MAKE_PROGRAM} ${ALL_TEST_FLAGS} -f ${MAKE_FILE} ${TEST_TARGET}

MODMARIADB_TEST_DBNAME ?=
MODMARIADB_TEST_SOCKET =        ${WRKDIR}/mariadb.sock
_MODMARIADB_TEST_DATA_DIR =     ${WRKDIR}/testdb

MODMARIADB_SERVER_ARGS = \
        --no-defaults \
        --datadir=${_MODMARIADB_TEST_DATA_DIR} \
        --skip-grant-tables \
        --skip-networking \
        --socket=${MODMARIADB_TEST_SOCKET}

MODMARIADB_ADMIN_ARGS = \
        --no-defaults \
        --host=localhost \
        --protocol=socket \
        --socket=${MODMARIADB_TEST_SOCKET}

MODMARIADB_CLIENT_ARGS =        ${MODMARIADB_ADMIN_ARGS}

.if !empty(MODMARIADB_TEST_DBNAME)
MODMARIADB_CLIENT_ARGS +=       --database=${MODMARIADB_TEST_DBNAME}
.endif

TEST_DEPENDS +=         databases/mariadb,-server
TEST_ENV += \
        MYSQL_HOME=${WRKDIR} \
        MYSQL_HOST=localhost \
        MYSQL_UNIX_PORT=${MODMARIADB_TEST_SOCKET}

MODMARIADB_TEST_TARGET = \
        rm -Rf ${_MODMARIADB_TEST_DATA_DIR}; \
        export ${ALL_TEST_ENV}; \
        ${LOCALBASE}/bin/mysql_install_db \
                --skip-name-resolve \
                ${MODMARIADB_SERVER_ARGS}; \
        ${LOCALBASE}/libexec/mysqld \
                ${MODMARIADB_SERVER_ARGS} & \
        started=false; \
        for i in $$(jot 10); do \
                if mysqladmin ${MODMARIADB_ADMIN_ARGS} ping; then \
                        started=true; \
                        break; \
                fi; \
                sleep 1; \
        done; \
        $$started || { kill $$!; exit 1; };
.if !empty(MODMARIADB_TEST_DBNAME)
MODMARIADB_TEST_TARGET += \
        ${LOCALBASE}/bin/mysqladmin ${MODMARIADB_ADMIN_ARGS} \
            create ${MODMARIADB_TEST_DBNAME} || \
            { kill $$!; exit 1; };
.endif
MODMARIADB_TEST_TARGET += \
        set +e; \
        cd ${WRKBUILD}; \
        ${MODMARIADB_TEST_CMD}; \
        Q=$$?; \
        kill $$!; \
        exit $$Q

.if !target(do-test)
do-test:
        ${MODMARIADB_TEST_TARGET}
.endif

Reply via email to