Skip to content

Commit

Permalink
[mono] Do not throw in AssemblyExtensions.TryGetRawMetadata. (#96370)
Browse files Browse the repository at this point in the history
* [mono] Do not throw in AssemblyExtensions.TryGetRawMetadata.

* Add a test for `AssemblyExtensions.TryGetRawMetadata`.

* Try to read the assembly metadata blob in the test.
  • Loading branch information
teo-tsirpanis authored Feb 17, 2024
1 parent a98d9f0 commit 9a391bc
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using Xunit;
using System.Reflection.Metadata;
using System.Reflection;

namespace System.Runtime.Loader.Tests
{
public unsafe class AssemblyExtensionsTest
{
[Fact]
public void TryGetRawMetadata()
{
bool supportsRawMetadata = PlatformDetection.IsNotMonoRuntime && PlatformDetection.IsNotNativeAot;

Assembly assembly = typeof(AssemblyExtensionsTest).Assembly;
bool hasMetadata = assembly.TryGetRawMetadata(out byte* blob, out int length);

Assert.Equal(supportsRawMetadata, hasMetadata);
Assert.Equal(supportsRawMetadata, blob != null);
Assert.Equal(supportsRawMetadata, length > 0);

if (supportsRawMetadata)
{
var metadataReader = new MetadataReader(blob, length);
string assemblyName = metadataReader.GetString(metadataReader.GetAssemblyDefinition().Name);
Assert.Equal(assembly.GetName().Name, assemblyName);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
<PropertyGroup>
<RootNamespace>System.Runtime.Loader.Tests</RootNamespace>
<TargetFramework>$(NetCoreAppCurrent)</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<TestRuntime>true</TestRuntime>
<IncludeRemoteExecutor>true</IncludeRemoteExecutor>
<!-- Some tests rely on no deps.json file being present. -->
Expand All @@ -16,6 +17,7 @@
<ItemGroup>
<Compile Include="ApplyUpdateTest.cs" />
<Compile Include="ApplyUpdateUtil.cs" />
<Compile Include="AssemblyExtensionsTest.cs" />
<Compile Include="AssemblyLoadContextTest.cs" />
<Compile Include="CollectibleAssemblyLoadContextTest.cs" />
<Compile Include="ContextualReflection.cs" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@ namespace System.Reflection.Metadata
public static class AssemblyExtensions
{
[CLSCompliant(false)]
public static unsafe bool TryGetRawMetadata(this Assembly assembly, out byte* blob, out int length) => throw new NotImplementedException();
public static unsafe bool TryGetRawMetadata(this Assembly assembly, out byte* blob, out int length)
{
ArgumentNullException.ThrowIfNull(assembly);

blob = null;
length = 0;
return false;
}
}
}

0 comments on commit 9a391bc

Please sign in to comment.