From 10fb7bc15767cc17e925146ba6d8cb7d6eda3782 Mon Sep 17 00:00:00 2001 From: Tanner Gooding Date: Sun, 21 Jul 2024 10:32:40 -0700 Subject: [PATCH] Change how ResolveDllImportTests reports failures --- .../Interop/Windows/ResolveDllImportTests.cs | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/tests/Interop/Windows/ResolveDllImportTests.cs b/tests/Interop/Windows/ResolveDllImportTests.cs index 850243922d..95ee31d695 100644 --- a/tests/Interop/Windows/ResolveDllImportTests.cs +++ b/tests/Interop/Windows/ResolveDllImportTests.cs @@ -2,6 +2,7 @@ using NUnit.Framework; using System; +using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Reflection; using System.Runtime.InteropServices; @@ -27,13 +28,18 @@ public static void ResolveDllImportTest() private static void ProcessAssembly(Assembly assembly) { + var unresolved = new List(); + 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 unresolved) { if (!method.Attributes.HasFlag(MethodAttributes.PinvokeImpl)) { @@ -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 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); } } }