OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 import 'dart:convert'; | 5 import 'dart:convert'; |
6 import 'dart:typed_data'; | 6 import 'dart:typed_data'; |
7 | 7 |
8 import 'package:analyzer/file_system/file_system.dart'; | 8 import 'package:analyzer/file_system/file_system.dart'; |
9 import 'package:analyzer/file_system/memory_file_system.dart'; | 9 import 'package:analyzer/file_system/memory_file_system.dart'; |
10 import 'package:analyzer/source/package_map_resolver.dart'; | 10 import 'package:analyzer/source/package_map_resolver.dart'; |
11 import 'package:analyzer/src/dart/analysis/byte_store.dart'; | 11 import 'package:analyzer/src/dart/analysis/byte_store.dart'; |
12 import 'package:analyzer/src/dart/analysis/driver.dart' show PerformanceLog; | 12 import 'package:analyzer/src/dart/analysis/driver.dart' show PerformanceLog; |
13 import 'package:analyzer/src/dart/analysis/file_state.dart'; | 13 import 'package:analyzer/src/dart/analysis/file_state.dart'; |
14 import 'package:analyzer/src/dart/analysis/top_level_declaration.dart'; | 14 import 'package:analyzer/src/dart/analysis/top_level_declaration.dart'; |
15 import 'package:analyzer/src/generated/engine.dart' | 15 import 'package:analyzer/src/generated/engine.dart' |
16 show AnalysisOptions, AnalysisOptionsImpl; | 16 show AnalysisOptions, AnalysisOptionsImpl; |
17 import 'package:analyzer/src/generated/source.dart'; | 17 import 'package:analyzer/src/generated/source.dart'; |
18 import 'package:analyzer/src/util/fast_uri.dart'; | 18 import 'package:analyzer/src/util/fast_uri.dart'; |
19 import 'package:convert/convert.dart'; | 19 import 'package:convert/convert.dart'; |
20 import 'package:crypto/crypto.dart'; | 20 import 'package:crypto/crypto.dart'; |
21 import 'package:test/test.dart'; | 21 import 'package:test/test.dart'; |
22 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 22 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| 23 import 'package:typed_mock/typed_mock.dart'; |
23 | 24 |
24 import '../../context/mock_sdk.dart'; | 25 import '../../context/mock_sdk.dart'; |
25 | 26 |
26 main() { | 27 main() { |
27 defineReflectiveSuite(() { | 28 defineReflectiveSuite(() { |
28 defineReflectiveTests(FileSystemStateTest); | 29 defineReflectiveTests(FileSystemStateTest); |
29 }); | 30 }); |
30 } | 31 } |
31 | 32 |
32 @reflectiveTest | 33 @reflectiveTest |
33 class FileSystemStateTest { | 34 class FileSystemStateTest { |
34 final MemoryResourceProvider provider = new MemoryResourceProvider(); | 35 final MemoryResourceProvider provider = new MemoryResourceProvider(); |
35 MockSdk sdk; | 36 MockSdk sdk; |
36 | 37 |
37 final ByteStore byteStore = new MemoryByteStore(); | 38 final ByteStore byteStore = new MemoryByteStore(); |
38 final FileContentOverlay contentOverlay = new FileContentOverlay(); | 39 final FileContentOverlay contentOverlay = new FileContentOverlay(); |
39 | 40 |
40 final StringBuffer logBuffer = new StringBuffer(); | 41 final StringBuffer logBuffer = new StringBuffer(); |
| 42 final UriResolver generatedUriResolver = new _GeneratedUriResolverMock(); |
41 SourceFactory sourceFactory; | 43 SourceFactory sourceFactory; |
42 PerformanceLog logger; | 44 PerformanceLog logger; |
43 | 45 |
44 FileSystemState fileSystemState; | 46 FileSystemState fileSystemState; |
45 | 47 |
46 void setUp() { | 48 void setUp() { |
47 logger = new PerformanceLog(logBuffer); | 49 logger = new PerformanceLog(logBuffer); |
48 sdk = new MockSdk(resourceProvider: provider); | 50 sdk = new MockSdk(resourceProvider: provider); |
49 sourceFactory = new SourceFactory([ | 51 sourceFactory = new SourceFactory([ |
50 new DartUriResolver(sdk), | 52 new DartUriResolver(sdk), |
| 53 generatedUriResolver, |
51 new PackageMapUriResolver(provider, <String, List<Folder>>{ | 54 new PackageMapUriResolver(provider, <String, List<Folder>>{ |
52 'aaa': [provider.getFolder(_p('/aaa/lib'))], | 55 'aaa': [provider.getFolder(_p('/aaa/lib'))], |
53 'bbb': [provider.getFolder(_p('/bbb/lib'))], | 56 'bbb': [provider.getFolder(_p('/bbb/lib'))], |
54 }), | 57 }), |
55 new ResourceUriResolver(provider) | 58 new ResourceUriResolver(provider) |
56 ], null, provider); | 59 ], null, provider); |
57 AnalysisOptions analysisOptions = new AnalysisOptionsImpl() | 60 AnalysisOptions analysisOptions = new AnalysisOptionsImpl() |
58 ..strongMode = true; | 61 ..strongMode = true; |
59 fileSystemState = new FileSystemState(logger, byteStore, contentOverlay, | 62 fileSystemState = new FileSystemState(logger, byteStore, contentOverlay, |
60 provider, sourceFactory, analysisOptions, new Uint32List(0)); | 63 provider, sourceFactory, analysisOptions, new Uint32List(0)); |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
265 expect(_excludeSdk(file.importedFiles), isEmpty); | 268 expect(_excludeSdk(file.importedFiles), isEmpty); |
266 expect(file.exportedFiles, isEmpty); | 269 expect(file.exportedFiles, isEmpty); |
267 expect(file.partedFiles, isEmpty); | 270 expect(file.partedFiles, isEmpty); |
268 expect(_excludeSdk(file.directReferencedFiles), isEmpty); | 271 expect(_excludeSdk(file.directReferencedFiles), isEmpty); |
269 expect(file.isPart, isFalse); | 272 expect(file.isPart, isFalse); |
270 expect(file.library, isNull); | 273 expect(file.library, isNull); |
271 expect(file.unlinked, isNotNull); | 274 expect(file.unlinked, isNotNull); |
272 expect(file.unlinked.classes, isEmpty); | 275 expect(file.unlinked.classes, isEmpty); |
273 } | 276 } |
274 | 277 |
| 278 test_getFileForPath_generatedFile() { |
| 279 Uri uri = Uri.parse('package:aaa/foo.dart'); |
| 280 String templatePath = _p('/aaa/lib/foo.dart'); |
| 281 String generatedPath = _p('/generated/aaa/lib/foo.dart'); |
| 282 |
| 283 Source generatedSource = new _SourceMock(); |
| 284 when(generatedSource.fullName).thenReturn(generatedPath); |
| 285 when(generatedSource.uri).thenReturn(uri); |
| 286 |
| 287 when(generatedUriResolver.resolveAbsolute(uri, uri)) |
| 288 .thenReturn(generatedSource); |
| 289 |
| 290 FileState generatedFile = fileSystemState.getFileForUri(uri); |
| 291 expect(generatedFile.path, generatedPath); |
| 292 expect(generatedFile.uri, uri); |
| 293 |
| 294 FileState templateFile = fileSystemState.getFileForPath(templatePath); |
| 295 expect(templateFile.path, templatePath); |
| 296 expect(templateFile.uri, uri); |
| 297 |
| 298 expect(fileSystemState.getFilesForPath(templatePath), [templateFile]); |
| 299 } |
| 300 |
275 test_getFileForPath_library() { | 301 test_getFileForPath_library() { |
276 String a1 = _p('/aaa/lib/a1.dart'); | 302 String a1 = _p('/aaa/lib/a1.dart'); |
277 String a2 = _p('/aaa/lib/a2.dart'); | 303 String a2 = _p('/aaa/lib/a2.dart'); |
278 String a3 = _p('/aaa/lib/a3.dart'); | 304 String a3 = _p('/aaa/lib/a3.dart'); |
279 String a4 = _p('/aaa/lib/a4.dart'); | 305 String a4 = _p('/aaa/lib/a4.dart'); |
280 String b1 = _p('/bbb/lib/b1.dart'); | 306 String b1 = _p('/bbb/lib/b1.dart'); |
281 String b2 = _p('/bbb/lib/b2.dart'); | 307 String b2 = _p('/bbb/lib/b2.dart'); |
282 String content_a1 = r''' | 308 String content_a1 = r''' |
283 import 'package:aaa/a2.dart'; | 309 import 'package:aaa/a2.dart'; |
284 import 'package:bbb/b1.dart'; | 310 import 'package:bbb/b1.dart'; |
(...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
697 } | 723 } |
698 }).toList(); | 724 }).toList(); |
699 } | 725 } |
700 | 726 |
701 String _p(String path) => provider.convertPath(path); | 727 String _p(String path) => provider.convertPath(path); |
702 | 728 |
703 static String _md5(String content) { | 729 static String _md5(String content) { |
704 return hex.encode(md5.convert(UTF8.encode(content)).bytes); | 730 return hex.encode(md5.convert(UTF8.encode(content)).bytes); |
705 } | 731 } |
706 } | 732 } |
| 733 |
| 734 class _GeneratedUriResolverMock extends TypedMock implements UriResolver {} |
| 735 |
| 736 class _SourceMock extends TypedMock implements Source {} |
OLD | NEW |