Unverified Commit ffe94a22 authored by fzyzcjy's avatar fzyzcjy Committed by GitHub

Add retry flag to flutter_test (#125851)

Closes https://github.com/flutter/flutter/issues/125920

I will add tests, polish code, etc, if this change looks generally OK!
parent 7f1f7655
......@@ -185,8 +185,8 @@ void test(
/// should explain why the group is skipped; this reason will be printed instead
/// of running the group's tests.
@isTestGroup
void group(Object description, void Function() body, { dynamic skip }) {
_declarer.group(description.toString(), body, skip: skip);
void group(Object description, void Function() body, { dynamic skip, int? retry }) {
_declarer.group(description.toString(), body, skip: skip, retry: retry);
}
/// Registers a function to be run before tests.
......
......@@ -130,6 +130,7 @@ void testWidgets(
bool semanticsEnabled = true,
TestVariant<Object?> variant = const DefaultTestVariant(),
dynamic tags,
int? retry,
}) {
assert(variant.values.isNotEmpty, 'There must be at least one value to test in the testing variant.');
final TestWidgetsFlutterBinding binding = TestWidgetsFlutterBinding.ensureInitialized();
......@@ -174,6 +175,7 @@ void testWidgets(
skip: skip,
timeout: timeout ?? binding.defaultTestTimeout,
tags: tags,
retry: retry,
);
}
}
......
......@@ -51,6 +51,24 @@ void main() {
});
});
group('group retry flag allows test to run multiple times', () {
bool retried = false;
group('the group with retry flag', () {
testWidgets('the test inside it', (WidgetTester tester) async {
addTearDown(() => retried = true);
expect(retried, isTrue);
});
}, retry: 1);
});
group('testWidget retry flag allows test to run multiple times', () {
bool retried = false;
testWidgets('the test with retry flag', (WidgetTester tester) async {
addTearDown(() => retried = true);
expect(retried, isTrue);
}, retry: 1);
});
group('respects the group skip flag', () {
testWidgets('should be skipped', (WidgetTester tester) async {
expect(false, true);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment