Fix stack-trace expectation (#3460)

diff --git a/test/embedding/embedding_test.dart b/test/embedding/embedding_test.dart
index a9795ea..d7589b1 100644
--- a/test/embedding/embedding_test.dart
+++ b/test/embedding/embedding_test.dart
@@ -39,10 +39,15 @@
   );
   await process.shouldExit(exitCode);
 
+  final stdoutLines = await process.stdout.rest.toList();
+  final stderrLines = await process.stderr.rest.toList();
+
   buffer.writeln([
     '\$ $_commandRunner ${args.join(' ')}',
-    ...await process.stdout.rest.map(_filter).toList(),
-    ...await process.stderr.rest.map((e) => '[E] ${_filter(e)}').toList(),
+    if (stdoutLines.isNotEmpty) _filter(stdoutLines.join('\n')),
+    if (stderrLines.isNotEmpty)
+      _filter(stderrLines.join('\n'))
+          .replaceAll(RegExp('^', multiLine: true), '[E] '),
   ].join('\n'));
   buffer.write('\n');
 }
@@ -326,5 +331,14 @@
       .replaceAll(
         RegExp(r'Writing \d+ characters', multiLine: true),
         r'Writing $N characters',
-      );
+      )
+
+      /// TODO(sigurdm): This hack suppresses differences in stack-traces
+      /// between dart 2.17 and 2.18. Remove when 2.18 is stable.
+      .replaceAllMapped(
+          RegExp(
+            r'(^(.*)pub/src/command.dart \$LINE:\$COL(.*)$)\n\1',
+            multiLine: true,
+          ),
+          (match) => match[1]!);
 }
diff --git a/test/testdata/goldens/embedding/embedding_test/logfile is written with --verbose and on unexpected exceptions.txt b/test/testdata/goldens/embedding/embedding_test/logfile is written with --verbose and on unexpected exceptions.txt
index fc69b03..bdc0165 100644
--- a/test/testdata/goldens/embedding/embedding_test/logfile is written with --verbose and on unexpected exceptions.txt
+++ b/test/testdata/goldens/embedding/embedding_test/logfile is written with --verbose and on unexpected exceptions.txt
@@ -249,7 +249,6 @@
 [E] Bad state: Pub has crashed
 [E]  tool/test-bin/pub_command_runner.dart $LINE:$COL   ThrowingCommand.runProtected
 [E] package:pub/src/command.dart $LINE:$COL   PubCommand.run.<fn>
-[E] package:pub/src/command.dart $LINE:$COL   PubCommand.run.<fn>
 [E] dart:async   new Future.sync
 [E] package:pub/src/utils.dart $LINE:$COL   captureErrors.wrappedCallback
 [E] dart:async   runZonedGuarded
@@ -289,7 +288,6 @@
 FINE: Exception type: StateError
 ERR : tool/test-bin/pub_command_runner.dart $LINE:$COL   ThrowingCommand.runProtected
    | package:pub/src/command.dart $LINE:$COL   PubCommand.run.<fn>
-   | package:pub/src/command.dart $LINE:$COL   PubCommand.run.<fn>
    | dart:async   new Future.sync
    | package:pub/src/utils.dart $LINE:$COL   captureErrors.wrappedCallback
    | dart:async   runZonedGuarded