[test_reflective_loader] Pass test locations to `pkg:test` to improve IDE navigation
This updates pkg:test_reflective_loader to the latest version of pkg:test and passes the locations of tests declarations through to test() calls.
These locations are then used by pkg:test in the JSON reporter so that IDEs can navigate to the correct locations of these tests (rather than always to the defineReflectiveTests() call, because the real test declarations are not in the call stack at the point that test() is called).
Fixes https://github.com/dart-lang/tools/issues/2081 Fixes https://github.com/Dart-Code/Dart-Code/issues/5480
https://github.com/user-attachments/assets/beef0977-0338-4b86-9850-bbc895aeb09a
Making this as WIP for now because there was a bug in the pkg:test changes. I'll come back to this after https://github.com/dart-lang/test/pull/2499 is merged and released.
A new version of pkg:test was published (1.26.1) so I've updated this. This is now good to go again.
@scheglov are you the right person to review this (you were auto-assigned)?
Package publishing
| Package | Version | Status | Publish tag (post-merge) |
|---|---|---|---|
| package:bazel_worker | 1.1.3 | already published at pub.dev | |
| package:benchmark_harness | 2.4.0-wip | WIP (no publish necessary) | |
| package:boolean_selector | 2.1.2 | already published at pub.dev | |
| package:browser_launcher | 1.1.3 | already published at pub.dev | |
| package:cli_config | 0.2.1-wip | WIP (no publish necessary) | |
| package:cli_util | 0.4.2 | already published at pub.dev | |
| package:clock | 1.1.3-wip | WIP (no publish necessary) | |
| package:code_builder | 4.10.2-wip | WIP (no publish necessary) | |
| package:coverage | 1.13.1 | 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.3.3-wip | WIP (no publish necessary) | |
| package:html | 0.15.6 | already published at pub.dev | |
| package:io | 1.1.0-wip | WIP (no publish necessary) | |
| package:json_rpc_2 | 4.0.0 | already published at pub.dev | |
| package:markdown | 7.3.1-wip | WIP (no publish necessary) | |
| package:mime | 2.0.0 | already published at pub.dev | |
| package:oauth2 | 2.0.4-wip | WIP (no publish necessary) | |
| package:package_config | 2.3.0-wip | WIP (no publish necessary) | |
| package:pool | 1.5.2-wip | WIP (no publish necessary) | |
| package:process | 5.0.4 | already published at pub.dev | |
| package:pub_semver | 2.2.0 | already published at pub.dev | |
| package:pubspec_parse | 1.5.0 | already published at pub.dev | |
| 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.1 | already published at pub.dev | |
| package:sse | 4.1.8 | already published at pub.dev | |
| package:stack_trace | 1.12.1 | already published at pub.dev | |
| 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.1 | already published at pub.dev | |
| package:term_glyph | 1.2.3-wip | WIP (no publish necessary) | |
| package:test_reflective_loader | 0.3.0 | ready to publish | test_reflective_loader-v0.3.0 |
| package:timing | 1.0.2 | already published at pub.dev | |
| package:unified_analytics | 8.0.1 | already published at pub.dev | |
| package:watcher | 1.1.1 | already published at pub.dev | |
| package:yaml | 3.1.3 | already published at pub.dev | |
| package:yaml_edit | 2.2.2 | already published at pub.dev |
Documentation at https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.
PR Health
Breaking changes :heavy_check_mark:
| Package | Change | Current Version | New Version | Needed Version | Looking good? |
|---|---|---|---|---|---|
| test_reflective_loader | Non-Breaking | 0.2.3 | 0.3.0 | 0.2.4 | :heavy_check_mark: |
Changelog Entry :heavy_check_mark:
| Package | Changed Files |
|---|
Changes to files need to be accounted for in their respective changelogs.
Coverage :heavy_check_mark:
| File | Coverage |
|---|---|
| pkgs/test_reflective_loader/lib/test_reflective_loader.dart | :green_heart: 84 % :arrow_up: 1 % |
This check for test coverage is informational (issues shown here will not fail the PR).
API leaks :heavy_check_mark:
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 symbols |
|---|
License Headers :heavy_check_mark:
// Copyright (c) 2025, 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/bazel_worker/example/client.dart |
| pkgs/bazel_worker/example/worker.dart |
| pkgs/benchmark_harness/integration_test/perf_benchmark_test.dart |
| pkgs/boolean_selector/example/example.dart |
| pkgs/clock/lib/clock.dart |
| pkgs/clock/lib/src/clock.dart |
| pkgs/clock/lib/src/default.dart |
| pkgs/clock/lib/src/stopwatch.dart |
| pkgs/clock/lib/src/utils.dart |
| pkgs/clock/test/clock_test.dart |
| pkgs/clock/test/default_test.dart |
| pkgs/clock/test/stopwatch_test.dart |
| pkgs/clock/test/utils.dart |
| pkgs/coverage/lib/src/coverage_options.dart |
| pkgs/coverage/test/collect_coverage_config_test.dart |
| pkgs/coverage/test/config_file_locator_test.dart |
| pkgs/html/example/main.dart |
| pkgs/html/lib/dom.dart |
| pkgs/html/lib/dom_parsing.dart |
| pkgs/html/lib/html_escape.dart |
| pkgs/html/lib/parser.dart |
| pkgs/html/lib/src/constants.dart |
| pkgs/html/lib/src/encoding_parser.dart |
| pkgs/html/lib/src/html_input_stream.dart |
| pkgs/html/lib/src/list_proxy.dart |
| pkgs/html/lib/src/query_selector.dart |
| pkgs/html/lib/src/token.dart |
| pkgs/html/lib/src/tokenizer.dart |
| pkgs/html/lib/src/treebuilder.dart |
| pkgs/html/lib/src/utils.dart |
| pkgs/html/test/dom_test.dart |
| pkgs/html/test/parser_feature_test.dart |
| pkgs/html/test/parser_test.dart |
| pkgs/html/test/query_selector_test.dart |
| pkgs/html/test/selectors/level1_baseline_test.dart |
| pkgs/html/test/selectors/level1_lib.dart |
| pkgs/html/test/selectors/selectors.dart |
| pkgs/html/test/support.dart |
| pkgs/html/test/tokenizer_test.dart |
| pkgs/html/test/trie_test.dart |
| pkgs/html/tool/generate_trie.dart |
| pkgs/pubspec_parse/test/git_uri_test.dart |
| pkgs/stack_trace/example/example.dart |
| pkgs/watcher/test/custom_watcher_factory_test.dart |
| pkgs/yaml_edit/example/example.dart |
@scheglov thanks!
The failure was because the new pkg:test requires a newer Dart, so I've also now bumped the requirement from Dart 3.1 to Dart 3.2 in the pubspec (and the bot setup script).
I think someone will need to re-approve the bots to run with this change.
The failure was because the new
pkg:testrequires a newer Dart, so I've also now bumped the requirement from Dart 3.1 to Dart 3.2 in the pubspec (and the bot setup script).I think someone will need to re-approve the bots to run with this change.
lgtm; we can also bump to even more recent versions, up to and including the current stable if useful.
Looks like the message from the first one wasn't the whole picture, it said:
Because test_reflective_loader depends on test >=1.25.6 which requires SDK version >=3.2.0 <4.0.0, version solving failed.
And after asking for 3.2 it changed to:
Because test_reflective_loader depends on test >=1.25.8 which requires SDK version >=3.4.0 <4.0.0, version solving failed.
But neither of these are actually accurate, because we're requiring test 1.26.1, and it turns out that needs 3.5.
So, I've bumped it to 3.5 (3.8 would probably work, but if there's no need, it's probably nice to be compatible with more versions in case some haven't upgraded yet). Hopefully it'll work this time - someone will need to approve the bots again.
Thanks!
Removed the unnecessary import, should be good now 🙃
(someone will have to re-approve the bots - thanks!)
@scheglov @devoncarew this landed in the SDK and I've confirmed it's all working as expected :)
I don't know how many other projects use test_reflective_loader so publishing this is not a priority, but I don't know if not publishing it will cause any confusion (because it has a version in the changelog and the bot above marked it as ready-to-publish). I'll leave that to you to decide, since I'm not so familiar with the process.