[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);
+ });
+}