#!/bin/sh set -eu cd "$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)" # 真实 MySQL 测试必须使用本次任务的独立 schema,禁止默认连开发/生产库。 : "${CI_TEST_DB_URL:?CI_TEST_DB_URL is required}" : "${CI_TEST_DB_USER:?CI_TEST_DB_USER is required}" : "${CI_TEST_DB_PASSWORD:?CI_TEST_DB_PASSWORD is required}" case "$CI_TEST_DB_URL" in jdbc:mysql://*) ;; *) echo 'Expected a MySQL test URL' >&2; exit 2 ;; esac address=${CI_TEST_DB_URL#jdbc:mysql://} host=${address%%/*}; host=${host%%:*} case "$host" in localhost|127.0.0.1|mavenbuild-*-db) ;; *) echo 'Database host is outside isolated CI allowlist' >&2; exit 2 ;; esac schema=${address#*/}; schema=${schema%%\?*} case "$schema" in flowcenter_ci|flowcenter_ci_*) ;; *) echo 'Database schema is outside isolated CI prefix' >&2; exit 2 ;; esac export SPRING_DATASOURCE_URL="$CI_TEST_DB_URL" export SPRING_DATASOURCE_USERNAME="$CI_TEST_DB_USER" export SPRING_DATASOURCE_PASSWORD="$CI_TEST_DB_PASSWORD" TESTS=FlApplyRecoveryTest,FlFormBindingTest,OapiFlowApplyDefVersionTest,CallbackPropertiesTest,FlowDefAdminServicePublishContractTest,FormCenterSchemaClientTest,OapiFlowTasksByBizTest,OapiFlowP35DoneCcContractTest # Surefire 的选择器部分匹配也可能成功;每个指定类必须随源码存在。 oldIFS=$IFS IFS=, for test in $TESTS; do [ -n "$(find src/test/java -type f -name "$test.java" -print -quit)" ] || { echo "Missing required test class: $test" >&2; exit 2; } done IFS=$oldIFS if [ "$#" -eq 0 ]; then set -- test; fi exec mvn -B "$@" -Dtest="$TESTS" -DfailIfNoTests=true -Dsurefire.failIfNoSpecifiedTests=true -DforkCount=0 -Dspring.jpa.hibernate.ddl-auto=validate < /dev/null