Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(27)

Unified Diff: pkg/analyzer/test/src/context/builder_test.dart

Issue 2133873003: Handle SDK extensions in the SDK (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analyzer/lib/src/generated/sdk_io.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/test/src/context/builder_test.dart
diff --git a/pkg/analyzer/test/src/context/builder_test.dart b/pkg/analyzer/test/src/context/builder_test.dart
index 758a03c063defe24fae473d33e63abd379877e56..90086651ef97eb5455cc8faa66d39936540a5603 100644
--- a/pkg/analyzer/test/src/context/builder_test.dart
+++ b/pkg/analyzer/test/src/context/builder_test.dart
@@ -51,12 +51,51 @@ class ContextBuilderTest_WithDisk extends EngineTestCase {
*/
ContentCache contentCache;
+ /**
+ * The context builder to be used in the test.
+ */
+ ContextBuilder builder;
+
+ /**
+ * The path to the default SDK, or `null` if the test has not explicitly
+ * invoked [createDefaultSdk].
+ */
+ String defaultSdkPath = null;
+
+ void createDefaultSdk(io.Directory tempDir) {
+ defaultSdkPath = pathContext.join(tempDir.path, 'default', 'sdk');
+ String librariesFilePath = pathContext.join(defaultSdkPath, 'lib',
+ '_internal', 'sdk_library_metadata', 'lib', 'libraries.dart');
+ createFile(
+ librariesFilePath,
+ r'''
+const Map<String, LibraryInfo> libraries = const {
+ "async": const LibraryInfo("async/async.dart"),
+ "core": const LibraryInfo("core/core.dart"),
+};
+''');
+ sdkManager =
+ new DartSdkManager(defaultSdkPath, false, (_) => new MockSdk());
+ builder = new ContextBuilder(resourceProvider, sdkManager, contentCache);
+ }
+
+ void createDirectory(String path) {
+ new io.Directory(path).createSync(recursive: true);
+ }
+
+ void createFile(String path, String content) {
+ new io.File(path)
+ ..createSync(recursive: true)
+ ..writeAsStringSync(content);
+ }
+
@override
void setUp() {
resourceProvider = PhysicalResourceProvider.INSTANCE;
pathContext = resourceProvider.pathContext;
sdkManager = new DartSdkManager('', false, (_) => new MockSdk());
contentCache = new ContentCache();
+ builder = new ContextBuilder(resourceProvider, sdkManager, contentCache);
}
void test_createPackageMap_fromPackageDirectory_explicit() {
@@ -69,12 +108,10 @@ class ContextBuilderTest_WithDisk extends EngineTestCase {
String fooPath = pathContext.join(packageDirPath, fooName);
String barName = 'bar';
String barPath = pathContext.join(packageDirPath, barName);
- new io.Directory(projectPath).createSync(recursive: true);
- new io.Directory(fooPath).createSync(recursive: true);
- new io.Directory(barPath).createSync(recursive: true);
+ createDirectory(projectPath);
+ createDirectory(fooPath);
+ createDirectory(barPath);
- ContextBuilder builder =
- new ContextBuilder(resourceProvider, sdkManager, contentCache);
builder.defaultPackagesDirectoryPath = packageDirPath;
Packages packages = builder.createPackageMap(projectPath);
@@ -95,11 +132,9 @@ class ContextBuilderTest_WithDisk extends EngineTestCase {
String fooPath = pathContext.join(packageDirPath, fooName);
String barName = 'bar';
String barPath = pathContext.join(packageDirPath, barName);
- new io.Directory(fooPath).createSync(recursive: true);
- new io.Directory(barPath).createSync(recursive: true);
+ createDirectory(fooPath);
+ createDirectory(barPath);
- ContextBuilder builder =
- new ContextBuilder(resourceProvider, sdkManager, contentCache);
Packages packages = builder.createPackageMap(projectPath);
expect(packages, isNotNull);
Map<String, Uri> map = packages.asMap();
@@ -115,16 +150,14 @@ class ContextBuilderTest_WithDisk extends EngineTestCase {
String rootPath = tempDir.path;
String projectPath = pathContext.join(rootPath, 'project');
String packageFilePath = pathContext.join(rootPath, 'child', '.packages');
- new io.Directory(projectPath).createSync(recursive: true);
- new io.File(packageFilePath)
- ..createSync(recursive: true)
- ..writeAsStringSync(r'''
+ createDirectory(projectPath);
+ createFile(
+ packageFilePath,
+ r'''
foo:/pkg/foo
bar:/pkg/bar
''');
- ContextBuilder builder =
- new ContextBuilder(resourceProvider, sdkManager, contentCache);
builder.defaultPackageFilePath = packageFilePath;
Packages packages = builder.createPackageMap(projectPath);
expect(packages, isNotNull);
@@ -141,16 +174,14 @@ bar:/pkg/bar
String rootPath = tempDir.path;
String projectPath = pathContext.join(rootPath, 'project');
String packageFilePath = pathContext.join(rootPath, '.packages');
- new io.Directory(projectPath).createSync(recursive: true);
- new io.File(packageFilePath)
- ..createSync(recursive: true)
- ..writeAsStringSync(r'''
+ createDirectory(projectPath);
+ createFile(
+ packageFilePath,
+ r'''
foo:/pkg/foo
bar:/pkg/bar
''');
- ContextBuilder builder =
- new ContextBuilder(resourceProvider, sdkManager, contentCache);
Packages packages = builder.createPackageMap(projectPath);
expect(packages, isNotNull);
Map<String, Uri> map = packages.asMap();
@@ -166,16 +197,14 @@ bar:/pkg/bar
String rootPath = tempDir.path;
String projectPath = pathContext.join(rootPath, 'project');
String packageFilePath = pathContext.join(projectPath, '.packages');
- new io.Directory(projectPath).createSync(recursive: true);
- new io.File(packageFilePath)
- ..createSync(recursive: true)
- ..writeAsStringSync(r'''
+ createDirectory(projectPath);
+ createFile(
+ packageFilePath,
+ r'''
foo:/pkg/foo
bar:/pkg/bar
''');
- ContextBuilder builder =
- new ContextBuilder(resourceProvider, sdkManager, contentCache);
Packages packages = builder.createPackageMap(projectPath);
expect(packages, isNotNull);
Map<String, Uri> map = packages.asMap();
@@ -187,13 +216,134 @@ bar:/pkg/bar
void test_createPackageMap_none() {
withTempDir((io.Directory tempDir) {
- ContextBuilder builder =
- new ContextBuilder(resourceProvider, sdkManager, contentCache);
Packages packages = builder.createPackageMap(tempDir.path);
expect(packages, same(Packages.noPackages));
});
}
+ void test_createSourceFactory_noProvider_packages_embedder_extensions() {
+ withTempDir((io.Directory tempDir) {
+ createDefaultSdk(tempDir);
+ String rootPath = tempDir.path;
+ String projectPath = pathContext.join(rootPath, 'project');
+ String packageFilePath = pathContext.join(projectPath, '.packages');
+ String packageA = pathContext.join(rootPath, 'pkgs', 'a');
+ String embedderPath = pathContext.join(packageA, '_embedder.yaml');
+ String packageB = pathContext.join(rootPath, 'pkgs', 'b');
+ String extensionPath = pathContext.join(packageB, '_sdkext');
+ createFile(
+ packageFilePath,
+ '''
+a:$packageA
+b:$packageB
+''');
+ String asyncPath = pathContext.join(packageA, 'sdk', 'async.dart');
+ String corePath = pathContext.join(packageA, 'sdk', 'core.dart');
+ createFile(
+ embedderPath,
+ '''
+embedded_libs:
+ "dart:async": ${pathContext.relative(asyncPath, from: packageA)}
+ "dart:core": ${pathContext.relative(corePath, from: packageA)}
+''');
+ String fooPath = pathContext.join(packageB, 'ext', 'foo.dart');
+ createFile(
+ extensionPath,
+ '''{
+"dart:foo": "${pathContext.relative(fooPath, from: packageB)}"
+}''');
+ AnalysisOptionsImpl options = new AnalysisOptionsImpl();
+
+ SourceFactory factory = builder.createSourceFactory(projectPath, options);
+
+ Source asyncSource = factory.forUri('dart:async');
+ expect(asyncSource, isNotNull);
+ expect(asyncSource.fullName, asyncPath);
+
+ Source fooSource = factory.forUri('dart:foo');
+ expect(fooSource, isNotNull);
+ expect(fooSource.fullName, fooPath);
+
+ Source packageSource = factory.forUri('package:b/b.dart');
+ expect(packageSource, isNotNull);
+ expect(packageSource.fullName, '$packageB/b.dart');
+ });
+ }
+
+ void test_createSourceFactory_noProvider_packages_embedder_noExtensions() {
+ withTempDir((io.Directory tempDir) {
+ createDefaultSdk(tempDir);
+ String rootPath = tempDir.path;
+ String projectPath = pathContext.join(rootPath, 'project');
+ String packageFilePath = pathContext.join(projectPath, '.packages');
+ String packageA = pathContext.join(rootPath, 'pkgs', 'a');
+ String embedderPath = pathContext.join(packageA, '_embedder.yaml');
+ String packageB = pathContext.join(rootPath, 'pkgs', 'b');
+ createFile(
+ packageFilePath,
+ '''
+a:$packageA
+b:$packageB
+''');
+ String asyncPath = pathContext.join(packageA, 'sdk', 'async.dart');
+ String corePath = pathContext.join(packageA, 'sdk', 'core.dart');
+ createFile(
+ embedderPath,
+ '''
+embedded_libs:
+ "dart:async": ${pathContext.relative(asyncPath, from: packageA)}
+ "dart:core": ${pathContext.relative(corePath, from: packageA)}
+''');
+ AnalysisOptionsImpl options = new AnalysisOptionsImpl();
+
+ SourceFactory factory = builder.createSourceFactory(projectPath, options);
+
+ Source dartSource = factory.forUri('dart:async');
+ expect(dartSource, isNotNull);
+ expect(dartSource.fullName, asyncPath);
+
+ Source packageSource = factory.forUri('package:b/b.dart');
+ expect(packageSource, isNotNull);
+ expect(packageSource.fullName, '$packageB/b.dart');
+ });
+ }
+
+ @failingTest
+ void test_createSourceFactory_noProvider_packages_noEmbedder_extensions() {
+ fail('Incomplete test');
+ }
+
+ void test_createSourceFactory_noProvider_packages_noEmbedder_noExtensions() {
+ withTempDir((io.Directory tempDir) {
+ createDefaultSdk(tempDir);
+ String rootPath = tempDir.path;
+ String projectPath = pathContext.join(rootPath, 'project');
+ String packageFilePath = pathContext.join(projectPath, '.packages');
+ createFile(
+ packageFilePath,
+ r'''
+a:file:///pkgs/a
+b:file:///pkgs/b
+''');
+ AnalysisOptionsImpl options = new AnalysisOptionsImpl();
+
+ SourceFactory factory = builder.createSourceFactory(projectPath, options);
+
+ Source dartSource = factory.forUri('dart:core');
+ expect(dartSource, isNotNull);
+ expect(dartSource.fullName, '$defaultSdkPath/lib/core/core.dart');
+
+ Source packageSource = factory.forUri('package:a/a.dart');
+ expect(packageSource, isNotNull);
+ expect(packageSource.fullName, '/pkgs/a/a.dart');
+ });
+ }
+
+ @failingTest
+ void test_createSourceFactory_provider() {
+ fail('Incomplete test');
+ }
+
/**
* Execute the [test] function with a temporary [directory]. The test function
* can perform any disk operations within the directory and the directory (and
@@ -227,30 +377,24 @@ class ContextBuilderTest_WithoutDisk extends EngineTestCase {
*/
ContentCache contentCache;
- void fail_createSourceFactory() {
- fail('Incomplete test');
- }
-
- void fail_findSdkResolver() {
- fail('Incomplete test');
- }
+ /**
+ * The context builder to be used in the test.
+ */
+ ContextBuilder builder;
@override
void setUp() {
resourceProvider = new MemoryResourceProvider();
sdkManager = new DartSdkManager('', false, (_) => new MockSdk());
contentCache = new ContentCache();
+ builder = new ContextBuilder(resourceProvider, sdkManager, contentCache);
}
void test_convertPackagesToMap_noPackages() {
- ContextBuilder builder =
- new ContextBuilder(resourceProvider, sdkManager, contentCache);
expect(builder.convertPackagesToMap(Packages.noPackages), isNull);
}
void test_convertPackagesToMap_null() {
- ContextBuilder builder =
- new ContextBuilder(resourceProvider, sdkManager, contentCache);
expect(builder.convertPackagesToMap(null), isNull);
}
@@ -262,8 +406,6 @@ class ContextBuilderTest_WithoutDisk extends EngineTestCase {
String barPath = '/pkg/bar';
Uri barUri = new Uri.directory(barPath);
- ContextBuilder builder =
- new ContextBuilder(resourceProvider, sdkManager, contentCache);
MapPackages packages = new MapPackages({fooName: fooUri, barName: barUri});
Map<String, List<Folder>> result = builder.convertPackagesToMap(packages);
expect(result, isNotNull);
@@ -274,13 +416,16 @@ class ContextBuilderTest_WithoutDisk extends EngineTestCase {
expect(result[barName][0].path, barPath);
}
+ @failingTest
+ void test_findSdkResolver() {
+ fail('Incomplete test');
+ }
+
void test_getOptionsFile_explicit() {
String path = '/some/directory/path';
String filePath = '/options/analysis.yaml';
resourceProvider.newFile(filePath, '');
- ContextBuilder builder =
- new ContextBuilder(resourceProvider, sdkManager, contentCache);
builder.defaultAnalysisOptionsFilePath = filePath;
File result = builder.getOptionsFile(path);
expect(result, isNotNull);
@@ -294,8 +439,6 @@ class ContextBuilderTest_WithoutDisk extends EngineTestCase {
'$parentPath/${AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE}';
resourceProvider.newFile(filePath, '');
- ContextBuilder builder =
- new ContextBuilder(resourceProvider, sdkManager, contentCache);
File result = builder.getOptionsFile(path);
expect(result, isNotNull);
expect(result.path, filePath);
@@ -307,8 +450,6 @@ class ContextBuilderTest_WithoutDisk extends EngineTestCase {
String filePath = '$parentPath/${AnalysisEngine.ANALYSIS_OPTIONS_FILE}';
resourceProvider.newFile(filePath, '');
- ContextBuilder builder =
- new ContextBuilder(resourceProvider, sdkManager, contentCache);
File result = builder.getOptionsFile(path);
expect(result, isNotNull);
expect(result.path, filePath);
@@ -319,8 +460,6 @@ class ContextBuilderTest_WithoutDisk extends EngineTestCase {
String filePath = '$path/${AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE}';
resourceProvider.newFile(filePath, '');
- ContextBuilder builder =
- new ContextBuilder(resourceProvider, sdkManager, contentCache);
File result = builder.getOptionsFile(path);
expect(result, isNotNull);
expect(result.path, filePath);
@@ -331,8 +470,6 @@ class ContextBuilderTest_WithoutDisk extends EngineTestCase {
String filePath = '$path/${AnalysisEngine.ANALYSIS_OPTIONS_FILE}';
resourceProvider.newFile(filePath, '');
- ContextBuilder builder =
- new ContextBuilder(resourceProvider, sdkManager, contentCache);
File result = builder.getOptionsFile(path);
expect(result, isNotNull);
expect(result.path, filePath);
« no previous file with comments | « pkg/analyzer/lib/src/generated/sdk_io.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698