mirror of
https://github.com/dokku/dokku.git
synced 2025-12-29 00:25:08 +01:00
69 lines
1.6 KiB
Bash
Executable File
69 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
fn-available-tests() {
|
|
declare PROCESSED_TEST_FILE="$1"
|
|
AVAILABLE_TESTS="$(grep -o -E '^test_[^ ]+' "$PROCESSED_TEST_FILE")"
|
|
AVAILABLE_TESTS=${AVAILABLE_TESTS//-28/(}
|
|
AVAILABLE_TESTS=${AVAILABLE_TESTS//-29/)}
|
|
AVAILABLE_TESTS=${AVAILABLE_TESTS//-3a/:}
|
|
echo "$AVAILABLE_TESTS"
|
|
}
|
|
|
|
fn-matched-test() {
|
|
declare TEST_NAME="$1" AVAILABLE_TESTS="$2"
|
|
|
|
if [[ -z "$TEST_NAME" ]]; then
|
|
return
|
|
fi
|
|
|
|
echo "$AVAILABLE_TESTS" | grep "$TEST_NAME" | head -1
|
|
}
|
|
|
|
fn-real-test-name() {
|
|
declare TEST_NAME="$1"
|
|
|
|
REAL_TEST_NAME=${TEST_NAME::-2}
|
|
REAL_TEST_NAME=${REAL_TEST_NAME//(/-28}
|
|
REAL_TEST_NAME=${REAL_TEST_NAME//)/-29}
|
|
REAL_TEST_NAME=${REAL_TEST_NAME//:/-3a}
|
|
echo "$REAL_TEST_NAME"
|
|
}
|
|
|
|
main() {
|
|
declare TEST_FILE="$1" TEST_NAME="$2"
|
|
local AVAILABLE_TESTS
|
|
|
|
if [[ -z "$TEST_FILE" ]]; then
|
|
echo "No test file specified"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -e "$TEST_FILE" ]]; then
|
|
echo "not found: '$TEST_FILE'"
|
|
exit 1
|
|
fi
|
|
|
|
TMP_OUTPUT=$(mktemp "/tmp/${FUNCNAME[0]}.XXXX")
|
|
trap 'rm -rf "$TMP_OUTPUT" >/dev/null' RETURN INT TERM EXIT
|
|
|
|
/usr/local/libexec/bats-preprocess <"$TEST_FILE" >"$TMP_OUTPUT"
|
|
AVAILABLE_TESTS="$(fn-available-tests "$TMP_OUTPUT")"
|
|
MATCHED_TEST=$(fn-matched-test "$TEST_NAME" "$AVAILABLE_TESTS")
|
|
|
|
if [[ -z "$MATCHED_TEST" ]]; then
|
|
if [[ -n "$TEST_NAME" ]]; then
|
|
echo "test '$TEST_NAME' not found in ${TEST_FILE}"
|
|
fi
|
|
|
|
echo "available test are:"
|
|
echo "$AVAILABLE_TESTS"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Running test: ${MATCHED_TEST}"
|
|
export BATS_TEST_SOURCE="$TMP_OUTPUT"
|
|
/usr/local/libexec/bats-exec-test "$TEST_FILE" "$(fn-real-test-name "$MATCHED_TEST")"
|
|
}
|
|
|
|
main "$@"
|