- stalwart-dev/test.sh: dart test → flutter test (project requires Flutter SDK) - Taskfile: add build-android task (flutter build apk --release) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
99 lines
2.6 KiB
YAML
99 lines
2.6 KiB
YAML
version: "3"
|
|
|
|
tasks:
|
|
default:
|
|
desc: Run all checks (analyze + unit tests, in parallel)
|
|
deps: [check]
|
|
|
|
_nix-check:
|
|
internal: true
|
|
run: once
|
|
preconditions:
|
|
- sh: test "${DIRENV_DIR#-}" = "{{.TASKFILE_DIR}}"
|
|
msg: "Not in nix dev shell. Run: nix develop"
|
|
|
|
codegen:
|
|
desc: Generate Drift DB code (run after any schema change)
|
|
deps: [_nix-check]
|
|
cmds:
|
|
- |
|
|
START=$(date +%s)
|
|
flutter pub run build_runner build --delete-conflicting-outputs
|
|
END=$(date +%s)
|
|
echo "codegen: $((END - START))s"
|
|
|
|
analyze:
|
|
desc: Static analysis with flutter analyze + analysis_options.yaml rules
|
|
deps: [_nix-check]
|
|
cmds:
|
|
- |
|
|
START=$(date +%s)
|
|
flutter analyze
|
|
END=$(date +%s)
|
|
echo "analyze: $((END - START))s"
|
|
|
|
analyze-fix:
|
|
desc: Auto-fix lint issues with dart fix --apply
|
|
deps: [_nix-check]
|
|
cmds:
|
|
- dart fix --apply
|
|
|
|
test:
|
|
desc: Run unit tests (no device needed) and enforce ≥100% line coverage
|
|
deps: [_nix-check]
|
|
vars:
|
|
COVERAGE_THRESHOLD: "100"
|
|
cmds:
|
|
- |
|
|
START=$(date +%s)
|
|
flutter test test/unit/ --coverage
|
|
END=$(date +%s)
|
|
echo "test: $((END - START))s"
|
|
- |
|
|
COVERED=$(awk '/^DA:/{split($0,a,":");split(a[2],b,",");t++;if(b[2]>0)h++} END{printf "%d", (t>0 ? int(h*100/t) : 0)}' coverage/lcov.info)
|
|
echo "coverage: ${COVERED}% (threshold: {{.COVERAGE_THRESHOLD}}%)"
|
|
if [ "${COVERED}" -lt "{{.COVERAGE_THRESHOLD}}" ]; then
|
|
echo "ERROR: coverage ${COVERED}% is below threshold {{.COVERAGE_THRESHOLD}}%"
|
|
exit 1
|
|
fi
|
|
|
|
test-flutter:
|
|
desc: Run Flutter widget tests
|
|
deps: [_nix-check]
|
|
cmds:
|
|
- |
|
|
START=$(date +%s)
|
|
flutter test
|
|
END=$(date +%s)
|
|
echo "flutter test: $((END - START))s"
|
|
|
|
integration:
|
|
desc: Run integration tests (starts and stops Stalwart automatically)
|
|
deps: [_nix-check]
|
|
cmds:
|
|
- |
|
|
START=$(date +%s)
|
|
stalwart-dev/test.sh
|
|
END=$(date +%s)
|
|
echo "integration: $((END - START))s"
|
|
|
|
build-android:
|
|
desc: Build a release APK (output in build/app/outputs/flutter-apk/)
|
|
deps: [_nix-check]
|
|
cmds:
|
|
- |
|
|
START=$(date +%s)
|
|
flutter build apk --release
|
|
END=$(date +%s)
|
|
echo "build-android: $((END - START))s"
|
|
|
|
run:
|
|
desc: Run the app on Linux desktop
|
|
deps: [_nix-check]
|
|
cmds:
|
|
- flutter run -d linux
|
|
|
|
check:
|
|
desc: All fast checks — analyze + unit tests in parallel
|
|
deps: [analyze, test, integration]
|