revert widgettester breaking change (#62914)
diff --git a/packages/flutter_test/lib/src/widget_tester.dart b/packages/flutter_test/lib/src/widget_tester.dart index 6dbd4a2..8e8e4ff 100644 --- a/packages/flutter_test/lib/src/widget_tester.dart +++ b/packages/flutter_test/lib/src/widget_tester.dart
@@ -608,9 +608,12 @@ Future<int> pumpAndSettle([ Duration duration = const Duration(milliseconds: 100), EnginePhase phase = EnginePhase.sendSemanticsUpdate, + Duration timeout = const Duration(minutes: 10), ]) { assert(duration != null); assert(duration > Duration.zero); + assert(timeout != null); + assert(timeout > Duration.zero); assert(() { final WidgetsBinding binding = this.binding; if (binding is LiveTestWidgetsFlutterBinding && @@ -623,8 +626,11 @@ return true; }()); return TestAsyncUtils.guard<int>(() async { + final DateTime endTime = binding.clock.fromNowBy(timeout); int count = 0; do { + if (binding.clock.now().isAfter(endTime)) + throw FlutterError('pumpAndSettle timed out'); await binding.pump(duration, phase); count += 1; } while (binding.hasScheduledFrame);
diff --git a/packages/flutter_test/test/widget_tester_test.dart b/packages/flutter_test/test/widget_tester_test.dart index 1e92b16..bd91a48 100644 --- a/packages/flutter_test/test/widget_tester_test.dart +++ b/packages/flutter_test/test/widget_tester_test.dart
@@ -465,11 +465,21 @@ testWidgets('pumpAndSettle control test', (WidgetTester tester) async { final AnimationController controller = AnimationController( - duration: const Duration(seconds: 1), + duration: const Duration(minutes: 525600), vsync: const TestVSync(), ); expect(await tester.pumpAndSettle(), 1); controller.forward(); + try { + await tester.pumpAndSettle(); + expect(true, isFalse); + } catch (e) { + expect(e, isFlutterError); + } + controller.stop(); + expect(await tester.pumpAndSettle(), 1); + controller.duration = const Duration(seconds: 1); + controller.forward(); expect(await tester.pumpAndSettle(const Duration(milliseconds: 300)), 5); // 0, 300, 600, 900, 1200ms });