Allow flaky tests to pass or fail and mark web tests as flaky (#34456)

This commit is contained in:
Jonah Williams 2019-06-13 17:52:04 -07:00 committed by GitHub
parent f68bc1beb2
commit c1a2e44c78
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 4 deletions

View File

@ -85,6 +85,7 @@ Future<void> runCommand(String executable, List<String> arguments, {
String failureMessage,
bool printOutput = true,
bool skip = false,
bool expectFlaky = false,
Duration timeout = _kLongTimeout,
}) async {
final String commandDescription = '${path.relative(executable, from: workingDirectory)} ${arguments.join(' ')}';
@ -114,9 +115,13 @@ Future<void> runCommand(String executable, List<String> arguments, {
final int exitCode = await process.exitCode.timeout(timeout, onTimeout: () {
stderr.writeln('Process timed out after $timeout');
return expectNonZeroExit ? 0 : 1;
return (expectNonZeroExit || expectFlaky) ? 0 : 1;
});
print('$clock ELAPSED TIME: $bold${elapsedTime(start)}$reset for $commandDescription in $relativeWorkingDir: ');
// If the test is flaky we don't care about the actual exit.
if (expectFlaky) {
return;
}
if ((exitCode == 0) == expectNonZeroExit || (expectedExitCode != null && exitCode != expectedExitCode)) {
if (failureMessage != null) {
print(failureMessage);

View File

@ -341,7 +341,7 @@ Future<void> _runTests() async {
}
Future<void> _runWebTests() async {
await _runFlutterWebTest(path.join(flutterRoot, 'packages', 'flutter'), expectFailure: false, tests: <String>[
await _runFlutterWebTest(path.join(flutterRoot, 'packages', 'flutter'), tests: <String>[
'test/foundation/',
'test/physics/',
'test/rendering/',
@ -607,7 +607,6 @@ class EvalResult {
}
Future<void> _runFlutterWebTest(String workingDirectory, {
bool expectFailure = false,
bool printOutput = true,
bool skip = false,
Duration timeout = _kLongTimeout,
@ -627,7 +626,7 @@ Future<void> _runFlutterWebTest(String workingDirectory, {
flutter,
args,
workingDirectory: workingDirectory,
expectNonZeroExit: expectFailure,
expectFlaky: true,
timeout: timeout,
environment: <String, String>{
'FLUTTER_WEB': 'true',