Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 56 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,14 @@ jobs:
- name: Install dependencies
run: |
dart pub global activate melos
dart pub global activate coverage
melos bootstrap

- name: Setup integration test
run: ./scripts/setup_integration_tests.sh

- name: Run tests
run: melos run test
- name: Run tests with coverage
run: melos run test:coverage

- name: Run petstore integration tests
run: |
Expand Down Expand Up @@ -140,3 +141,56 @@ jobs:
cd integration_test/server_variables/server_variables_test
dart pub get
dart test --concurrency=1
- name: Format and merge coverage reports
if: matrix.sdk == 'stable'
run: |
# Ensure output directory exists before format_coverage writes files
mkdir -p coverage

# Process each package separately to maintain correct source file paths (packages/*/lib)
dart pub global run coverage:format_coverage \
--lcov \
--in=packages/tonik/coverage \
--out=coverage/tonik.lcov.info \
--report-on=packages/tonik/lib \
--check-ignore || true

dart pub global run coverage:format_coverage \
--lcov \
--in=packages/tonik_core/coverage \
--out=coverage/tonik_core.lcov.info \
--report-on=packages/tonik_core/lib \
--check-ignore || true

dart pub global run coverage:format_coverage \
--lcov \
--in=packages/tonik_generate/coverage \
--out=coverage/tonik_generate.lcov.info \
--report-on=packages/tonik_generate/lib \
--check-ignore || true

dart pub global run coverage:format_coverage \
--lcov \
--in=packages/tonik_parse/coverage \
--out=coverage/tonik_parse.lcov.info \
--report-on=packages/tonik_parse/lib \
--check-ignore || true

dart pub global run coverage:format_coverage \
--lcov \
--in=packages/tonik_util/coverage \
--out=coverage/tonik_util.lcov.info \
--report-on=packages/tonik_util/lib \
--check-ignore || true

# Combine per-package reports into single file for codecov upload
cat coverage/*.lcov.info > coverage/lcov.info 2>/dev/null || echo "No coverage files found"

- name: Upload coverage to Codecov
if: matrix.sdk == 'stable'
uses: codecov/codecov-action@v5
with:
files: ./coverage/lcov.info
fail_ci_if_error: false
disable_search: true
token: ${{ secrets.CODECOV_TOKEN }}
48 changes: 48 additions & 0 deletions codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
codecov:
require_ci_to_pass: false

coverage:
precision: 2
round: down
range: "0...100"

status:
project:
default:
informational: true
target: auto

patch:
default:
informational: true
target: auto

ignore:
- "integration_test/**"
- "**/test/**"
- "**/*.g.dart"
- "**/*.freezed.dart"

comment:
layout: "reach,diff,flags,tree,files"
behavior: default
require_changes: false
require_base: false
require_head: true

flags:
tonik:
paths:
- packages/tonik/lib
tonik_core:
paths:
- packages/tonik_core/lib
tonik_generate:
paths:
- packages/tonik_generate/lib
tonik_parse:
paths:
- packages/tonik_parse/lib
tonik_util:
paths:
- packages/tonik_util/lib
6 changes: 6 additions & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ dependencies:
path: ^1.9.1

dev_dependencies:
coverage: ^1.10.0
melos: ^7.3.0
test: ^1.28.0
timezone: ^0.11.0
Expand All @@ -29,6 +30,11 @@ melos:
run: dart test
exec:
concurrency: 1

test:coverage:
run: dart test --coverage=coverage
exec:
concurrency: 1

generate:
run: flutter pub run build_runner build --delete-conflicting-outputs
Expand Down