Dont print exceptions thrown by getExecutableForCommand (#4377)
diff --git a/lib/src/entrypoint.dart b/lib/src/entrypoint.dart
index dce2e52..f57aeb9 100644
--- a/lib/src/entrypoint.dart
+++ b/lib/src/entrypoint.dart
@@ -678,13 +678,11 @@
}) async {
await log.progress('Building package executable', () async {
ensureDir(p.dirname(pathOfSnapshot(executable)));
- return waitAndPrintErrors([
- _precompileExecutable(
- executable,
- additionalSources: additionalSources,
- nativeAssets: nativeAssets,
- ),
- ]);
+ return await _precompileExecutable(
+ executable,
+ additionalSources: additionalSources,
+ nativeAssets: nativeAssets,
+ );
});
}
diff --git a/pubspec.lock b/pubspec.lock
index 5051dfb..e20fe4d 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -5,23 +5,23 @@
dependency: transitive
description:
name: _fe_analyzer_shared
- sha256: "45cfa8471b89fb6643fe9bf51bd7931a76b8f5ec2d65de4fb176dba8d4f22c77"
+ sha256: f6dbf021f4b214d85c79822912c5fcd142a2c4869f01222ad371bc51f9f1c356
url: "https://pub.dev"
source: hosted
- version: "73.0.0"
+ version: "74.0.0"
_macros:
dependency: transitive
description: dart
source: sdk
- version: "0.3.2"
+ version: "0.3.3"
analyzer:
dependency: "direct main"
description:
name: analyzer
- sha256: "4959fec185fe70cce007c57e9ab6983101dbe593d2bf8bbfb4453aaec0cf470a"
+ sha256: f7e8caf82f2d3190881d81012606effdf8a38e6c1ab9e30947149733065f817c
url: "https://pub.dev"
source: hosted
- version: "6.8.0"
+ version: "6.9.0"
args:
dependency: "direct main"
description:
@@ -194,10 +194,10 @@
dependency: transitive
description:
name: macros
- sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536"
+ sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656"
url: "https://pub.dev"
source: hosted
- version: "0.1.2-main.4"
+ version: "0.1.3-main.0"
matcher:
dependency: transitive
description:
diff --git a/test/embedding/embedding_test.dart b/test/embedding/embedding_test.dart
index faeb17d..388768c 100644
--- a/test/embedding/embedding_test.dart
+++ b/test/embedding/embedding_test.dart
@@ -222,6 +222,20 @@
);
});
+ testWithGolden('Compilation errors are only printed once', (context) async {
+ await servePackages();
+ await d.dir(appPath, [
+ d.appPubspec(),
+ d.dir('bin', [d.file('syntax_error.dart', 'main() => print("hi")')]),
+ ]).create();
+ await context.runEmbedding(
+ ['run', ':syntax_error'],
+ environment: getPubTestEnvironment(),
+ workingDirectory: d.path(appPath),
+ exitCode: isNot(0),
+ );
+ });
+
test('`embedding run` does `pub get` if sdk updated', () async {
await d.dir(appPath, [
d.pubspec({
diff --git a/test/testdata/goldens/embedding/embedding_test/Compilation errors are only printed once.txt b/test/testdata/goldens/embedding/embedding_test/Compilation errors are only printed once.txt
new file mode 100644
index 0000000..80db252
--- /dev/null
+++ b/test/testdata/goldens/embedding/embedding_test/Compilation errors are only printed once.txt
@@ -0,0 +1,11 @@
+# GENERATED BY: test/embedding/embedding_test.dart
+
+$ tool/test-bin/pub_command_runner.dart run :syntax_error
+[E] Failed to build myapp:syntax_error:
+[E] bin/syntax_error.dart:1:21: Error: Expected ';' after this.
+[E] main() => print("hi")
+[E] ^
+[E] bin/syntax_error.dart:1:22: Error: Unexpected token ''.
+[E] main() => print("hi")
+[E] ^...
+
diff --git a/tool/test-bin/pub_command_runner.dart b/tool/test-bin/pub_command_runner.dart
index 2665a7b..ec420af 100644
--- a/tool/test-bin/pub_command_runner.dart
+++ b/tool/test-bin/pub_command_runner.dart
@@ -91,7 +91,13 @@
@override
Future<int> run() async {
- final executable = await getExecutableForCommand(argResults!.rest.first);
+ final DartExecutableWithPackageConfig executable;
+ try {
+ executable = await getExecutableForCommand(argResults!.rest.first);
+ } on CommandResolutionFailedException catch (e) {
+ log.error(e.message);
+ return -1;
+ }
final packageConfig = executable.packageConfig;
final process = await Process.start(
Platform.executable,