Unverified Commit c130aa95 authored by Jenn Magder's avatar Jenn Magder Committed by GitHub

Add FakeAsync to delay tests (#58644)

parent e48e2e6a
...@@ -11,6 +11,7 @@ import 'package:flutter_tools/src/base/process.dart'; ...@@ -11,6 +11,7 @@ import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/base/terminal.dart'; import 'package:flutter_tools/src/base/terminal.dart';
import 'package:mockito/mockito.dart'; import 'package:mockito/mockito.dart';
import 'package:process/process.dart'; import 'package:process/process.dart';
import 'package:quiver/testing/async.dart';
import '../../src/common.dart'; import '../../src/common.dart';
import '../../src/context.dart'; import '../../src/context.dart';
...@@ -193,11 +194,16 @@ void main() { ...@@ -193,11 +194,16 @@ void main() {
flakes: 1, flakes: 1,
delay: delay, delay: delay,
); );
final RunResult result = await flakyProcessUtils.run(
<String>['dummy'], FakeAsync().run((FakeAsync time) async {
timeout: delay + const Duration(seconds: 1), final Duration timeout = delay + const Duration(seconds: 1);
); final RunResult result = await flakyProcessUtils.run(
expect(result.exitCode, -9); <String>['dummy'],
timeout: timeout,
);
time.elapse(timeout);
expect(result.exitCode, -9);
});
}); });
testWithoutContext(' flaky process succeeds with retry', () async { testWithoutContext(' flaky process succeeds with retry', () async {
...@@ -205,12 +211,16 @@ void main() { ...@@ -205,12 +211,16 @@ void main() {
flakes: 1, flakes: 1,
delay: delay, delay: delay,
); );
final RunResult result = await flakyProcessUtils.run( FakeAsync().run((FakeAsync time) async {
<String>['dummy'], final Duration timeout = delay - const Duration(milliseconds: 500);
timeout: delay - const Duration(milliseconds: 500), final RunResult result = await flakyProcessUtils.run(
timeoutRetries: 1, <String>['dummy'],
); timeout: timeout,
expect(result.exitCode, 0); timeoutRetries: 1,
);
time.elapse(timeout);
expect(result.exitCode, 0);
});
}); });
testWithoutContext(' flaky process generates ProcessException on timeout', () async { testWithoutContext(' flaky process generates ProcessException on timeout', () async {
...@@ -230,11 +240,16 @@ void main() { ...@@ -230,11 +240,16 @@ void main() {
flakyStdout.complete(<int>[]); flakyStdout.complete(<int>[]);
return true; return true;
}); });
expect(() => flakyProcessUtils.run( FakeAsync().run((FakeAsync time) async {
<String>['dummy'], final Duration timeout = delay - const Duration(milliseconds: 500);
timeout: delay - const Duration(milliseconds: 500), expect(() => flakyProcessUtils.run(
timeoutRetries: 0, <String>['dummy'],
), throwsA(isA<ProcessException>())); timeout: timeout,
timeoutRetries: 0,
), throwsA(isA<ProcessException>()));
time.elapse(timeout);
});
}); });
}); });
......
...@@ -16,6 +16,7 @@ import 'package:flutter_tools/src/devfs.dart'; ...@@ -16,6 +16,7 @@ import 'package:flutter_tools/src/devfs.dart';
import 'package:flutter_tools/src/vmservice.dart'; import 'package:flutter_tools/src/vmservice.dart';
import 'package:mockito/mockito.dart'; import 'package:mockito/mockito.dart';
import 'package:package_config/package_config.dart'; import 'package:package_config/package_config.dart';
import 'package:quiver/testing/async.dart';
import '../src/common.dart'; import '../src/common.dart';
import '../src/context.dart'; import '../src/context.dart';
...@@ -140,21 +141,24 @@ void main() { ...@@ -140,21 +141,24 @@ void main() {
); );
await devFS.create(); await devFS.create();
final UpdateFSReport report = await devFS.update( FakeAsync().run((FakeAsync time) async {
mainUri: Uri.parse('lib/foo.txt'), final UpdateFSReport report = await devFS.update(
dillOutputPath: 'lib/foo.dill', mainUri: Uri.parse('lib/foo.txt'),
generator: residentCompiler, dillOutputPath: 'lib/foo.dill',
pathToReload: 'lib/foo.txt.dill', generator: residentCompiler,
trackWidgetCreation: false, pathToReload: 'lib/foo.txt.dill',
invalidatedFiles: <Uri>[], trackWidgetCreation: false,
packageConfig: PackageConfig.empty, invalidatedFiles: <Uri>[],
); packageConfig: PackageConfig.empty,
);
expect(report.syncedBytes, 5); time.elapse(const Duration(seconds: 2));
expect(report.success, isTrue);
verify(httpClient.putUrl(any)).called(kFailedAttempts + 1); expect(report.syncedBytes, 5);
verify(httpRequest.close()).called(kFailedAttempts + 1); expect(report.success, isTrue);
verify(osUtils.gzipLevel1Stream(any)).called(kFailedAttempts + 1); verify(httpClient.putUrl(any)).called(kFailedAttempts + 1);
verify(httpRequest.close()).called(kFailedAttempts + 1);
verify(osUtils.gzipLevel1Stream(any)).called(kFailedAttempts + 1);
});
}); });
testWithoutContext('DevFS reports unsuccessful compile when errors are returned', () async { testWithoutContext('DevFS reports unsuccessful compile when errors are returned', () async {
......
...@@ -261,16 +261,19 @@ void main() { ...@@ -261,16 +261,19 @@ void main() {
]) ])
); );
final LaunchResult launchResult = await iosDevice.startApp( FakeAsync().run((FakeAsync time) async {
buildableIOSApp, final LaunchResult launchResult = await iosDevice.startApp(
debuggingOptions: DebuggingOptions.disabled(BuildInfo.release), buildableIOSApp,
platformArgs: <String, Object>{}, debuggingOptions: DebuggingOptions.disabled(BuildInfo.release),
); platformArgs: <String, Object>{},
);
time.elapse(const Duration(seconds: 2));
expect(logger.statusText, expect(logger.statusText,
contains('Xcode build failed due to concurrent builds, will retry in 2 seconds')); contains('Xcode build failed due to concurrent builds, will retry in 2 seconds'));
expect(launchResult.started, true); expect(launchResult.started, true);
expect(processManager.hasRemainingExpectations, false); expect(processManager.hasRemainingExpectations, false);
});
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
ProcessManager: () => processManager, ProcessManager: () => processManager,
FileSystem: () => fileSystem, FileSystem: () => fileSystem,
......
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