| OLD | NEW |
| 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 analyzer.test.src.task.driver_test; | 5 library analyzer.test.src.task.driver_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/engine.dart'; | 8 import 'package:analyzer/src/generated/engine.dart'; |
| 9 import 'package:analyzer/src/generated/java_engine.dart'; | 9 import 'package:analyzer/src/generated/java_engine.dart'; |
| 10 import 'package:analyzer/src/task/driver.dart'; | 10 import 'package:analyzer/src/task/driver.dart'; |
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 337 } | 337 } |
| 338 | 338 |
| 339 test_performAnalysisTask_onResultComputed() { | 339 test_performAnalysisTask_onResultComputed() { |
| 340 AnalysisTarget target = new TestSource(); | 340 AnalysisTarget target = new TestSource(); |
| 341 ResultDescriptor result = new ResultDescriptor('result', null); | 341 ResultDescriptor result = new ResultDescriptor('result', null); |
| 342 TestAnalysisTask task; | 342 TestAnalysisTask task; |
| 343 TaskDescriptor descriptor = new TaskDescriptor( | 343 TaskDescriptor descriptor = new TaskDescriptor( |
| 344 'task', (context, target) => task, (target) => {}, [result]); | 344 'task', (context, target) => task, (target) => {}, [result]); |
| 345 task = new TestAnalysisTask(context, target, | 345 task = new TestAnalysisTask(context, target, |
| 346 descriptor: descriptor, value: 42); | 346 descriptor: descriptor, value: 42); |
| 347 WorkItem item = new WorkItem(context, target, descriptor, null, null); | 347 WorkItem item = new WorkItem(context, target, descriptor, null, 0, null); |
| 348 | 348 |
| 349 bool streamNotified = false; | 349 bool streamNotified = false; |
| 350 analysisDriver.onResultComputed(result).listen((event) { | 350 analysisDriver.onResultComputed(result).listen((event) { |
| 351 streamNotified = true; | 351 streamNotified = true; |
| 352 expect(event.context, same(context)); | 352 expect(event.context, same(context)); |
| 353 expect(event.target, same(target)); | 353 expect(event.target, same(target)); |
| 354 expect(event.descriptor, same(result)); | 354 expect(event.descriptor, same(result)); |
| 355 expect(event.value, 42); | 355 expect(event.value, 42); |
| 356 }); | 356 }); |
| 357 analysisDriver.performWorkItem(item); | 357 analysisDriver.performWorkItem(item); |
| 358 expect(streamNotified, isTrue); | 358 expect(streamNotified, isTrue); |
| 359 } | 359 } |
| 360 | 360 |
| 361 test_performWorkItem_exceptionInTask() { | 361 test_performWorkItem_exceptionInTask() { |
| 362 AnalysisTarget target = new TestSource(); | 362 AnalysisTarget target = new TestSource(); |
| 363 ResultDescriptor result = new ResultDescriptor('result', null); | 363 ResultDescriptor result = new ResultDescriptor('result', null); |
| 364 CaughtException exception = | 364 CaughtException exception = |
| 365 new CaughtException(new AnalysisException(), null); | 365 new CaughtException(new AnalysisException(), null); |
| 366 TestAnalysisTask task; | 366 TestAnalysisTask task; |
| 367 TaskDescriptor descriptor = new TaskDescriptor( | 367 TaskDescriptor descriptor = new TaskDescriptor( |
| 368 'task', (context, target) => task, (target) => {}, [result]); | 368 'task', (context, target) => task, (target) => {}, [result]); |
| 369 task = new TestAnalysisTask(context, target, | 369 task = new TestAnalysisTask(context, target, |
| 370 descriptor: descriptor, exception: exception); | 370 descriptor: descriptor, exception: exception); |
| 371 WorkItem item = new WorkItem(context, target, descriptor, null, null); | 371 WorkItem item = new WorkItem(context, target, descriptor, null, 0, null); |
| 372 | 372 |
| 373 analysisDriver.performWorkItem(item); | 373 analysisDriver.performWorkItem(item); |
| 374 CacheEntry targetEntry = context.getCacheEntry(item.target); | 374 CacheEntry targetEntry = context.getCacheEntry(item.target); |
| 375 expect(targetEntry.exception, exception); | 375 expect(targetEntry.exception, exception); |
| 376 expect(targetEntry.getState(result), CacheState.ERROR); | 376 expect(targetEntry.getState(result), CacheState.ERROR); |
| 377 } | 377 } |
| 378 | 378 |
| 379 test_performWorkItem_noException() { | 379 test_performWorkItem_noException() { |
| 380 AnalysisTarget target = new TestSource(); | 380 AnalysisTarget target = new TestSource(); |
| 381 ResultDescriptor result = new ResultDescriptor('result', null); | 381 ResultDescriptor result = new ResultDescriptor('result', null); |
| 382 TestAnalysisTask task; | 382 TestAnalysisTask task; |
| 383 TaskDescriptor descriptor = new TaskDescriptor( | 383 TaskDescriptor descriptor = new TaskDescriptor( |
| 384 'task', (context, target) => task, (target) => {}, [result]); | 384 'task', (context, target) => task, (target) => {}, [result]); |
| 385 task = new TestAnalysisTask(context, target, descriptor: descriptor); | 385 task = new TestAnalysisTask(context, target, descriptor: descriptor); |
| 386 WorkItem item = new WorkItem(context, target, descriptor, null, null); | 386 WorkItem item = new WorkItem(context, target, descriptor, null, 0, null); |
| 387 | 387 |
| 388 analysisDriver.performWorkItem(item); | 388 analysisDriver.performWorkItem(item); |
| 389 CacheEntry targetEntry = context.getCacheEntry(item.target); | 389 CacheEntry targetEntry = context.getCacheEntry(item.target); |
| 390 expect(targetEntry.exception, isNull); | 390 expect(targetEntry.exception, isNull); |
| 391 expect(targetEntry.getState(result), CacheState.VALID); | 391 expect(targetEntry.getState(result), CacheState.VALID); |
| 392 } | 392 } |
| 393 | 393 |
| 394 test_performWorkItem_preExistingException() { | 394 test_performWorkItem_preExistingException() { |
| 395 AnalysisTarget target = new TestSource(); | 395 AnalysisTarget target = new TestSource(); |
| 396 ResultDescriptor result = new ResultDescriptor('result', null); | 396 ResultDescriptor result = new ResultDescriptor('result', null); |
| 397 TaskDescriptor descriptor = new TaskDescriptor( | 397 TaskDescriptor descriptor = new TaskDescriptor( |
| 398 'task', | 398 'task', |
| 399 (context, target) => new TestAnalysisTask(context, target), | 399 (context, target) => new TestAnalysisTask(context, target), |
| 400 (target) => {}, | 400 (target) => {}, |
| 401 [result]); | 401 [result]); |
| 402 CaughtException exception = | 402 CaughtException exception = |
| 403 new CaughtException(new AnalysisException(), null); | 403 new CaughtException(new AnalysisException(), null); |
| 404 WorkItem item = new WorkItem(context, target, descriptor, null, null); | 404 WorkItem item = new WorkItem(context, target, descriptor, null, 0, null); |
| 405 item.exception = exception; | 405 item.exception = exception; |
| 406 | 406 |
| 407 analysisDriver.performWorkItem(item); | 407 analysisDriver.performWorkItem(item); |
| 408 CacheEntry targetEntry = context.getCacheEntry(item.target); | 408 CacheEntry targetEntry = context.getCacheEntry(item.target); |
| 409 expect(targetEntry.exception, exception); | 409 expect(targetEntry.exception, exception); |
| 410 expect(targetEntry.getState(result), CacheState.ERROR); | 410 expect(targetEntry.getState(result), CacheState.ERROR); |
| 411 } | 411 } |
| 412 | 412 |
| 413 test_reset() { | 413 test_reset() { |
| 414 ResultDescriptor inputResult = new ResultDescriptor('input', null); | 414 ResultDescriptor inputResult = new ResultDescriptor('input', null); |
| 415 TaskDescriptor descriptor = new TaskDescriptor( | 415 TaskDescriptor descriptor = new TaskDescriptor( |
| 416 'task', | 416 'task', |
| 417 (context, target) => new TestAnalysisTask(context, target), | 417 (context, target) => new TestAnalysisTask(context, target), |
| 418 (target) => {'one': inputResult.of(target)}, | 418 (target) => {'one': inputResult.of(target)}, |
| 419 [new ResultDescriptor('output', null)]); | 419 [new ResultDescriptor('output', null)]); |
| 420 analysisDriver.currentWorkOrder = new WorkOrder( | 420 analysisDriver.currentWorkOrder = new WorkOrder( |
| 421 taskManager, new WorkItem(null, null, descriptor, null, null)); | 421 taskManager, new WorkItem(null, null, descriptor, null, 0, null)); |
| 422 | 422 |
| 423 analysisDriver.reset(); | 423 analysisDriver.reset(); |
| 424 expect(analysisDriver.currentWorkOrder, isNull); | 424 expect(analysisDriver.currentWorkOrder, isNull); |
| 425 } | 425 } |
| 426 | 426 |
| 427 void _configureDescriptors12() { | 427 void _configureDescriptors12() { |
| 428 descriptor1 = new TaskDescriptor( | 428 descriptor1 = new TaskDescriptor( |
| 429 'task1', | 429 'task1', |
| 430 (context, target) => | 430 (context, target) => |
| 431 new TestAnalysisTask(context, target, descriptor: descriptor1), | 431 new TestAnalysisTask(context, target, descriptor: descriptor1), |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 609 | 609 |
| 610 @reflectiveTest | 610 @reflectiveTest |
| 611 class WorkItemTest extends AbstractDriverTest { | 611 class WorkItemTest extends AbstractDriverTest { |
| 612 test_buildTask_complete() { | 612 test_buildTask_complete() { |
| 613 AnalysisTarget target = new TestSource(); | 613 AnalysisTarget target = new TestSource(); |
| 614 TaskDescriptor descriptor = new TaskDescriptor( | 614 TaskDescriptor descriptor = new TaskDescriptor( |
| 615 'task', | 615 'task', |
| 616 (context, target) => new TestAnalysisTask(context, target), | 616 (context, target) => new TestAnalysisTask(context, target), |
| 617 (target) => {}, | 617 (target) => {}, |
| 618 [new ResultDescriptor('output', null)]); | 618 [new ResultDescriptor('output', null)]); |
| 619 WorkItem item = new WorkItem(context, target, descriptor, null, null); | 619 WorkItem item = new WorkItem(context, target, descriptor, null, 0, null); |
| 620 AnalysisTask task = item.buildTask(); | 620 AnalysisTask task = item.buildTask(); |
| 621 expect(task, isNotNull); | 621 expect(task, isNotNull); |
| 622 } | 622 } |
| 623 | 623 |
| 624 test_buildTask_incomplete() { | 624 test_buildTask_incomplete() { |
| 625 AnalysisTarget target = new TestSource(); | 625 AnalysisTarget target = new TestSource(); |
| 626 ResultDescriptor inputResult = new ResultDescriptor('input', null); | 626 ResultDescriptor inputResult = new ResultDescriptor('input', null); |
| 627 List<ResultDescriptor> outputResults = <ResultDescriptor>[ | 627 List<ResultDescriptor> outputResults = <ResultDescriptor>[ |
| 628 new ResultDescriptor('output', null) | 628 new ResultDescriptor('output', null) |
| 629 ]; | 629 ]; |
| 630 TaskDescriptor descriptor = new TaskDescriptor( | 630 TaskDescriptor descriptor = new TaskDescriptor( |
| 631 'task', | 631 'task', |
| 632 (context, target) => | 632 (context, target) => |
| 633 new TestAnalysisTask(context, target, results: outputResults), | 633 new TestAnalysisTask(context, target, results: outputResults), |
| 634 (target) => {'one': inputResult.of(target)}, | 634 (target) => {'one': inputResult.of(target)}, |
| 635 outputResults); | 635 outputResults); |
| 636 WorkItem item = new WorkItem(context, target, descriptor, null, null); | 636 WorkItem item = new WorkItem(context, target, descriptor, null, 0, null); |
| 637 expect(() => item.buildTask(), throwsStateError); | 637 expect(() => item.buildTask(), throwsStateError); |
| 638 } | 638 } |
| 639 | 639 |
| 640 test_create() { | 640 test_create() { |
| 641 AnalysisTarget target = new TestSource(); | 641 AnalysisTarget target = new TestSource(); |
| 642 TaskDescriptor descriptor = new TaskDescriptor( | 642 TaskDescriptor descriptor = new TaskDescriptor( |
| 643 'task', null, (target) => {}, [new ResultDescriptor('result', null)]); | 643 'task', null, (target) => {}, [new ResultDescriptor('result', null)]); |
| 644 WorkItem item = new WorkItem(context, target, descriptor, null, null); | 644 WorkItem item = new WorkItem(context, target, descriptor, null, 0, null); |
| 645 expect(item, isNotNull); | 645 expect(item, isNotNull); |
| 646 expect(item.context, context); | 646 expect(item.context, context); |
| 647 expect(item.descriptor, descriptor); | 647 expect(item.descriptor, descriptor); |
| 648 expect(item.target, target); | 648 expect(item.target, target); |
| 649 } | 649 } |
| 650 | 650 |
| 651 test_gatherInputs_complete() { | 651 test_gatherInputs_complete() { |
| 652 AnalysisTarget target = new TestSource(); | 652 AnalysisTarget target = new TestSource(); |
| 653 TaskDescriptor descriptor = new TaskDescriptor( | 653 TaskDescriptor descriptor = new TaskDescriptor( |
| 654 'task', | 654 'task', |
| 655 (context, target) => new TestAnalysisTask(context, target), | 655 (context, target) => new TestAnalysisTask(context, target), |
| 656 (target) => {}, | 656 (target) => {}, |
| 657 [new ResultDescriptor('output', null)]); | 657 [new ResultDescriptor('output', null)]); |
| 658 WorkItem item = new WorkItem(context, target, descriptor, null, null); | 658 WorkItem item = new WorkItem(context, target, descriptor, null, 0, null); |
| 659 WorkItem result = item.gatherInputs(taskManager, []); | 659 WorkItem result = item.gatherInputs(taskManager, []); |
| 660 expect(result, isNull); | 660 expect(result, isNull); |
| 661 expect(item.exception, isNull); | 661 expect(item.exception, isNull); |
| 662 } | 662 } |
| 663 | 663 |
| 664 test_gatherInputs_incomplete() { | 664 test_gatherInputs_incomplete() { |
| 665 AnalysisTarget target = new TestSource(); | 665 AnalysisTarget target = new TestSource(); |
| 666 ResultDescriptor resultA = new ResultDescriptor('resultA', null); | 666 ResultDescriptor resultA = new ResultDescriptor('resultA', null); |
| 667 ResultDescriptor resultB = new ResultDescriptor('resultB', null); | 667 ResultDescriptor resultB = new ResultDescriptor('resultB', null); |
| 668 // prepare tasks | 668 // prepare tasks |
| 669 TaskDescriptor task1 = new TaskDescriptor( | 669 TaskDescriptor task1 = new TaskDescriptor( |
| 670 'task', | 670 'task', |
| 671 (context, target) => | 671 (context, target) => |
| 672 new TestAnalysisTask(context, target, results: [resultA]), | 672 new TestAnalysisTask(context, target, results: [resultA]), |
| 673 (target) => {}, | 673 (target) => {}, |
| 674 [resultA]); | 674 [resultA]); |
| 675 TaskDescriptor task2 = new TaskDescriptor( | 675 TaskDescriptor task2 = new TaskDescriptor( |
| 676 'task', | 676 'task', |
| 677 (context, target) => new TestAnalysisTask(context, target), | 677 (context, target) => new TestAnalysisTask(context, target), |
| 678 (target) => {'one': resultA.of(target)}, | 678 (target) => {'one': resultA.of(target)}, |
| 679 [resultB]); | 679 [resultB]); |
| 680 taskManager.addTaskDescriptor(task1); | 680 taskManager.addTaskDescriptor(task1); |
| 681 taskManager.addTaskDescriptor(task2); | 681 taskManager.addTaskDescriptor(task2); |
| 682 // gather inputs | 682 // gather inputs |
| 683 WorkItem item = new WorkItem(context, target, task2, null, null); | 683 WorkItem item = new WorkItem(context, target, task2, null, 0, null); |
| 684 WorkItem inputItem = item.gatherInputs(taskManager, []); | 684 WorkItem inputItem = item.gatherInputs(taskManager, []); |
| 685 expect(inputItem, isNotNull); | 685 expect(inputItem, isNotNull); |
| 686 } | 686 } |
| 687 | 687 |
| 688 test_gatherInputs_invalid() { | 688 test_gatherInputs_invalid() { |
| 689 AnalysisTarget target = new TestSource(); | 689 AnalysisTarget target = new TestSource(); |
| 690 ResultDescriptor inputResult = new ResultDescriptor('input', null); | 690 ResultDescriptor inputResult = new ResultDescriptor('input', null); |
| 691 TaskDescriptor descriptor = new TaskDescriptor( | 691 TaskDescriptor descriptor = new TaskDescriptor( |
| 692 'task', | 692 'task', |
| 693 (context, target) => new TestAnalysisTask(context, target), | 693 (context, target) => new TestAnalysisTask(context, target), |
| 694 (target) => {'one': inputResult.of(target)}, | 694 (target) => {'one': inputResult.of(target)}, |
| 695 [new ResultDescriptor('output', null)]); | 695 [new ResultDescriptor('output', null)]); |
| 696 WorkItem item = new WorkItem(context, target, descriptor, null, null); | 696 WorkItem item = new WorkItem(context, target, descriptor, null, 0, null); |
| 697 WorkItem result = item.gatherInputs(taskManager, []); | 697 WorkItem result = item.gatherInputs(taskManager, []); |
| 698 expect(result, isNull); | 698 expect(result, isNull); |
| 699 expect(item.exception, isNotNull); | 699 expect(item.exception, isNotNull); |
| 700 } | 700 } |
| 701 } | 701 } |
| 702 | 702 |
| 703 @reflectiveTest | 703 @reflectiveTest |
| 704 class WorkOrderTest extends EngineTestCase { | 704 class WorkOrderTest extends EngineTestCase { |
| 705 test_create() { | 705 test_create() { |
| 706 TaskManager manager = new TaskManager(); | 706 TaskManager manager = new TaskManager(); |
| 707 TaskDescriptor descriptor = new TaskDescriptor( | 707 TaskDescriptor descriptor = new TaskDescriptor( |
| 708 'task', null, (_) => {}, [new ResultDescriptor('result', null)]); | 708 'task', null, (_) => {}, [new ResultDescriptor('result', null)]); |
| 709 WorkOrder order = new WorkOrder( | 709 WorkOrder order = new WorkOrder( |
| 710 manager, new WorkItem(null, null, descriptor, null, null)); | 710 manager, new WorkItem(null, null, descriptor, null, 0, null)); |
| 711 expect(order, isNotNull); | 711 expect(order, isNotNull); |
| 712 expect(order.currentItems, isNull); | 712 expect(order.currentItems, isNull); |
| 713 expect(order.current, isNull); | 713 expect(order.current, isNull); |
| 714 } | 714 } |
| 715 | 715 |
| 716 test_moveNext() { | 716 test_moveNext() { |
| 717 TaskManager manager = new TaskManager(); | 717 TaskManager manager = new TaskManager(); |
| 718 TaskDescriptor descriptor = new TaskDescriptor( | 718 TaskDescriptor descriptor = new TaskDescriptor( |
| 719 'task', null, (_) => {}, [new ResultDescriptor('result', null)]); | 719 'task', null, (_) => {}, [new ResultDescriptor('result', null)]); |
| 720 WorkItem workItem = new WorkItem(null, null, descriptor, null, null); | 720 WorkItem workItem = new WorkItem(null, null, descriptor, null, 0, null); |
| 721 WorkOrder order = new WorkOrder(manager, workItem); | 721 WorkOrder order = new WorkOrder(manager, workItem); |
| 722 // "item" has no child items | 722 // "item" has no child items |
| 723 expect(order.moveNext(), isTrue); | 723 expect(order.moveNext(), isTrue); |
| 724 expect(order.current, workItem); | 724 expect(order.current, workItem); |
| 725 // done | 725 // done |
| 726 expect(order.moveNext(), isFalse); | 726 expect(order.moveNext(), isFalse); |
| 727 expect(order.current, isNull); | 727 expect(order.current, isNull); |
| 728 } | 728 } |
| 729 } | 729 } |
| 730 | 730 |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 774 if (!skipInputs.contains(dependency) && | 774 if (!skipInputs.contains(dependency) && |
| 775 !evaluatedNodes.contains(dependency)) { | 775 !evaluatedNodes.contains(dependency)) { |
| 776 return dependency; | 776 return dependency; |
| 777 } | 777 } |
| 778 } | 778 } |
| 779 return null; | 779 return null; |
| 780 } | 780 } |
| 781 } | 781 } |
| 782 | 782 |
| 783 class _WorkManagerMock extends TypedMock implements WorkManager {} | 783 class _WorkManagerMock extends TypedMock implements WorkManager {} |
| OLD | NEW |