#!/usr/bin/env bash set -e cd "$(dirname "$0")"/.. # read the options TEMP=$(getopt -o "" --long skip-provision-check -- "$@") eval set -- "$TEMP" # extract options. forcearg=() while true; do case "$1" in --skip-provision-check) forcearg=(--skip-provision-check) shift ;; --) shift break ;; esac done function run() { echo '----' printf 'Running' printf ' %q' "$@" printf '\n' if ! "$@"; then printf '\n\e[31;1mFAILED\e[0m' printf ' %q' "$@" printf '\n' exit 1 else echo fi } printf '\n\e[33;1m' echo "Because test-all is very slow, we recommend running individual (sub)suites " echo "and relying on CI to run the complete test suite for a fast edit-test cycle. See" echo " https://zulip.readthedocs.io/en/latest/testing/testing.html#running-tests" echo "for details on how to run just the relevant subsets of our tests." printf '\e[0m' echo # prep run ./tools/check-provision "${forcearg[@]}" # ci/backend run ./tools/lint --groups=backend "${forcearg[@]}" run ./tools/test-tools run ./tools/test-backend --include-webhooks --ban-console-output "${forcearg[@]}" run ./tools/test-migrations # Not running SVG optimizing since it's low-churn # run ./tools/setup/optimize-svg # Not running missing bot avatar detection since it's low churn # ./tools/setup/generate_integration_bots_avatars.py --check-missing # Not running documentation tests since it takes 20s and only tests documentation # run ./tools/test-documentation --skip-external-links run ./tools/test-help-documentation --skip-external-links "${forcearg[@]}" run ./tools/test-api # Not running requirements check locally, because slow and low-churn # run ./tools/test-locked-requirements # Not running run-dev tests locally; we never have # run ./tools/test-run-dev # Not running queue worker reload tests since it's low-churn code # run ./tools/test-queue-worker-reload # ci/frontend run ./tools/lint --groups=frontend "${forcearg[@]}" run ./tools/test-js-with-node run ./tools/check-schemas run ./manage.py makemessages --locale en run env PYTHONWARNINGS=ignore ./tools/check-capitalization --no-generate run env PYTHONWARNINGS=ignore ./tools/check-frontend-i18n --no-generate run ./tools/test-js-with-puppeteer "${forcearg[@]}" printf '\n\e[32mAll OK!\e[0m\n'