diff --git a/webdev/lib/src/serve/daemon_client.dart b/webdev/lib/src/serve/daemon_client.dart index 3f996107e..dc56ffc75 100644 --- a/webdev/lib/src/serve/daemon_client.dart +++ b/webdev/lib/src/serve/daemon_client.dart @@ -13,9 +13,13 @@ import 'package:webdev/src/util.dart'; Future connectClient( String workingDirectory, List options) => BuildDaemonClient.connect( - workingDirectory, - [pubPath, 'run', 'build_runner', 'daemon']..addAll(options), - ); + workingDirectory, + // On Windows we need to call the snapshot directly otherwise + // the process will start in a disjoint cmd without access to + // STDIO. + (Platform.isWindows ? [dartPath, pubSnapshot] : ['pub']) + ..addAll(['run', 'build_runner', 'daemon']) + ..addAll(options)); /// Returns the port of the daemon asset server. int daemonPort(String workingDirectory) { diff --git a/webdev/lib/src/util.dart b/webdev/lib/src/util.dart index 5171b1cc9..fc5a33b79 100644 --- a/webdev/lib/src/util.dart +++ b/webdev/lib/src/util.dart @@ -18,5 +18,7 @@ final String _sdkDir = (() { })(); final String dartPath = p.join(_sdkDir, 'bin', 'dart'); +final String pubSnapshot = + p.join(_sdkDir, 'bin', 'snapshots', 'pub.dart.snapshot'); final String pubPath = p.join(_sdkDir, 'bin', Platform.isWindows ? 'pub.bat' : 'pub'); diff --git a/webdev/test/e2e_test.dart b/webdev/test/e2e_test.dart index 99afdb089..5ada8a281 100644 --- a/webdev/test/e2e_test.dart +++ b/webdev/test/e2e_test.dart @@ -97,7 +97,6 @@ void main() { group('should serve with valid configuration', () { for (var command in ['serve', 'serve2']) { - if (command == 'serve2' && Platform.isWindows) return; for (var withDDC in [true, false]) { var type = withDDC ? 'DDC' : 'dart2js'; var name = 'using $command with $type';