mirror of
https://github.com/flutter/flutter
synced 2024-10-13 11:42:54 +00:00
Check that ErrorWidget.builder is not modified after test (#30898)
This commit is contained in:
parent
28cb589cd3
commit
330dc94c0f
|
@ -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;
|
||||
});
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue