ci.sh 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #!/bin/bash
  2. set -eu
  3. if [ $# -eq 0 ]; then
  4. echo "Need test suite argument."
  5. exit -1
  6. fi
  7. killall -q peertube || true
  8. retries=3
  9. jobs=2
  10. runTest () {
  11. retries=3
  12. jobs=$1
  13. shift
  14. files=$@
  15. echo $files
  16. parallel -t -j $jobs --retries $retries \
  17. npm run mocha -- -c --timeout 30000 --exit --require ts-node/register --require tsconfig-paths/register --bail \
  18. ::: $files
  19. }
  20. findTestFiles () {
  21. find $1 -type f -name "*.ts" | grep -v index.ts | xargs echo
  22. }
  23. if [ "$1" = "misc" ]; then
  24. npm run build -- --light
  25. feedsFiles=$(findTestFiles server/tests/feeds)
  26. helperFiles=$(findTestFiles server/tests/helpers)
  27. pluginsFiles=$(findTestFiles server/tests/plugins)
  28. miscFiles="server/tests/client.ts server/tests/misc-endpoints.ts"
  29. TS_NODE_FILES=true MOCHA_PARALLEL=true runTest 2 $feedsFiles $helperFiles $pluginsFiles $miscFiles
  30. elif [ "$1" = "cli" ]; then
  31. npm run build:server
  32. npm run setup:cli
  33. cliFiles=$(findTestFiles server/tests/cli)
  34. runTest 1 $cliFiles
  35. elif [ "$1" = "api-1" ]; then
  36. npm run build:server
  37. checkParamFiles=$(findTestFiles server/tests/api/check-params)
  38. notificationsFiles=$(findTestFiles server/tests/api/notifications)
  39. searchFiles=$(findTestFiles server/tests/api/search)
  40. MOCHA_PARALLEL=true runTest 2 $notificationsFiles $searchFiles $checkParamFiles
  41. elif [ "$1" = "api-2" ]; then
  42. npm run build:server
  43. serverFiles=$(findTestFiles server/tests/api/server)
  44. usersFiles=$(findTestFiles server/tests/api/users)
  45. MOCHA_PARALLEL=true runTest 2 $serverFiles $usersFiles
  46. elif [ "$1" = "api-3" ]; then
  47. npm run build:server
  48. videosFiles=$(findTestFiles server/tests/api/videos)
  49. MOCHA_PARALLEL=true runTest 2 $videosFiles
  50. elif [ "$1" = "api-4" ]; then
  51. npm run build:server
  52. activitypubFiles=$(findTestFiles server/tests/api/moderation)
  53. redundancyFiles=$(findTestFiles server/tests/api/redundancy)
  54. activitypubFiles=$(findTestFiles server/tests/api/activitypub)
  55. MOCHA_PARALLEL=true TS_NODE_FILES=true runTest 2 $activitypubFiles $redundancyFiles $activitypubFiles
  56. elif [ "$1" = "external-plugins" ]; then
  57. npm run build:server
  58. externalPluginsFiles=$(findTestFiles server/tests/external-plugins)
  59. runTest 1 $externalPluginsFiles
  60. elif [ "$1" = "lint" ]; then
  61. npm run eslint -- --ext .ts "server/**/*.ts" "shared/**/*.ts" "scripts/**/*.ts"
  62. npm run swagger-cli -- validate support/doc/api/openapi.yaml
  63. ( cd client
  64. npm run lint
  65. )
  66. fi