diff --git a/DEPS b/DEPS index 593db42950e..dfd4c5a6b04 100644 --- a/DEPS +++ b/DEPS @@ -140,7 +140,7 @@ vars = { "i18n_rev": "dd8a792a8492370a594706c8304d2eb8db844d7a", "leak_tracker_rev": "f5620600a5ce1c44f65ddaa02001e200b096e14c", # rolled manually "material_color_utilities_rev": "799b6ba2f3f1c28c67cc7e0b4f18e0c7d7f3c03e", - "native_rev": "91ac216dc8705cf29dd7c0e563f5b1d1d7730a1c", # rolled manually while record_use is experimental + "native_rev": "4bed1ed249b22f9a447b96bcaf4b546ce0e70319", # rolled manually while record_use is experimental "protobuf_rev": "9e30258e0aa6a6430ee36c84b75308a9702fde42", "pub_rev": "b21ac685bc64f6e81050ec0093aa83543d66e2fd", # rolled manually "shelf_rev": "dd830a0338b31bee92fe7ebc20b9bb963403b6b0", diff --git a/pkg/dartdev/test/native_assets/helpers.dart b/pkg/dartdev/test/native_assets/helpers.dart index 62569129b35..185c7c4db88 100644 --- a/pkg/dartdev/test/native_assets/helpers.dart +++ b/pkg/dartdev/test/native_assets/helpers.dart @@ -266,6 +266,7 @@ Future nativeAssetsTest( 'native_add_version_skew', 'native_add', 'native_dynamic_linking', + 'recursive_invocation', 'system_library', 'treeshaking_native_libs', 'user_defines', diff --git a/pkg/dartdev/test/native_assets/run_test.dart b/pkg/dartdev/test/native_assets/run_test.dart index 0d9d1bed3bb..373f9b7e96d 100644 --- a/pkg/dartdev/test/native_assets/run_test.dart +++ b/pkg/dartdev/test/native_assets/run_test.dart @@ -4,6 +4,8 @@ // @dart=2.18 +import 'dart:io'; + import 'package:test/test.dart'; import '../utils.dart'; @@ -223,4 +225,26 @@ Couldn't resolve native function 'multiply' in 'package:drop_dylib_link/dylib_mu }, ); } + + // Regression test for Bug: https://github.com/dart-lang/native/issues/2921. + test( + 'dart run invoking dart run', + // Windows not supported: https://github.com/dart-lang/native/issues/1534. + skip: Platform.isWindows, + timeout: longTimeout, + () async { + await nativeAssetsTest('recursive_invocation', (dartAppUri) async { + final result = await runDart( + arguments: [ + 'run', + 'bin/subprocess.dart', + ], + workingDirectory: dartAppUri, + logger: logger, + ); + // No crash. + expect(result.exitCode, equals(0)); + }); + }, + ); }