Skip to content

Commit 4ef2725

Browse files
srawlinsCommit Queue
authored and
Commit Queue
committed
Add an analyzer_testing package
We intend to publish and maintain this as a set of testing-related utilities for the analyzer packages and for analyzer plugins. Work towards #55660 See the doc: https://docs.google.com/document/d/1jRtd8B1ijPAP6Pz89HRnyIZXw2VMjaZx0vRZTpoNO84/edit?tab=t.0#heading=h.2sz41a544qhi Change-Id: I2764b1357a932fa955060b26d78038997eaa9536 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/425080 Reviewed-by: Slava Egorov <[email protected]> Commit-Queue: Samuel Rawlins <[email protected]> Reviewed-by: Paul Berry <[email protected]>
1 parent c9d54c1 commit 4ef2725

33 files changed

+55
-39
lines changed

pkg/analysis_server/benchmark/benchmarks.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import 'dart:io';
1111
import 'dart:math' as math;
1212

1313
import 'package:analyzer/file_system/physical_file_system.dart';
14-
import 'package:analyzer_utilities/package_root.dart';
14+
import 'package:analyzer_testing/package_root.dart';
1515
import 'package:args/command_runner.dart';
1616
import 'package:path/path.dart' as path;
1717

pkg/analysis_server/benchmark/perf/dart_analyze.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import 'dart:convert';
66
import 'dart:io';
77

8-
import 'package:analyzer_utilities/package_root.dart';
8+
import 'package:analyzer_testing/package_root.dart';
99

1010
import '../benchmarks.dart';
1111
import 'utils.dart';

pkg/analysis_server/pubspec.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ dependencies:
3737

3838
# Use 'any' constraints here; we get our versions from the DEPS file.
3939
dev_dependencies:
40+
analyzer_testing: any
4041
analyzer_utilities: any
4142
cli_util: any
4243
lints: any

pkg/analysis_server/test/benchmarks_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ library;
99
import 'dart:convert';
1010
import 'dart:io';
1111

12-
import 'package:analyzer_utilities/package_root.dart';
12+
import 'package:analyzer_testing/package_root.dart';
1313
import 'package:path/path.dart' as path;
1414
import 'package:test/test.dart';
1515

pkg/analysis_server/test/src/utilities/selection_coverage_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import 'package:analyzer/dart/ast/visitor.dart';
99
import 'package:analyzer/dart/element/element.dart';
1010
import 'package:analyzer/file_system/physical_file_system.dart';
1111
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
12-
import 'package:analyzer_utilities/package_root.dart' as package_root;
12+
import 'package:analyzer_testing/package_root.dart' as package_root;
1313
import 'package:test/test.dart';
1414
import 'package:test_reflective_loader/test_reflective_loader.dart';
1515

pkg/analysis_server/test/support/configuration_files.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import 'package:analyzer/src/dart/analysis/experiments.dart';
88
import 'package:analyzer/src/test_utilities/package_config_file_builder.dart';
99
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
1010
import 'package:analyzer/src/util/file_paths.dart' as file_paths;
11-
import 'package:analyzer_utilities/package_root.dart' as package_root;
11+
import 'package:analyzer_testing/package_root.dart' as package_root;
1212
import 'package:analyzer_utilities/test/mock_packages/mock_packages.dart';
1313

1414
/// A mixin adding functionality to write `.dart_tool/package_config.json`

pkg/analysis_server/test/verify_no_utf8_encode_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import 'dart:collection';
77
import 'package:analyzer/file_system/file_system.dart';
88
import 'package:analyzer/file_system/physical_file_system.dart';
99
import 'package:analyzer/src/util/file_paths.dart' as file_paths;
10-
import 'package:analyzer_utilities/package_root.dart';
10+
import 'package:analyzer_testing/package_root.dart';
1111
import 'package:test/test.dart';
1212

1313
// TODO(scheglov): Remove it after SDK 3.1 published.

pkg/analysis_server/test/verify_sorted_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import 'package:analyzer/dart/analysis/results.dart';
88
import 'package:analyzer/dart/analysis/session.dart';
99
import 'package:analyzer/file_system/file_system.dart';
1010
import 'package:analyzer/file_system/physical_file_system.dart';
11-
import 'package:analyzer_utilities/package_root.dart';
11+
import 'package:analyzer_testing/package_root.dart';
1212
import 'package:test/test.dart';
1313

1414
/// The purpose of this test is to validate that all elements

pkg/analysis_server/test/verify_tests_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import 'package:analyzer/file_system/file_system.dart';
66
import 'package:analyzer/file_system/physical_file_system.dart';
7-
import 'package:analyzer_utilities/package_root.dart' as package_root;
7+
import 'package:analyzer_testing/package_root.dart' as package_root;
88
import 'package:analyzer_utilities/verify_tests.dart';
99
import 'package:path/path.dart' as path;
1010

