Skip to content

[test_reflective_loader] Pass test locations to pkg:test to improve IDE navigation #2090

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
May 22, 2025

Conversation

DanTup
Copy link
Contributor

@DanTup DanTup commented May 13, 2025

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 #2081
Fixes Dart-Code/Dart-Code#5480

fix.mp4

… 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 Dart-Code/Dart-Code#5480
@DanTup
Copy link
Contributor Author

DanTup commented May 19, 2025

Making this as WIP for now because there was a bug in the pkg:test changes. I'll come back to this after dart-lang/test#2499 is merged and released.

@DanTup DanTup marked this pull request as draft May 19, 2025 08:50
@DanTup DanTup marked this pull request as ready for review May 21, 2025 09:01
@DanTup
Copy link
Contributor Author

DanTup commented May 21, 2025

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)?

Copy link

github-actions bot commented May 21, 2025

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.

Copy link

PR Health

Breaking changes ✔️
Package Change Current Version New Version Needed Version Looking good?
test_reflective_loader Non-Breaking 0.2.3 0.3.0 0.2.4 ✔️
Changelog Entry ✔️
Package Changed Files

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

Coverage ✔️
File Coverage
pkgs/test_reflective_loader/lib/test_reflective_loader.dart 💚 84 % ⬆️ 1 %

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

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 symbols
License Headers ✔️
// 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

@DanTup DanTup requested a review from a team as a code owner May 21, 2025 18:06
@github-actions github-actions bot added the type-infra A repository infrastructure change or enhancement label May 21, 2025
@DanTup
Copy link
Contributor Author

DanTup commented May 21, 2025

@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.

@devoncarew
Copy link
Member

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.

lgtm; we can also bump to even more recent versions, up to and including the current stable if useful.

@DanTup
Copy link
Contributor Author

DanTup commented May 21, 2025

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!

@DanTup
Copy link
Contributor Author

DanTup commented May 22, 2025

Removed the unnecessary import, should be good now 🙃

(someone will have to re-approve the bots - thanks!)

@scheglov scheglov merged commit a433200 into dart-lang:main May 22, 2025
13 checks passed
copybara-service bot pushed a commit to dart-lang/sdk that referenced this pull request May 27, 2025
+ update `rev_sdk_deps.dart` to work on Windows

Revisions updated by `dart tools/rev_sdk_deps.dart`.

tools (https://github.com/dart-lang/tools/compare/be0bd20..a433200c):
  a433200c  Thu May 22 16:53:40 2025 +0100  Danny Tuppeny  [test_reflective_loader] Pass test locations to `pkg:test` to improve IDE navigation (dart-lang/tools#2090)

Change-Id: I9706a72ac850b3cd43bdeed671431cf836dcd860
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/430501
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
@DanTup
Copy link
Contributor Author

DanTup commented May 27, 2025

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
package:test_reflective_loader type-infra A repository infrastructure change or enhancement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Pass test locations to test/groups Dart SDK tests command to "Go to test" doesn't work as expected
3 participants