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

Side by Side Diff: pkg/analyzer/test/src/context/context_test.dart

Issue 1133513003: Cache flushing implementation for the task model. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fixes for review comments. Created 5 years, 7 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 | Annotate | Revision Log
OLDNEW
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.src.context.context_test; 5 library test.src.context.context_test;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analyzer/src/cancelable_future.dart'; 9 import 'package:analyzer/src/cancelable_future.dart';
10 import 'package:analyzer/src/context/cache.dart'; 10 import 'package:analyzer/src/context/cache.dart';
11 import 'package:analyzer/src/context/context.dart'; 11 import 'package:analyzer/src/context/context.dart';
12 import 'package:analyzer/src/generated/ast.dart'; 12 import 'package:analyzer/src/generated/ast.dart';
13 import 'package:analyzer/src/generated/element.dart'; 13 import 'package:analyzer/src/generated/element.dart';
14 import 'package:analyzer/src/generated/engine.dart' 14 import 'package:analyzer/src/generated/engine.dart'
15 show 15 show
16 AnalysisContext, 16 AnalysisContext,
17 AnalysisContextStatistics, 17 AnalysisContextStatistics,
18 AnalysisDelta, 18 AnalysisDelta,
19 AnalysisEngine, 19 AnalysisEngine,
20 AnalysisErrorInfo, 20 AnalysisErrorInfo,
21 AnalysisLevel, 21 AnalysisLevel,
22 AnalysisNotScheduledError, 22 AnalysisNotScheduledError,
23 AnalysisOptions, 23 AnalysisOptions,
24 AnalysisOptionsImpl, 24 AnalysisOptionsImpl,
25 AnalysisResult, 25 AnalysisResult,
26 CacheState,
26 ChangeNotice, 27 ChangeNotice,
27 ChangeSet, 28 ChangeSet,
28 IncrementalAnalysisCache, 29 IncrementalAnalysisCache,
29 TimestampedData; 30 TimestampedData;
30 import 'package:analyzer/src/generated/error.dart'; 31 import 'package:analyzer/src/generated/error.dart';
31 import 'package:analyzer/src/generated/html.dart' as ht; 32 import 'package:analyzer/src/generated/html.dart' as ht;
32 import 'package:analyzer/src/generated/java_engine.dart'; 33 import 'package:analyzer/src/generated/java_engine.dart';
33 import 'package:analyzer/src/generated/java_engine_io.dart'; 34 import 'package:analyzer/src/generated/java_engine_io.dart';
34 import 'package:analyzer/src/generated/resolver.dart'; 35 import 'package:analyzer/src/generated/resolver.dart';
35 import 'package:analyzer/src/generated/scanner.dart'; 36 import 'package:analyzer/src/generated/scanner.dart';
36 import 'package:analyzer/src/generated/sdk.dart'; 37 import 'package:analyzer/src/generated/sdk.dart';
37 import 'package:analyzer/src/generated/sdk_io.dart'; 38 import 'package:analyzer/src/generated/sdk_io.dart';
38 import 'package:analyzer/src/generated/source.dart'; 39 import 'package:analyzer/src/generated/source.dart';
39 import 'package:analyzer/src/generated/source_io.dart'; 40 import 'package:analyzer/src/generated/source_io.dart';
40 import 'package:analyzer/src/plugin/engine_plugin.dart'; 41 import 'package:analyzer/src/plugin/engine_plugin.dart';
42 import 'package:analyzer/task/dart.dart';
41 import 'package:plugin/manager.dart'; 43 import 'package:plugin/manager.dart';
42 import 'package:unittest/unittest.dart'; 44 import 'package:unittest/unittest.dart';
43 import 'package:watcher/src/utils.dart'; 45 import 'package:watcher/src/utils.dart';
44 46
45 import '../../generated/engine_test.dart'; 47 import '../../generated/engine_test.dart';
46 import '../../generated/test_support.dart'; 48 import '../../generated/test_support.dart';
47 import '../../reflective_tests.dart'; 49 import '../../reflective_tests.dart';
48 import '../mock_sdk.dart'; 50 import '../mock_sdk.dart';
49 51
50 main() { 52 main() {
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 void fail_computeImportedLibraries_some() { 277 void fail_computeImportedLibraries_some() {
276 // This is failing because computeImportedLibraries now always includes 278 // This is failing because computeImportedLibraries now always includes
277 // dart:core, and we don't have any way of knowing whether it was explicit. 279 // dart:core, and we don't have any way of knowing whether it was explicit.
278 // addSource("/lib1.dart", "library lib1;"); 280 // addSource("/lib1.dart", "library lib1;");
279 // addSource("/lib2.dart", "library lib2;"); 281 // addSource("/lib2.dart", "library lib2;");
280 Source source = _addSource( 282 Source source = _addSource(
281 "/test.dart", "library test; import 'lib1.dart'; import 'lib2.dart';"); 283 "/test.dart", "library test; import 'lib1.dart'; import 'lib2.dart';");
282 expect(_context.computeImportedLibraries(source), hasLength(2)); 284 expect(_context.computeImportedLibraries(source), hasLength(2));
283 } 285 }
284 286
285 void test_computeKindOf_html() {
286 Source source = _addSource("/test.html", "");
287 expect(_context.computeKindOf(source), same(SourceKind.HTML));
288 }
289
290 void fail_computeResolvableCompilationUnit_dart_exception() { 287 void fail_computeResolvableCompilationUnit_dart_exception() {
291 TestSource source = _addSourceWithException("/test.dart"); 288 TestSource source = _addSourceWithException("/test.dart");
292 try { 289 try {
293 _context.computeResolvableCompilationUnit(source); 290 _context.computeResolvableCompilationUnit(source);
294 fail("Expected AnalysisException"); 291 fail("Expected AnalysisException");
295 } on AnalysisException { 292 } on AnalysisException {
296 // Expected 293 // Expected
297 } 294 }
298 } 295 }
299 296
(...skipping 17 matching lines...) Expand all
317 expect(resolvedUnit, same(parsedUnit)); 314 expect(resolvedUnit, same(parsedUnit));
318 } 315 }
319 316
320 Future fail_computeResolvedCompilationUnitAsync_dispose() { 317 Future fail_computeResolvedCompilationUnitAsync_dispose() {
321 _context = contextWithCore(); 318 _context = contextWithCore();
322 _sourceFactory = _context.sourceFactory; 319 _sourceFactory = _context.sourceFactory;
323 Source source = _addSource("/lib.dart", "library lib;"); 320 Source source = _addSource("/lib.dart", "library lib;");
324 // Complete all pending analysis tasks and flush the AST so that it won't 321 // Complete all pending analysis tasks and flush the AST so that it won't
325 // be available immediately. 322 // be available immediately.
326 _performPendingAnalysisTasks(); 323 _performPendingAnalysisTasks();
327 CacheEntry entry = _context.getReadableSourceEntryOrNull(source); 324 _flushAst(source);
328 entry.flushAstStructures();
329 CancelableFuture<CompilationUnit> future = 325 CancelableFuture<CompilationUnit> future =
330 _context.computeResolvedCompilationUnitAsync(source, source); 326 _context.computeResolvedCompilationUnitAsync(source, source);
331 bool completed = false; 327 bool completed = false;
332 future.then((CompilationUnit unit) { 328 future.then((CompilationUnit unit) {
333 fail('Future should have completed with error'); 329 fail('Future should have completed with error');
334 }, onError: (error) { 330 }, onError: (error) {
335 expect(error, new isInstanceOf<AnalysisNotScheduledError>()); 331 expect(error, new isInstanceOf<AnalysisNotScheduledError>());
336 completed = true; 332 completed = true;
337 }); 333 });
338 expect(completed, isFalse); 334 expect(completed, isFalse);
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 void fail_getHtmlSources() { 501 void fail_getHtmlSources() {
506 List<Source> sources = _context.htmlSources; 502 List<Source> sources = _context.htmlSources;
507 expect(sources, hasLength(0)); 503 expect(sources, hasLength(0));
508 Source source = _addSource("/test.html", ""); 504 Source source = _addSource("/test.html", "");
509 _context.computeKindOf(source); 505 _context.computeKindOf(source);
510 sources = _context.htmlSources; 506 sources = _context.htmlSources;
511 expect(sources, hasLength(1)); 507 expect(sources, hasLength(1));
512 expect(sources[0], source); 508 expect(sources[0], source);
513 } 509 }
514 510
515 void test_getKindOf_html() {
516 Source source = _addSource("/test.html", "");
517 expect(_context.getKindOf(source), same(SourceKind.HTML));
518 }
519
520 void test_getLibrariesContaining() {
521 _context = contextWithCore();
522 _sourceFactory = _context.sourceFactory;
523 Source librarySource = _addSource("/lib.dart", r'''
524 library lib;
525 part 'part.dart';''');
526 Source partSource = _addSource("/part.dart", "part of lib;");
527 _context.computeLibraryElement(librarySource);
528 List<Source> result = _context.getLibrariesContaining(librarySource);
529 expect(result, hasLength(1));
530 expect(result[0], librarySource);
531 result = _context.getLibrariesContaining(partSource);
532 expect(result, hasLength(1));
533 expect(result[0], librarySource);
534 }
535
536 void fail_getLibrariesReferencedFromHtml() { 511 void fail_getLibrariesReferencedFromHtml() {
537 _context = contextWithCore(); 512 _context = contextWithCore();
538 _sourceFactory = _context.sourceFactory; 513 _sourceFactory = _context.sourceFactory;
539 Source htmlSource = _addSource("/test.html", r''' 514 Source htmlSource = _addSource("/test.html", r'''
540 <html><head> 515 <html><head>
541 <script type='application/dart' src='test.dart'/> 516 <script type='application/dart' src='test.dart'/>
542 <script type='application/dart' src='test.js'/> 517 <script type='application/dart' src='test.js'/>
543 </head></html>'''); 518 </head></html>''');
544 Source librarySource = _addSource("/test.dart", "library lib;"); 519 Source librarySource = _addSource("/test.dart", "library lib;");
545 _context.computeLibraryElement(librarySource); 520 _context.computeLibraryElement(librarySource);
(...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after
1110 new DartUriResolver(DirectoryBasedDartSdk.defaultSdk), 1085 new DartUriResolver(DirectoryBasedDartSdk.defaultSdk),
1111 new FileUriResolver() 1086 new FileUriResolver()
1112 ]); 1087 ]);
1113 _context.sourceFactory = _sourceFactory; 1088 _context.sourceFactory = _sourceFactory;
1114 AnalysisOptionsImpl options = 1089 AnalysisOptionsImpl options =
1115 new AnalysisOptionsImpl.con1(_context.analysisOptions); 1090 new AnalysisOptionsImpl.con1(_context.analysisOptions);
1116 options.cacheSize = 256; 1091 options.cacheSize = 256;
1117 _context.analysisOptions = options; 1092 _context.analysisOptions = options;
1118 } 1093 }
1119 1094
1095 void test_applyChanges_change_flush_element() {
1096 _context = contextWithCore();
1097 _sourceFactory = _context.sourceFactory;
1098 Source librarySource = _addSource("/lib.dart", r'''
1099 library lib;
1100 int a = 0;''');
1101 expect(_context.computeLibraryElement(librarySource), isNotNull);
1102 _context.setContents(librarySource, r'''
1103 library lib;
1104 int aa = 0;''');
1105 expect(_context.getLibraryElement(librarySource), isNull);
1106 }
1107
1120 @override 1108 @override
1121 void tearDown() { 1109 void tearDown() {
1122 _context = null; 1110 _context = null;
1123 _sourceFactory = null; 1111 _sourceFactory = null;
1124 super.tearDown(); 1112 super.tearDown();
1125 } 1113 }
1126 1114
1127 Future test_applyChanges_add() { 1115 Future test_applyChanges_add() {
1128 SourcesChangedListener listener = new SourcesChangedListener(); 1116 SourcesChangedListener listener = new SourcesChangedListener();
1129 _context.onSourcesChanged.listen(listener.onData); 1117 _context.onSourcesChanged.listen(listener.onData);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1179 changeSet2.addedSource(source2); 1167 changeSet2.addedSource(source2);
1180 changeSet2.changedContent(source, 'library test;'); 1168 changeSet2.changedContent(source, 'library test;');
1181 _context.applyChanges(changeSet2); 1169 _context.applyChanges(changeSet2);
1182 return pumpEventQueue().then((_) { 1170 return pumpEventQueue().then((_) {
1183 listener.assertEvent(wereSourcesAdded: true); 1171 listener.assertEvent(wereSourcesAdded: true);
1184 listener.assertEvent(wereSourcesAdded: true, changedSources: [source]); 1172 listener.assertEvent(wereSourcesAdded: true, changedSources: [source]);
1185 listener.assertNoMoreEvents(); 1173 listener.assertNoMoreEvents();
1186 }); 1174 });
1187 } 1175 }
1188 1176
1189 void test_applyChanges_change_flush_element() {
1190 _context = contextWithCore();
1191 _sourceFactory = _context.sourceFactory;
1192 Source librarySource = _addSource("/lib.dart", r'''
1193 library lib;
1194 int a = 0;''');
1195 expect(_context.computeLibraryElement(librarySource), isNotNull);
1196 _context.setContents(librarySource, r'''
1197 library lib;
1198 int aa = 0;''');
1199 expect(_context.getLibraryElement(librarySource), isNull);
1200 }
1201
1202 Future test_applyChanges_change_multiple() { 1177 Future test_applyChanges_change_multiple() {
1203 _context = contextWithCore(); 1178 _context = contextWithCore();
1204 SourcesChangedListener listener = new SourcesChangedListener(); 1179 SourcesChangedListener listener = new SourcesChangedListener();
1205 _context.onSourcesChanged.listen(listener.onData); 1180 _context.onSourcesChanged.listen(listener.onData);
1206 _sourceFactory = _context.sourceFactory; 1181 _sourceFactory = _context.sourceFactory;
1207 String libraryContents1 = r''' 1182 String libraryContents1 = r'''
1208 library lib; 1183 library lib;
1209 part 'part.dart'; 1184 part 'part.dart';
1210 int a = 0;'''; 1185 int a = 0;''';
1211 Source librarySource = _addSource("/lib.dart", libraryContents1); 1186 Source librarySource = _addSource("/lib.dart", libraryContents1);
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
1339 Source source = _addSource( 1314 Source source = _addSource(
1340 "/test.dart", "library test; export 'lib1.dart'; export 'lib2.dart';"); 1315 "/test.dart", "library test; export 'lib1.dart'; export 'lib2.dart';");
1341 expect(_context.computeExportedLibraries(source), hasLength(2)); 1316 expect(_context.computeExportedLibraries(source), hasLength(2));
1342 } 1317 }
1343 1318
1344 void test_computeHtmlElement_nonHtml() { 1319 void test_computeHtmlElement_nonHtml() {
1345 Source source = _addSource("/test.dart", "library test;"); 1320 Source source = _addSource("/test.dart", "library test;");
1346 expect(_context.computeHtmlElement(source), isNull); 1321 expect(_context.computeHtmlElement(source), isNull);
1347 } 1322 }
1348 1323
1324 void test_computeKindOf_html() {
1325 Source source = _addSource("/test.html", "");
1326 expect(_context.computeKindOf(source), same(SourceKind.HTML));
1327 }
1328
1349 void test_computeKindOf_library() { 1329 void test_computeKindOf_library() {
1350 Source source = _addSource("/test.dart", "library lib;"); 1330 Source source = _addSource("/test.dart", "library lib;");
1351 expect(_context.computeKindOf(source), same(SourceKind.LIBRARY)); 1331 expect(_context.computeKindOf(source), same(SourceKind.LIBRARY));
1352 } 1332 }
1353 1333
1354 void test_computeKindOf_libraryAndPart() { 1334 void test_computeKindOf_libraryAndPart() {
1355 Source source = _addSource("/test.dart", "library lib; part of lib;"); 1335 Source source = _addSource("/test.dart", "library lib; part of lib;");
1356 expect(_context.computeKindOf(source), same(SourceKind.LIBRARY)); 1336 expect(_context.computeKindOf(source), same(SourceKind.LIBRARY));
1357 } 1337 }
1358 1338
(...skipping 30 matching lines...) Expand all
1389 expect(info, isNotNull); 1369 expect(info, isNotNull);
1390 } 1370 }
1391 1371
1392 Future test_computeResolvedCompilationUnitAsync_afterDispose() { 1372 Future test_computeResolvedCompilationUnitAsync_afterDispose() {
1393 _context = contextWithCore(); 1373 _context = contextWithCore();
1394 _sourceFactory = _context.sourceFactory; 1374 _sourceFactory = _context.sourceFactory;
1395 Source source = _addSource("/lib.dart", "library lib;"); 1375 Source source = _addSource("/lib.dart", "library lib;");
1396 // Complete all pending analysis tasks and flush the AST so that it won't 1376 // Complete all pending analysis tasks and flush the AST so that it won't
1397 // be available immediately. 1377 // be available immediately.
1398 _performPendingAnalysisTasks(); 1378 _performPendingAnalysisTasks();
1399 CacheEntry entry = _context.getReadableSourceEntryOrNull(source); 1379 _flushAst(source);
1400 entry.flushAstStructures();
1401 // Dispose of the context. 1380 // Dispose of the context.
1402 _context.dispose(); 1381 _context.dispose();
1403 // Any attempt to start an asynchronous computation should return a future 1382 // Any attempt to start an asynchronous computation should return a future
1404 // which completes with error. 1383 // which completes with error.
1405 CancelableFuture<CompilationUnit> future = 1384 CancelableFuture<CompilationUnit> future =
1406 _context.computeResolvedCompilationUnitAsync(source, source); 1385 _context.computeResolvedCompilationUnitAsync(source, source);
1407 bool completed = false; 1386 bool completed = false;
1408 future.then((CompilationUnit unit) { 1387 future.then((CompilationUnit unit) {
1409 fail('Future should have completed with error'); 1388 fail('Future should have completed with error');
1410 }, onError: (error) { 1389 }, onError: (error) {
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
1508 Source librarySource = _addSource("/test.dart", "library lib;"); 1487 Source librarySource = _addSource("/test.dart", "library lib;");
1509 Source secondHtmlSource = _addSource("/test.html", "<html></html>"); 1488 Source secondHtmlSource = _addSource("/test.html", "<html></html>");
1510 _context.computeLibraryElement(librarySource); 1489 _context.computeLibraryElement(librarySource);
1511 List<Source> result = _context.getHtmlFilesReferencing(secondHtmlSource); 1490 List<Source> result = _context.getHtmlFilesReferencing(secondHtmlSource);
1512 expect(result, hasLength(0)); 1491 expect(result, hasLength(0));
1513 _context.parseHtmlUnit(htmlSource); 1492 _context.parseHtmlUnit(htmlSource);
1514 result = _context.getHtmlFilesReferencing(secondHtmlSource); 1493 result = _context.getHtmlFilesReferencing(secondHtmlSource);
1515 expect(result, hasLength(0)); 1494 expect(result, hasLength(0));
1516 } 1495 }
1517 1496
1497 void test_getKindOf_html() {
1498 Source source = _addSource("/test.html", "");
1499 expect(_context.getKindOf(source), same(SourceKind.HTML));
1500 }
1501
1518 void test_getKindOf_library() { 1502 void test_getKindOf_library() {
1519 Source source = _addSource("/test.dart", "library lib;"); 1503 Source source = _addSource("/test.dart", "library lib;");
1520 expect(_context.getKindOf(source), same(SourceKind.UNKNOWN)); 1504 expect(_context.getKindOf(source), same(SourceKind.UNKNOWN));
1521 _context.computeKindOf(source); 1505 _context.computeKindOf(source);
1522 expect(_context.getKindOf(source), same(SourceKind.LIBRARY)); 1506 expect(_context.getKindOf(source), same(SourceKind.LIBRARY));
1523 } 1507 }
1524 1508
1525 void test_getKindOf_part() { 1509 void test_getKindOf_part() {
1526 Source source = _addSource("/test.dart", "part of lib;"); 1510 Source source = _addSource("/test.dart", "part of lib;");
1527 expect(_context.getKindOf(source), same(SourceKind.UNKNOWN)); 1511 expect(_context.getKindOf(source), same(SourceKind.UNKNOWN));
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1623 } 1607 }
1624 1608
1625 void test_getLaunchableServerLibrarySources_noMain() { 1609 void test_getLaunchableServerLibrarySources_noMain() {
1626 _context = contextWithCore(); 1610 _context = contextWithCore();
1627 _sourceFactory = _context.sourceFactory; 1611 _sourceFactory = _context.sourceFactory;
1628 Source source = _addSource("/test.dart", ''); 1612 Source source = _addSource("/test.dart", '');
1629 _context.computeLibraryElement(source); 1613 _context.computeLibraryElement(source);
1630 expect(_context.launchableServerLibrarySources, isEmpty); 1614 expect(_context.launchableServerLibrarySources, isEmpty);
1631 } 1615 }
1632 1616
1617 void test_getLibrariesContaining() {
1618 _context = contextWithCore();
1619 _sourceFactory = _context.sourceFactory;
1620 Source librarySource = _addSource("/lib.dart", r'''
1621 library lib;
1622 part 'part.dart';''');
1623 Source partSource = _addSource("/part.dart", "part of lib;");
1624 _context.computeLibraryElement(librarySource);
1625 List<Source> result = _context.getLibrariesContaining(librarySource);
1626 expect(result, hasLength(1));
1627 expect(result[0], librarySource);
1628 result = _context.getLibrariesContaining(partSource);
1629 expect(result, hasLength(1));
1630 expect(result[0], librarySource);
1631 }
1632
1633 void test_getLibrariesDependingOn() { 1633 void test_getLibrariesDependingOn() {
1634 _context = contextWithCore(); 1634 _context = contextWithCore();
1635 _sourceFactory = _context.sourceFactory; 1635 _sourceFactory = _context.sourceFactory;
1636 Source libASource = _addSource("/libA.dart", "library libA;"); 1636 Source libASource = _addSource("/libA.dart", "library libA;");
1637 _addSource("/libB.dart", "library libB;"); 1637 _addSource("/libB.dart", "library libB;");
1638 Source lib1Source = _addSource("/lib1.dart", r''' 1638 Source lib1Source = _addSource("/lib1.dart", r'''
1639 library lib1; 1639 library lib1;
1640 import 'libA.dart'; 1640 import 'libA.dart';
1641 export 'libB.dart';'''); 1641 export 'libB.dart';''');
1642 Source lib2Source = _addSource("/lib2.dart", r''' 1642 Source lib2Source = _addSource("/lib2.dart", r'''
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
1853 1853
1854 void test_parseCompilationUnit_noErrors() { 1854 void test_parseCompilationUnit_noErrors() {
1855 Source source = _addSource("/lib.dart", "library lib;"); 1855 Source source = _addSource("/lib.dart", "library lib;");
1856 CompilationUnit compilationUnit = _context.parseCompilationUnit(source); 1856 CompilationUnit compilationUnit = _context.parseCompilationUnit(source);
1857 expect(compilationUnit, isNotNull); 1857 expect(compilationUnit, isNotNull);
1858 AnalysisErrorInfo errorInfo = _context.getErrors(source); 1858 AnalysisErrorInfo errorInfo = _context.getErrors(source);
1859 expect(errorInfo, isNotNull); 1859 expect(errorInfo, isNotNull);
1860 expect(errorInfo.errors, hasLength(0)); 1860 expect(errorInfo.errors, hasLength(0));
1861 } 1861 }
1862 1862
1863 // void test_resolveCompilationUnit_sourceChangeDuringResolution() {
1864 // _context = new _AnalysisContext_sourceChangeDuringResolution();
1865 // AnalysisContextFactory.initContextWithCore(_context);
1866 // _sourceFactory = _context.sourceFactory;
1867 // Source source = _addSource("/lib.dart", "library lib;");
1868 // CompilationUnit compilationUnit =
1869 // _context.resolveCompilationUnit2(source, source);
1870 // expect(compilationUnit, isNotNull);
1871 // expect(_context.getLineInfo(source), isNotNull);
1872 // }
1873
1874 void test_parseCompilationUnit_nonExistentSource() { 1863 void test_parseCompilationUnit_nonExistentSource() {
1875 Source source = 1864 Source source =
1876 new FileBasedSource.con1(FileUtilities2.createFile("/test.dart")); 1865 new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
1877 try { 1866 try {
1878 _context.parseCompilationUnit(source); 1867 _context.parseCompilationUnit(source);
1879 fail("Expected AnalysisException because file does not exist"); 1868 fail("Expected AnalysisException because file does not exist");
1880 } on AnalysisException { 1869 } on AnalysisException {
1881 // Expected result 1870 // Expected result
1882 } 1871 }
1883 } 1872 }
1884 1873
1874 // void test_resolveCompilationUnit_sourceChangeDuringResolution() {
1875 // _context = new _AnalysisContext_sourceChangeDuringResolution();
1876 // AnalysisContextFactory.initContextWithCore(_context);
1877 // _sourceFactory = _context.sourceFactory;
1878 // Source source = _addSource("/lib.dart", "library lib;");
1879 // CompilationUnit compilationUnit =
1880 // _context.resolveCompilationUnit2(source, source);
1881 // expect(compilationUnit, isNotNull);
1882 // expect(_context.getLineInfo(source), isNotNull);
1883 // }
1884
1885 void test_performAnalysisTask_modifiedAfterParse() { 1885 void test_performAnalysisTask_modifiedAfterParse() {
1886 // TODO(scheglov) no threads in Dart 1886 // TODO(scheglov) no threads in Dart
1887 // Source source = _addSource("/test.dart", "library lib;"); 1887 // Source source = _addSource("/test.dart", "library lib;");
1888 // int initialTime = _context.getModificationStamp(source); 1888 // int initialTime = _context.getModificationStamp(source);
1889 // List<Source> sources = new List<Source>(); 1889 // List<Source> sources = new List<Source>();
1890 // sources.add(source); 1890 // sources.add(source);
1891 // _context.analysisPriorityOrder = sources; 1891 // _context.analysisPriorityOrder = sources;
1892 // _context.parseCompilationUnit(source); 1892 // _context.parseCompilationUnit(source);
1893 // while (initialTime == JavaSystem.currentTimeMillis()) { 1893 // while (initialTime == JavaSystem.currentTimeMillis()) {
1894 // Thread.sleep(1); 1894 // Thread.sleep(1);
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
2037 expect(_context.sourcesNeedingProcessing.contains(source), isFalse); 2037 expect(_context.sourcesNeedingProcessing.contains(source), isFalse);
2038 } 2038 }
2039 2039
2040 Future xtest_computeResolvedCompilationUnitAsync() { 2040 Future xtest_computeResolvedCompilationUnitAsync() {
2041 _context = contextWithCore(); 2041 _context = contextWithCore();
2042 _sourceFactory = _context.sourceFactory; 2042 _sourceFactory = _context.sourceFactory;
2043 Source source = _addSource("/lib.dart", "library lib;"); 2043 Source source = _addSource("/lib.dart", "library lib;");
2044 // Complete all pending analysis tasks and flush the AST so that it won't 2044 // Complete all pending analysis tasks and flush the AST so that it won't
2045 // be available immediately. 2045 // be available immediately.
2046 _performPendingAnalysisTasks(); 2046 _performPendingAnalysisTasks();
2047 CacheEntry entry = _context.getReadableSourceEntryOrNull(source); 2047 _flushAst(source);
2048 entry.flushAstStructures();
2049 bool completed = false; 2048 bool completed = false;
2050 _context 2049 _context
2051 .computeResolvedCompilationUnitAsync(source, source) 2050 .computeResolvedCompilationUnitAsync(source, source)
2052 .then((CompilationUnit unit) { 2051 .then((CompilationUnit unit) {
2053 expect(unit, isNotNull); 2052 expect(unit, isNotNull);
2054 completed = true; 2053 completed = true;
2055 }); 2054 });
2056 return pumpEventQueue().then((_) { 2055 return pumpEventQueue().then((_) {
2057 expect(completed, isFalse); 2056 expect(completed, isFalse);
2058 _performPendingAnalysisTasks(); 2057 _performPendingAnalysisTasks();
2059 }).then((_) => pumpEventQueue()).then((_) { 2058 }).then((_) => pumpEventQueue()).then((_) {
2060 expect(completed, isTrue); 2059 expect(completed, isTrue);
2061 }); 2060 });
2062 } 2061 }
2063 2062
2064 Future xtest_computeResolvedCompilationUnitAsync_cancel() { 2063 Future xtest_computeResolvedCompilationUnitAsync_cancel() {
2065 _context = contextWithCore(); 2064 _context = contextWithCore();
2066 _sourceFactory = _context.sourceFactory; 2065 _sourceFactory = _context.sourceFactory;
2067 Source source = _addSource("/lib.dart", "library lib;"); 2066 Source source = _addSource("/lib.dart", "library lib;");
2068 // Complete all pending analysis tasks and flush the AST so that it won't 2067 // Complete all pending analysis tasks and flush the AST so that it won't
2069 // be available immediately. 2068 // be available immediately.
2070 _performPendingAnalysisTasks(); 2069 _performPendingAnalysisTasks();
2071 CacheEntry entry = _context.getReadableSourceEntryOrNull(source); 2070 _flushAst(source);
2072 entry.flushAstStructures();
2073 CancelableFuture<CompilationUnit> future = 2071 CancelableFuture<CompilationUnit> future =
2074 _context.computeResolvedCompilationUnitAsync(source, source); 2072 _context.computeResolvedCompilationUnitAsync(source, source);
2075 bool completed = false; 2073 bool completed = false;
2076 future.then((CompilationUnit unit) { 2074 future.then((CompilationUnit unit) {
2077 fail('Future should have been canceled'); 2075 fail('Future should have been canceled');
2078 }, onError: (error) { 2076 }, onError: (error) {
2079 expect(error, new isInstanceOf<FutureCanceledError>()); 2077 expect(error, new isInstanceOf<FutureCanceledError>());
2080 completed = true; 2078 completed = true;
2081 }); 2079 });
2082 expect(completed, isFalse); 2080 expect(completed, isFalse);
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
2181 */ 2179 */
2182 ClassElement _findClass(CompilationUnitElement unit, String className) { 2180 ClassElement _findClass(CompilationUnitElement unit, String className) {
2183 for (ClassElement classElement in unit.types) { 2181 for (ClassElement classElement in unit.types) {
2184 if (classElement.displayName == className) { 2182 if (classElement.displayName == className) {
2185 return classElement; 2183 return classElement;
2186 } 2184 }
2187 } 2185 }
2188 return null; 2186 return null;
2189 } 2187 }
2190 2188
2189 void _flushAst(Source source) {
2190 CacheEntry entry = _context.getReadableSourceEntryOrNull(source);
2191 entry.setState(RESOLVED_UNIT, CacheState.FLUSHED);
2192 }
2193
2191 IncrementalAnalysisCache _getIncrementalAnalysisCache( 2194 IncrementalAnalysisCache _getIncrementalAnalysisCache(
2192 AnalysisContextImpl context2) { 2195 AnalysisContextImpl context2) {
2193 return context2.test_incrementalAnalysisCache; 2196 return context2.test_incrementalAnalysisCache;
2194 } 2197 }
2195 2198
2196 List<Source> _getPriorityOrder(AnalysisContextImpl context2) { 2199 List<Source> _getPriorityOrder(AnalysisContextImpl context2) {
2197 return context2.test_priorityOrder; 2200 return context2.test_priorityOrder;
2198 } 2201 }
2199 2202
2200 void _performPendingAnalysisTasks([int maxTasks = 20]) { 2203 void _performPendingAnalysisTasks([int maxTasks = 20]) {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
2269 : super(name, UriKind.FILE_URI); 2272 : super(name, UriKind.FILE_URI);
2270 2273
2271 @override 2274 @override
2272 TimestampedData<String> get contents { 2275 TimestampedData<String> get contents {
2273 throw 'Read error'; 2276 throw 'Read error';
2274 } 2277 }
2275 2278
2276 @override 2279 @override
2277 bool exists() => true; 2280 bool exists() => true;
2278 } 2281 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/src/context/cache_test.dart ('k') | pkg/analyzer/test/src/task/model_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698