From 45143278b0dfe09f373e22af95f5f4b7c8ecb15d Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Mon, 24 May 2021 20:11:26 +0200 Subject: [PATCH] Add runtimeconfig.json support to AppleAppBuilder, reenable affected tests (#53172) --- eng/testing/tests.mobile.targets | 49 +++++++++++++--------- .../tests/Encoding/Encoding.cs | 4 -- .../tests/Encoding/EncodingGetEncodingTests.cs | 6 --- .../tests/System.Text.Encoding.Tests.csproj | 4 +- .../tests/UTF7Encoding/UTF7EncodingEncode.cs | 2 - .../tests/UTF7Encoding/UTF7EncodingTests.cs | 13 +----- .../tests/runtimeconfig.template.json | 5 --- src/tasks/AndroidAppBuilder/Templates/monodroid.c | 2 + src/tasks/AppleAppBuilder/Templates/runtime.m | 26 ++++++++++++ 9 files changed, 59 insertions(+), 52 deletions(-) delete mode 100644 src/libraries/System.Text.Encoding/tests/runtimeconfig.template.json diff --git a/eng/testing/tests.mobile.targets b/eng/testing/tests.mobile.targets index 2fedf68..3e5321d 100644 --- a/eng/testing/tests.mobile.targets +++ b/eng/testing/tests.mobile.targets @@ -14,10 +14,10 @@ false - false + false false false - true + true false false true @@ -25,11 +25,11 @@ false - false + false false false false - true + true true @@ -58,15 +58,35 @@ + + + + + $(PublishDir)$(AssemblyName).runtimeconfig.json + $(PublishDir)runtimeconfig.bin + + + + + + + + + + + + - - + @@ -76,16 +96,12 @@ x86 AndroidTestRunner.dll - $(PublishDir)$(AssemblyName).runtimeconfig.json - $(PublishDir)runtimeconfig.bin @(MonoAOTCompilerDefaultAotArguments, ';') @(MonoAOTCompilerDefaultProcessArguments, ';') - - @@ -94,13 +110,6 @@ Condition="'$(RunAOTCompilation)' == 'true'"/> - - - - adhoc - + diff --git a/src/libraries/System.Text.Encoding/tests/Encoding/Encoding.cs b/src/libraries/System.Text.Encoding/tests/Encoding/Encoding.cs index f4860b2..e7640cb 100644 --- a/src/libraries/System.Text.Encoding/tests/Encoding/Encoding.cs +++ b/src/libraries/System.Text.Encoding/tests/Encoding/Encoding.cs @@ -67,8 +67,6 @@ namespace System.Text.Encodings.Tests [ActiveIssue("https://github.com/dotnet/runtime/issues/38433", TestPlatforms.Browser)] // wasm doesn't honor runtimeconfig.json [Theory] [MemberData(nameof(Encoding_TestData))] - [ActiveIssue("https://github.com/dotnet/runtime/issues/50573", TestPlatforms.Android)] - [ActiveIssue("https://github.com/dotnet/runtime/issues/51394", TestPlatforms.iOS | TestPlatforms.tvOS | TestPlatforms.MacCatalyst)] public static void VerifyCodePageAttributes(int codepage, string name, string bodyName, string headerName, bool isBrowserDisplay, bool isBrowserSave, bool isMailNewsDisplay, bool isMailNewsSave, int windowsCodePage) { @@ -86,8 +84,6 @@ namespace System.Text.Encodings.Tests [ActiveIssue("https://github.com/dotnet/runtime/issues/38433", TestPlatforms.Browser)] // wasm doesn't honor runtimeconfig.json [Theory] [MemberData(nameof(Normalization_TestData))] - [ActiveIssue("https://github.com/dotnet/runtime/issues/50573", TestPlatforms.Android)] - [ActiveIssue("https://github.com/dotnet/runtime/issues/51394", TestPlatforms.iOS | TestPlatforms.tvOS | TestPlatforms.MacCatalyst)] public static void NormalizationTest(int codepage, bool normalized, bool normalizedC, bool normalizedD, bool normalizedKC, bool normalizedKD) { Encoding encoding = Encoding.GetEncoding(codepage); diff --git a/src/libraries/System.Text.Encoding/tests/Encoding/EncodingGetEncodingTests.cs b/src/libraries/System.Text.Encoding/tests/Encoding/EncodingGetEncodingTests.cs index 608019a..6a5fc49 100644 --- a/src/libraries/System.Text.Encoding/tests/Encoding/EncodingGetEncodingTests.cs +++ b/src/libraries/System.Text.Encoding/tests/Encoding/EncodingGetEncodingTests.cs @@ -90,8 +90,6 @@ namespace System.Text.Tests [ActiveIssue("https://github.com/dotnet/runtime/issues/38433", TestPlatforms.Browser)] // wasm doesn't honor runtimeconfig.json [Fact] - [ActiveIssue("https://github.com/dotnet/runtime/issues/50573", TestPlatforms.Android)] - [ActiveIssue("https://github.com/dotnet/runtime/issues/51394", TestPlatforms.iOS | TestPlatforms.tvOS | TestPlatforms.MacCatalyst)] public void TestEncodingNameAndCopdepageNumber() { foreach (var map in s_mapping) @@ -103,8 +101,6 @@ namespace System.Text.Tests [ActiveIssue("https://github.com/dotnet/runtime/issues/38433", TestPlatforms.Browser)] // wasm doesn't honor runtimeconfig.json [Fact] - [ActiveIssue("https://github.com/dotnet/runtime/issues/50573", TestPlatforms.Android)] - [ActiveIssue("https://github.com/dotnet/runtime/issues/51394", TestPlatforms.iOS | TestPlatforms.tvOS | TestPlatforms.MacCatalyst)] public void GetEncoding_EncodingName() { using (new ThreadCultureChange(CultureInfo.InvariantCulture)) @@ -125,8 +121,6 @@ namespace System.Text.Tests [ActiveIssue("https://github.com/dotnet/runtime/issues/38433", TestPlatforms.Browser)] // wasm doesn't honor runtimeconfig.json [Fact] - [ActiveIssue("https://github.com/dotnet/runtime/issues/50573", TestPlatforms.Android)] - [ActiveIssue("https://github.com/dotnet/runtime/issues/51394", TestPlatforms.iOS | TestPlatforms.tvOS | TestPlatforms.MacCatalyst)] public void GetEncoding_WebName() { foreach (var mapping in s_codePageToWebNameMappings) diff --git a/src/libraries/System.Text.Encoding/tests/System.Text.Encoding.Tests.csproj b/src/libraries/System.Text.Encoding/tests/System.Text.Encoding.Tests.csproj index dd0551c..73021ff 100644 --- a/src/libraries/System.Text.Encoding/tests/System.Text.Encoding.Tests.csproj +++ b/src/libraries/System.Text.Encoding/tests/System.Text.Encoding.Tests.csproj @@ -6,6 +6,7 @@ $(NetCoreAppCurrent) $(NoWarn),SYSLIB0001 + true @@ -86,9 +87,6 @@ - - - diff --git a/src/libraries/System.Text.Encoding/tests/UTF7Encoding/UTF7EncodingEncode.cs b/src/libraries/System.Text.Encoding/tests/UTF7Encoding/UTF7EncodingEncode.cs index c4a5497..781c844 100644 --- a/src/libraries/System.Text.Encoding/tests/UTF7Encoding/UTF7EncodingEncode.cs +++ b/src/libraries/System.Text.Encoding/tests/UTF7Encoding/UTF7EncodingEncode.cs @@ -61,8 +61,6 @@ namespace System.Text.Tests [Theory] [MemberData(nameof(Encode_Basic_TestData))] - [ActiveIssue("https://github.com/dotnet/runtime/issues/50573", TestPlatforms.Android)] - [ActiveIssue("https://github.com/dotnet/runtime/issues/51394", TestPlatforms.iOS | TestPlatforms.tvOS | TestPlatforms.MacCatalyst)] public void Encode_Basic(string source, int index, int count, byte[] expected) { Encode_Advanced(true, source, index, count, expected); diff --git a/src/libraries/System.Text.Encoding/tests/UTF7Encoding/UTF7EncodingTests.cs b/src/libraries/System.Text.Encoding/tests/UTF7Encoding/UTF7EncodingTests.cs index 0cfe89e..c8d628c 100644 --- a/src/libraries/System.Text.Encoding/tests/UTF7Encoding/UTF7EncodingTests.cs +++ b/src/libraries/System.Text.Encoding/tests/UTF7Encoding/UTF7EncodingTests.cs @@ -52,10 +52,9 @@ namespace System.Text.Tests yield return new object[] { Encoding.UTF7 }; yield return new object[] { Encoding.GetEncoding("utf-7") }; } + [Theory] [MemberData(nameof(Encodings_TestData))] - [ActiveIssue("https://github.com/dotnet/runtime/issues/50573", TestPlatforms.Android)] - [ActiveIssue("https://github.com/dotnet/runtime/issues/51394", TestPlatforms.iOS | TestPlatforms.tvOS | TestPlatforms.MacCatalyst)] public void WebName(UTF7Encoding encoding) { Assert.Equal("utf-7", encoding.WebName); @@ -63,8 +62,6 @@ namespace System.Text.Tests [Theory] [MemberData(nameof(Encodings_TestData))] - [ActiveIssue("https://github.com/dotnet/runtime/issues/50573", TestPlatforms.Android)] - [ActiveIssue("https://github.com/dotnet/runtime/issues/51394", TestPlatforms.iOS | TestPlatforms.tvOS | TestPlatforms.MacCatalyst)] public void CodePage(UTF7Encoding encoding) { Assert.Equal(65000, encoding.CodePage); @@ -72,8 +69,6 @@ namespace System.Text.Tests [Theory] [MemberData(nameof(Encodings_TestData))] - [ActiveIssue("https://github.com/dotnet/runtime/issues/50573", TestPlatforms.Android)] - [ActiveIssue("https://github.com/dotnet/runtime/issues/51394", TestPlatforms.iOS | TestPlatforms.tvOS | TestPlatforms.MacCatalyst)] public void EncodingName(UTF7Encoding encoding) { Assert.NotEmpty(encoding.EncodingName); // Unicode (UTF-7) in en-US @@ -81,8 +76,6 @@ namespace System.Text.Tests [Theory] [MemberData(nameof(Encodings_TestData))] - [ActiveIssue("https://github.com/dotnet/runtime/issues/50573", TestPlatforms.Android)] - [ActiveIssue("https://github.com/dotnet/runtime/issues/51394", TestPlatforms.iOS | TestPlatforms.tvOS | TestPlatforms.MacCatalyst)] public void IsSingleByte(UTF7Encoding encoding) { Assert.False(encoding.IsSingleByte); @@ -90,8 +83,6 @@ namespace System.Text.Tests [Theory] [MemberData(nameof(Encodings_TestData))] - [ActiveIssue("https://github.com/dotnet/runtime/issues/50573", TestPlatforms.Android)] - [ActiveIssue("https://github.com/dotnet/runtime/issues/51394", TestPlatforms.iOS | TestPlatforms.tvOS | TestPlatforms.MacCatalyst)] public void Clone(UTF7Encoding encoding) { UTF7Encoding clone = (UTF7Encoding)encoding.Clone(); @@ -125,8 +116,6 @@ namespace System.Text.Tests [Theory] [MemberData(nameof(Equals_TestData))] - [ActiveIssue("https://github.com/dotnet/runtime/issues/50573", TestPlatforms.Android)] - [ActiveIssue("https://github.com/dotnet/runtime/issues/51394", TestPlatforms.iOS | TestPlatforms.tvOS | TestPlatforms.MacCatalyst)] public void EqualsTest(UTF7Encoding encoding, object value, bool expected) { Assert.Equal(expected, encoding.Equals(value)); diff --git a/src/libraries/System.Text.Encoding/tests/runtimeconfig.template.json b/src/libraries/System.Text.Encoding/tests/runtimeconfig.template.json deleted file mode 100644 index f24ff82..0000000 --- a/src/libraries/System.Text.Encoding/tests/runtimeconfig.template.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "configProperties": { - "System.Text.Encoding.EnableUnsafeUTF7Encoding": true - } -} diff --git a/src/tasks/AndroidAppBuilder/Templates/monodroid.c b/src/tasks/AndroidAppBuilder/Templates/monodroid.c index d2ed757..17f6c2b 100644 --- a/src/tasks/AndroidAppBuilder/Templates/monodroid.c +++ b/src/tasks/AndroidAppBuilder/Templates/monodroid.c @@ -239,6 +239,8 @@ mono_droid_runtime_init (const char* executable, int managed_argc, char* managed arg->kind = 0; arg->runtimeconfig.name.path = file_path; monovm_runtimeconfig_initialize (arg, cleanup_runtime_config, file_path); + } else { + free (file_path); } monovm_initialize(2, appctx_keys, appctx_values); diff --git a/src/tasks/AppleAppBuilder/Templates/runtime.m b/src/tasks/AppleAppBuilder/Templates/runtime.m index 8b8d6d1..9b90f44 100644 --- a/src/tasks/AppleAppBuilder/Templates/runtime.m +++ b/src/tasks/AppleAppBuilder/Templates/runtime.m @@ -26,6 +26,8 @@ static char *bundle_path; #define APPLE_RUNTIME_IDENTIFIER "//%APPLE_RUNTIME_IDENTIFIER%" +#define RUNTIMECONFIG_BIN_FILE "runtimeconfig.bin" + const char * get_bundle_path (void) { @@ -205,6 +207,13 @@ register_dllmap (void) //%DllMap% } +void +cleanup_runtime_config (MonovmRuntimeConfigArguments *args, void *user_data) +{ + free (args); + free (user_data); +} + #if FORCE_INTERPRETER || FORCE_AOT || (!TARGET_OS_SIMULATOR && !TARGET_OS_MACCATALYST) void mono_jit_set_aot_mode (MonoAotMode mode); void register_aot_modules (void); @@ -258,6 +267,23 @@ mono_ios_runtime_init (void) #endif }; + char *file_name = RUNTIMECONFIG_BIN_FILE; + int str_len = strlen (bundle) + strlen (file_name) + 2; + char *file_path = (char *)malloc (sizeof (char) * str_len); + int num_char = snprintf (file_path, str_len, "%s/%s", bundle, file_name); + struct stat buffer; + + assert (num_char > 0 && num_char < str_len); + + if (stat (file_path, &buffer) == 0) { + MonovmRuntimeConfigArguments *arg = (MonovmRuntimeConfigArguments *)malloc (sizeof (MonovmRuntimeConfigArguments)); + arg->kind = 0; + arg->runtimeconfig.name.path = file_path; + monovm_runtimeconfig_initialize (arg, cleanup_runtime_config, file_path); + } else { + free (file_path); + } + monovm_initialize (sizeof (appctx_keys) / sizeof (appctx_keys [0]), appctx_keys, appctx_values); #if FORCE_INTERPRETER -- 2.7.4