| Index: pkg/analysis_server/test/context_manager_test.dart
|
| diff --git a/pkg/analysis_server/test/context_manager_test.dart b/pkg/analysis_server/test/context_manager_test.dart
|
| index 4a4ec36fd3e4bebfc2919aa6f6bb238820ffd98c..2be5cb8ff5ecdecefe84bc01aa3e14d6667fe4e4 100644
|
| --- a/pkg/analysis_server/test/context_manager_test.dart
|
| +++ b/pkg/analysis_server/test/context_manager_test.dart
|
| @@ -7,10 +7,10 @@ library test.context.directory.manager;
|
| import 'dart:collection';
|
|
|
| import 'package:analysis_server/src/context_manager.dart';
|
| +import 'package:analysis_server/src/source/optimizing_pub_package_map_provider.dart';
|
| import 'package:analyzer/file_system/file_system.dart';
|
| import 'package:analyzer/file_system/memory_file_system.dart';
|
| import 'package:analyzer/instrumentation/instrumentation.dart';
|
| -import 'package:analyzer/source/package_map_provider.dart';
|
| import 'package:analyzer/source/package_map_resolver.dart';
|
| import 'package:analyzer/src/generated/engine.dart';
|
| import 'package:analyzer/src/generated/source.dart';
|
| @@ -858,6 +858,42 @@ class ContextManagerTest {
|
| });
|
| }
|
|
|
| + test_watch_modifyPackageMapDependency_redundantly() async {
|
| + // Create two dependency files
|
| + String dependencyPath1 = posix.join(projPath, 'dep1');
|
| + String dependencyPath2 = posix.join(projPath, 'dep2');
|
| + resourceProvider.newFile(dependencyPath1, 'contents');
|
| + resourceProvider.newFile(dependencyPath2, 'contents');
|
| + packageMapProvider.dependencies.add(dependencyPath1);
|
| + packageMapProvider.dependencies.add(dependencyPath2);
|
| + // Create a dart file
|
| + String dartFilePath = posix.join(projPath, 'main.dart');
|
| + resourceProvider.newFile(dartFilePath, 'contents');
|
| + // Verify that the created context has the expected empty package map.
|
| + manager.setRoots(<String>[projPath], <String>[], <String, String>{});
|
| + _checkPackageMap(projPath, isEmpty);
|
| + expect(packageMapProvider.computeCount, 1);
|
| + // Set up a different package map
|
| + String packagePath = '/package/foo';
|
| + resourceProvider.newFolder(packagePath);
|
| + packageMapProvider.packageMap = {'foo': projPath};
|
| + // Change both dependencies.
|
| + resourceProvider.modifyFile(dependencyPath1, 'new contents');
|
| + resourceProvider.modifyFile(dependencyPath2, 'new contents');
|
| + // Arrange for the next call to computePackageMap to return the correct
|
| + // timestamps for the dependencies.
|
| + packageMapProvider.modificationTimes = <String, int>{};
|
| + for (String path in [dependencyPath1, dependencyPath2]) {
|
| + File resource = resourceProvider.getResource(path);
|
| + packageMapProvider.modificationTimes[path] = resource.modificationStamp;
|
| + }
|
| + // This should cause the new package map to be picked up, by executing
|
| + // computePackageMap just one additional time.
|
| + await pumpEventQueue();
|
| + _checkPackageMap(projPath, equals(packageMapProvider.packageMap));
|
| + expect(packageMapProvider.computeCount, 2);
|
| + }
|
| +
|
| /**
|
| * Verify that package URI's for source files in [path] will be resolved
|
| * using a package map matching [expectation].
|
| @@ -917,7 +953,7 @@ class TestContextManager extends ContextManager {
|
| <String, UriResolver>{};
|
|
|
| TestContextManager(MemoryResourceProvider resourceProvider,
|
| - PackageMapProvider packageMapProvider)
|
| + OptimizingPubPackageMapProvider packageMapProvider)
|
| : super(resourceProvider, packageMapProvider,
|
| InstrumentationService.NULL_SERVICE);
|
|
|
|
|