Files
overleaf-cep/services/web/bin/test_unit_run_dir
Andrew Rumble d0c9f8fd14 Update script to handle multiple directories and no vitest tests scenarios
GitOrigin-RevId: 92a394387c2326d350b64c6a25e3b34c92e342aa
2025-05-29 08:05:19 +00:00

77 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
declare -a vitest_args=("$@")
has_mocha_test=0
has_mocha_mjs_test=0
has_vitest_test=0
mocha_mjs_dirs=()
for dir_path in "$@"; do
if [ -n "$(find "$dir_path" -name "*.js" -type f -print -quit 2>/dev/null)" ]; then
has_mocha_test=1
fi
if [ -n "$(find "$dir_path" -name "*Tests.mjs" -type f -print -quit 2>/dev/null)" ]; then
has_mocha_mjs_test=1
mocha_mjs_dirs+=("$dir_path/**/*Tests.mjs")
fi
if [ -n "$(find "$dir_path" -name "*.test.mjs" -type f -print -quit 2>/dev/null)" ]; then
has_vitest_test=1
fi
done
if [[ -n "$MOCHA_GREP" ]]; then
vitest_args+=("--testNamePattern" "$MOCHA_GREP")
fi
if [[ -n "$VITEST_NO_CACHE" ]]; then
echo "Disabling cache for vitest."
vitest_args+=("--no-cache")
fi
echo "Running unit tests in directory: $*"
# Remove this if/else when we have converted all module tests to vitest.
if (( has_vitest_test == 1 )); then
npm run test:unit:esm -- "${vitest_args[@]}"
vitest_status=$?
else
echo "No vitest tests found in $*, skipping vitest step."
vitest_status=0
fi
if (( has_mocha_test == 1 )); then
mocha --recursive --timeout 25000 --exit --grep="$MOCHA_GREP" --require test/unit/bootstrap.js --extension=js "$@"
mocha_status=$?
fi
# Remove this if/else when we have converted all module tests to vitest.
if (( has_mocha_mjs_test == 1)); then
mocha --recursive --timeout 25000 --exit --grep="$MOCHA_GREP" --require test/unit/bootstrap.js --extension=mjs "${mocha_mjs_dirs[@]}"
mocha_status=$((mocha_status != 0 ? mocha_status : $?))
fi
if (( has_mocha_mjs_test == 0 && has_mocha_test == 0 )); then
echo "No mocha tests found in $TARGET_DIR, skipping mocha step."
mocha_status=0
fi
if [ "$mocha_status" -eq 0 ] && [ "$vitest_status" -eq 0 ]; then
exit 0
fi
# Report status briefly at the end for failures
if [ "$mocha_status" -ne 0 ]; then
echo "Mocha tests failed with status: $mocha_status"
fi
if [ "$vitest_status" -ne 0 ]; then
echo "Vitest tests failed with status: $vitest_status"
fi
exit 1