[vm/kernel_service] Fix `native_assets.yaml` discovery

Before this CL, the kernel_service was recursing one level up to find
a `.dart_tool/native_assets.yaml` due to a typo.

This tests adds a unit test to cover the discovery.
TEST=pkg/vm/test/kernel_service_test.dart

This CL also undoes a spurious change in another test.

Change-Id: Ie7440a2768f8cd6c1195cf31863c8a7fff29e394
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/285681
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
diff --git a/pkg/vm/bin/kernel_service.dart b/pkg/vm/bin/kernel_service.dart
index 137471d..4554b4f 100644
--- a/pkg/vm/bin/kernel_service.dart
+++ b/pkg/vm/bin/kernel_service.dart
@@ -106,8 +106,8 @@
     ..sdkSummary = platformKernelPath
     ..verbose = verbose
     ..omitPlatform = false // so that compilation results can be rejected,
-                           // which potentially is only relevant for
-                           // incremental, rather than single-shot compilter
+    // which potentially is only relevant for
+    // incremental, rather than single-shot compilter
     ..explicitExperimentalFlags = parseExperimentalFlags(
         parseExperimentalArguments(expFlags), onError: (msg) {
       errorsPlain.add(msg);
@@ -1018,7 +1018,7 @@
       if (found != null) {
         return found;
       }
-      final parentUri = script.resolve('..');
+      final parentUri = folderUri.resolve('..');
       if (parentUri.path == folderUri.path) {
         return null;
       }
diff --git a/pkg/vm/test/kernel_service_test.dart b/pkg/vm/test/kernel_service_test.dart
index 7f3a31e..4adbb46 100644
--- a/pkg/vm/test/kernel_service_test.dart
+++ b/pkg/vm/test/kernel_service_test.dart
@@ -128,7 +128,6 @@
     /* [14] = String? = workingDirectory = */ null,
     /* [15] = String = verbosityLevel = */ Verbosity.all.name,
     /* [16] = bool = enableMirrors = */ false,
-    /* [17] = String? = nativeAssetsYaml = */ null,
   ]);
 
   // Wait for kernel-service response.
diff --git a/pkg/vm/test/native_assets/kernel_service_test.dart b/pkg/vm/test/native_assets/kernel_service_test.dart
new file mode 100644
index 0000000..6cb7a54
--- /dev/null
+++ b/pkg/vm/test/native_assets/kernel_service_test.dart
@@ -0,0 +1,67 @@
+// Copyright (c) 2023, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:io';
+
+import 'package:test/test.dart';
+
+import '../../bin/kernel_service.dart';
+
+import 'package:front_end/src/api_prototype/standard_file_system.dart';
+
+void main() async {
+  late Directory tempDir;
+  setUp(() {
+    tempDir = Directory.systemTemp.createTempSync('kernel_front_end_test');
+  });
+
+  tearDown(() {
+    tempDir.delete(recursive: true);
+  });
+
+  test('find native_assets.yaml many folders up', () async {
+    final dir5 =
+        Directory.fromUri(tempDir.uri.resolve('dir1/dir2/dir3/dir4/dir5/'));
+    await dir5.create(recursive: true);
+
+    final dartFile = File.fromUri(dir5.uri.resolve('main.dart'));
+    await dartFile.writeAsString('''
+void main(){
+  print('hello world!');
+}
+''');
+
+    final dartToolDir = Directory.fromUri(tempDir.uri.resolve('.dart_tool/'));
+    await dartToolDir.create(recursive: true);
+
+    final packageConfigContents = '''{
+  "configVersion": 2,
+  "packages": [],
+  "generated": "${DateTime.now()}",
+  "generator": "test"
+}
+''';
+    final packageConfigFile =
+        File.fromUri(dartToolDir.uri.resolve('package_config.json'));
+    await packageConfigFile.writeAsString(packageConfigContents);
+
+    final nativeAssetsContents = '''
+format-version: [1, 0, 0]
+native-assets:
+  linux_arm:
+    "benchmarks/FfiCall/native-library":
+      ["relative", "../native/out/linux/arm/libnative_functions.so"]
+''';
+    final nativeAssetsFile =
+        File.fromUri(dartToolDir.uri.resolve('native_assets.yaml'));
+    await nativeAssetsFile.writeAsString(nativeAssetsContents);
+
+    final String? result = await findNativeAssets(
+      script: dartFile.uri,
+      fileSystem: StandardFileSystem.instance,
+    );
+
+    expect(result, nativeAssetsContents);
+  });
+}