Index: pkg/analyzer/test/src/task/dart_work_manager_test.dart |
diff --git a/pkg/analyzer/test/src/task/dart_work_manager_test.dart b/pkg/analyzer/test/src/task/dart_work_manager_test.dart |
index 433ffe9be15f1d0e0d10590417bfe746219047bb..2281be827ea47de525568dfdd8cb2eb9b63a25b3 100644 |
--- a/pkg/analyzer/test/src/task/dart_work_manager_test.dart |
+++ b/pkg/analyzer/test/src/task/dart_work_manager_test.dart |
@@ -179,15 +179,6 @@ class DartWorkManagerTest { |
expect(cache.getState(part1, CONTAINING_LIBRARIES), CacheState.INVALID); |
} |
- CacheEntry _getOrCreateEntry(Source source) { |
- CacheEntry entry = cache.get(source); |
- if (entry == null) { |
- entry = new CacheEntry(source); |
- cache.put(entry); |
- } |
- return entry; |
- } |
- |
void test_applyChange_updatePartsLibraries_removeLibrary() { |
Source part1 = new TestSource('part1.dart'); |
Source part2 = new TestSource('part2.dart'); |
@@ -420,6 +411,58 @@ class DartWorkManagerTest { |
expect(manager.getNextResultPriority(), WorkOrderPriority.NONE); |
} |
+ void test_onAnalysisOptionsChanged() { |
+ when(context.exists(anyObject)).thenReturn(true); |
+ // set cache values |
+ entry1.setValue(PARSED_UNIT, AstFactory.compilationUnit(), []); |
+ entry1.setValue(IMPORTED_LIBRARIES, <Source>[], []); |
+ entry1.setValue(EXPLICITLY_IMPORTED_LIBRARIES, <Source>[], []); |
+ entry1.setValue(EXPORTED_LIBRARIES, <Source>[], []); |
+ entry1.setValue(INCLUDED_PARTS, <Source>[], []); |
+ // configure LibrarySpecificUnit |
+ LibrarySpecificUnit unitTarget = new LibrarySpecificUnit(source2, source3); |
+ CacheEntry unitEntry = new CacheEntry(unitTarget); |
+ cache.put(unitEntry); |
+ unitEntry.setValue(BUILD_LIBRARY_ERRORS, <AnalysisError>[], []); |
+ expect(unitEntry.getState(BUILD_LIBRARY_ERRORS), CacheState.VALID); |
+ // notify |
+ manager.onAnalysisOptionsChanged(); |
+ // resolution is invalidated |
+ expect(unitEntry.getState(BUILD_LIBRARY_ERRORS), CacheState.INVALID); |
+ // ...but URIs are still value |
+ expect(entry1.getState(PARSED_UNIT), CacheState.VALID); |
+ expect(entry1.getState(IMPORTED_LIBRARIES), CacheState.VALID); |
+ expect(entry1.getState(EXPLICITLY_IMPORTED_LIBRARIES), CacheState.VALID); |
+ expect(entry1.getState(EXPORTED_LIBRARIES), CacheState.VALID); |
+ expect(entry1.getState(INCLUDED_PARTS), CacheState.VALID); |
+ } |
+ |
+ void test_onSourceFactoryChanged() { |
+ when(context.exists(anyObject)).thenReturn(true); |
+ // set cache values |
+ entry1.setValue(PARSED_UNIT, AstFactory.compilationUnit(), []); |
+ entry1.setValue(IMPORTED_LIBRARIES, <Source>[], []); |
+ entry1.setValue(EXPLICITLY_IMPORTED_LIBRARIES, <Source>[], []); |
+ entry1.setValue(EXPORTED_LIBRARIES, <Source>[], []); |
+ entry1.setValue(INCLUDED_PARTS, <Source>[], []); |
+ // configure LibrarySpecificUnit |
+ LibrarySpecificUnit unitTarget = new LibrarySpecificUnit(source2, source3); |
+ CacheEntry unitEntry = new CacheEntry(unitTarget); |
+ cache.put(unitEntry); |
+ unitEntry.setValue(BUILD_LIBRARY_ERRORS, <AnalysisError>[], []); |
+ expect(unitEntry.getState(BUILD_LIBRARY_ERRORS), CacheState.VALID); |
+ // notify |
+ manager.onSourceFactoryChanged(); |
+ // resolution is invalidated |
+ expect(unitEntry.getState(BUILD_LIBRARY_ERRORS), CacheState.INVALID); |
+ // ...and URIs resolution too |
+ expect(entry1.getState(PARSED_UNIT), CacheState.INVALID); |
+ expect(entry1.getState(IMPORTED_LIBRARIES), CacheState.INVALID); |
+ expect(entry1.getState(EXPLICITLY_IMPORTED_LIBRARIES), CacheState.INVALID); |
+ expect(entry1.getState(EXPORTED_LIBRARIES), CacheState.INVALID); |
+ expect(entry1.getState(INCLUDED_PARTS), CacheState.INVALID); |
+ } |
+ |
void test_resultsComputed_errors_forLibrarySpecificUnit() { |
AnalysisError error1 = |
new AnalysisError(source1, 1, 0, ScannerErrorCode.MISSING_DIGIT); |
@@ -539,17 +582,30 @@ class DartWorkManagerTest { |
expect_librarySourceQueue([]); |
expect_unknownSourceQueue([source1, source3]); |
} |
+ |
+ CacheEntry _getOrCreateEntry(Source source) { |
+ CacheEntry entry = cache.get(source); |
+ if (entry == null) { |
+ entry = new CacheEntry(source); |
+ cache.put(entry); |
+ } |
+ return entry; |
+ } |
} |
class _InternalAnalysisContextMock extends TypedMock |
implements InternalAnalysisContext { |
@override |
+ CachePartition privateAnalysisCachePartition; |
+ |
+ @override |
AnalysisCache analysisCache; |
Map<Source, ChangeNoticeImpl> _pendingNotices = <Source, ChangeNoticeImpl>{}; |
_InternalAnalysisContextMock() { |
- analysisCache = new AnalysisCache([new UniversalCachePartition(this)]); |
+ privateAnalysisCachePartition = new UniversalCachePartition(this); |
+ analysisCache = new AnalysisCache([privateAnalysisCachePartition]); |
} |
@override |