From def91f6d473fdf45626eba1aca4e47c801942e28 Mon Sep 17 00:00:00 2001 From: pedrobsaila Date: Sat, 14 Aug 2021 12:33:38 +0200 Subject: [PATCH 1/7] return empty string in AssemblyBuilder.Location --- .../src/System/Reflection/Emit/AssemblyBuilder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs index 6df43fcf24256..c368a319e5c64 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs @@ -104,7 +104,7 @@ public override FileStream[] GetFiles(bool getResourceModules) throw new NotSupportedException(SR.NotSupported_DynamicAssembly); } - public override string Location => throw new NotSupportedException(SR.NotSupported_DynamicAssembly); + public override string Location => string.Empty; [RequiresAssemblyFiles(ThrowingMessageInRAF)] public override string? CodeBase => throw new NotSupportedException(SR.NotSupported_DynamicAssembly); From 9bc1a728cf3edc704d4d28888c505bd15ab590a1 Mon Sep 17 00:00:00 2001 From: pedrobsaila Date: Sun, 15 Aug 2021 23:24:44 +0200 Subject: [PATCH 2/7] add test for InternalAssemblyBuilder.Location = string.Empty --- .../tests/AssemblyBuilderTests.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs b/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs index fb86151fdfcbc..05ea72ed9b7cf 100644 --- a/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs +++ b/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; -using System.Runtime.InteropServices; using Xunit; namespace System.Reflection.Emit.Tests @@ -424,7 +423,17 @@ void Invoke_Private_SameAssembly_ThrowsMethodAccessException() Assert.Throws(() => d ()); } - + [Fact] + public void DefineDynamicAssembly_InternalAssemblyLocationIsEmpty() + { + AssemblyBuilder assembly = Helpers.DynamicAssembly(); + object internalAssemblyBuilder = assembly.GetType() + .GetProperty("InternalAssembly", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(assembly); + object locationObj = internalAssemblyBuilder.GetType().GetProperty("Location", BindingFlags.Public | BindingFlags.Instance) + .GetValue(internalAssemblyBuilder); + string location = Assert.IsType(locationObj); + Assert.Empty(location); + } } } From 3f1a18364dfe1e72a8501785c138c8ec0716e197 Mon Sep 17 00:00:00 2001 From: pedrobsaila Date: Sun, 15 Aug 2021 23:58:29 +0200 Subject: [PATCH 3/7] drop private reflection --- .../tests/AssemblyBuilderTests.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs b/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs index 05ea72ed9b7cf..c7ed967a806dc 100644 --- a/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs +++ b/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; +using System.Runtime.Loader; using Xunit; namespace System.Reflection.Emit.Tests @@ -427,12 +428,11 @@ void Invoke_Private_SameAssembly_ThrowsMethodAccessException() public void DefineDynamicAssembly_InternalAssemblyLocationIsEmpty() { AssemblyBuilder assembly = Helpers.DynamicAssembly(); - object internalAssemblyBuilder = assembly.GetType() - .GetProperty("InternalAssembly", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(assembly); - object locationObj = internalAssemblyBuilder.GetType().GetProperty("Location", BindingFlags.Public | BindingFlags.Instance) - .GetValue(internalAssemblyBuilder); - string location = Assert.IsType(locationObj); - Assert.Empty(location); + Assembly internalAssemblyBuilder = AssemblyLoadContext.Default.Assemblies + .FirstOrDefault(_ => _.FullName == assembly.FullName); + + Assert.NotNull(internalAssemblyBuilder); + Assert.Empty(internalAssemblyBuilder.Location); } } From 5a96ce727c311a32e77eca945502f4a65f272abf Mon Sep 17 00:00:00 2001 From: pedrobsaila Date: Mon, 16 Aug 2021 00:51:28 +0200 Subject: [PATCH 4/7] rename test assembly --- .../System.Reflection.Emit/tests/AssemblyBuilderTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs b/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs index c7ed967a806dc..42da29b13de81 100644 --- a/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs +++ b/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs @@ -427,7 +427,7 @@ void Invoke_Private_SameAssembly_ThrowsMethodAccessException() [Fact] public void DefineDynamicAssembly_InternalAssemblyLocationIsEmpty() { - AssemblyBuilder assembly = Helpers.DynamicAssembly(); + AssemblyBuilder assembly = Helpers.DynamicAssembly(nameof(DefineDynamicAssembly_InternalAssemblyLocationIsEmpty)); Assembly internalAssemblyBuilder = AssemblyLoadContext.Default.Assemblies .FirstOrDefault(_ => _.FullName == assembly.FullName); From ce26197633cd524da5c5e1d295738edc2cd21e93 Mon Sep 17 00:00:00 2001 From: pedrobsaila Date: Tue, 17 Aug 2021 21:39:11 +0200 Subject: [PATCH 5/7] fix ko unit test on mono --- .../src/System/Reflection/Emit/AssemblyBuilder.cs | 2 +- .../System.Reflection.Emit/tests/AssemblyBuilderTests.cs | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs index 631b6ea927ede..4a68f23ab51f0 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs @@ -10,7 +10,7 @@ public sealed partial class AssemblyBuilder : Assembly { [RequiresAssemblyFiles(ThrowingMessageInRAF)] public override string? CodeBase => throw new NotSupportedException(SR.NotSupported_DynamicAssembly); - public override string Location => throw new NotSupportedException(SR.NotSupported_DynamicAssembly); + public override string Location => string.Empty; public override MethodInfo? EntryPoint => null; public override bool IsDynamic => true; diff --git a/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs b/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs index 42da29b13de81..3b18390e77117 100644 --- a/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs +++ b/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; -using System.Runtime.Loader; using Xunit; namespace System.Reflection.Emit.Tests @@ -428,8 +427,8 @@ void Invoke_Private_SameAssembly_ThrowsMethodAccessException() public void DefineDynamicAssembly_InternalAssemblyLocationIsEmpty() { AssemblyBuilder assembly = Helpers.DynamicAssembly(nameof(DefineDynamicAssembly_InternalAssemblyLocationIsEmpty)); - Assembly internalAssemblyBuilder = AssemblyLoadContext.Default.Assemblies - .FirstOrDefault(_ => _.FullName == assembly.FullName); + Assembly internalAssemblyBuilder = AppDomain.CurrentDomain.GetAssemblies() + .FirstOrDefault(a => a.FullName == assembly.FullName); Assert.NotNull(internalAssemblyBuilder); Assert.Empty(internalAssemblyBuilder.Location); From d5d8ae193e2d12b0f21d0e52c1cc61c528442651 Mon Sep 17 00:00:00 2001 From: pedrobsaila Date: Wed, 18 Aug 2021 00:28:38 +0200 Subject: [PATCH 6/7] drop duplicate obsolete test --- .../System.Reflection/tests/CoreCLR/AssemblyTests.cs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/libraries/System.Reflection/tests/CoreCLR/AssemblyTests.cs b/src/libraries/System.Reflection/tests/CoreCLR/AssemblyTests.cs index 544fc17414aa8..5e043eb306f63 100644 --- a/src/libraries/System.Reflection/tests/CoreCLR/AssemblyTests.cs +++ b/src/libraries/System.Reflection/tests/CoreCLR/AssemblyTests.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.IO; -using System.Reflection.Emit; using System.Runtime.Loader; using Xunit; @@ -30,13 +29,6 @@ public void LoadFromStream_Location_IsEmpty() Assert.Empty(assembly.Location); } - [Fact] - public void DynamicAssembly_Location_ThrowsNotSupportedException() - { - AssemblyBuilder builder = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName("dynamic"), AssemblyBuilderAccess.Run); - Assert.Throws(() => builder.Location); - } - [Fact] public void EntryPoint() { From 8ef110f7799280873405baabeb87931d348377d4 Mon Sep 17 00:00:00 2001 From: pedrobsaila Date: Thu, 19 Aug 2021 16:13:32 +0200 Subject: [PATCH 7/7] assert on assembly builder location emptiness --- .../System.Reflection.Emit/tests/AssemblyBuilderTests.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs b/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs index 3b18390e77117..a2a65d245993d 100644 --- a/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs +++ b/src/libraries/System.Reflection.Emit/tests/AssemblyBuilderTests.cs @@ -424,12 +424,13 @@ void Invoke_Private_SameAssembly_ThrowsMethodAccessException() } [Fact] - public void DefineDynamicAssembly_InternalAssemblyLocationIsEmpty() + public void DefineDynamicAssembly_AssemblyBuilderLocationIsEmpty_InternalAssemblyBuilderLocationIsEmpty() { - AssemblyBuilder assembly = Helpers.DynamicAssembly(nameof(DefineDynamicAssembly_InternalAssemblyLocationIsEmpty)); + AssemblyBuilder assembly = Helpers.DynamicAssembly(nameof(DefineDynamicAssembly_AssemblyBuilderLocationIsEmpty_InternalAssemblyBuilderLocationIsEmpty)); Assembly internalAssemblyBuilder = AppDomain.CurrentDomain.GetAssemblies() .FirstOrDefault(a => a.FullName == assembly.FullName); + Assert.Empty(assembly.Location); Assert.NotNull(internalAssemblyBuilder); Assert.Empty(internalAssemblyBuilder.Location); }