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 library test.context.directory.manager; | 5 library test.context.directory.manager; |
6 | 6 |
7 import 'dart:collection'; | 7 import 'dart:collection'; |
8 | 8 |
9 import 'package:analysis_server/src/context_manager.dart'; | 9 import 'package:analysis_server/src/context_manager.dart'; |
10 import 'package:analyzer/file_system/file_system.dart'; | 10 import 'package:analyzer/file_system/file_system.dart'; |
11 import 'package:analyzer/file_system/memory_file_system.dart'; | 11 import 'package:analyzer/file_system/memory_file_system.dart'; |
12 import 'package:analyzer/instrumentation/instrumentation.dart'; | 12 import 'package:analyzer/instrumentation/instrumentation.dart'; |
13 import 'package:analyzer/source/package_map_resolver.dart'; | |
14 import 'package:analyzer/src/generated/engine.dart'; | 13 import 'package:analyzer/src/generated/engine.dart'; |
15 import 'package:analyzer/src/generated/source.dart'; | 14 import 'package:analyzer/src/generated/source.dart'; |
16 import 'package:analyzer/src/generated/source_io.dart'; | 15 import 'package:analyzer/src/generated/source_io.dart'; |
17 import 'package:package_config/packages.dart'; | 16 import 'package:package_config/packages.dart'; |
18 import 'package:path/path.dart'; | 17 import 'package:path/path.dart'; |
19 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 18 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
20 import 'package:unittest/unittest.dart'; | 19 import 'package:unittest/unittest.dart'; |
21 | 20 |
22 import 'mocks.dart'; | 21 import 'mocks.dart'; |
23 | 22 |
(...skipping 1349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1373 return pumpEventQueue().then((_) { | 1372 return pumpEventQueue().then((_) { |
1374 _checkPackageMap(projPath, isEmpty); | 1373 _checkPackageMap(projPath, isEmpty); |
1375 // However, changing the package map dependency should. | 1374 // However, changing the package map dependency should. |
1376 resourceProvider.modifyFile(dependencyPath, 'new contents'); | 1375 resourceProvider.modifyFile(dependencyPath, 'new contents'); |
1377 return pumpEventQueue().then((_) { | 1376 return pumpEventQueue().then((_) { |
1378 _checkPackageMap(projPath, equals(packageMapProvider.packageMap)); | 1377 _checkPackageMap(projPath, equals(packageMapProvider.packageMap)); |
1379 }); | 1378 }); |
1380 }); | 1379 }); |
1381 } | 1380 } |
1382 | 1381 |
1383 test_watch_modifyPackageMapDependency_redundantly() async { | |
1384 // Create two dependency files | |
1385 String dependencyPath1 = posix.join(projPath, 'dep1'); | |
1386 String dependencyPath2 = posix.join(projPath, 'dep2'); | |
1387 resourceProvider.newFile(dependencyPath1, 'contents'); | |
1388 resourceProvider.newFile(dependencyPath2, 'contents'); | |
1389 packageMapProvider.dependencies.add(dependencyPath1); | |
1390 packageMapProvider.dependencies.add(dependencyPath2); | |
1391 // Create a dart file | |
1392 String dartFilePath = posix.join(projPath, 'main.dart'); | |
1393 resourceProvider.newFile(dartFilePath, 'contents'); | |
1394 // Verify that the created context has the expected empty package map. | |
1395 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | |
1396 _checkPackageMap(projPath, isEmpty); | |
1397 expect(packageMapProvider.computeCount, 1); | |
1398 // Set up a different package map | |
1399 String packagePath = '/package/foo'; | |
1400 resourceProvider.newFolder(packagePath); | |
1401 packageMapProvider.packageMap = {'foo': projPath}; | |
1402 // Change both dependencies. | |
1403 resourceProvider.modifyFile(dependencyPath1, 'new contents'); | |
1404 resourceProvider.modifyFile(dependencyPath2, 'new contents'); | |
1405 // Arrange for the next call to computePackageMap to return the correct | |
1406 // timestamps for the dependencies. | |
1407 packageMapProvider.modificationTimes = <String, int>{}; | |
1408 for (String path in [dependencyPath1, dependencyPath2]) { | |
1409 File resource = resourceProvider.getResource(path); | |
1410 packageMapProvider.modificationTimes[path] = resource.modificationStamp; | |
1411 } | |
1412 // This should cause the new package map to be picked up, by executing | |
1413 // computePackageMap just one additional time. | |
1414 await pumpEventQueue(); | |
1415 _checkPackageMap(projPath, equals(packageMapProvider.packageMap)); | |
1416 expect(packageMapProvider.computeCount, 2); | |
1417 } | |
1418 | |
1419 test_watch_modifyPackagespec() { | 1382 test_watch_modifyPackagespec() { |
1420 String packagesPath = '$projPath/.packages'; | 1383 String packagesPath = '$projPath/.packages'; |
1421 String filePath = '$projPath/bin/main.dart'; | 1384 String filePath = '$projPath/bin/main.dart'; |
1422 | 1385 |
1423 resourceProvider.newFile(packagesPath, ''); | 1386 resourceProvider.newFile(packagesPath, ''); |
1424 resourceProvider.newFile(filePath, 'library main;'); | 1387 resourceProvider.newFile(filePath, 'library main;'); |
1425 | 1388 |
1426 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 1389 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
1427 | 1390 |
1428 Map<String, int> filePaths = callbacks.currentContextFilePaths[projPath]; | 1391 Map<String, int> filePaths = callbacks.currentContextFilePaths[projPath]; |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1604 class TestUriResolver extends UriResolver { | 1567 class TestUriResolver extends UriResolver { |
1605 Map<Uri, Source> uriMap; | 1568 Map<Uri, Source> uriMap; |
1606 | 1569 |
1607 TestUriResolver(this.uriMap); | 1570 TestUriResolver(this.uriMap); |
1608 | 1571 |
1609 @override | 1572 @override |
1610 Source resolveAbsolute(Uri uri, [Uri actualUri]) { | 1573 Source resolveAbsolute(Uri uri, [Uri actualUri]) { |
1611 return uriMap[uri]; | 1574 return uriMap[uri]; |
1612 } | 1575 } |
1613 } | 1576 } |
OLD | NEW |