Skip to content

[code_builder] Expand code coverage#2409

Merged
kevmoo merged 2 commits into
mainfrom
improve_coverage
May 19, 2026
Merged

[code_builder] Expand code coverage#2409
kevmoo merged 2 commits into
mainfrom
improve_coverage

Conversation

@kevmoo
Copy link
Copy Markdown
Member

@kevmoo kevmoo commented May 19, 2026

  1. TypeReference (100.0% Coverage) in test/specs/type_reference_test.dart:
    • Added test for generic bounds formatting (e.g., T extends num).
    • Added robust tests for newInstance, newInstanceNamed, constInstance, and constInstanceNamed constructor calls.
    • Added tests ensuring that AST property bindings (url, symbol, and type) are correctly exposed.
  2. RecordType (100.0% Coverage) in test/specs/record_type_test.dart:
    • Added API contract tests to verify that calling instantiation methods (newInstance, newInstanceNamed, constInstance, constInstanceNamed) correctly throws UnsupportedError as record types cannot be directly instantiated as objects.
    • Ensured standard properties (url and symbol returning null, type returning self) are fully asserted.
  3. FunctionType (100.0% Coverage) in test/specs/function_type_test.dart (New File):
    • Created a dedicated test suite validating all properties and instantiation restrictions.
    • Added targeted verification of the toTypeDef AST conversion utility, ensuring it generates perfect typedef structures (e.g., typedef MyFunc = String Function(int);).

File Original Coverage New Coverage Hit Lines / Total Lines
lib/src/specs/type_reference.dart 29.4% 100.0% 🚀 17 / 17
lib/src/specs/type_record.dart 26.7% 100.0% 🚀 15 / 15
lib/src/specs/type_function.dart 37.5% 100.0% 🚀 16 / 16

1.  **`TypeReference` (100.0% Coverage)** in `test/specs/type_reference_test.dart`:
    *   Added test for **generic bounds formatting** (e.g., `T extends num`).
    *   Added robust tests for **`newInstance`**, **`newInstanceNamed`**, **`constInstance`**, and **`constInstanceNamed`** constructor calls.
    *   Added tests ensuring that AST property bindings (`url`, `symbol`, and `type`) are correctly exposed.
2.  **`RecordType` (100.0% Coverage)** in `test/specs/record_type_test.dart`:
    *   Added API contract tests to verify that calling instantiation methods (`newInstance`, `newInstanceNamed`, `constInstance`, `constInstanceNamed`) correctly throws `UnsupportedError` as record types cannot be directly instantiated as objects.
    *   Ensured standard properties (`url` and `symbol` returning null, `type` returning self) are fully asserted.
3.  **`FunctionType` (100.0% Coverage)** in `test/specs/function_type_test.dart` (New File):
    *   Created a dedicated test suite validating all properties and instantiation restrictions.
    *   Added targeted verification of the **`toTypeDef`** AST conversion utility, ensuring it generates perfect typedef structures (e.g., `typedef MyFunc = String Function(int);`).

---

| File | Original Coverage | New Coverage | Hit Lines / Total Lines |
| :--- | :---: | :---: | :---: |
| `lib/src/specs/type_reference.dart` | 29.4% | **100.0%** 🚀 | 17 / 17 |
| `lib/src/specs/type_record.dart` | 26.7% | **100.0%** 🚀 | 15 / 15 |
| `lib/src/specs/type_function.dart` | 37.5% | **100.0%** 🚀 | 16 / 16 |
@kevmoo kevmoo requested a review from a team as a code owner May 19, 2026 03:20
@kevmoo kevmoo requested a review from natebosch May 19, 2026 03:21
@github-actions
Copy link
Copy Markdown

Package publishing

