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

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

Issue 2207953002: SDK implementations based on file_system rather than java_io (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: address comments Created 4 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
« no previous file with comments | « pkg/analyzer/lib/src/dart/sdk/sdk.dart ('k') | pkg/analyzer/test/src/dart/sdk/test_all.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/source/embedder.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/sdk.dart';
13 import 'package:analyzer/src/generated/source.dart';
14 import 'package:unittest/unittest.dart';
15
16 import '../../../generated/test_support.dart';
17 import '../../../reflective_tests.dart';
18 import '../../../resource_utils.dart';
19 import '../../../source/embedder_test.dart';
20 import '../../../utils.dart';
21
22 main() {
23 initializeTestEnvironment();
24 runReflectiveTests(EmbedderSdkTest);
25 runReflectiveTests(FolderBasedDartSdkTest);
26 runReflectiveTests(SDKLibrariesReaderTest);
27 }
28
29 @reflectiveTest
30 class EmbedderSdkTest extends EmbedderRelatedTest {
31 void test_creation() {
32 EmbedderYamlLocator locator = new EmbedderYamlLocator({
33 'fox': [pathTranslator.getResource('/tmp')]
34 });
35 EmbedderSdk sdk = new EmbedderSdk(resourceProvider, locator.embedderYamls);
36
37 expect(sdk.urlMappings, hasLength(5));
38 }
39
40 void test_fromFileUri() {
41 EmbedderYamlLocator locator = new EmbedderYamlLocator({
42 'fox': [pathTranslator.getResource('/tmp')]
43 });
44 EmbedderSdk sdk = new EmbedderSdk(resourceProvider, locator.embedderYamls);
45
46 expectSource(String posixPath, String dartUri) {
47 Uri uri = Uri.parse(posixToOSFileUri(posixPath));
48 Source source = sdk.fromFileUri(uri);
49 expect(source, isNotNull, reason: posixPath);
50 expect(source.uri.toString(), dartUri);
51 expect(source.fullName, posixToOSPath(posixPath));
52 }
53
54 expectSource('/tmp/slippy.dart', 'dart:fox');
55 expectSource('/tmp/deep/directory/file.dart', 'dart:deep');
56 expectSource('/tmp/deep/directory/part.dart', 'dart:deep/part.dart');
57 }
58
59 void test_getSdkLibrary() {
60 EmbedderYamlLocator locator = new EmbedderYamlLocator({
61 'fox': [pathTranslator.getResource('/tmp')]
62 });
63 EmbedderSdk sdk = new EmbedderSdk(resourceProvider, locator.embedderYamls);
64
65 SdkLibrary lib = sdk.getSdkLibrary('dart:fox');
66 expect(lib, isNotNull);
67 expect(lib.path, posixToOSPath('/tmp/slippy.dart'));
68 expect(lib.shortName, 'dart:fox');
69 }
70
71 void test_mapDartUri() {
72 EmbedderYamlLocator locator = new EmbedderYamlLocator({
73 'fox': [pathTranslator.getResource('/tmp')]
74 });
75 EmbedderSdk sdk = new EmbedderSdk(resourceProvider, locator.embedderYamls);
76
77 void expectSource(String dartUri, String posixPath) {
78 Source source = sdk.mapDartUri(dartUri);
79 expect(source, isNotNull, reason: posixPath);
80 expect(source.uri.toString(), dartUri);
81 expect(source.fullName, posixToOSPath(posixPath));
82 }
83
84 expectSource('dart:core', '/tmp/core.dart');
85 expectSource('dart:fox', '/tmp/slippy.dart');
86 expectSource('dart:deep', '/tmp/deep/directory/file.dart');
87 expectSource('dart:deep/part.dart', '/tmp/deep/directory/part.dart');
88 }
89 }
90
91 @reflectiveTest
92 class FolderBasedDartSdkTest {
93 /**
94 * The resource provider used by these tests.
95 */
96 MemoryResourceProvider resourceProvider;
97
98 // void test_getDocFileFor() {
99 // FolderBasedDartSdk sdk = _createDartSdk();
100 // File docFile = sdk.getDocFileFor("html");
101 // expect(docFile, isNotNull);
102 // }
103
104 void test_analysisOptions_afterContextCreation() {
105 FolderBasedDartSdk sdk = _createDartSdk();
106 sdk.context;
107 expect(() {
108 sdk.analysisOptions = new AnalysisOptionsImpl();
109 }, throwsStateError);
110 }
111
112 void test_analysisOptions_beforeContextCreation() {
113 FolderBasedDartSdk sdk = _createDartSdk();
114 sdk.analysisOptions = new AnalysisOptionsImpl();
115 sdk.context;
116 // cannot change "analysisOptions" in the context
117 expect(() {
118 sdk.context.analysisOptions = new AnalysisOptionsImpl();
119 }, throwsStateError);
120 }
121
122 void test_creation() {
123 FolderBasedDartSdk sdk = _createDartSdk();
124 expect(sdk, isNotNull);
125 }
126
127 void test_fromFile_invalid() {
128 FolderBasedDartSdk sdk = _createDartSdk();
129 expect(
130 sdk.fromFileUri(
131 resourceProvider.getFile("/not/in/the/sdk.dart").toUri()),
132 isNull);
133 }
134
135 void test_fromFile_library() {
136 FolderBasedDartSdk sdk = _createDartSdk();
137 Source source = sdk.fromFileUri(sdk.libraryDirectory
138 .getChildAssumingFolder("core")
139 .getChildAssumingFile("core.dart")
140 .toUri());
141 expect(source, isNotNull);
142 expect(source.isInSystemLibrary, isTrue);
143 expect(source.uri.toString(), "dart:core");
144 }
145
146 void test_fromFile_library_firstExact() {
147 FolderBasedDartSdk sdk = _createDartSdk();
148 Folder dirHtml = sdk.libraryDirectory.getChildAssumingFolder("html");
149 Folder dirDartium = dirHtml.getChildAssumingFolder("dartium");
150 File file = dirDartium.getChildAssumingFile("html_dartium.dart");
151 Source source = sdk.fromFileUri(file.toUri());
152 expect(source, isNotNull);
153 expect(source.isInSystemLibrary, isTrue);
154 expect(source.uri.toString(), "dart:html");
155 }
156
157 void test_fromFile_library_html_common_dart2js() {
158 FolderBasedDartSdk sdk = _createDartSdk();
159 Folder dirHtml = sdk.libraryDirectory.getChildAssumingFolder("html");
160 Folder dirCommon = dirHtml.getChildAssumingFolder("html_common");
161 File file = dirCommon.getChildAssumingFile("html_common_dart2js.dart");
162 Source source = sdk.fromFileUri(file.toUri());
163 expect(source, isNotNull);
164 expect(source.isInSystemLibrary, isTrue);
165 expect(source.uri.toString(), "dart:html_common/html_common_dart2js.dart");
166 }
167
168 void test_fromFile_part() {
169 FolderBasedDartSdk sdk = _createDartSdk();
170 Source source = sdk.fromFileUri(sdk.libraryDirectory
171 .getChildAssumingFolder("core")
172 .getChildAssumingFile("num.dart")
173 .toUri());
174 expect(source, isNotNull);
175 expect(source.isInSystemLibrary, isTrue);
176 expect(source.uri.toString(), "dart:core/num.dart");
177 }
178
179 // void test_dart2JsExecutable() {
180 // FolderBasedDartSdk sdk = _createDartSdk();
181 // File executable = sdk.dart2JsExecutable;
182 // expect(executable, isNotNull);
183 // expect(executable.exists, isTrue);
184 //// expect(executable.isExecutable(), isTrue);
185 // }
186
187 void test_getDirectory() {
188 FolderBasedDartSdk sdk = _createDartSdk();
189 Folder directory = sdk.directory;
190 expect(directory, isNotNull);
191 expect(directory.exists, isTrue);
192 }
193
194 void test_getDocDirectory() {
195 FolderBasedDartSdk sdk = _createDartSdk();
196 Folder directory = sdk.docDirectory;
197 expect(directory, isNotNull);
198 }
199
200 void test_getLibraryDirectory() {
201 FolderBasedDartSdk sdk = _createDartSdk();
202 Folder directory = sdk.libraryDirectory;
203 expect(directory, isNotNull);
204 expect(directory.exists, isTrue);
205 }
206
207 void test_getPubExecutable() {
208 FolderBasedDartSdk sdk = _createDartSdk();
209 File executable = sdk.pubExecutable;
210 expect(executable, isNotNull);
211 expect(executable.exists, isTrue);
212 // expect(executable.isExecutable(), isTrue);
213 }
214
215 void test_getSdkVersion() {
216 FolderBasedDartSdk sdk = _createDartSdk();
217 String version = sdk.sdkVersion;
218 expect(version, isNotNull);
219 expect(version.length > 0, isTrue);
220 }
221
222 // void test_vmExecutable() {
223 // FolderBasedDartSdk sdk = _createDartSdk();
224 // File executable = sdk.vmExecutable;
225 // expect(executable, isNotNull);
226 // expect(executable.exists, isTrue);
227 //// expect(executable.isExecutable(), isTrue);
228 // }
229
230 void test_useSummary_afterContextCreation() {
231 FolderBasedDartSdk sdk = _createDartSdk();
232 sdk.context;
233 expect(() {
234 sdk.useSummary = true;
235 }, throwsStateError);
236 }
237
238 void test_useSummary_beforeContextCreation() {
239 FolderBasedDartSdk sdk = _createDartSdk();
240 sdk.useSummary = true;
241 sdk.context;
242 }
243
244 FolderBasedDartSdk _createDartSdk() {
245 resourceProvider = new MemoryResourceProvider();
246 Folder sdkDirectory = resourceProvider.getFolder('/sdk');
247 _createFile(sdkDirectory,
248 ['lib', '_internal', 'sdk_library_metadata', 'lib', 'libraries.dart'],
249 content: _librariesFileContent());
250 _createFile(sdkDirectory, ['bin', 'dart']);
251 _createFile(sdkDirectory, ['bin', 'dart2js']);
252 _createFile(sdkDirectory, ['bin', 'pub']);
253 _createFile(sdkDirectory, ['lib', 'async', 'async.dart']);
254 _createFile(sdkDirectory, ['lib', 'core', 'core.dart']);
255 _createFile(sdkDirectory, ['lib', 'core', 'num.dart']);
256 _createFile(sdkDirectory,
257 ['lib', 'html', 'html_common', 'html_common_dart2js.dart']);
258 _createFile(sdkDirectory, ['lib', 'html', 'dartium', 'html_dartium.dart']);
259 return new FolderBasedDartSdk(resourceProvider, sdkDirectory);
260 }
261
262 void _createFile(Folder directory, List<String> segments,
263 {String content: ''}) {
264 Folder parent = directory;
265 int last = segments.length - 1;
266 for (int i = 0; i < last; i++) {
267 parent = parent.getChildAssumingFolder(segments[i]);
268 }
269 File file = parent.getChildAssumingFile(segments[last]);
270 resourceProvider.newFile(file.path, content);
271 }
272
273 String _librariesFileContent() => '''
274 final Map<String, LibraryInfo> LIBRARIES = const <String, LibraryInfo> {
275 "async": const LibraryInfo(
276 "async/async.dart",
277 categories: "Client,Server",
278 maturity: Maturity.STABLE,
279 dart2jsPatchPath: "_internal/js_runtime/lib/async_patch.dart"),
280
281 "core": const LibraryInfo(
282 "core/core.dart",
283 categories: "Client,Server,Embedded",
284 maturity: Maturity.STABLE,
285 dart2jsPatchPath: "_internal/js_runtime/lib/core_patch.dart"),
286
287 "html": const LibraryInfo(
288 "html/dartium/html_dartium.dart",
289 categories: "Client",
290 maturity: Maturity.WEB_STABLE,
291 dart2jsPath: "html/dart2js/html_dart2js.dart"),
292
293 "html_common": const LibraryInfo(
294 "html/html_common/html_common.dart",
295 categories: "Client",
296 maturity: Maturity.WEB_STABLE,
297 dart2jsPath: "html/html_common/html_common_dart2js.dart",
298 documented: false,
299 implementation: true),
300 };
301 ''';
302 }
303
304 @reflectiveTest
305 class SDKLibrariesReaderTest extends EngineTestCase {
306 /**
307 * The resource provider used by these tests.
308 */
309 MemoryResourceProvider resourceProvider;
310
311 @override
312 void setUp() {
313 resourceProvider = new MemoryResourceProvider();
314 }
315
316 void test_readFrom_dart2js() {
317 LibraryMap libraryMap = new SdkLibrariesReader(true).readFromFile(
318 resourceProvider.getFile("/libs.dart"),
319 r'''
320 final Map<String, LibraryInfo> LIBRARIES = const <String, LibraryInfo> {
321 'first' : const LibraryInfo(
322 'first/first.dart',
323 categories: 'Client',
324 documented: true,
325 platforms: VM_PLATFORM,
326 dart2jsPath: 'first/first_dart2js.dart'),
327 };''');
328 expect(libraryMap, isNotNull);
329 expect(libraryMap.size(), 1);
330 SdkLibrary first = libraryMap.getLibrary("dart:first");
331 expect(first, isNotNull);
332 expect(first.category, "Client");
333 expect(first.path, "first/first_dart2js.dart");
334 expect(first.shortName, "dart:first");
335 expect(first.isDart2JsLibrary, false);
336 expect(first.isDocumented, true);
337 expect(first.isImplementation, false);
338 expect(first.isVmLibrary, true);
339 }
340
341 void test_readFrom_empty() {
342 LibraryMap libraryMap = new SdkLibrariesReader(false)
343 .readFromFile(resourceProvider.getFile("/libs.dart"), "");
344 expect(libraryMap, isNotNull);
345 expect(libraryMap.size(), 0);
346 }
347
348 void test_readFrom_normal() {
349 LibraryMap libraryMap = new SdkLibrariesReader(false).readFromFile(
350 resourceProvider.getFile("/libs.dart"),
351 r'''
352 final Map<String, LibraryInfo> LIBRARIES = const <String, LibraryInfo> {
353 'first' : const LibraryInfo(
354 'first/first.dart',
355 categories: 'Client',
356 documented: true,
357 platforms: VM_PLATFORM),
358
359 'second' : const LibraryInfo(
360 'second/second.dart',
361 categories: 'Server',
362 documented: false,
363 implementation: true,
364 platforms: 0),
365 };''');
366 expect(libraryMap, isNotNull);
367 expect(libraryMap.size(), 2);
368 SdkLibrary first = libraryMap.getLibrary("dart:first");
369 expect(first, isNotNull);
370 expect(first.category, "Client");
371 expect(first.path, "first/first.dart");
372 expect(first.shortName, "dart:first");
373 expect(first.isDart2JsLibrary, false);
374 expect(first.isDocumented, true);
375 expect(first.isImplementation, false);
376 expect(first.isVmLibrary, true);
377 SdkLibrary second = libraryMap.getLibrary("dart:second");
378 expect(second, isNotNull);
379 expect(second.category, "Server");
380 expect(second.path, "second/second.dart");
381 expect(second.shortName, "dart:second");
382 expect(second.isDart2JsLibrary, false);
383 expect(second.isDocumented, false);
384 expect(second.isImplementation, true);
385 expect(second.isVmLibrary, false);
386 }
387 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/dart/sdk/sdk.dart ('k') | pkg/analyzer/test/src/dart/sdk/test_all.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698