diff --git a/packages/flutter/test/widgets/error_widget_builder_test.dart b/packages/flutter/test/widgets/error_widget_builder_test.dart index b0372d4a093..eda17850fd1 100644 --- a/packages/flutter/test/widgets/error_widget_builder_test.dart +++ b/packages/flutter/test/widgets/error_widget_builder_test.dart @@ -7,6 +7,7 @@ import 'package:flutter/widgets.dart'; void main() { testWidgets('ErrorWidget.builder', (WidgetTester tester) async { + final ErrorWidgetBuilder oldBuilder = ErrorWidget.builder; ErrorWidget.builder = (FlutterErrorDetails details) { return const Text('oopsie!', textDirection: TextDirection.ltr); }; @@ -21,5 +22,6 @@ void main() { ); expect(tester.takeException().toString(), 'test'); expect(find.text('oopsie!'), findsOneWidget); + ErrorWidget.builder = oldBuilder; }); } diff --git a/packages/flutter_test/lib/src/binding.dart b/packages/flutter_test/lib/src/binding.dart index b2adbd90bf0..115877b8104 100644 --- a/packages/flutter_test/lib/src/binding.dart +++ b/packages/flutter_test/lib/src/binding.dart @@ -584,6 +584,7 @@ abstract class TestWidgetsFlutterBinding extends BindingBase final bool autoUpdateGoldensBeforeTest = autoUpdateGoldenFiles; final TestExceptionReporter reportTestExceptionBeforeTest = reportTestException; + final ErrorWidgetBuilder errorWidgetBuilderBeforeTest = ErrorWidget.builder; // run the test await testBody(); @@ -598,6 +599,7 @@ abstract class TestWidgetsFlutterBinding extends BindingBase invariantTester(); _verifyAutoUpdateGoldensUnset(autoUpdateGoldensBeforeTest); _verifyReportTestExceptionUnset(reportTestExceptionBeforeTest); + _verifyErrorWidgetBuilderUnset(errorWidgetBuilderBeforeTest); _verifyInvariants(); } @@ -667,6 +669,21 @@ abstract class TestWidgetsFlutterBinding extends BindingBase }()); } + void _verifyErrorWidgetBuilderUnset(ErrorWidgetBuilder valueBeforeTest) { + assert(() { + if (ErrorWidget.builder != valueBeforeTest) { + FlutterError.reportError(FlutterErrorDetails( + exception: FlutterError( + 'The value of ErrorWidget.builder was changed by the test.', + ), + stack: StackTrace.current, + library: 'Flutter test framework', + )); + } + return true; + }()); + } + /// Called by the [testWidgets] function after a test is executed. void postTest() { assert(inTest);