Use PubPackageResolutionTest for diagnostics snippets.
Change-Id: I4fd0e38d0ab431f96056fba0819ddefefea72e8b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/157722
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart b/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
index 1a4280e..c5ac808 100644
--- a/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
+++ b/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
@@ -224,12 +224,23 @@
);
}
- void writeTestPackageConfigWithMeta() {
- var path = '/packages/meta';
+ void writeTestPackageConfigWith(
+ Map<String, String> nameToRootPath, {
+ bool meta = false,
+ }) {
+ var metaPath = '/packages/meta';
PackagesContent.addMetaPackageFiles(
- getFolder(path),
+ getFolder(metaPath),
);
- writeTestPackageConfig({'meta': path});
+
+ writeTestPackageConfig({
+ if (meta) 'meta': metaPath,
+ ...nameToRootPath,
+ });
+ }
+
+ void writeTestPackageConfigWithMeta() {
+ writeTestPackageConfigWith({}, meta: true);
}
}
diff --git a/pkg/analyzer/test/verify_diagnostics_test.dart b/pkg/analyzer/test/verify_diagnostics_test.dart
index 745e237..78e3e14 100644
--- a/pkg/analyzer/test/verify_diagnostics_test.dart
+++ b/pkg/analyzer/test/verify_diagnostics_test.dart
@@ -3,22 +3,18 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/analysis/analysis_context_collection.dart';
-import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/dart/analysis/session.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/error/error.dart';
import 'package:analyzer/file_system/physical_file_system.dart';
-import 'package:analyzer/src/generated/engine.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
import 'package:path/path.dart';
-import 'package:pub_semver/src/version_constraint.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../tool/diagnostics/generate.dart';
-import 'src/dart/resolution/driver_resolution.dart';
+import 'src/dart/resolution/context_collection_resolution.dart';
main() {
defineReflectiveSuite(() {
@@ -399,51 +395,48 @@
/// A test class that creates an environment suitable for analyzing the
/// snippets.
-class _SnippetTest extends DriverResolutionTest with PackageMixin {
+class _SnippetTest extends PubPackageResolutionTest {
/// The snippet being tested.
final _SnippetData snippet;
- @override
- AnalysisOptionsImpl analysisOptions = AnalysisOptionsImpl();
-
/// Initialize a newly created test to test the given [snippet].
_SnippetTest(this.snippet) {
- analysisOptions.contextFeatures =
- FeatureSet.fromEnableFlags(snippet.experiments ?? []);
- String pubspecContent = snippet.auxiliaryFiles['pubspec.yaml'];
- if (pubspecContent != null) {
- for (String line in pubspecContent.split('\n')) {
- if (line.indexOf('sdk:') > 0) {
- int start = line.indexOf("'") + 1;
- String constraint = line.substring(start, line.indexOf("'", start));
- analysisOptions.sdkVersionConstraint =
- VersionConstraint.parse(constraint);
- }
- }
- }
+ writeTestPackageAnalysisOptionsFile(
+ AnalysisOptionsFileConfig(
+ experiments: snippet.experiments,
+ ),
+ );
}
@override
void setUp() {
super.setUp();
- addMetaPackage();
_createAuxiliaryFiles(snippet.auxiliaryFiles);
addTestFile(snippet.content);
}
void _createAuxiliaryFiles(Map<String, String> auxiliaryFiles) {
- Map<String, String> packageMap = {};
- for (String uri in auxiliaryFiles.keys) {
- if (uri.startsWith('package:')) {
- int slash = uri.indexOf('/');
- String packageName = uri.substring(8, slash);
- String libPath = packageMap.putIfAbsent(
- packageName, () => addPubPackage(packageName).path);
- String relativePath = uri.substring(slash + 1);
- newFile('$libPath/$relativePath', content: auxiliaryFiles[uri]);
+ Map<String, String> packageNameToRootPath = {};
+ for (String uriStr in auxiliaryFiles.keys) {
+ if (uriStr.startsWith('package:')) {
+ Uri uri = Uri.parse(uriStr);
+
+ String packageName = uri.pathSegments[0];
+ String packageRootPath = '/packages/$packageName';
+ packageNameToRootPath[packageName] = convertPath(packageRootPath);
+
+ String pathInLib = uri.pathSegments.skip(1).join('/');
+ newFile(
+ '$packageRootPath/lib/$pathInLib',
+ content: auxiliaryFiles[uriStr],
+ );
} else {
- newFile('/test/$uri', content: auxiliaryFiles[uri]);
+ newFile(
+ '$testPackageRootPath/$uriStr',
+ content: auxiliaryFiles[uriStr],
+ );
}
}
+ writeTestPackageConfigWith(packageNameToRootPath, meta: true);
}
}