From 953ff597cf5989f4b0485907ccf8799e82b6c00a Mon Sep 17 00:00:00 2001 From: Matous Kozak Date: Tue, 19 Nov 2024 15:46:24 +0100 Subject: [PATCH 1/4] enable DefaultValueAttributeSupport --- .../targets/Microsoft.Android.Sdk.DefaultProperties.targets | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets index 7e95621a2d2..f4b2c338709 100644 --- a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets @@ -114,6 +114,8 @@ true false true + + <_DefaultValueAttributeSupport Condition="'$(_DefaultValueAttributeSupport)' == '' and '$(TrimMode)' == 'partial'">true false $(AvoidEmitForPerformance) true From 14cfd74a6f924109abf13894e5106db44ada51a5 Mon Sep 17 00:00:00 2001 From: Matous Kozak Date: Tue, 19 Nov 2024 17:54:57 +0100 Subject: [PATCH 2/4] XmlSerializer test for DefaultValueAttributes --- .../System.Xml/XmlSerializer.cs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 tests/Mono.Android-Tests/System.Xml/XmlSerializer.cs diff --git a/tests/Mono.Android-Tests/System.Xml/XmlSerializer.cs b/tests/Mono.Android-Tests/System.Xml/XmlSerializer.cs new file mode 100644 index 00000000000..61cb3ce56a9 --- /dev/null +++ b/tests/Mono.Android-Tests/System.Xml/XmlSerializer.cs @@ -0,0 +1,23 @@ +using System.Xml.Serialization; +using System.ComponentModel; + +using NUnit.Framework; + +namespace System.XmlTests { + public class C { + [DefaultValue(typeof(C), "c")] + public Type? T { get; } + } + + [TestFixture] + public class XmlSerializerTest { + + [Test] + public void TrimmingDefaultValueAttribute () + { + // Context: https://github.com/dotnet/runtime/issues/109724 + var s = new XmlSerializer(typeof(C)); + _ = new C().T; // Prevent C.T from being removed by trimming + } + } +} From 4c97e0266bc1d08ec90a4225abba38c1062e862d Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Tue, 19 Nov 2024 11:24:02 -0600 Subject: [PATCH 3/4] Update Mono.Android-Test.Shared.projitems --- tests/Mono.Android-Tests/Mono.Android-Test.Shared.projitems | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/Mono.Android-Tests/Mono.Android-Test.Shared.projitems b/tests/Mono.Android-Tests/Mono.Android-Test.Shared.projitems index 0b1ccf1d595..a13accab96d 100644 --- a/tests/Mono.Android-Tests/Mono.Android-Test.Shared.projitems +++ b/tests/Mono.Android-Tests/Mono.Android-Test.Shared.projitems @@ -48,6 +48,7 @@ + From a50c10c62e9f055307dd85dd059ded6525001679 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Tue, 19 Nov 2024 14:11:03 -0600 Subject: [PATCH 4/4] Add `-p:TestsFlavor=TrimModePartial` --- build-tools/automation/azure-pipelines.yaml | 10 ++++++++++ .../Mono.Android.NET-Tests.csproj | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/build-tools/automation/azure-pipelines.yaml b/build-tools/automation/azure-pipelines.yaml index ed8514e4c9c..0796a5fb81e 100644 --- a/build-tools/automation/azure-pipelines.yaml +++ b/build-tools/automation/azure-pipelines.yaml @@ -203,6 +203,16 @@ extends: artifactSource: bin/Test$(XA.Build.Configuration)/$(DotNetTargetFramework)-android/Mono.Android.NET_Tests-Signed.aab artifactFolder: $(DotNetTargetFramework)-NoAot + - template: /build-tools/automation/yaml-templates/apk-instrumentation.yaml@self + parameters: + configuration: $(XA.Build.Configuration) + testName: Mono.Android.NET_Tests-TrimModePartial + project: tests/Mono.Android-Tests/Runtime-Microsoft.Android.Sdk/Mono.Android.NET-Tests.csproj + testResultsFiles: TestResult-Mono.Android.NET_Tests-$(XA.Build.Configuration)TrimModePartial.xml + extraBuildArgs: -p:TestsFlavor=TrimModePartial -p:TrimMode=partial + artifactSource: bin/Test$(XA.Build.Configuration)/$(DotNetTargetFramework)-android/Mono.Android.NET_Tests-Signed.aab + artifactFolder: $(DotNetTargetFramework)-TrimModePartial + - template: /build-tools/automation/yaml-templates/apk-instrumentation.yaml@self parameters: configuration: $(XA.Build.Configuration) diff --git a/tests/Mono.Android-Tests/Runtime-Microsoft.Android.Sdk/Mono.Android.NET-Tests.csproj b/tests/Mono.Android-Tests/Runtime-Microsoft.Android.Sdk/Mono.Android.NET-Tests.csproj index d8affbe62dd..ad1e6e8e7fa 100644 --- a/tests/Mono.Android-Tests/Runtime-Microsoft.Android.Sdk/Mono.Android.NET-Tests.csproj +++ b/tests/Mono.Android-Tests/Runtime-Microsoft.Android.Sdk/Mono.Android.NET-Tests.csproj @@ -38,7 +38,8 @@ r8 full - true + true + <_DefaultValueAttributeSupport Condition="'$(TrimMode)' == 'full'">true