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

Unified Diff: pkg/analyzer/test/source/embedder_test.dart

Issue 2069483002: Refactor common portions of the two SDK implementations into a base class (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: clean-up Created 4 years, 6 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
Index: pkg/analyzer/test/source/embedder_test.dart
diff --git a/pkg/analyzer/test/source/embedder_test.dart b/pkg/analyzer/test/source/embedder_test.dart
index 80072b8e56c4566ddcba5a277a0c8298532912bc..c16e6f9765ad5cee2d7cf3d93f38cda4a49a2f34 100644
--- a/pkg/analyzer/test/source/embedder_test.dart
+++ b/pkg/analyzer/test/source/embedder_test.dart
@@ -9,149 +9,59 @@ import 'dart:core' hide Resource;
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/file_system/memory_file_system.dart';
import 'package:analyzer/source/embedder.dart';
+import 'package:analyzer/src/generated/sdk.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:path/path.dart' as path;
import 'package:unittest/unittest.dart';
+import '../reflective_tests.dart';
import '../resource_utils.dart';
import '../utils.dart';
main() {
- group('EmbedderUriResolverTest', () {
- setUp(() {
- initializeTestEnvironment(path.context);
- buildResourceProvider();
- });
- tearDown(() {
- initializeTestEnvironment();
- clearResourceProvider();
- });
- test('test_NullEmbedderYamls', () {
- var resolver = new EmbedderUriResolver(null);
- expect(resolver.length, 0);
- });
- test('test_NoEmbedderYamls', () {
- var locator = new EmbedderYamlLocator({
- 'fox': [pathTranslator.getResource('/empty')]
- });
- expect(locator.embedderYamls.length, 0);
- });
- test('test_EmbedderYaml', () {
- var locator = new EmbedderYamlLocator({
- 'fox': [pathTranslator.getResource('/tmp')]
- });
- var resolver = new EmbedderUriResolver(locator.embedderYamls);
-
- expectResolved(dartUri, posixPath) {
- Source source = resolver.resolveAbsolute(Uri.parse(dartUri));
- expect(source, isNotNull, reason: dartUri);
- expect(source.fullName, posixToOSPath(posixPath));
- }
-
- // We have five mappings.
- expect(resolver.length, 5);
- // Check that they map to the correct paths.
- expectResolved('dart:core', '/tmp/core.dart');
- expectResolved('dart:fox', '/tmp/slippy.dart');
- expectResolved('dart:bear', '/tmp/grizzly.dart');
- expectResolved('dart:relative', '/relative.dart');
- expectResolved('dart:deep', '/tmp/deep/directory/file.dart');
- });
- test('test_BadYAML', () {
- var locator = new EmbedderYamlLocator(null);
- locator.addEmbedderYaml(null, r'''{{{,{{}}},}}''');
- expect(locator.embedderYamls.length, 0);
- });
- test('test_restoreAbsolute', () {
- var locator = new EmbedderYamlLocator({
- 'fox': [pathTranslator.getResource('/tmp')]
- });
- var resolver = new EmbedderUriResolver(locator.embedderYamls);
-
- expectRestore(String dartUri, [String expected]) {
- var parsedUri = Uri.parse(dartUri);
- var source = resolver.resolveAbsolute(parsedUri);
- expect(source, isNotNull);
- // Restore source's uri.
- var restoreUri = resolver.restoreAbsolute(source);
- expect(restoreUri, isNotNull, reason: dartUri);
- // Verify that it is 'dart:fox'.
- expect(restoreUri.toString(), expected ?? dartUri);
- List<String> split = (expected ?? dartUri).split(':');
- expect(restoreUri.scheme, split[0]);
- expect(restoreUri.path, split[1]);
- }
-
- expectRestore('dart:deep');
- expectRestore('dart:deep/file.dart', 'dart:deep');
- expectRestore('dart:deep/part.dart');
- expectRestore('dart:deep/deep/file.dart');
- });
+ runReflectiveTests(DartUriResolverTest);
+ runReflectiveTests(EmbedderSdkTest);
+ runReflectiveTests(EmbedderUriResolverTest);
+ runReflectiveTests(EmbedderYamlLocatorTest);
+}
- test('test_EmbedderSdk_fromFileUri', () {
- var locator = new EmbedderYamlLocator({
- 'fox': [pathTranslator.getResource('/tmp')]
- });
- var resolver = new EmbedderUriResolver(locator.embedderYamls);
- var sdk = resolver.dartSdk;
-
- expectSource(String posixPath, String dartUri) {
- var uri = Uri.parse(posixToOSFileUri(posixPath));
- var source = sdk.fromFileUri(uri);
- expect(source, isNotNull, reason: posixPath);
- expect(source.uri.toString(), dartUri);
- expect(source.fullName, posixToOSPath(posixPath));
- }
-
- expectSource('/tmp/slippy.dart', 'dart:fox');
- expectSource('/tmp/deep/directory/file.dart', 'dart:deep');
- expectSource('/tmp/deep/directory/part.dart', 'dart:deep/part.dart');
- });
- test('test_EmbedderSdk_getSdkLibrary', () {
- var locator = new EmbedderYamlLocator({
- 'fox': [pathTranslator.getResource('/tmp')]
- });
- var resolver = new EmbedderUriResolver(locator.embedderYamls);
- var sdk = resolver.dartSdk;
- var lib = sdk.getSdkLibrary('dart:fox');
- expect(lib, isNotNull);
- expect(lib.path, posixToOSPath('/tmp/slippy.dart'));
- expect(lib.shortName, 'dart:fox');
- });
- test('test_EmbedderSdk_mapDartUri', () {
- var locator = new EmbedderYamlLocator({
- 'fox': [pathTranslator.getResource('/tmp')]
- });
- var resolver = new EmbedderUriResolver(locator.embedderYamls);
- var sdk = resolver.dartSdk;
-
- expectSource(String dartUri, String posixPath) {
- var source = sdk.mapDartUri(dartUri);
- expect(source, isNotNull, reason: posixPath);
- expect(source.uri.toString(), dartUri);
- expect(source.fullName, posixToOSPath(posixPath));
- }
-
- expectSource('dart:core', '/tmp/core.dart');
- expectSource('dart:fox', '/tmp/slippy.dart');
- expectSource('dart:deep', '/tmp/deep/directory/file.dart');
- expectSource('dart:deep/part.dart', '/tmp/deep/directory/part.dart');
+@reflectiveTest
+class DartUriResolverTest extends EmbedderRelatedTest {
+ void test_embedderYaml() {
+ EmbedderYamlLocator locator = new EmbedderYamlLocator({
+ 'fox': [pathTranslator.getResource('/tmp')]
});
- });
+ EmbedderSdk sdk = new EmbedderSdk(locator.embedderYamls);
+ DartUriResolver resolver = new DartUriResolver(sdk);
+
+ void expectResolved(dartUri, posixPath) {
+ Source source = resolver.resolveAbsolute(Uri.parse(dartUri));
+ expect(source, isNotNull, reason: dartUri);
+ expect(source.fullName, posixToOSPath(posixPath));
+ }
+ // Check that they map to the correct paths.
+ expectResolved('dart:core', '/tmp/core.dart');
+ expectResolved('dart:fox', '/tmp/slippy.dart');
+ expectResolved('dart:bear', '/tmp/grizzly.dart');
+ expectResolved('dart:relative', '/relative.dart');
+ expectResolved('dart:deep', '/tmp/deep/directory/file.dart');
+ }
}
-TestPathTranslator pathTranslator;
-ResourceProvider resourceProvider;
-
-buildResourceProvider() {
- var rawProvider = new MemoryResourceProvider(isWindows: isWindows);
- resourceProvider = new TestResourceProvider(rawProvider);
- pathTranslator = new TestPathTranslator(rawProvider)
- ..newFolder('/empty')
- ..newFolder('/tmp')
- ..newFile(
- '/tmp/_embedder.yaml',
- r'''
+abstract class EmbedderRelatedTest {
+ TestPathTranslator pathTranslator;
+ ResourceProvider resourceProvider;
+
+ buildResourceProvider() {
+ MemoryResourceProvider rawProvider =
+ new MemoryResourceProvider(isWindows: isWindows);
+ resourceProvider = new TestResourceProvider(rawProvider);
+ pathTranslator = new TestPathTranslator(rawProvider)
+ ..newFolder('/empty')
+ ..newFolder('/tmp')
+ ..newFile(
+ '/tmp/_embedder.yaml',
+ r'''
embedded_libs:
"dart:core" : "core.dart"
"dart:fox": "slippy.dart"
@@ -160,9 +70,161 @@ embedded_libs:
"dart:deep": "deep/directory/file.dart"
"fart:loudly": "nomatter.dart"
''');
+ }
+
+ clearResourceProvider() {
+ resourceProvider = null;
+ pathTranslator = null;
+ }
+
+ void setUp() {
+ initializeTestEnvironment(path.context);
+ buildResourceProvider();
+ }
+
+ void tearDown() {
+ initializeTestEnvironment();
+ clearResourceProvider();
+ }
+}
+
+@reflectiveTest
+class EmbedderSdkTest extends EmbedderRelatedTest {
+ void test_creation() {
+ EmbedderYamlLocator locator = new EmbedderYamlLocator({
+ 'fox': [pathTranslator.getResource('/tmp')]
+ });
+ EmbedderSdk sdk = new EmbedderSdk(locator.embedderYamls);
+
+ expect(sdk.urlMappings, hasLength(5));
+ }
+
+ void test_fromFileUri() {
+ EmbedderYamlLocator locator = new EmbedderYamlLocator({
+ 'fox': [pathTranslator.getResource('/tmp')]
+ });
+ EmbedderSdk sdk = new EmbedderSdk(locator.embedderYamls);
+
+ expectSource(String posixPath, String dartUri) {
+ Uri uri = Uri.parse(posixToOSFileUri(posixPath));
+ Source source = sdk.fromFileUri(uri);
+ expect(source, isNotNull, reason: posixPath);
+ expect(source.uri.toString(), dartUri);
+ expect(source.fullName, posixToOSPath(posixPath));
+ }
+
+ expectSource('/tmp/slippy.dart', 'dart:fox');
+ expectSource('/tmp/deep/directory/file.dart', 'dart:deep');
+ expectSource('/tmp/deep/directory/part.dart', 'dart:deep/part.dart');
+ }
+
+ void test_getSdkLibrary() {
+ EmbedderYamlLocator locator = new EmbedderYamlLocator({
+ 'fox': [pathTranslator.getResource('/tmp')]
+ });
+ EmbedderSdk sdk = new EmbedderSdk(locator.embedderYamls);
+
+ SdkLibrary lib = sdk.getSdkLibrary('dart:fox');
+ expect(lib, isNotNull);
+ expect(lib.path, posixToOSPath('/tmp/slippy.dart'));
+ expect(lib.shortName, 'dart:fox');
+ }
+
+ void test_mapDartUri() {
+ EmbedderYamlLocator locator = new EmbedderYamlLocator({
+ 'fox': [pathTranslator.getResource('/tmp')]
+ });
+ EmbedderSdk sdk = new EmbedderSdk(locator.embedderYamls);
+
+ void expectSource(String dartUri, String posixPath) {
+ Source source = sdk.mapDartUri(dartUri);
+ expect(source, isNotNull, reason: posixPath);
+ expect(source.uri.toString(), dartUri);
+ expect(source.fullName, posixToOSPath(posixPath));
+ }
+
+ expectSource('dart:core', '/tmp/core.dart');
+ expectSource('dart:fox', '/tmp/slippy.dart');
+ expectSource('dart:deep', '/tmp/deep/directory/file.dart');
+ expectSource('dart:deep/part.dart', '/tmp/deep/directory/part.dart');
+ }
}
-clearResourceProvider() {
- resourceProvider = null;
- pathTranslator = null;
+@reflectiveTest
+class EmbedderUriResolverTest extends EmbedderRelatedTest {
+ void test_embedderYaml() {
+ var locator = new EmbedderYamlLocator({
+ 'fox': [pathTranslator.getResource('/tmp')]
+ });
+ var resolver = new EmbedderUriResolver(locator.embedderYamls);
+
+ expectResolved(dartUri, posixPath) {
+ Source source = resolver.resolveAbsolute(Uri.parse(dartUri));
+ expect(source, isNotNull, reason: dartUri);
+ expect(source.fullName, posixToOSPath(posixPath));
+ }
+
+ // We have five mappings.
+ expect(resolver, hasLength(5));
+ // Check that they map to the correct paths.
+ expectResolved('dart:core', '/tmp/core.dart');
+ expectResolved('dart:fox', '/tmp/slippy.dart');
+ expectResolved('dart:bear', '/tmp/grizzly.dart');
+ expectResolved('dart:relative', '/relative.dart');
+ expectResolved('dart:deep', '/tmp/deep/directory/file.dart');
+ }
+
+ void test_nullEmbedderYamls() {
+ var resolver = new EmbedderUriResolver(null);
+ expect(resolver, hasLength(0));
+ }
+
+ void test_restoreAbsolute() {
+ var locator = new EmbedderYamlLocator({
+ 'fox': [pathTranslator.getResource('/tmp')]
+ });
+ var resolver = new EmbedderUriResolver(locator.embedderYamls);
+
+ expectRestore(String dartUri, [String expected]) {
+ var parsedUri = Uri.parse(dartUri);
+ var source = resolver.resolveAbsolute(parsedUri);
+ expect(source, isNotNull);
+ // Restore source's uri.
+ var restoreUri = resolver.restoreAbsolute(source);
+ expect(restoreUri, isNotNull, reason: dartUri);
+ // Verify that it is 'dart:fox'.
+ expect(restoreUri.toString(), expected ?? dartUri);
+ List<String> split = (expected ?? dartUri).split(':');
+ expect(restoreUri.scheme, split[0]);
+ expect(restoreUri.path, split[1]);
+ }
+
+ expectRestore('dart:deep');
+ expectRestore('dart:deep/file.dart', 'dart:deep');
+ expectRestore('dart:deep/part.dart');
+ expectRestore('dart:deep/deep/file.dart');
+ }
+}
+
+@reflectiveTest
+class EmbedderYamlLocatorTest extends EmbedderRelatedTest {
+ void test_empty() {
+ EmbedderYamlLocator locator = new EmbedderYamlLocator({
+ 'fox': [pathTranslator.getResource('/empty')]
+ });
+ expect(locator.embedderYamls, hasLength(0));
+ }
+
+ void test_invalid() {
+ EmbedderYamlLocator locator = new EmbedderYamlLocator(null);
+ locator.addEmbedderYaml(null, r'''{{{,{{}}},}}''');
+ expect(locator.embedderYamls, hasLength(0));
+ }
+
+ void test_valid() {
+ EmbedderYamlLocator locator = new EmbedderYamlLocator({
+ 'fox': [pathTranslator.getResource('/tmp')]
+ });
+ expect(locator.embedderYamls, hasLength(1));
+ }
}

Powered by Google App Engine
This is Rietveld 408576698