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

Side by Side Diff: packages/analyzer/test/src/dart/sdk/sdk_test.dart

Issue 2990843002: Removed fixed dependencies (Closed)
Patch Set: Created 3 years, 4 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 unified diff | Download patch
OLDNEW
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 library analyzer.test.generated.sdk_test;
6
7 import 'package:analyzer/file_system/file_system.dart';
8 import 'package:analyzer/file_system/memory_file_system.dart';
9 import 'package:analyzer/src/context/builder.dart' show EmbedderYamlLocator;
10 import 'package:analyzer/src/dart/sdk/sdk.dart';
11 import 'package:analyzer/src/generated/engine.dart';
12 import 'package:analyzer/src/generated/java_engine_io.dart';
13 import 'package:analyzer/src/generated/sdk.dart';
14 import 'package:analyzer/src/generated/source.dart';
15 import 'package:analyzer/src/summary/summarize_elements.dart';
16 import 'package:test_reflective_loader/test_reflective_loader.dart';
17 import 'package:unittest/unittest.dart';
18
19 import '../../../embedder_tests.dart';
20 import '../../../generated/test_support.dart';
21 import '../../../resource_utils.dart';
22 import '../../../utils.dart';
23
24 main() {
25 initializeTestEnvironment();
26 defineReflectiveTests(EmbedderSdkTest);
27 defineReflectiveTests(FolderBasedDartSdkTest);
28 defineReflectiveTests(SdkExtensionFinderTest);
29 defineReflectiveTests(SDKLibrariesReaderTest);
30 }
31
32 @reflectiveTest
33 class EmbedderSdkTest extends EmbedderRelatedTest {
34 void test_creation() {
35 EmbedderYamlLocator locator = new EmbedderYamlLocator({
36 'fox': <Folder>[pathTranslator.getResource(foxLib)]
37 });
38 EmbedderSdk sdk = new EmbedderSdk(resourceProvider, locator.embedderYamls);
39
40 expect(sdk.urlMappings, hasLength(5));
41 }
42
43 void test_fromFileUri() {
44 EmbedderYamlLocator locator = new EmbedderYamlLocator({
45 'fox': <Folder>[pathTranslator.getResource(foxLib)]
46 });
47 EmbedderSdk sdk = new EmbedderSdk(resourceProvider, locator.embedderYamls);
48
49 expectSource(String posixPath, String dartUri) {
50 Uri uri = Uri.parse(posixToOSFileUri(posixPath));
51 Source source = sdk.fromFileUri(uri);
52 expect(source, isNotNull, reason: posixPath);
53 expect(source.uri.toString(), dartUri);
54 expect(source.fullName, posixToOSPath(posixPath));
55 }
56
57 expectSource('$foxLib/slippy.dart', 'dart:fox');
58 expectSource('$foxLib/deep/directory/file.dart', 'dart:deep');
59 expectSource('$foxLib/deep/directory/part.dart', 'dart:deep/part.dart');
60 }
61
62 void test_getLinkedBundle_hasBundle() {
63 pathTranslator.newFileWithBytes(
64 '$foxPath/sdk.ds', new PackageBundleAssembler().assemble().toBuffer());
65 EmbedderYamlLocator locator = new EmbedderYamlLocator({
66 'fox': <Folder>[pathTranslator.getResource(foxLib)]
67 });
68 // No bundle for spec mode.
69 {
70 EmbedderSdk sdk =
71 new EmbedderSdk(resourceProvider, locator.embedderYamls);
72 sdk.analysisOptions = new AnalysisOptionsImpl()..strongMode = false;
73 sdk.useSummary = true;
74 expect(sdk.getLinkedBundle(), isNull);
75 }
76 // Has bundle for strong mode.
77 {
78 EmbedderSdk sdk =
79 new EmbedderSdk(resourceProvider, locator.embedderYamls);
80 sdk.analysisOptions = new AnalysisOptionsImpl()..strongMode = true;
81 sdk.useSummary = true;
82 expect(sdk.getLinkedBundle(), isNotNull);
83 }
84 // Don't use bundle if not enabled.
85 {
86 EmbedderSdk sdk =
87 new EmbedderSdk(resourceProvider, locator.embedderYamls);
88 sdk.analysisOptions = new AnalysisOptionsImpl()..strongMode = true;
89 sdk.useSummary = false;
90 expect(sdk.getLinkedBundle(), isNull);
91 }
92 }
93
94 void test_getLinkedBundle_noBundle() {
95 EmbedderYamlLocator locator = new EmbedderYamlLocator({
96 'fox': <Folder>[pathTranslator.getResource(foxLib)]
97 });
98 EmbedderSdk sdk = new EmbedderSdk(resourceProvider, locator.embedderYamls);
99 expect(sdk.getLinkedBundle(), isNull);
100 }
101
102 void test_getSdkLibrary() {
103 EmbedderYamlLocator locator = new EmbedderYamlLocator({
104 'fox': <Folder>[pathTranslator.getResource(foxLib)]
105 });
106 EmbedderSdk sdk = new EmbedderSdk(resourceProvider, locator.embedderYamls);
107
108 SdkLibrary lib = sdk.getSdkLibrary('dart:fox');
109 expect(lib, isNotNull);
110 expect(lib.path, posixToOSPath('$foxLib/slippy.dart'));
111 expect(lib.shortName, 'dart:fox');
112 }
113
114 void test_mapDartUri() {
115 EmbedderYamlLocator locator = new EmbedderYamlLocator({
116 'fox': <Folder>[pathTranslator.getResource(foxLib)]
117 });
118 EmbedderSdk sdk = new EmbedderSdk(resourceProvider, locator.embedderYamls);
119
120 void expectSource(String dartUri, String posixPath) {
121 Source source = sdk.mapDartUri(dartUri);
122 expect(source, isNotNull, reason: posixPath);
123 expect(source.uri.toString(), dartUri);
124 expect(source.fullName, posixToOSPath(posixPath));
125 }
126
127 expectSource('dart:core', '$foxLib/core.dart');
128 expectSource('dart:fox', '$foxLib/slippy.dart');
129 expectSource('dart:deep', '$foxLib/deep/directory/file.dart');
130 expectSource('dart:deep/part.dart', '$foxLib/deep/directory/part.dart');
131 }
132 }
133
134 @reflectiveTest
135 class FolderBasedDartSdkTest {
136 /**
137 * The resource provider used by these tests.
138 */
139 MemoryResourceProvider resourceProvider;
140
141 void test_addExtensions() {
142 FolderBasedDartSdk sdk = _createDartSdk();
143 String uri = 'dart:my.internal';
144 sdk.addExtensions({uri: '/Users/user/dart/my.dart'});
145 expect(sdk.mapDartUri(uri), isNotNull);
146 // The `shortName` property must include the `dart:` prefix.
147 expect(sdk.sdkLibraries, contains(predicate((SdkLibrary library) {
148 return library.shortName == uri;
149 })));
150 }
151
152 void test_analysisOptions_afterContextCreation() {
153 FolderBasedDartSdk sdk = _createDartSdk();
154 sdk.context;
155 expect(() {
156 sdk.analysisOptions = new AnalysisOptionsImpl();
157 }, throwsStateError);
158 }
159
160 void test_analysisOptions_beforeContextCreation() {
161 FolderBasedDartSdk sdk = _createDartSdk();
162 sdk.analysisOptions = new AnalysisOptionsImpl();
163 sdk.context;
164 // cannot change "analysisOptions" in the context
165 expect(() {
166 sdk.context.analysisOptions = new AnalysisOptionsImpl();
167 }, throwsStateError);
168 }
169
170 void test_creation() {
171 FolderBasedDartSdk sdk = _createDartSdk();
172 expect(sdk, isNotNull);
173 }
174
175 void test_fromFile_invalid() {
176 FolderBasedDartSdk sdk = _createDartSdk();
177 expect(
178 sdk.fromFileUri(
179 resourceProvider.getFile("/not/in/the/sdk.dart").toUri()),
180 isNull);
181 }
182
183 void test_fromFile_library() {
184 FolderBasedDartSdk sdk = _createDartSdk();
185 Source source = sdk.fromFileUri(sdk.libraryDirectory
186 .getChildAssumingFolder("core")
187 .getChildAssumingFile("core.dart")
188 .toUri());
189 expect(source, isNotNull);
190 expect(source.isInSystemLibrary, isTrue);
191 expect(source.uri.toString(), "dart:core");
192 }
193
194 void test_fromFile_library_firstExact() {
195 FolderBasedDartSdk sdk = _createDartSdk();
196 Folder dirHtml = sdk.libraryDirectory.getChildAssumingFolder("html");
197 Folder dirDartium = dirHtml.getChildAssumingFolder("dartium");
198 File file = dirDartium.getChildAssumingFile("html_dartium.dart");
199 Source source = sdk.fromFileUri(file.toUri());
200 expect(source, isNotNull);
201 expect(source.isInSystemLibrary, isTrue);
202 expect(source.uri.toString(), "dart:html");
203 }
204
205 void test_fromFile_library_html_common_dart2js() {
206 FolderBasedDartSdk sdk = _createDartSdk();
207 Folder dirHtml = sdk.libraryDirectory.getChildAssumingFolder("html");
208 Folder dirCommon = dirHtml.getChildAssumingFolder("html_common");
209 File file = dirCommon.getChildAssumingFile("html_common_dart2js.dart");
210 Source source = sdk.fromFileUri(file.toUri());
211 expect(source, isNotNull);
212 expect(source.isInSystemLibrary, isTrue);
213 expect(source.uri.toString(), "dart:html_common/html_common_dart2js.dart");
214 }
215
216 void test_fromFile_part() {
217 FolderBasedDartSdk sdk = _createDartSdk();
218 Source source = sdk.fromFileUri(sdk.libraryDirectory
219 .getChildAssumingFolder("core")
220 .getChildAssumingFile("num.dart")
221 .toUri());
222 expect(source, isNotNull);
223 expect(source.isInSystemLibrary, isTrue);
224 expect(source.uri.toString(), "dart:core/num.dart");
225 }
226
227 void test_getDirectory() {
228 FolderBasedDartSdk sdk = _createDartSdk();
229 Folder directory = sdk.directory;
230 expect(directory, isNotNull);
231 expect(directory.exists, isTrue);
232 }
233
234 void test_getDocDirectory() {
235 FolderBasedDartSdk sdk = _createDartSdk();
236 Folder directory = sdk.docDirectory;
237 expect(directory, isNotNull);
238 }
239
240 void test_getLibraryDirectory() {
241 FolderBasedDartSdk sdk = _createDartSdk();
242 Folder directory = sdk.libraryDirectory;
243 expect(directory, isNotNull);
244 expect(directory.exists, isTrue);
245 }
246
247 void test_getPubExecutable() {
248 FolderBasedDartSdk sdk = _createDartSdk();
249 File executable = sdk.pubExecutable;
250 expect(executable, isNotNull);
251 expect(executable.exists, isTrue);
252 }
253
254 void test_getSdkVersion() {
255 FolderBasedDartSdk sdk = _createDartSdk();
256 String version = sdk.sdkVersion;
257 expect(version, isNotNull);
258 expect(version.length > 0, isTrue);
259 }
260
261 void test_useSummary_afterContextCreation() {
262 FolderBasedDartSdk sdk = _createDartSdk();
263 sdk.context;
264 expect(() {
265 sdk.useSummary = true;
266 }, throwsStateError);
267 }
268
269 void test_useSummary_beforeContextCreation() {
270 FolderBasedDartSdk sdk = _createDartSdk();
271 sdk.useSummary = true;
272 sdk.context;
273 }
274
275 FolderBasedDartSdk _createDartSdk() {
276 resourceProvider = new MemoryResourceProvider();
277 Folder sdkDirectory = resourceProvider.getFolder('/sdk');
278 _createFile(sdkDirectory,
279 ['lib', '_internal', 'sdk_library_metadata', 'lib', 'libraries.dart'],
280 content: _librariesFileContent());
281 _createFile(sdkDirectory, ['bin', 'dart']);
282 _createFile(sdkDirectory, ['bin', 'dart2js']);
283 _createFile(sdkDirectory, ['bin', 'pub']);
284 _createFile(sdkDirectory, ['lib', 'async', 'async.dart']);
285 _createFile(sdkDirectory, ['lib', 'core', 'core.dart']);
286 _createFile(sdkDirectory, ['lib', 'core', 'num.dart']);
287 _createFile(sdkDirectory,
288 ['lib', 'html', 'html_common', 'html_common_dart2js.dart']);
289 _createFile(sdkDirectory, ['lib', 'html', 'dartium', 'html_dartium.dart']);
290 _createFile(
291 sdkDirectory, ['bin', (OSUtilities.isWindows() ? 'pub.bat' : 'pub')]);
292 return new FolderBasedDartSdk(resourceProvider, sdkDirectory);
293 }
294
295 void _createFile(Folder directory, List<String> segments,
296 {String content: ''}) {
297 Folder parent = directory;
298 int last = segments.length - 1;
299 for (int i = 0; i < last; i++) {
300 parent = parent.getChildAssumingFolder(segments[i]);
301 }
302 File file = parent.getChildAssumingFile(segments[last]);
303 resourceProvider.newFile(file.path, content);
304 }
305
306 String _librariesFileContent() => '''
307 final Map<String, LibraryInfo> LIBRARIES = const <String, LibraryInfo> {
308 "async": const LibraryInfo(
309 "async/async.dart",
310 categories: "Client,Server",
311 maturity: Maturity.STABLE,
312 dart2jsPatchPath: "_internal/js_runtime/lib/async_patch.dart"),
313
314 "core": const LibraryInfo(
315 "core/core.dart",
316 categories: "Client,Server,Embedded",
317 maturity: Maturity.STABLE,
318 dart2jsPatchPath: "_internal/js_runtime/lib/core_patch.dart"),
319
320 "html": const LibraryInfo(
321 "html/dartium/html_dartium.dart",
322 categories: "Client",
323 maturity: Maturity.WEB_STABLE,
324 dart2jsPath: "html/dart2js/html_dart2js.dart"),
325
326 "html_common": const LibraryInfo(
327 "html/html_common/html_common.dart",
328 categories: "Client",
329 maturity: Maturity.WEB_STABLE,
330 dart2jsPath: "html/html_common/html_common_dart2js.dart",
331 documented: false,
332 implementation: true),
333 };
334 ''';
335 }
336
337 @reflectiveTest
338 class SdkExtensionFinderTest {
339 MemoryResourceProvider resourceProvider;
340
341 void setUp() {
342 resourceProvider = new MemoryResourceProvider();
343 resourceProvider.newFolder('/empty');
344 resourceProvider.newFolder('/tmp');
345 resourceProvider.newFile(
346 '/tmp/_sdkext',
347 r'''
348 {
349 "dart:fox": "slippy.dart",
350 "dart:bear": "grizzly.dart",
351 "dart:relative": "../relative.dart",
352 "dart:deep": "deep/directory/file.dart",
353 "fart:loudly": "nomatter.dart"
354 }''');
355 }
356
357 test_create_noSdkExtPackageMap() {
358 var resolver = new SdkExtensionFinder({
359 'fox': <Folder>[resourceProvider.getResource('/empty')]
360 });
361 expect(resolver.urlMappings.length, equals(0));
362 }
363
364 test_create_nullPackageMap() {
365 var resolver = new SdkExtensionFinder(null);
366 expect(resolver.urlMappings.length, equals(0));
367 }
368
369 test_create_sdkExtPackageMap() {
370 var resolver = new SdkExtensionFinder({
371 'fox': <Folder>[resourceProvider.getResource('/tmp')]
372 });
373 // We have four mappings.
374 Map<String, String> urlMappings = resolver.urlMappings;
375 expect(urlMappings.length, equals(4));
376 // Check that they map to the correct paths.
377 expect(urlMappings['dart:fox'], equals("/tmp/slippy.dart"));
378 expect(urlMappings['dart:bear'], equals("/tmp/grizzly.dart"));
379 expect(urlMappings['dart:relative'], equals("/relative.dart"));
380 expect(urlMappings['dart:deep'], equals("/tmp/deep/directory/file.dart"));
381 }
382 }
383
384 @reflectiveTest
385 class SDKLibrariesReaderTest extends EngineTestCase {
386 /**
387 * The resource provider used by these tests.
388 */
389 MemoryResourceProvider resourceProvider;
390
391 @override
392 void setUp() {
393 resourceProvider = new MemoryResourceProvider();
394 }
395
396 void test_readFrom_dart2js() {
397 LibraryMap libraryMap = new SdkLibrariesReader(true).readFromFile(
398 resourceProvider.getFile("/libs.dart"),
399 r'''
400 final Map<String, LibraryInfo> LIBRARIES = const <String, LibraryInfo> {
401 'first' : const LibraryInfo(
402 'first/first.dart',
403 categories: 'Client',
404 documented: true,
405 platforms: VM_PLATFORM,
406 dart2jsPath: 'first/first_dart2js.dart'),
407 };''');
408 expect(libraryMap, isNotNull);
409 expect(libraryMap.size(), 1);
410 SdkLibrary first = libraryMap.getLibrary("dart:first");
411 expect(first, isNotNull);
412 expect(first.category, "Client");
413 expect(first.path, "first/first_dart2js.dart");
414 expect(first.shortName, "dart:first");
415 expect(first.isDart2JsLibrary, false);
416 expect(first.isDocumented, true);
417 expect(first.isImplementation, false);
418 expect(first.isVmLibrary, true);
419 }
420
421 void test_readFrom_empty() {
422 LibraryMap libraryMap = new SdkLibrariesReader(false)
423 .readFromFile(resourceProvider.getFile("/libs.dart"), "");
424 expect(libraryMap, isNotNull);
425 expect(libraryMap.size(), 0);
426 }
427
428 void test_readFrom_normal() {
429 LibraryMap libraryMap = new SdkLibrariesReader(false).readFromFile(
430 resourceProvider.getFile("/libs.dart"),
431 r'''
432 final Map<String, LibraryInfo> LIBRARIES = const <String, LibraryInfo> {
433 'first' : const LibraryInfo(
434 'first/first.dart',
435 categories: 'Client',
436 documented: true,
437 platforms: VM_PLATFORM),
438
439 'second' : const LibraryInfo(
440 'second/second.dart',
441 categories: 'Server',
442 documented: false,
443 implementation: true,
444 platforms: 0),
445 };''');
446 expect(libraryMap, isNotNull);
447 expect(libraryMap.size(), 2);
448 SdkLibrary first = libraryMap.getLibrary("dart:first");
449 expect(first, isNotNull);
450 expect(first.category, "Client");
451 expect(first.path, "first/first.dart");
452 expect(first.shortName, "dart:first");
453 expect(first.isDart2JsLibrary, false);
454 expect(first.isDocumented, true);
455 expect(first.isImplementation, false);
456 expect(first.isVmLibrary, true);
457 SdkLibrary second = libraryMap.getLibrary("dart:second");
458 expect(second, isNotNull);
459 expect(second.category, "Server");
460 expect(second.path, "second/second.dart");
461 expect(second.shortName, "dart:second");
462 expect(second.isDart2JsLibrary, false);
463 expect(second.isDocumented, false);
464 expect(second.isImplementation, true);
465 expect(second.isVmLibrary, false);
466 }
467 }
OLDNEW
« no previous file with comments | « packages/analyzer/test/src/dart/element/test_all.dart ('k') | packages/analyzer/test/src/dart/sdk/test_all.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698