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

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

Issue 2991913002: Replace typed_mock with mockito in analyzer. (Closed)
Patch Set: Created 3 years, 4 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 analyzer.test.src.task.driver_test; 5 library analyzer.test.src.task.driver_test;
6 6
7 import 'package:analyzer/exception/exception.dart'; 7 import 'package:analyzer/exception/exception.dart';
8 import 'package:analyzer/src/context/cache.dart'; 8 import 'package:analyzer/src/context/cache.dart';
9 import 'package:analyzer/src/generated/engine.dart'; 9 import 'package:analyzer/src/generated/engine.dart';
10 import 'package:analyzer/src/task/driver.dart'; 10 import 'package:analyzer/src/task/driver.dart';
11 import 'package:analyzer/src/task/inputs.dart'; 11 import 'package:analyzer/src/task/inputs.dart';
12 import 'package:analyzer/src/task/manager.dart'; 12 import 'package:analyzer/src/task/manager.dart';
13 import 'package:analyzer/task/model.dart'; 13 import 'package:analyzer/task/model.dart';
14 import 'package:mockito/mockito.dart';
14 import 'package:test/test.dart'; 15 import 'package:test/test.dart';
15 import 'package:test_reflective_loader/test_reflective_loader.dart'; 16 import 'package:test_reflective_loader/test_reflective_loader.dart';
16 import 'package:typed_mock/typed_mock.dart';
17 17
18 import '../../generated/test_support.dart'; 18 import '../../generated/test_support.dart';
19 import 'test_support.dart'; 19 import 'test_support.dart';
20 20
21 main() { 21 main() {
22 defineReflectiveSuite(() { 22 defineReflectiveSuite(() {
23 defineReflectiveTests(AnalysisDriverTest); 23 defineReflectiveTests(AnalysisDriverTest);
24 defineReflectiveTests(CycleAwareDependencyWalkerTest); 24 defineReflectiveTests(CycleAwareDependencyWalkerTest);
25 defineReflectiveTests(WorkItemTest); 25 defineReflectiveTests(WorkItemTest);
26 defineReflectiveTests(WorkOrderTest); 26 defineReflectiveTests(WorkOrderTest);
27 }); 27 });
28 } 28 }
29 29
30 class AbstractDriverTest { 30 class AbstractDriverTest {
31 TaskManager taskManager = new TaskManager(); 31 TaskManager taskManager = new TaskManager();
32 List<WorkManager> workManagers = <WorkManager>[]; 32 List<WorkManager> workManagers = <WorkManager>[];
33 InternalAnalysisContext context = new _InternalAnalysisContextMock(); 33 InternalAnalysisContext context = new _InternalAnalysisContextMock();
34 AnalysisDriver analysisDriver; 34 AnalysisDriver analysisDriver;
35 35
36 void setUp() { 36 void setUp() {
37 context = new _InternalAnalysisContextMock(); 37 context = new _InternalAnalysisContextMock();
38 analysisDriver = new AnalysisDriver(taskManager, workManagers, context); 38 analysisDriver = new AnalysisDriver(taskManager, workManagers, context);
39 when(context.aboutToComputeResult(anyObject, anyObject)).thenReturn(false); 39 when(context.aboutToComputeResult(any, any)).thenReturn(false);
40 } 40 }
41 } 41 }
42 42
43 @reflectiveTest 43 @reflectiveTest
44 class AnalysisDriverTest extends AbstractDriverTest { 44 class AnalysisDriverTest extends AbstractDriverTest {
45 WorkManager workManager1 = new _WorkManagerMock(); 45 WorkManager workManager1 = new _WorkManagerMock();
46 WorkManager workManager2 = new _WorkManagerMock(); 46 WorkManager workManager2 = new _WorkManagerMock();
47 47
48 AnalysisTarget target1 = new TestSource('/1.dart'); 48 AnalysisTarget target1 = new TestSource('/1.dart');
49 AnalysisTarget target2 = new TestSource('/2.dart'); 49 AnalysisTarget target2 = new TestSource('/2.dart');
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 ResultDescriptor result = new ResultDescriptor('result', null); 129 ResultDescriptor result = new ResultDescriptor('result', null);
130 TaskDescriptor descriptor = new TaskDescriptor( 130 TaskDescriptor descriptor = new TaskDescriptor(
131 'task', 131 'task',
132 (context, target) => new TestAnalysisTask(context, target), 132 (context, target) => new TestAnalysisTask(context, target),
133 (target) => {}, 133 (target) => {},
134 [result]); 134 [result]);
135 taskManager.addTaskDescriptor(descriptor); 135 taskManager.addTaskDescriptor(descriptor);
136 context.getCacheEntry(target).setState(result, CacheState.INVALID); 136 context.getCacheEntry(target).setState(result, CacheState.INVALID);
137 // has result 137 // has result
138 { 138 {
139 when(context.aboutToComputeResult(anyObject, result)).thenReturn(true); 139 when(context.aboutToComputeResult(any, result)).thenReturn(true);
140 WorkOrder workOrder = 140 WorkOrder workOrder =
141 analysisDriver.createWorkOrderForResult(target, result); 141 analysisDriver.createWorkOrderForResult(target, result);
142 expect(workOrder, isNull); 142 expect(workOrder, isNull);
143 } 143 }
144 // no result 144 // no result
145 { 145 {
146 when(context.aboutToComputeResult(anyObject, result)).thenReturn(false); 146 when(context.aboutToComputeResult(any, result)).thenReturn(false);
147 WorkOrder workOrder = 147 WorkOrder workOrder =
148 analysisDriver.createWorkOrderForResult(target, result); 148 analysisDriver.createWorkOrderForResult(target, result);
149 expect(workOrder, isNotNull); 149 expect(workOrder, isNotNull);
150 } 150 }
151 } 151 }
152 152
153 test_createWorkOrderForResult_error() { 153 test_createWorkOrderForResult_error() {
154 AnalysisTarget target = new TestSource(); 154 AnalysisTarget target = new TestSource();
155 ResultDescriptor result = new ResultDescriptor('result', null); 155 ResultDescriptor result = new ResultDescriptor('result', null);
156 CaughtException exception = new CaughtException(null, null); 156 CaughtException exception = new CaughtException(null, null);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 test_createWorkOrderForTarget_incomplete_priorityTarget_generalResult() { 223 test_createWorkOrderForTarget_incomplete_priorityTarget_generalResult() {
224 _createWorkOrderForTarget(false, true, false); 224 _createWorkOrderForTarget(false, true, false);
225 } 225 }
226 226
227 test_createWorkOrderForTarget_incomplete_priorityTarget_priorityResult() { 227 test_createWorkOrderForTarget_incomplete_priorityTarget_priorityResult() {
228 _createWorkOrderForTarget(false, true, true); 228 _createWorkOrderForTarget(false, true, true);
229 } 229 }
230 230
231 test_performAnalysisTask() { 231 test_performAnalysisTask() {
232 _configureDescriptors12(); 232 _configureDescriptors12();
233 when(workManager1.getNextResultPriority()).thenReturnList(
234 <WorkOrderPriority>[WorkOrderPriority.NORMAL, WorkOrderPriority.NONE]);
235 when(workManager1.getNextResult()) 233 when(workManager1.getNextResult())
236 .thenReturn(new TargetedResult(target1, result1)); 234 .thenReturn(new TargetedResult(target1, result1));
237 235
236 when(workManager1.getNextResultPriority())
237 .thenReturn(WorkOrderPriority.NORMAL);
238 expect(analysisDriver.performAnalysisTask(), true); 238 expect(analysisDriver.performAnalysisTask(), true);
239 expect(analysisDriver.performAnalysisTask(), true); 239 expect(analysisDriver.performAnalysisTask(), true);
240
241 when(workManager1.getNextResultPriority())
242 .thenReturn(WorkOrderPriority.NONE);
240 expect(analysisDriver.performAnalysisTask(), false); 243 expect(analysisDriver.performAnalysisTask(), false);
241 } 244 }
242 245
243 test_performAnalysisTask_infiniteLoop_handled() { 246 test_performAnalysisTask_infiniteLoop_handled() {
244 AnalysisTarget target = new TestSource(); 247 AnalysisTarget target = new TestSource();
245 ResultDescriptor<int> resultA = new ResultDescriptor<int>('resultA', -1); 248 ResultDescriptor<int> resultA = new ResultDescriptor<int>('resultA', -1);
246 ResultDescriptor<int> resultB = new ResultDescriptor<int>('resultB', -2); 249 ResultDescriptor<int> resultB = new ResultDescriptor<int>('resultB', -2);
247 // configure tasks 250 // configure tasks
248 TestAnalysisTask task1; 251 TestAnalysisTask task1;
249 TestAnalysisTask task2; 252 TestAnalysisTask task2;
(...skipping 13 matching lines...) Expand all
263 value: 10, 266 value: 10,
264 handlesDependencyCycles: true); 267 handlesDependencyCycles: true);
265 task2 = new TestAnalysisTask(context, target, 268 task2 = new TestAnalysisTask(context, target,
266 descriptor: descriptor2, 269 descriptor: descriptor2,
267 results: [resultB], 270 results: [resultB],
268 value: 20, 271 value: 20,
269 handlesDependencyCycles: true); 272 handlesDependencyCycles: true);
270 taskManager.addTaskDescriptor(descriptor1); 273 taskManager.addTaskDescriptor(descriptor1);
271 taskManager.addTaskDescriptor(descriptor2); 274 taskManager.addTaskDescriptor(descriptor2);
272 // configure WorkManager 275 // configure WorkManager
273 when(workManager1.getNextResultPriority()).thenReturnList( 276 when(workManager1.getNextResultPriority())
274 <WorkOrderPriority>[WorkOrderPriority.NORMAL, WorkOrderPriority.NONE]); 277 .thenReturn(WorkOrderPriority.NORMAL);
275 when(workManager1.getNextResult()) 278 when(workManager1.getNextResult())
276 .thenReturn(new TargetedResult(target, resultB)); 279 .thenReturn(new TargetedResult(target, resultB));
277 // prepare work order 280 // prepare work order
278 while (analysisDriver.performAnalysisTask()) {} 281 while (analysisDriver.performAnalysisTask()) {
282 when(workManager1.getNextResultPriority())
283 .thenReturn(WorkOrderPriority.NONE);
284 }
279 Set<TaskDescriptor> expectedCycle = [descriptor1, descriptor2].toSet(); 285 Set<TaskDescriptor> expectedCycle = [descriptor1, descriptor2].toSet();
280 expect(task1.dependencyCycle, isNotNull); 286 expect(task1.dependencyCycle, isNotNull);
281 expect(task1.dependencyCycle.map((workItem) => workItem.descriptor).toSet(), 287 expect(task1.dependencyCycle.map((workItem) => workItem.descriptor).toSet(),
282 expectedCycle); 288 expectedCycle);
283 expect(task2.dependencyCycle, isNotNull); 289 expect(task2.dependencyCycle, isNotNull);
284 expect(task2.dependencyCycle.map((workItem) => workItem.descriptor).toSet(), 290 expect(task2.dependencyCycle.map((workItem) => workItem.descriptor).toSet(),
285 expectedCycle); 291 expectedCycle);
286 CaughtException exception = context.getCacheEntry(target).exception; 292 CaughtException exception = context.getCacheEntry(target).exception;
287 expect(exception, isNull); 293 expect(exception, isNull);
288 expect(context.getCacheEntry(target).getValue(resultA), 10); 294 expect(context.getCacheEntry(target).getValue(resultA), 10);
(...skipping 15 matching lines...) Expand all
304 TaskDescriptor descriptor2 = new TaskDescriptor( 310 TaskDescriptor descriptor2 = new TaskDescriptor(
305 'task2', 311 'task2',
306 (context, target) => task2, 312 (context, target) => task2,
307 (target) => {'inputA': new SimpleTaskInput<int>(target, resultA)}, 313 (target) => {'inputA': new SimpleTaskInput<int>(target, resultA)},
308 [resultB]); 314 [resultB]);
309 task1 = new TestAnalysisTask(context, target, descriptor: descriptor1); 315 task1 = new TestAnalysisTask(context, target, descriptor: descriptor1);
310 task2 = new TestAnalysisTask(context, target, descriptor: descriptor2); 316 task2 = new TestAnalysisTask(context, target, descriptor: descriptor2);
311 taskManager.addTaskDescriptor(descriptor1); 317 taskManager.addTaskDescriptor(descriptor1);
312 taskManager.addTaskDescriptor(descriptor2); 318 taskManager.addTaskDescriptor(descriptor2);
313 // configure WorkManager 319 // configure WorkManager
314 when(workManager1.getNextResultPriority()).thenReturnList( 320 when(workManager1.getNextResultPriority())
315 <WorkOrderPriority>[WorkOrderPriority.NORMAL, WorkOrderPriority.NONE]); 321 .thenReturn(WorkOrderPriority.NORMAL);
316 when(workManager1.getNextResult()) 322 when(workManager1.getNextResult())
317 .thenReturn(new TargetedResult(target, resultB)); 323 .thenReturn(new TargetedResult(target, resultB));
318 // prepare work order 324 // prepare work order
319 expect(analysisDriver.performAnalysisTask(), true); 325 expect(analysisDriver.performAnalysisTask(), true);
320 expect(analysisDriver.performAnalysisTask(), true); 326 expect(analysisDriver.performAnalysisTask(), true);
321 CaughtException exception = context.getCacheEntry(target).exception; 327 CaughtException exception = context.getCacheEntry(target).exception;
322 expect(exception, isNotNull); 328 expect(exception, isNotNull);
323 expect(exception.exception, new isInstanceOf<InfiniteTaskLoopException>()); 329 expect(exception.exception, new isInstanceOf<InfiniteTaskLoopException>());
324 } 330 }
325 331
(...skipping 11 matching lines...) Expand all
337 (context, target) => task2, 343 (context, target) => task2,
338 (target) => {'inputA': new SimpleTaskInput<int>(target, resultA)}, 344 (target) => {'inputA': new SimpleTaskInput<int>(target, resultA)},
339 [resultB]); 345 [resultB]);
340 task1 = new TestAnalysisTask(context, target, 346 task1 = new TestAnalysisTask(context, target,
341 descriptor: descriptor1, results: [resultA], value: 10); 347 descriptor: descriptor1, results: [resultA], value: 10);
342 task2 = new TestAnalysisTask(context, target, 348 task2 = new TestAnalysisTask(context, target,
343 descriptor: descriptor2, value: 20); 349 descriptor: descriptor2, value: 20);
344 taskManager.addTaskDescriptor(descriptor1); 350 taskManager.addTaskDescriptor(descriptor1);
345 taskManager.addTaskDescriptor(descriptor2); 351 taskManager.addTaskDescriptor(descriptor2);
346 // configure WorkManager 352 // configure WorkManager
347 when(workManager1.getNextResultPriority()).thenReturnList( 353 when(workManager1.getNextResultPriority())
348 <WorkOrderPriority>[WorkOrderPriority.NORMAL, WorkOrderPriority.NONE]); 354 .thenReturn(WorkOrderPriority.NORMAL);
349 when(workManager1.getNextResult()) 355 when(workManager1.getNextResult())
350 .thenReturn(new TargetedResult(target, resultB)); 356 .thenReturn(new TargetedResult(target, resultB));
351 // prepare work order 357 // prepare work order
352 expect(analysisDriver.performAnalysisTask(), true); 358 expect(analysisDriver.performAnalysisTask(), true);
353 expect(context.getCacheEntry(target).getValue(resultA), -1); 359 expect(context.getCacheEntry(target).getValue(resultA), -1);
354 expect(context.getCacheEntry(target).getValue(resultB), -2); 360 expect(context.getCacheEntry(target).getValue(resultB), -2);
355 // compute resultA 361 // compute resultA
356 expect(analysisDriver.performAnalysisTask(), true); 362 expect(analysisDriver.performAnalysisTask(), true);
357 expect(context.getCacheEntry(target).getValue(resultA), 10); 363 expect(context.getCacheEntry(target).getValue(resultA), 10);
358 expect(context.getCacheEntry(target).getValue(resultB), -2); 364 expect(context.getCacheEntry(target).getValue(resultB), -2);
359 // compute resultB 365 // compute resultB
360 expect(analysisDriver.performAnalysisTask(), true); 366 expect(analysisDriver.performAnalysisTask(), true);
361 expect(context.getCacheEntry(target).getValue(resultA), 10); 367 expect(context.getCacheEntry(target).getValue(resultA), 10);
362 expect(context.getCacheEntry(target).getValue(resultB), 20); 368 expect(context.getCacheEntry(target).getValue(resultB), 20);
363 // done 369 // done
370 when(workManager1.getNextResultPriority())
371 .thenReturn(WorkOrderPriority.NONE);
364 expect(analysisDriver.performAnalysisTask(), false); 372 expect(analysisDriver.performAnalysisTask(), false);
365 } 373 }
366 374
367 test_performAnalysisTask_onResultComputed() { 375 test_performAnalysisTask_onResultComputed() {
368 AnalysisTarget target = new TestSource(); 376 AnalysisTarget target = new TestSource();
369 ResultDescriptor result = new ResultDescriptor('result', null); 377 ResultDescriptor result = new ResultDescriptor('result', null);
370 TestAnalysisTask task; 378 TestAnalysisTask task;
371 TaskDescriptor descriptor = new TaskDescriptor( 379 TaskDescriptor descriptor = new TaskDescriptor(
372 'task', (context, target) => task, (target) => {}, [result]); 380 'task', (context, target) => task, (target) => {}, [result]);
373 task = new TestAnalysisTask(context, target, 381 task = new TestAnalysisTask(context, target,
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
689 (target) => {}, 697 (target) => {},
690 [resultA]); 698 [resultA]);
691 TaskDescriptor task2 = new TaskDescriptor( 699 TaskDescriptor task2 = new TaskDescriptor(
692 'task', 700 'task',
693 (context, target) => new TestAnalysisTask(context, target), 701 (context, target) => new TestAnalysisTask(context, target),
694 (target) => {'one': resultA.of(target)}, 702 (target) => {'one': resultA.of(target)},
695 [resultB]); 703 [resultB]);
696 taskManager.addTaskDescriptor(task1); 704 taskManager.addTaskDescriptor(task1);
697 taskManager.addTaskDescriptor(task2); 705 taskManager.addTaskDescriptor(task2);
698 // configure mocks 706 // configure mocks
699 when(context.aboutToComputeResult(anyObject, resultA)).thenReturn(true); 707 when(context.aboutToComputeResult(any, resultA)).thenReturn(true);
700 // gather inputs 708 // gather inputs
701 WorkItem item = new WorkItem(context, target, task2, null, 0, null); 709 WorkItem item = new WorkItem(context, target, task2, null, 0, null);
702 WorkItem inputItem = item.gatherInputs(taskManager, []); 710 WorkItem inputItem = item.gatherInputs(taskManager, []);
703 expect(inputItem, isNull); 711 expect(inputItem, isNull);
704 } 712 }
705 713
706 test_gatherInputs_aboutToComputeResult_noResult() { 714 test_gatherInputs_aboutToComputeResult_noResult() {
707 AnalysisTarget target = new TestSource(); 715 AnalysisTarget target = new TestSource();
708 ResultDescriptor resultA = new ResultDescriptor('resultA', null); 716 ResultDescriptor resultA = new ResultDescriptor('resultA', null);
709 ResultDescriptor resultB = new ResultDescriptor('resultB', null); 717 ResultDescriptor resultB = new ResultDescriptor('resultB', null);
710 // prepare tasks 718 // prepare tasks
711 TaskDescriptor task1 = new TaskDescriptor( 719 TaskDescriptor task1 = new TaskDescriptor(
712 'task', 720 'task',
713 (context, target) => 721 (context, target) =>
714 new TestAnalysisTask(context, target, results: [resultA]), 722 new TestAnalysisTask(context, target, results: [resultA]),
715 (target) => {}, 723 (target) => {},
716 [resultA]); 724 [resultA]);
717 TaskDescriptor task2 = new TaskDescriptor( 725 TaskDescriptor task2 = new TaskDescriptor(
718 'task', 726 'task',
719 (context, target) => new TestAnalysisTask(context, target), 727 (context, target) => new TestAnalysisTask(context, target),
720 (target) => {'one': resultA.of(target)}, 728 (target) => {'one': resultA.of(target)},
721 [resultB]); 729 [resultB]);
722 taskManager.addTaskDescriptor(task1); 730 taskManager.addTaskDescriptor(task1);
723 taskManager.addTaskDescriptor(task2); 731 taskManager.addTaskDescriptor(task2);
724 // configure ResultProvider 732 // configure ResultProvider
725 // configure mocks 733 // configure mocks
726 when(context.aboutToComputeResult(anyObject, resultA)).thenReturn(false); 734 when(context.aboutToComputeResult(any, resultA)).thenReturn(false);
727 // gather inputs 735 // gather inputs
728 WorkItem item = new WorkItem(context, target, task2, null, 0, null); 736 WorkItem item = new WorkItem(context, target, task2, null, 0, null);
729 WorkItem inputItem = item.gatherInputs(taskManager, []); 737 WorkItem inputItem = item.gatherInputs(taskManager, []);
730 expect(inputItem, isNotNull); 738 expect(inputItem, isNotNull);
731 expect(inputItem.target, target); 739 expect(inputItem.target, target);
732 expect(inputItem.descriptor, task1); 740 expect(inputItem.descriptor, task1);
733 } 741 }
734 742
735 test_gatherInputs_complete() { 743 test_gatherInputs_complete() {
736 AnalysisTarget target = new TestSource(); 744 AnalysisTarget target = new TestSource();
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
809 // done 817 // done
810 expect(order.moveNext(), isFalse); 818 expect(order.moveNext(), isFalse);
811 expect(order.current, isNull); 819 expect(order.current, isNull);
812 } 820 }
813 } 821 }
814 822
815 /** 823 /**
816 * A dummy [InternalAnalysisContext] that does not use [AnalysisDriver] itself, 824 * A dummy [InternalAnalysisContext] that does not use [AnalysisDriver] itself,
817 * but provides enough implementation for it to function. 825 * but provides enough implementation for it to function.
818 */ 826 */
819 class _InternalAnalysisContextMock extends TypedMock 827 class _InternalAnalysisContextMock extends Mock
820 implements InternalAnalysisContext { 828 implements InternalAnalysisContext {
821 AnalysisCache analysisCache; 829 AnalysisCache analysisCache;
822 830
823 @override 831 @override
824 final AnalysisOptionsImpl analysisOptions = new AnalysisOptionsImpl(); 832 final AnalysisOptionsImpl analysisOptions = new AnalysisOptionsImpl();
825 833
826 @override 834 @override
827 List<AnalysisTarget> explicitTargets = <AnalysisTarget>[]; 835 List<AnalysisTarget> explicitTargets = <AnalysisTarget>[];
828 836
829 @override 837 @override
(...skipping 30 matching lines...) Expand all
860 for (int dependency in graph[node]) { 868 for (int dependency in graph[node]) {
861 if (!skipInputs.contains(dependency) && 869 if (!skipInputs.contains(dependency) &&
862 !evaluatedNodes.contains(dependency)) { 870 !evaluatedNodes.contains(dependency)) {
863 return dependency; 871 return dependency;
864 } 872 }
865 } 873 }
866 return null; 874 return null;
867 } 875 }
868 } 876 }
869 877
870 class _WorkManagerMock extends TypedMock implements WorkManager {} 878 class _WorkManagerMock extends Mock implements WorkManager {}
OLDNEW
« no previous file with comments | « pkg/analyzer/test/src/task/dart_work_manager_test.dart ('k') | pkg/analyzer/test/src/task/general_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698