84 lines
3.6 KiB
Markdown
84 lines
3.6 KiB
Markdown
# Tools
|
|
|
|
CI/CD helper scripts for the Kell Creations Flutter monorepo.
|
|
|
|
## Scripts
|
|
|
|
### `run_all_tests.sh`
|
|
|
|
Runs `flutter test` across all testable packages and apps, producing a per-package pass/fail summary.
|
|
|
|
**Usage:**
|
|
|
|
```bash
|
|
# From kell_creations_apps/ directory
|
|
./tools/run_all_tests.sh # Run tests only
|
|
./tools/run_all_tests.sh --analyze # Run dart analyze + tests
|
|
```
|
|
|
|
**What it does:**
|
|
|
|
1. Installs dependencies (`flutter pub get`) for all packages and apps.
|
|
2. Optionally runs `dart analyze --fatal-infos` on each package/app.
|
|
3. Runs `flutter test --reporter expanded` for packages with tests.
|
|
4. Prints an aggregate pass/fail summary table.
|
|
|
|
**Adding new packages:**
|
|
|
|
When a new package gains tests, add its path to the `TESTABLE` array in the script. For packages that should be analyzed but have no tests yet, add to the `ANALYZABLE` array only.
|
|
|
|
**Exit codes:**
|
|
|
|
- `0` — all tests passed (and analyze clean, if `--analyze` was used)
|
|
- `1` — one or more failures detected
|
|
|
|
### `collect_coverage.sh`
|
|
|
|
Runs `flutter test --coverage` across all testable packages and apps, parses the generated `lcov.info` files, and produces a combined summary table with test counts and line coverage percentages.
|
|
|
|
**Usage:**
|
|
|
|
```bash
|
|
# From kell_creations_apps/ directory
|
|
./tools/collect_coverage.sh
|
|
```
|
|
|
|
**What it does:**
|
|
|
|
1. Installs dependencies (`flutter pub get`) for testable packages.
|
|
2. Runs `flutter test --coverage --reporter expanded` for each package.
|
|
3. Parses `coverage/lcov.info` to extract lines hit / lines found per package.
|
|
4. Prints an aggregate summary table with pass/fail counts and coverage percentages.
|
|
|
|
**Output example:**
|
|
|
|
```
|
|
╔═══════════════════════════════════════════════════════════╗
|
|
║ Flutter Test & Coverage Summary ║
|
|
╠═══════════════════════════════════════════════════════════╣
|
|
║ Package Pass Fail Lines Coverage ║
|
|
╠═══════════════════════════════════════════════════════════╣
|
|
║ core 20 0 120/150 80.0% ║
|
|
║ design_system 41 0 95/110 86.4% ║
|
|
║ ... ║
|
|
╠═══════════════════════════════════════════════════════════╣
|
|
║ TOTAL 379 0 500/600 83.3% ║
|
|
╚═══════════════════════════════════════════════════════════╝
|
|
```
|
|
|
|
**Exit codes:**
|
|
|
|
- `0` — all tests passed
|
|
- `1` — one or more failures detected
|
|
|
|
## CI Workflows
|
|
|
|
The corresponding Forgejo Actions workflows live in `.forgejo/workflows/`:
|
|
|
|
| Workflow | Trigger | Purpose |
|
|
| --------------------- | ----------------- | -------------------------------------------- |
|
|
| `flutter-analyze.yml` | PRs and branches | Runs `dart analyze` on all packages and apps |
|
|
| `flutter-test.yml` | PRs and branches | Runs `flutter test` with result reporting |
|
|
| `validate-docs.yml` | Non-main branches | Validates MkDocs documentation build |
|
|
| `publish-docs.yml` | Push to main | Publishes documentation to docs host |
|