pkg/analysis_server/tool/bulk_fix/parse_utils.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import 'package:analyzer/dart/analysis/analysis_context_collection.dart';
88
import 'package:analyzer/dart/analysis/results.dart';
99
import 'package:analyzer/dart/ast/ast.dart';
1010
import 'package:analyzer/file_system/physical_file_system.dart';
11-
import 'package:analyzer_utilities/package_root.dart';
11+
import 'package:analyzer_testing/package_root.dart';
1212

1313
class BulkFixDetails {
1414
Future<Map<String, CorrectionDetails>> collectOverrides() async {

pkg/analysis_server/tool/code_completion/relevance_table_generator.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import 'package:analyzer/file_system/physical_file_system.dart';
2424
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
2525
import 'package:analyzer/src/util/file_paths.dart' as file_paths;
2626
import 'package:analyzer/src/utilities/extensions/flutter.dart';
27-
import 'package:analyzer_utilities/package_root.dart' as package_root;
27+
import 'package:analyzer_testing/package_root.dart' as package_root;
2828
import 'package:analyzer_utilities/tools.dart';
2929
import 'package:args/args.dart';
3030

pkg/analysis_server/tool/codebase/failing_tests.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import 'package:analyzer/dart/ast/ast.dart';
1111
import 'package:analyzer/dart/ast/visitor.dart';
1212
import 'package:analyzer/file_system/file_system.dart';
1313
import 'package:analyzer/file_system/physical_file_system.dart';
14-
import 'package:analyzer_utilities/package_root.dart';
14+
import 'package:analyzer_testing/package_root.dart';
1515
import 'package:http/http.dart' as http;
1616
import 'package:test/test.dart';
1717
import 'package:test_reflective_loader/test_reflective_loader.dart';

pkg/analysis_server/tool/generate_analyzer_version.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import 'dart:io';
66

7-
import 'package:analyzer_utilities/package_root.dart';
7+
import 'package:analyzer_testing/package_root.dart';
88
import 'package:analyzer_utilities/tools.dart';
99
import 'package:path/path.dart';
1010
import 'package:yaml/yaml.dart';

pkg/analysis_server/tool/presubmit/verify_error_fix_status.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import 'package:analysis_server_plugin/src/correction/fix_generators.dart';
1111
import 'package:analyzer/error/error.dart';
1212
import 'package:analyzer/file_system/physical_file_system.dart';
1313
import 'package:analyzer/src/lint/registry.dart';
14-
import 'package:analyzer_utilities/package_root.dart' as package_root;
14+
import 'package:analyzer_testing/package_root.dart' as package_root;
1515
import 'package:linter/src/rules.dart';
1616
import 'package:yaml/yaml.dart';
1717

pkg/analyzer/pubspec.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ dependencies:
2828
# best practice for packages is to specify their compatible version ranges.
2929
# See also https://dart.dev/tools/pub/dependencies.
3030
dev_dependencies:
31+
analyzer_testing: any
3132
analyzer_utilities: any
3233
args: any
3334
async: any

pkg/analyzer/test/src/fasta/message_coverage_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import 'dart:io' as io;
66

77
import 'package:analyzer/dart/ast/ast.dart';
88
import 'package:analyzer/dart/ast/visitor.dart';
9-
import 'package:analyzer_utilities/package_root.dart' as package_root;
9+
import 'package:analyzer_testing/package_root.dart' as package_root;
1010
import 'package:path/path.dart' as path;
1111
import 'package:test/test.dart';
1212
import 'package:test_reflective_loader/test_reflective_loader.dart';

pkg/analyzer/test/verify_docs_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import 'package:analyzer/file_system/file_system.dart';
1212
import 'package:analyzer/file_system/overlay_file_system.dart';
1313
import 'package:analyzer/file_system/physical_file_system.dart';
1414
import 'package:analyzer/src/error/codes.dart';
15-
import 'package:analyzer_utilities/package_root.dart' as package_root;
15+
import 'package:analyzer_testing/package_root.dart' as package_root;
1616
import 'package:test/test.dart';
1717

1818
main() async {

pkg/analyzer/test/verify_tests_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import 'package:analyzer/file_system/file_system.dart';
66
import 'package:analyzer/file_system/physical_file_system.dart';
7-
import 'package:analyzer_utilities/package_root.dart' as package_root;
7+
import 'package:analyzer_testing/package_root.dart' as package_root;
88
import 'package:analyzer_utilities/verify_tests.dart';
99
import 'package:path/path.dart' as path;
1010

pkg/analyzer/tool/api/generate.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ import 'package:analyzer/dart/element/nullability_suffix.dart';
1616
import 'package:analyzer/dart/element/type.dart';
1717
import 'package:analyzer/file_system/physical_file_system.dart';
1818
import 'package:analyzer/src/utilities/extensions/element.dart';
19-
import 'package:analyzer_utilities/package_root.dart' as pkg_root;
20-
import 'package:analyzer_utilities/package_root.dart';
19+
import 'package:analyzer_testing/package_root.dart' as pkg_root;
20+
import 'package:analyzer_testing/package_root.dart';
2121
import 'package:analyzer_utilities/tools.dart';
2222
import 'package:collection/collection.dart';
2323
import 'package:path/path.dart';

pkg/analyzer/tool/benchmark/heap/flutter_elements.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import 'package:analyzer/src/dart/analysis/analysis_context_collection.dart';
1515
import 'package:analyzer/src/dart/analysis/byte_store.dart';
1616
import 'package:analyzer/src/dart/analysis/file_content_cache.dart';
1717
import 'package:analyzer/src/dart/analysis/unlinked_unit_store.dart';
18-
import 'package:analyzer_utilities/package_root.dart';
18+
import 'package:analyzer_testing/package_root.dart';
1919
import 'package:args/args.dart';
2020
import 'package:heap_snapshot/analysis.dart';
2121
import 'package:heap_snapshot/format.dart';

pkg/analyzer/tool/experiments/generate.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import 'dart:io';
66

77
import 'package:_fe_analyzer_shared/src/scanner/characters.dart'
88
show $MINUS, $_;
9-
import 'package:analyzer_utilities/package_root.dart' as pkg_root;
9+
import 'package:analyzer_testing/package_root.dart' as pkg_root;
1010
import 'package:analyzer_utilities/tools.dart';
1111
import 'package:path/path.dart';
1212
import 'package:yaml/yaml.dart' show YamlMap, loadYaml;

pkg/analyzer/tool/messages/error_code_info.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import 'dart:convert';
66
import 'dart:io';
77

8-
import 'package:analyzer_utilities/package_root.dart' as pkg_root;
8+
import 'package:analyzer_testing/package_root.dart' as pkg_root;
99
import 'package:path/path.dart';
1010
import 'package:yaml/yaml.dart' show loadYaml;
1111

pkg/analyzer/tool/messages/extract_errors_to_yaml.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import 'package:analyzer/error/error.dart';
1818
import 'package:analyzer/src/dart/ast/token.dart';
1919
import 'package:analyzer/src/dart/error/todo_codes.dart';
2020
import 'package:analyzer/src/generated/parser.dart';
21-
import 'package:analyzer_utilities/package_root.dart' as pkg_root;
21+
import 'package:analyzer_testing/package_root.dart' as pkg_root;
2222
import 'package:path/path.dart';
2323
import 'package:yaml/yaml.dart';
2424

pkg/analyzer/tool/messages/generate.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import 'dart:convert';
2020
import 'dart:io';
2121

2222
import 'package:_fe_analyzer_shared/src/scanner/scanner.dart';
23-
import 'package:analyzer_utilities/package_root.dart' as pkg_root;
23+
import 'package:analyzer_testing/package_root.dart' as pkg_root;
2424
import 'package:analyzer_utilities/tools.dart';
2525
import 'package:collection/collection.dart';
2626
import 'package:path/path.dart';

pkg/analyzer/tool/summary/check_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import 'package:analyzer_utilities/package_root.dart' as package_root;
5+
import 'package:analyzer_testing/package_root.dart' as package_root;
66
import 'package:analyzer_utilities/tools.dart';
77
import 'package:path/path.dart';
88

pkg/analyzer/tool/wolf/generate.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import 'dart:convert';
66

7-
import 'package:analyzer_utilities/package_root.dart' as pkg_root;
7+
import 'package:analyzer_testing/package_root.dart' as pkg_root;
88
import 'package:analyzer_utilities/tools.dart';
99
import 'package:collection/collection.dart';
1010
import 'package:path/path.dart';

pkg/analyzer_plugin/pubspec.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ dependencies:
2121
# best practice for packages is to specify their compatible version ranges.
2222
# See also https://dart.dev/tools/pub/dependencies.
2323
dev_dependencies:
24+
analyzer_testing: any
2425
analyzer_utilities: any
2526
lints: any
2627
linter: any

pkg/analyzer_plugin/test/verify_tests_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import 'package:analyzer/file_system/file_system.dart';
66
import 'package:analyzer/file_system/physical_file_system.dart';
7-
import 'package:analyzer_utilities/package_root.dart' as package_root;
7+
import 'package:analyzer_testing/package_root.dart' as package_root;
88
import 'package:analyzer_utilities/verify_tests.dart';
99

1010
void main() {

pkg/analyzer_testing/OWNERS

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
file:/tools/OWNERS_DEVELOPER_EXPERIENCE
2+
file:/tools/OWNERS_MODEL

pkg/analyzer_utilities/lib/package_root.dart renamed to pkg/analyzer_testing/lib/package_root.dart

+12-12
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,34 @@
44

55
import 'dart:io';
66

7-
import 'package:path/path.dart' as pathos;
7+
import 'package:path/path.dart' as path;
88

99
/// Returns a path to the directory containing source code for packages such as
1010
/// kernel, front_end, and analyzer.
1111
String get packageRoot {
1212
// If the package root directory is specified on the command line using
13-
// -DpkgRoot=..., use it.
13+
// `-DpkgRoot=...`, use that.
1414
const pkgRootVar =
1515
bool.hasEnvironment('pkgRoot') ? String.fromEnvironment('pkgRoot') : null;
1616
if (pkgRootVar != null) {
17-
var path = pathos.join(Directory.current.path, pkgRootVar);
18-
if (!path.endsWith(pathos.separator)) path += pathos.separator;
19-
return path;
17+
var pkgRootPath = path.join(Directory.current.path, pkgRootVar);
18+
if (!pkgRootPath.endsWith(path.separator)) pkgRootPath += path.separator;
19+
return pkgRootPath;
2020
}
2121
// Otherwise try to guess based on the script path.
22-
var scriptPath = pathos.fromUri(Platform.script);
22+
var scriptPath = path.fromUri(Platform.script);
2323
var pathFromScript = _tryGetPkgRoot(scriptPath);
2424
if (pathFromScript != null) {
2525
return pathFromScript;
2626
}
2727

28-
// Try google3 environment. We expect that all packages that will be
28+
// Try a Bazel environment. We expect that all packages that will be
2929
// accessed via this root are configured in the BUILD file, and located
3030
// inside this single root.
3131
var runFiles = Platform.environment['TEST_SRCDIR'];
3232
var analyzerPackagesRoot = Platform.environment['ANALYZER_PACKAGES_ROOT'];
3333
if (runFiles != null && analyzerPackagesRoot != null) {
34-
return pathos.join(runFiles, analyzerPackagesRoot);
34+
return path.join(runFiles, analyzerPackagesRoot);
3535
}
3636

3737
// Finally, try the current working directory.
@@ -43,12 +43,12 @@ String get packageRoot {
4343
throw StateError('Unable to find sdk/pkg/ in $scriptPath');
4444
}
4545

46-
/// Try to find the path to the pkg folder from [path].
47-
String? _tryGetPkgRoot(String path) {
48-
var parts = pathos.split(path);
46+
/// Tries to find the path to the 'pkg' folder from [searchPath].
47+
String? _tryGetPkgRoot(String searchPath) {
48+
var parts = path.split(searchPath);
4949
var pkgIndex = parts.indexOf('pkg');
5050
if (pkgIndex != -1) {
51-
return pathos.joinAll(parts.sublist(0, pkgIndex + 1)) + pathos.separator;
51+
return path.joinAll(parts.sublist(0, pkgIndex + 1)) + path.separator;
5252
}
5353
return null;
5454
}

pkg/analyzer_testing/pubspec.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,13 @@ environment:
44
sdk: ^3.7.0
55

66
resolution: workspace
7+
8+
dependencies:
9+
path: ^1.9.0
10+
11+
# We use 'any' version constraints here as we get our package versions from
12+
# the dart-lang/sdk repo's DEPS file. Note that this is a special case; the
13+
# best practice for packages is to specify their compatible version ranges.
14+
# See also https://dart.dev/tools/pub/dependencies.
15+
dev_dependencies:
16+
lints: any

pkg/analyzer_utilities/lib/test/mock_packages/mock_packages.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import 'package:analyzer/file_system/file_system.dart';
66
import 'package:analyzer/file_system/physical_file_system.dart';
77
// ignore: implementation_imports
88
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
9-
import 'package:analyzer_utilities/package_root.dart' as package_root;
9+
import 'package:analyzer_testing/package_root.dart' as package_root;
1010
import 'package:path/path.dart' as path;
1111

1212
void _cacheFiles(Map<String, String> cachedFiles) {

pkg/analyzer_utilities/pubspec.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ resolution: workspace
99

1010
# Use 'any' constraints here; we get our versions from the DEPS file.
1111
dependencies:
12+
analyzer_testing: any
1213
analyzer: any
1314
dart_style: any
1415
package_config: any

0 commit comments

Comments
 (0)