real_test.expect(lines[1],matches(r'The guarded method "testGuard1" from class TestAPI was called from .*test_async_utils_test.dart on line [0-9]+\.'));
real_test.expect(lines[2],matches(r'Then, the "testGuard2" method \(also from class TestAPI\) was called from .*test_async_utils_test.dart on line [0-9]+\.'));
real_test.expect(lines[3],'The first method (TestAPI.testGuard1) had not yet finished executing at the time that the second method (TestAPI.testGuard2) was called. Since both are guarded, and the second was not a nested call inside the first, the first must complete its execution before the second can be called. Typically, this is achieved by putting an "await" statement in front of the call to the first.');
real_test.expect(lines[4],'');
real_test.expect(lines[5],'When the first method (TestAPI.testGuard1) was called, this was the stack:');
real_test.expect(lines.length,greaterThan(6));
}
expect(awaitf1,isNull);
expect(f2,isNull);
});
test('TestAsyncUtils - two classes, all callers in superclass',()async{
real_test.expect(lines[1],matches(r'^The guarded method "testGuard1" from class TestAPI was called from .*test_async_utils_test.dart on line [0-9]+\.$'));
real_test.expect(lines[2],matches(r'^Then, the "testGuard2" method \(also from class TestAPI\) was called from .*test_async_utils_test.dart on line [0-9]+\.$'));
real_test.expect(lines[3],'The first method (TestAPI.testGuard1) had not yet finished executing at the time that the second method (TestAPI.testGuard2) was called. Since both are guarded, and the second was not a nested call inside the first, the first must complete its execution before the second can be called. Typically, this is achieved by putting an "await" statement in front of the call to the first.');
real_test.expect(lines[4],'');
real_test.expect(lines[5],'When the first method (TestAPI.testGuard1) was called, this was the stack:');
real_test.expect(lines.length,greaterThan(6));
}
expect(awaitf1,isNull);
expect(f2,isNull);
});
test('TestAsyncUtils - two classes, mixed callers',()async{
real_test.expect(lines[1],matches(r'^The guarded method "testGuard1" from class TestAPI was called from .*test_async_utils_test.dart on line [0-9]+\.$'));
real_test.expect(lines[2],matches(r'^Then, the "testGuard3" method from class TestAPISubclass was called from .*test_async_utils_test.dart on line [0-9]+\.$'));
real_test.expect(lines[3],'The first method (TestAPI.testGuard1) had not yet finished executing at the time that the second method (TestAPISubclass.testGuard3) was called. Since both are guarded, and the second was not a nested call inside the first, the first must complete its execution before the second can be called. Typically, this is achieved by putting an "await" statement in front of the call to the first.');
real_test.expect(lines[4],'');
real_test.expect(lines[5],'When the first method (TestAPI.testGuard1) was called, this was the stack:');
real_test.expect(lines[1],matches(r'^The guarded method "testGuard1" from class TestAPI was called from .*test_async_utils_test.dart on line [0-9]+\.$'));
real_test.expect(lines[2],matches(r'^Then, the "expect" function was called from .*test_async_utils_test.dart on line [0-9]+\.$'));
real_test.expect(lines[3],'The first method (TestAPI.testGuard1) had not yet finished executing at the time that the second function (expect) was called. Since both are guarded, and the second was not a nested call inside the first, the first must complete its execution before the second can be called. Typically, this is achieved by putting an "await" statement in front of the call to the first.');
real_test.expect(lines[4],'If you are confident that all test APIs are being called using "await", and this expect() call is not being called at the top level but is itself being called from some sort of callback registered before the testGuard1 method was called, then consider using expectSync() instead.');
real_test.expect(lines[1],matches(r'^The guarded method "pump" from class WidgetTester was called from .*test_async_utils_test.dart on line [0-9]+\.$'));
real_test.expect(lines[2],matches(r'^Then, it was called from .*test_async_utils_test.dart on line [0-9]+\.$'));
real_test.expect(lines[3],'The first method had not yet finished executing at the time that the second method was called. Since both are guarded, and the second was not a nested call inside the first, the first must complete its execution before the second can be called. Typically, this is achieved by putting an "await" statement in front of the call to the first.');
real_test.expect(lines[4],'');
real_test.expect(lines[5],'When the first method was called, this was the stack:');
real_test.expect(lines[1],matches(r'^The guarded method "pump" from class WidgetTester was called from .*test_async_utils_test.dart on line [0-9]+, but never completed before its parent scope closed\.$'));
real_test.expect(lines[2],matches(r'^The guarded method "pump" from class AutomatedTestWidgetsFlutterBinding was called from [^ ]+ on line [0-9]+, but never completed before its parent scope closed\.'));
real_test.expect(lines[1],matches(r'^The guarded method "pump" from class WidgetTester was called from .*test_async_utils_test.dart on line [0-9]+, but never completed before its parent scope closed\.$'));
real_test.expect(lines[2],matches(r'^The guarded method "pump" from class AutomatedTestWidgetsFlutterBinding was called from [^ ]+ on line [0-9]+, but never completed before its parent scope closed\.'));