Last active
January 2, 2024 22:55
-
-
Save adavis/c003d435d9633253483bc64d6ffade8b to your computer and use it in GitHub Desktop.
Script for running all Flutter unit and widget tests with code coverage and then displaying the HTML report.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
red=$(tput setaf 1) | |
none=$(tput sgr0) | |
show_help() { | |
printf "usage: $0 [--help] [--report] [--test] [<path to package>] | |
Script for running all unit and widget tests with code coverage. | |
(run from root of repo) | |
where: | |
<path to package> | |
runs all tests with coverage and reports | |
-t, --test | |
runs all tests with coverage, but no report | |
-r, --report | |
generate a coverage report | |
(requires lcov, install with Homebrew) | |
-h, --help | |
print this message | |
" | |
} | |
run_tests() { | |
if [[ -f "pubspec.yaml" ]]; then | |
rm -f coverage/lcov.info | |
rm -f coverage/lcov-final.info | |
flutter test --coverage | |
else | |
printf "\n${red}Error: this is not a Flutter project${none}" | |
exit 1 | |
fi | |
} | |
run_report() { | |
if [[ -f "coverage/lcov.info" ]]; then | |
lcov -r coverage/lcov.info lib/resources/l10n/\* lib/\*/fake_\*.dart \ | |
-o coverage/lcov-final.info | |
genhtml -o coverage coverage/lcov-final.info | |
open coverage/index-sort-l.html | |
else | |
printf "\n${red}Error: no coverage info was generated${none}" | |
exit 1 | |
fi | |
} | |
case $1 in | |
-h|--help) | |
show_help | |
;; | |
-t|--test) | |
run_tests | |
;; | |
-r|--report) | |
run_report | |
;; | |
*) | |
run_tests | |
run_report | |
;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks for sharing. I have one question.
how can I exit my build if any test cases failed in bash script ? TIA