test_unit_run_dir 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/bin/bash
  2. declare -a vitest_args=("$@")
  3. has_mocha_test=0
  4. has_sequential_test=0
  5. for dir_path in "$@"; do
  6. if [ -n "$(find "$dir_path" -name "*.js" -type f -print -quit 2>/dev/null)" ]; then
  7. has_mocha_test=1
  8. fi
  9. if [ -n "$(find "$dir_path" -name "*.sequential.test.mjs" -type f -print -quit 2>/dev/null)" ]; then
  10. has_sequential_test=1
  11. fi
  12. done
  13. if [[ -n "$MOCHA_GREP" ]]; then
  14. vitest_args+=("--testNamePattern" "$MOCHA_GREP")
  15. fi
  16. if [[ -n "$VITEST_NO_CACHE" ]]; then
  17. echo "Disabling cache for vitest."
  18. vitest_args+=("--no-cache")
  19. fi
  20. echo "Running unit tests in directory: $*"
  21. npm run test:unit:esm:parallel -- "${vitest_args[@]}"
  22. vitest_parallel_status=$?
  23. if (( has_sequential_test == 0 )); then
  24. echo "No sequential vitest tests found, skipping sequential vitest step."
  25. vitest_sequential_status=0
  26. else
  27. npm run test:unit:esm:sequential -- "${vitest_args[@]}"
  28. vitest_sequential_status=$?
  29. fi
  30. if (( has_mocha_test == 1 )); then
  31. mocha --recursive --timeout 25000 --exit --grep="$MOCHA_GREP" --require test/unit/bootstrap.js --extension=js "$@"
  32. mocha_status=$?
  33. else
  34. echo "No mocha tests found, skipping mocha step."
  35. mocha_status=0
  36. fi
  37. if [ "$mocha_status" -eq 0 ] && [ "$vitest_sequential_status" -eq 0 ] && [ "$vitest_parallel_status" -eq 0 ]; then
  38. exit 0
  39. fi
  40. # Report status briefly at the end for failures
  41. if [ "$mocha_status" -ne 0 ]; then
  42. echo "Mocha tests failed with status: $mocha_status"
  43. fi
  44. if [ "$vitest_parallel_status" -ne 0 ]; then
  45. echo "Vitest parallel tests failed with status: $vitest_parallel_status"
  46. fi
  47. if [ "$vitest_sequential_status" -ne 0 ]; then
  48. echo "Vitest sequential tests failed with status: $vitest_sequential_status"
  49. fi
  50. exit 1