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

Side by Side Diff: pkg/analyzer/test/src/task/dart_work_manager_test.dart

Issue 1167483004: Invalidate resolution of analysisOptions/sourceFactory changes. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 6 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
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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.src.task.dart_work_manager_test; 5 library test.src.task.dart_work_manager_test;
6 6
7 import 'package:analyzer/src/context/cache.dart'; 7 import 'package:analyzer/src/context/cache.dart';
8 import 'package:analyzer/src/generated/ast.dart'; 8 import 'package:analyzer/src/generated/ast.dart';
9 import 'package:analyzer/src/generated/engine.dart' 9 import 'package:analyzer/src/generated/engine.dart'
10 show 10 show
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 expect(cache.getState(part1, CONTAINING_LIBRARIES), CacheState.VALID); 172 expect(cache.getState(part1, CONTAINING_LIBRARIES), CacheState.VALID);
173 // change part1 173 // change part1
174 manager.applyChange([], [part1], []); 174 manager.applyChange([], [part1], []);
175 expect(manager.partLibrariesMap[part2], unorderedEquals([library2])); 175 expect(manager.partLibrariesMap[part2], unorderedEquals([library2]));
176 expect(manager.partLibrariesMap[part3], unorderedEquals([library1])); 176 expect(manager.partLibrariesMap[part3], unorderedEquals([library1]));
177 expect(manager.libraryPartsMap[library1], [part1, part3]); 177 expect(manager.libraryPartsMap[library1], [part1, part3]);
178 expect(manager.libraryPartsMap[library2], [part1, part2]); 178 expect(manager.libraryPartsMap[library2], [part1, part2]);
179 expect(cache.getState(part1, CONTAINING_LIBRARIES), CacheState.INVALID); 179 expect(cache.getState(part1, CONTAINING_LIBRARIES), CacheState.INVALID);
180 } 180 }
181 181
182 CacheEntry _getOrCreateEntry(Source source) {
183 CacheEntry entry = cache.get(source);
184 if (entry == null) {
185 entry = new CacheEntry(source);
186 cache.put(entry);
187 }
188 return entry;
189 }
190
191 void test_applyChange_updatePartsLibraries_removeLibrary() { 182 void test_applyChange_updatePartsLibraries_removeLibrary() {
192 Source part1 = new TestSource('part1.dart'); 183 Source part1 = new TestSource('part1.dart');
193 Source part2 = new TestSource('part2.dart'); 184 Source part2 = new TestSource('part2.dart');
194 Source part3 = new TestSource('part3.dart'); 185 Source part3 = new TestSource('part3.dart');
195 Source library1 = new TestSource('library1.dart'); 186 Source library1 = new TestSource('library1.dart');
196 Source library2 = new TestSource('library2.dart'); 187 Source library2 = new TestSource('library2.dart');
197 manager.partLibrariesMap[part1] = [library1, library2]; 188 manager.partLibrariesMap[part1] = [library1, library2];
198 manager.partLibrariesMap[part2] = [library2]; 189 manager.partLibrariesMap[part2] = [library2];
199 manager.partLibrariesMap[part3] = [library1]; 190 manager.partLibrariesMap[part3] = [library1];
200 manager.libraryPartsMap[library1] = [part1, part3]; 191 manager.libraryPartsMap[library1] = [part1, part3];
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 404
414 void test_getNextResultPriority_hasUnknown() { 405 void test_getNextResultPriority_hasUnknown() {
415 manager.unknownSourceQueue.addAll([source1]); 406 manager.unknownSourceQueue.addAll([source1]);
416 expect(manager.getNextResultPriority(), WorkOrderPriority.NORMAL); 407 expect(manager.getNextResultPriority(), WorkOrderPriority.NORMAL);
417 } 408 }
418 409
419 void test_getNextResultPriority_nothingToDo() { 410 void test_getNextResultPriority_nothingToDo() {
420 expect(manager.getNextResultPriority(), WorkOrderPriority.NONE); 411 expect(manager.getNextResultPriority(), WorkOrderPriority.NONE);
421 } 412 }
422 413
414 void test_onAnalysisOptionsChanged() {
415 when(context.exists(anyObject)).thenReturn(true);
416 // set cache values
417 entry1.setValue(PARSED_UNIT, AstFactory.compilationUnit(), []);
418 entry1.setValue(IMPORTED_LIBRARIES, <Source>[], []);
419 entry1.setValue(EXPLICITLY_IMPORTED_LIBRARIES, <Source>[], []);
420 entry1.setValue(EXPORTED_LIBRARIES, <Source>[], []);
421 entry1.setValue(INCLUDED_PARTS, <Source>[], []);
422 // configure LibrarySpecificUnit
423 LibrarySpecificUnit unitTarget = new LibrarySpecificUnit(source2, source3);
424 CacheEntry unitEntry = new CacheEntry(unitTarget);
425 cache.put(unitEntry);
426 unitEntry.setValue(BUILD_LIBRARY_ERRORS, <AnalysisError>[], []);
427 expect(unitEntry.getState(BUILD_LIBRARY_ERRORS), CacheState.VALID);
428 // notify
429 manager.onAnalysisOptionsChanged();
430 // resolution is invalidated
431 expect(unitEntry.getState(BUILD_LIBRARY_ERRORS), CacheState.INVALID);
432 // ...but URIs are still value
433 expect(entry1.getState(PARSED_UNIT), CacheState.VALID);
434 expect(entry1.getState(IMPORTED_LIBRARIES), CacheState.VALID);
435 expect(entry1.getState(EXPLICITLY_IMPORTED_LIBRARIES), CacheState.VALID);
436 expect(entry1.getState(EXPORTED_LIBRARIES), CacheState.VALID);
437 expect(entry1.getState(INCLUDED_PARTS), CacheState.VALID);
438 }
439
440 void test_onSourceFactoryChanged() {
441 when(context.exists(anyObject)).thenReturn(true);
442 // set cache values
443 entry1.setValue(PARSED_UNIT, AstFactory.compilationUnit(), []);
444 entry1.setValue(IMPORTED_LIBRARIES, <Source>[], []);
445 entry1.setValue(EXPLICITLY_IMPORTED_LIBRARIES, <Source>[], []);
446 entry1.setValue(EXPORTED_LIBRARIES, <Source>[], []);
447 entry1.setValue(INCLUDED_PARTS, <Source>[], []);
448 // configure LibrarySpecificUnit
449 LibrarySpecificUnit unitTarget = new LibrarySpecificUnit(source2, source3);
450 CacheEntry unitEntry = new CacheEntry(unitTarget);
451 cache.put(unitEntry);
452 unitEntry.setValue(BUILD_LIBRARY_ERRORS, <AnalysisError>[], []);
453 expect(unitEntry.getState(BUILD_LIBRARY_ERRORS), CacheState.VALID);
454 // notify
455 manager.onSourceFactoryChanged();
456 // resolution is invalidated
457 expect(unitEntry.getState(BUILD_LIBRARY_ERRORS), CacheState.INVALID);
458 // ...and URIs resolution too
459 expect(entry1.getState(PARSED_UNIT), CacheState.INVALID);
460 expect(entry1.getState(IMPORTED_LIBRARIES), CacheState.INVALID);
461 expect(entry1.getState(EXPLICITLY_IMPORTED_LIBRARIES), CacheState.INVALID);
462 expect(entry1.getState(EXPORTED_LIBRARIES), CacheState.INVALID);
463 expect(entry1.getState(INCLUDED_PARTS), CacheState.INVALID);
464 }
465
423 void test_resultsComputed_errors_forLibrarySpecificUnit() { 466 void test_resultsComputed_errors_forLibrarySpecificUnit() {
424 AnalysisError error1 = 467 AnalysisError error1 =
425 new AnalysisError(source1, 1, 0, ScannerErrorCode.MISSING_DIGIT); 468 new AnalysisError(source1, 1, 0, ScannerErrorCode.MISSING_DIGIT);
426 AnalysisError error2 = 469 AnalysisError error2 =
427 new AnalysisError(source1, 2, 0, ScannerErrorCode.MISSING_DIGIT); 470 new AnalysisError(source1, 2, 0, ScannerErrorCode.MISSING_DIGIT);
428 when(context.getLibrariesContaining(source1)).thenReturn([source2]); 471 when(context.getLibrariesContaining(source1)).thenReturn([source2]);
429 LineInfo lineInfo = new LineInfo([0]); 472 LineInfo lineInfo = new LineInfo([0]);
430 entry1.setValue(LINE_INFO, lineInfo, []); 473 entry1.setValue(LINE_INFO, lineInfo, []);
431 entry1.setValue(SCAN_ERRORS, <AnalysisError>[error1], []); 474 entry1.setValue(SCAN_ERRORS, <AnalysisError>[error1], []);
432 AnalysisTarget unitTarget = new LibrarySpecificUnit(source2, source1); 475 AnalysisTarget unitTarget = new LibrarySpecificUnit(source2, source1);
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 expect_librarySourceQueue([source2]); 575 expect_librarySourceQueue([source2]);
533 expect_unknownSourceQueue([source1, source3]); 576 expect_unknownSourceQueue([source1, source3]);
534 } 577 }
535 578
536 void test_resultsComputed_sourceKind_isPart() { 579 void test_resultsComputed_sourceKind_isPart() {
537 manager.unknownSourceQueue.addAll([source1, source2, source3]); 580 manager.unknownSourceQueue.addAll([source1, source2, source3]);
538 manager.resultsComputed(source2, {SOURCE_KIND: SourceKind.PART}); 581 manager.resultsComputed(source2, {SOURCE_KIND: SourceKind.PART});
539 expect_librarySourceQueue([]); 582 expect_librarySourceQueue([]);
540 expect_unknownSourceQueue([source1, source3]); 583 expect_unknownSourceQueue([source1, source3]);
541 } 584 }
585
586 CacheEntry _getOrCreateEntry(Source source) {
587 CacheEntry entry = cache.get(source);
588 if (entry == null) {
589 entry = new CacheEntry(source);
590 cache.put(entry);
591 }
592 return entry;
593 }
542 } 594 }
543 595
544 class _InternalAnalysisContextMock extends TypedMock 596 class _InternalAnalysisContextMock extends TypedMock
545 implements InternalAnalysisContext { 597 implements InternalAnalysisContext {
546 @override 598 @override
599 CachePartition privateAnalysisCachePartition;
600
601 @override
547 AnalysisCache analysisCache; 602 AnalysisCache analysisCache;
548 603
549 Map<Source, ChangeNoticeImpl> _pendingNotices = <Source, ChangeNoticeImpl>{}; 604 Map<Source, ChangeNoticeImpl> _pendingNotices = <Source, ChangeNoticeImpl>{};
550 605
551 _InternalAnalysisContextMock() { 606 _InternalAnalysisContextMock() {
552 analysisCache = new AnalysisCache([new UniversalCachePartition(this)]); 607 privateAnalysisCachePartition = new UniversalCachePartition(this);
608 analysisCache = new AnalysisCache([privateAnalysisCachePartition]);
553 } 609 }
554 610
555 @override 611 @override
556 CacheEntry getCacheEntry(AnalysisTarget target) { 612 CacheEntry getCacheEntry(AnalysisTarget target) {
557 CacheEntry entry = analysisCache.get(target); 613 CacheEntry entry = analysisCache.get(target);
558 if (entry == null) { 614 if (entry == null) {
559 entry = new CacheEntry(target); 615 entry = new CacheEntry(target);
560 analysisCache.put(entry); 616 analysisCache.put(entry);
561 } 617 }
562 return entry; 618 return entry;
563 } 619 }
564 620
565 @override 621 @override
566 ChangeNoticeImpl getNotice(Source source) { 622 ChangeNoticeImpl getNotice(Source source) {
567 return _pendingNotices.putIfAbsent( 623 return _pendingNotices.putIfAbsent(
568 source, () => new ChangeNoticeImpl(source)); 624 source, () => new ChangeNoticeImpl(source));
569 } 625 }
570 626
571 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); 627 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
572 } 628 }
OLDNEW
« pkg/analyzer/lib/src/generated/engine.dart ('K') | « pkg/analyzer/test/generated/engine_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698