Force quit frontend server after one second, unskip tests (#1387)
Fixes #1386
Fixes #1383
diff --git a/frontend_server_client/CHANGELOG.md b/frontend_server_client/CHANGELOG.md
index c77b290..d94daf2 100644
--- a/frontend_server_client/CHANGELOG.md
+++ b/frontend_server_client/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 2.1.2
+
+- Force kill the frontend server after one second when calling shutdown. It
+ appears to hang on windows sometimes.
+
## 2.1.1
- Fix a bug where spaces in the output dill path would cause a parse error when
diff --git a/frontend_server_client/lib/src/frontend_server_client.dart b/frontend_server_client/lib/src/frontend_server_client.dart
index b0a83c7..b98df0d 100644
--- a/frontend_server_client/lib/src/frontend_server_client.dart
+++ b/frontend_server_client/lib/src/frontend_server_client.dart
@@ -295,10 +295,13 @@
}
/// Stop the service gracefully (using the shutdown command)
- Future<int> shutdown() {
- _feServerStdoutLines.cancel();
+ Future<int> shutdown() async {
_sendCommand('quit');
- return _feServer.exitCode;
+ var timer = Timer(const Duration(seconds: 1), _feServer.kill);
+ var exitCode = await _feServer.exitCode;
+ timer.cancel();
+ await _feServerStdoutLines.cancel();
+ return exitCode;
}
/// Kills the server forcefully by calling `kill` on the process, and
diff --git a/frontend_server_client/pubspec.yaml b/frontend_server_client/pubspec.yaml
index 63898c9..c728f84 100644
--- a/frontend_server_client/pubspec.yaml
+++ b/frontend_server_client/pubspec.yaml
@@ -1,5 +1,5 @@
name: frontend_server_client
-version: 2.1.1
+version: 2.1.2
description: >-
Client code to start and interact with the frontend_server compiler from the
Dart SDK.
diff --git a/frontend_server_client/test/frontend_sever_client_test.dart b/frontend_server_client/test/frontend_sever_client_test.dart
index d0b00a8..97a66a4 100644
--- a/frontend_server_client/test/frontend_sever_client_test.dart
+++ b/frontend_server_client/test/frontend_sever_client_test.dart
@@ -117,10 +117,7 @@
expect(await stdoutLines.next, p.join('goodbye', 'world'));
expect(await process.exitCode, 0);
- },
- skip: Platform.isWindows
- ? 'https://github.com/dart-lang/webdev/issues/1383'
- : false);
+ });
test('can handle compile errors and reload fixes', () async {
var entrypoint = p.join(packageRoot, 'bin', 'main.dart');
@@ -187,10 +184,7 @@
expect(await stdoutLines.next, p.join('goodbye', 'world'));
expect(await process.exitCode, 0);
- },
- skip: Platform.isWindows
- ? 'https://github.com/dart-lang/webdev/issues/1383'
- : false);
+ });
test('can compile and recompile a dartdevc app', () async {
var entrypoint =