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 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 |
Thanks for sharing. I have one question.
how can I exit my build if any test cases failed in bash script ? TIA
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I really like this! Thanks for sharing, I create a repo here, using this script and adding some functions because I had an error when I run the
genhtml
command