Skip to content

Commit

Permalink
Change how ResolveDllImportTests reports failures
Browse files Browse the repository at this point in the history
  • Loading branch information
tannergooding committed Jul 21, 2024
1 parent 16da688 commit 10fb7bc
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions tests/Interop/Windows/ResolveDllImportTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Reflection;
using System.Runtime.InteropServices;
Expand All @@ -27,13 +28,18 @@ public static void ResolveDllImportTest()

private static void ProcessAssembly(Assembly assembly)
{
var unresolved = new List<string>();

foreach (var type in assembly.GetTypes())
{
ProcessType(type);
ProcessType(type, unresolved);
}

Assert.That(unresolved, Is.Empty);
}

private static void ProcessMethod(MethodInfo method)
#pragma warning disable CA1031 // Do not catch general exception types
private static void ProcessMethod(MethodInfo method, List<string> unresolved)
{
if (!method.Attributes.HasFlag(MethodAttributes.PinvokeImpl))
{
Expand Down Expand Up @@ -172,22 +178,24 @@ private static void ProcessMethod(MethodInfo method)

default:
{
throw;
unresolved.Add(method.Name);
break;
}
}
}
}
#pragma warning restore CA1031 // Do not catch general exception types

private static void ProcessType([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods | DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes)] Type type)
private static void ProcessType([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods | DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes)] Type type, List<string> unresolved)
{
foreach (var method in type.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static))
{
ProcessMethod(method);
ProcessMethod(method, unresolved);
}

foreach (var nestedType in type.GetNestedTypes(BindingFlags.Public | BindingFlags.NonPublic))
{
ProcessType(nestedType);
ProcessType(nestedType, unresolved);
}
}
}

0 comments on commit 10fb7bc

Please sign in to comment.