From f8b8322d878500a598083a2fadeb6cc27a842e6b Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Mon, 24 May 2021 14:38:34 +0200 Subject: [PATCH 1/2] Add runtimeconfig.json support to AppleAppBuilder, reenable affected tests --- eng/testing/tests.mobile.targets | 48 +++++++++++-------- .../tests/Encoding/Encoding.cs | 4 -- .../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 -- .../AndroidAppBuilder/Templates/monodroid.c | 2 + src/tasks/AppleAppBuilder/Templates/runtime.m | 26 ++++++++++ 9 files changed, 58 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 2fedf68d956005..150b45b1664095 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,34 @@ + + + + + $(PublishDir)$(AssemblyName).runtimeconfig.json + $(PublishDir)runtimeconfig.bin + + + + + + + + + + + + - - + @@ -76,16 +95,12 @@ x86 AndroidTestRunner.dll - $(PublishDir)$(AssemblyName).runtimeconfig.json - $(PublishDir)runtimeconfig.bin @(MonoAOTCompilerDefaultAotArguments, ';') @(MonoAOTCompilerDefaultProcessArguments, ';') - - @@ -94,13 +109,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 f4860b20cc314f..e7640cbea8c8b6 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 @@ public static void GetEncodingsTest() [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 @@ public static void VerifyCodePageAttributes(int codepage, string name, string bo [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 608019a68146bb..6a5fc49cf2eb88 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 @@ public CodePageMapping(string name, int codepage) [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 @@ public void TestEncodingNameAndCopdepageNumber() [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 @@ public void GetEncoding_EncodingName() [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 dd0551c8c467e3..73021ff5eb92af 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 @@ -85,9 +86,6 @@ - - - diff --git a/src/libraries/System.Text.Encoding/tests/UTF7Encoding/UTF7EncodingEncode.cs b/src/libraries/System.Text.Encoding/tests/UTF7Encoding/UTF7EncodingEncode.cs index c4a549786a30fa..781c8447ff1d3d 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 @@ public static IEnumerable Encode_Basic_TestData() [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 0cfe89e4411d7a..c8d628ceca1c73 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 @@ public static IEnumerable Encodings_TestData() 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 @@ public void WebName(UTF7Encoding encoding) [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 @@ public void CodePage(UTF7Encoding encoding) [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 @@ public void EncodingName(UTF7Encoding encoding) [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 @@ public void IsSingleByte(UTF7Encoding encoding) [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 @@ public static IEnumerable Equals_TestData() [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 f24ff824948f67..00000000000000 --- 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 d2ed75763650d2..17f6c2b3ad4ec0 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 8b8d6d181d00de..9b90f44972db37 100644 --- a/src/tasks/AppleAppBuilder/Templates/runtime.m +++ b/src/tasks/AppleAppBuilder/Templates/runtime.m @@ -26,6 +26,8 @@ #define APPLE_RUNTIME_IDENTIFIER "//%APPLE_RUNTIME_IDENTIFIER%" +#define RUNTIMECONFIG_BIN_FILE "runtimeconfig.bin" + const char * get_bundle_path (void) { @@ -205,6 +207,13 @@ //%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 @@ #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 From 74ce9a02214ea426323ef727a0ce1936409962d8 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Mon, 24 May 2021 17:14:18 +0200 Subject: [PATCH 2/2] Update tests.mobile.targets --- eng/testing/tests.mobile.targets | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eng/testing/tests.mobile.targets b/eng/testing/tests.mobile.targets index 150b45b1664095..3e5321d57ebdb4 100644 --- a/eng/testing/tests.mobile.targets +++ b/eng/testing/tests.mobile.targets @@ -59,7 +59,8 @@ + AssemblyFile="$(RuntimeConfigParserTasksAssemblyPath)" + Condition="'$(RuntimeConfigParserTasksAssemblyPath)' != ''" />