From 240d50133cfab59f57b485a602655353edd81597 Mon Sep 17 00:00:00 2001 From: Adam Sitnik Date: Fri, 11 Apr 2025 12:55:49 +0200 Subject: [PATCH 1/2] Again adjust for culture name normalization in AssemblyNameInfoFuzzer --- .../Fuzzers/AssemblyNameInfoFuzzer.cs | 4 +++- .../tests/Metadata/AssemblyNameInfoTests.cs | 20 ++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/libraries/Fuzzing/DotnetFuzzing/Fuzzers/AssemblyNameInfoFuzzer.cs b/src/libraries/Fuzzing/DotnetFuzzing/Fuzzers/AssemblyNameInfoFuzzer.cs index 32b7e8a2ff1b19..0fbc20941513e4 100644 --- a/src/libraries/Fuzzing/DotnetFuzzing/Fuzzers/AssemblyNameInfoFuzzer.cs +++ b/src/libraries/Fuzzing/DotnetFuzzing/Fuzzers/AssemblyNameInfoFuzzer.cs @@ -68,11 +68,13 @@ private static void Test(Span span) // When converting to AssemblyName, the culture name is lower-cased // by the CultureInfo ctor that calls CultureData.GetCultureData // which lowers the name for caching and normalization purposes. + // It lowers only the part before the `-` character, but we lower + // the whole string for the sake of simplicity of this test. string lowerCase = fromTryParse.CultureName.ToLower(); if (lowerCase != "c") { - Assert.Equal(lowerCase, fromParse.ToAssemblyName().CultureName); + Assert.Equal(lowerCase, fromParse.ToAssemblyName().CultureName!.ToLower()); } else { diff --git a/src/libraries/System.Reflection.Metadata/tests/Metadata/AssemblyNameInfoTests.cs b/src/libraries/System.Reflection.Metadata/tests/Metadata/AssemblyNameInfoTests.cs index d399f5582390cf..963c177ac19a49 100644 --- a/src/libraries/System.Reflection.Metadata/tests/Metadata/AssemblyNameInfoTests.cs +++ b/src/libraries/System.Reflection.Metadata/tests/Metadata/AssemblyNameInfoTests.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Collections.Generic; using System.Globalization; using Xunit; @@ -106,15 +107,24 @@ public void EmptyInputIsInvalid() Assert.Throws(() => AssemblyNameInfo.Parse("".AsSpan())); } - [Fact] - public void CultureNameGetLoweredByToAssemblyName() + + public static IEnumerable CultureNameGetLoweredByToAssemblyName_Arguments() + { + yield return new object[] { "aA", "aa" }; + yield return new object[] { "B-BB", PlatformDetection.IsNetFramework ? "B-BB" : "b-BB" }; + } + + [Theory] + [MemberData(nameof(CultureNameGetLoweredByToAssemblyName_Arguments))] + public void CultureNameGetLoweredByToAssemblyName(string input, string expected) { - AssemblyNameInfo assemblyNameInfo = AssemblyNameInfo.Parse("test,culture=aA".AsSpan()); - Assert.Equal("aA", assemblyNameInfo.CultureName); + AssemblyNameInfo assemblyNameInfo = AssemblyNameInfo.Parse($"test,culture={input}".AsSpan()); + Assert.Equal(input, assemblyNameInfo.CultureName); // When converting to AssemblyName, the culture name is lower-cased // by the CultureInfo ctor that calls CultureData.GetCultureData // which lowers the name for caching and normalization purposes. - Assert.Equal("aa", assemblyNameInfo.ToAssemblyName().CultureName); + // It lowers only the part before the `-` character. + Assert.Equal(expected, assemblyNameInfo.ToAssemblyName().CultureName); } [Theory] From fd312ace6d4f46d24f0a6cf4971b10bee642b740 Mon Sep 17 00:00:00 2001 From: Adam Sitnik Date: Mon, 30 Jun 2025 14:29:07 +0200 Subject: [PATCH 2/2] Don't run the test on Nano --- .../tests/Metadata/AssemblyNameInfoTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/System.Reflection.Metadata/tests/Metadata/AssemblyNameInfoTests.cs b/src/libraries/System.Reflection.Metadata/tests/Metadata/AssemblyNameInfoTests.cs index 963c177ac19a49..05db85d2f1d14c 100644 --- a/src/libraries/System.Reflection.Metadata/tests/Metadata/AssemblyNameInfoTests.cs +++ b/src/libraries/System.Reflection.Metadata/tests/Metadata/AssemblyNameInfoTests.cs @@ -114,7 +114,7 @@ public static IEnumerable CultureNameGetLoweredByToAssemblyName_Argume yield return new object[] { "B-BB", PlatformDetection.IsNetFramework ? "B-BB" : "b-BB" }; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotWindowsNanoServer))] [MemberData(nameof(CultureNameGetLoweredByToAssemblyName_Arguments))] public void CultureNameGetLoweredByToAssemblyName(string input, string expected) {