Package Version Status Publish tag (post-merge)
package:bazel_worker 1.1.5 already published at pub.dev
package:benchmark_harness 2.4.0 already published at pub.dev
package:boolean_selector 2.1.2 already published at pub.dev
package:browser_launcher 1.2.0-wip WIP (no publish necessary)
package:cli_config 0.2.1-wip WIP (no publish necessary)
package:cli_util 0.5.1 already published at pub.dev
package:clock 1.1.3-wip WIP (no publish necessary)
package:code_builder 4.12.0-wip WIP (no publish necessary)
package:coverage 1.15.0 already published at pub.dev
package:csslib 1.0.2 already published at pub.dev
package:extension_discovery 2.1.0 already published at pub.dev
package:file 7.0.2-wip WIP (no publish necessary)
package:file_testing 3.1.0-wip WIP (no publish necessary)
package:glob 2.1.3 already published at pub.dev
package:graphs 2.4.0-wip WIP (no publish necessary)
package:html 0.15.7-wip WIP (no publish necessary)
package:io 1.1.0-wip WIP (no publish necessary)
package:json_rpc_2 4.1.0 already published at pub.dev
package:markdown 7.4.0 ready to publish markdown-v7.4.0
package:mime 2.1.0-wip WIP (no publish necessary)
package:oauth2 2.0.5 already published at pub.dev
package:package_config 2.3.0-wip WIP (no publish necessary)
package:pool 1.5.3-wip WIP (no publish necessary)
package:process 5.0.5 (error) pubspec version (5.0.5) and changelog (5.0.6-wip) don't agree
package:pub_semver 2.2.0 already published at pub.dev
package:pubspec_parse 1.6.0-wip WIP (no publish necessary)
package:source_map_stack_trace 2.1.3-wip WIP (no publish necessary)
package:source_maps 0.10.14-wip WIP (no publish necessary)
package:source_span 1.10.2 already published at pub.dev
package:sse 4.2.0 already published at pub.dev
package:stack_trace 1.12.2-wip (error) pubspec version (1.12.2-wip) and changelog (1.12.2-dev) don't agree
package:stream_channel 2.1.4 already published at pub.dev
package:stream_transform 2.1.2-wip WIP (no publish necessary)
package:string_scanner 1.4.2-wip WIP (no publish necessary)
package:term_glyph 1.2.3-wip WIP (no publish necessary)
package:test_reflective_loader 0.6.0 ready to publish test_reflective_loader-v0.6.0
package:timing 1.0.2 already published at pub.dev
package:unified_analytics 8.0.15 ready to publish unified_analytics-v8.0.15
package:watcher 1.2.2-wip WIP (no publish necessary)
package:yaml 3.1.4-wip WIP (no publish necessary)
package:yaml_edit 2.2.4 already published at pub.dev

Documentation at https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 19, 2026

PR Health

License Headers ✔️
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

Files
no missing headers

All source files should start with a license header.

Unrelated files missing license headers
Files
pkgs/bazel_worker/benchmark/benchmark.dart
pkgs/coverage/lib/src/coverage_options.dart
pkgs/html/example/main.dart
pkgs/pubspec_parse/test/git_uri_test.dart
pkgs/watcher/test/custom_watcher_factory_test.dart

This check can be disabled by tagging the PR with skip-license-check.

Breaking changes ✔️
Package Change Current Version New Version Needed Version Looking good?
code_builder None 4.11.1 4.12.0-wip 4.12.0-wip ✔️

This check can be disabled by tagging the PR with skip-breaking-check.

Coverage ✔️
File Coverage

This check for test coverage is informational (issues shown here will not fail the PR).

This check can be disabled by tagging the PR with skip-coverage-check.

API leaks ✔️

The following packages contain symbols visible in the public API, but not exported by the library. Export these symbols or remove them from your publicly visible API.

Package Leaked API symbol Leaking sources

This check can be disabled by tagging the PR with skip-leaking-check.

Unused Dependencies ✔️
Package Status
code_builder ✔️ All dependencies utilized correctly.

For details on how to fix these, see dependency_validator.

This check can be disabled by tagging the PR with skip-unused-dependencies-check.

Changelog Entry ✔️
Package Changed Files

Changes to files need to be accounted for in their respective changelogs.

This check can be disabled by tagging the PR with skip-changelog-check.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces comprehensive unit tests for FunctionType, RecordType, and TypeReference to verify their API contracts and code generation capabilities. The feedback suggests using .add() instead of .addAll() for single elements to be more idiomatic, refactoring redundant variable declarations in tests to improve maintainability, and expanding test coverage to include typeArguments while utilizing raw strings for better readability in expectations.

Comment thread pkgs/code_builder/test/specs/function_type_test.dart Outdated
Comment thread pkgs/code_builder/test/specs/type_reference_test.dart Outdated
Comment thread pkgs/code_builder/test/specs/type_reference_test.dart Outdated
@kevmoo kevmoo merged commit fc11c6e into main May 19, 2026
17 checks passed
@kevmoo kevmoo deleted the improve_coverage branch May 19, 2026 17:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants