| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 /// Check that relative URIs are resolved against the canonical name of a | 5 /// Check that relative URIs are resolved against the canonical name of a |
| 6 /// library. This only matters for dart:-libraries, so this test mocks up two | 6 /// library. This only matters for dart:-libraries, so this test mocks up two |
| 7 /// dart:-libraries. | 7 /// dart:-libraries. |
| 8 | 8 |
| 9 import "dart:io"; | 9 import "dart:io"; |
| 10 | 10 |
| 11 import "dart:async"; | 11 import "dart:async"; |
| 12 | 12 |
| 13 import "memory_source_file_helper.dart"; | 13 import "memory_source_file_helper.dart"; |
| 14 | 14 |
| 15 import "package:async_helper/async_helper.dart"; | 15 import "package:async_helper/async_helper.dart"; |
| 16 | 16 |
| 17 import 'package:expect/expect.dart' show | 17 import 'package:expect/expect.dart' show Expect; |
| 18 Expect; | |
| 19 | 18 |
| 20 import 'package:compiler/src/diagnostics/messages.dart' show | 19 import 'package:compiler/src/diagnostics/messages.dart' |
| 21 MessageKind, | 20 show MessageKind, MessageTemplate; |
| 22 MessageTemplate; | |
| 23 | 21 |
| 24 import 'package:compiler/src/elements/elements.dart' show | 22 import 'package:compiler/src/elements/elements.dart' show LibraryElement; |
| 25 LibraryElement; | |
| 26 | 23 |
| 27 import 'package:compiler/src/null_compiler_output.dart' show | 24 import 'package:compiler/src/null_compiler_output.dart' show NullCompilerOutput; |
| 28 NullCompilerOutput; | |
| 29 | 25 |
| 30 import 'package:compiler/src/old_to_new_api.dart' show | 26 import 'package:compiler/src/old_to_new_api.dart' |
| 31 LegacyCompilerDiagnostics, | 27 show LegacyCompilerDiagnostics, LegacyCompilerInput; |
| 32 LegacyCompilerInput; | |
| 33 | 28 |
| 34 import 'package:sdk_library_metadata/libraries.dart' show | 29 Uri sdkRoot = Uri.base.resolve("sdk/"); |
| 35 DART2JS_PLATFORM, | 30 Uri mock1LibraryUri = sdkRoot.resolve("lib/mock1.dart"); |
| 36 LibraryInfo; | 31 Uri mock2LibraryUri = sdkRoot.resolve("lib/mock2.dart"); |
| 37 | |
| 38 const LibraryInfo mock1LibraryInfo = const LibraryInfo( | |
| 39 "mock1.dart", | |
| 40 categories: "Client,Embedded", | |
| 41 documented: false, | |
| 42 platforms: DART2JS_PLATFORM); | |
| 43 | |
| 44 const LibraryInfo mock2LibraryInfo = const LibraryInfo( | |
| 45 "mock2.dart", | |
| 46 categories: "Client,Embedded", | |
| 47 documented: false, | |
| 48 platforms: DART2JS_PLATFORM); | |
| 49 | |
| 50 | 32 |
| 51 class CustomCompiler extends CompilerImpl { | 33 class CustomCompiler extends CompilerImpl { |
| 52 final Map<String, LibraryInfo> customLibraryInfo; | 34 CustomCompiler(provider, handler, libraryRoot, |
| 35 packageRoot, options, environment) |
| 36 : super(provider, const NullCompilerOutput(), handler, libraryRoot, |
| 37 packageRoot, options, environment); |
| 53 | 38 |
| 54 CustomCompiler( | 39 Uri lookupLibraryUri(String libraryName) { |
| 55 this.customLibraryInfo, | 40 if (libraryName == "m_o_c_k_1") return mock1LibraryUri; |
| 56 provider, | 41 if (libraryName == "m_o_c_k_2") return mock2LibraryUri; |
| 57 handler, | 42 return super.lookupLibraryUri(libraryName); |
| 58 libraryRoot, | |
| 59 packageRoot, | |
| 60 options, | |
| 61 environment) | |
| 62 : super( | |
| 63 provider, | |
| 64 const NullCompilerOutput(), | |
| 65 handler, | |
| 66 libraryRoot, | |
| 67 packageRoot, | |
| 68 options, | |
| 69 environment); | |
| 70 | |
| 71 LibraryInfo lookupLibraryInfo(String name) { | |
| 72 if (name == "m_o_c_k_1") return mock1LibraryInfo; | |
| 73 if (name == "m_o_c_k_2") return mock2LibraryInfo; | |
| 74 return super.lookupLibraryInfo(name); | |
| 75 } | 43 } |
| 76 } | 44 } |
| 77 | 45 |
| 78 main() { | 46 main() async { |
| 79 Uri sdkRoot = Uri.base.resolve("sdk/"); | |
| 80 Uri packageRoot = Uri.base.resolve(Platform.packageRoot); | 47 Uri packageRoot = Uri.base.resolve(Platform.packageRoot); |
| 81 | 48 |
| 82 var provider = new MemorySourceFileProvider(MEMORY_SOURCE_FILES); | 49 var provider = new MemorySourceFileProvider(MEMORY_SOURCE_FILES); |
| 83 var handler = new FormattingDiagnosticHandler(provider); | 50 var handler = new FormattingDiagnosticHandler(provider); |
| 84 | 51 |
| 85 Future wrappedProvider(Uri uri) { | 52 Future wrappedProvider(Uri uri) { |
| 86 if (uri == sdkRoot.resolve('lib/mock1.dart')) { | 53 if (uri == mock1LibraryUri) { |
| 87 return provider.readStringFromUri(Uri.parse('memory:mock1.dart')); | 54 return provider.readStringFromUri(Uri.parse('memory:mock1.dart')); |
| 88 } | 55 } |
| 89 if (uri == sdkRoot.resolve('lib/mock2.dart')) { | 56 if (uri == mock2LibraryUri) { |
| 90 return provider.readStringFromUri(Uri.parse('memory:mock2.dart')); | 57 return provider.readStringFromUri(Uri.parse('memory:mock2.dart')); |
| 91 } | 58 } |
| 92 return provider.readStringFromUri(uri); | 59 return provider.readStringFromUri(uri); |
| 93 } | 60 } |
| 94 | 61 |
| 95 String expectedMessage = | 62 String expectedMessage = MessageTemplate.TEMPLATES[ |
| 96 MessageTemplate.TEMPLATES[MessageKind.LIBRARY_NOT_FOUND].message( | 63 MessageKind.LIBRARY_NOT_FOUND] |
| 97 {'resolvedUri': 'dart:mock2.dart'}).computeMessage(); | 64 .message({'resolvedUri': 'dart:mock2.dart'}).computeMessage(); |
| 98 | 65 |
| 99 int actualMessageCount = 0; | 66 int actualMessageCount = 0; |
| 100 | 67 |
| 101 wrappedHandler( | 68 wrappedHandler(Uri uri, int begin, int end, String message, kind) { |
| 102 Uri uri, int begin, int end, String message, kind) { | |
| 103 if (message == expectedMessage) { | 69 if (message == expectedMessage) { |
| 104 actualMessageCount++; | 70 actualMessageCount++; |
| 105 } else { | 71 } else { |
| 106 return handler(uri, begin, end, message, kind); | 72 return handler(uri, begin, end, message, kind); |
| 107 } | 73 } |
| 108 } | 74 } |
| 109 | 75 |
| 110 checkLibrary(LibraryElement library) { | 76 checkLibrary(LibraryElement library) { |
| 111 Expect.equals(1, actualMessageCount); | 77 Expect.equals(1, actualMessageCount); |
| 112 } | 78 } |
| 113 | 79 |
| 114 CompilerImpl compiler = new CustomCompiler( | 80 CompilerImpl compiler = new CustomCompiler( |
| 115 {}, | |
| 116 new LegacyCompilerInput(wrappedProvider), | 81 new LegacyCompilerInput(wrappedProvider), |
| 117 new LegacyCompilerDiagnostics(wrappedHandler), | 82 new LegacyCompilerDiagnostics(wrappedHandler), |
| 118 sdkRoot, | 83 sdkRoot, |
| 119 packageRoot, | 84 packageRoot, |
| 120 [], | 85 [], |
| 121 {}); | 86 {}); |
| 122 | 87 |
| 123 asyncStart(); | 88 asyncStart(); |
| 124 compiler.libraryLoader.loadLibrary(Uri.parse("dart:m_o_c_k_1")) | 89 await compiler.setupSdk(); |
| 125 .then(checkLibrary) | 90 var library = |
| 126 .then(asyncSuccess); | 91 await compiler.libraryLoader.loadLibrary(Uri.parse("dart:m_o_c_k_1")); |
| 92 await checkLibrary(library); |
| 93 asyncSuccess(null); |
| 127 } | 94 } |
| 128 | 95 |
| 129 const Map MEMORY_SOURCE_FILES = const { | 96 const Map MEMORY_SOURCE_FILES = const { |
| 130 "mock1.dart": "library mock1; import 'mock2.dart';", | 97 "mock1.dart": "library mock1; import 'mock2.dart';", |
| 131 "mock2.dart": "library mock2;", | 98 "mock2.dart": "library mock2;", |
| 132 }; | 99 }; |
| OLD | NEW |