From a7f2119ae780607c8815838d58ccd522e5a2199e Mon Sep 17 00:00:00 2001 From: tom-englert Date: Sat, 29 Apr 2023 16:39:09 +0200 Subject: [PATCH 1/2] Fix #865: Type-name does not contain dots. --- src/Verify/VerifierSettings_PluginConvention.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Verify/VerifierSettings_PluginConvention.cs b/src/Verify/VerifierSettings_PluginConvention.cs index 81f1ffbf9b..e3536bcb53 100644 --- a/src/Verify/VerifierSettings_PluginConvention.cs +++ b/src/Verify/VerifierSettings_PluginConvention.cs @@ -1,4 +1,4 @@ -namespace VerifyTests; +namespace VerifyTests; public static partial class VerifierSettings { @@ -47,7 +47,7 @@ internal static bool TryGetType(string file, [NotNullWhen(true)] out Type? type) #pragma warning disable CS0618 var assembly = Assembly.LoadWithPartialName(name)!; #pragma warning restore CS0618 - var typeName = name.Replace("Verify.", "VerifyTests.Verify"); + var typeName = $"VerifyTests.{name.Replace(".", "")}"; type = assembly.GetType(typeName); return type != null; } From 468cdc4921f58846edaab209a16876c5364008e4 Mon Sep 17 00:00:00 2001 From: tom-englert Date: Sun, 30 Apr 2023 15:07:42 +0200 Subject: [PATCH 2/2] Add unit test --- src/Verify.Tests/PluginConventionTests.cs | 8 +++++++- src/Verify/VerifierSettings_PluginConvention.cs | 11 +++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/Verify.Tests/PluginConventionTests.cs b/src/Verify.Tests/PluginConventionTests.cs index 543c5a221d..05b65cf40e 100644 --- a/src/Verify.Tests/PluginConventionTests.cs +++ b/src/Verify.Tests/PluginConventionTests.cs @@ -1,4 +1,4 @@ - + #pragma warning disable CS0618 public class PluginConventionTests { @@ -17,6 +17,12 @@ public void TryGetType() Assert.Same(typeof(VerifySamplePlugin), type); } + [Theory] + [InlineData("VerifySamplePlugin", "VerifyTests.VerifySamplePlugin")] + [InlineData("Verify.ICSharpCode.Decompiler", "VerifyTests.VerifyICSharpCodeDecompiler")] + public void GetTypeName(string assemblyName, string expectedTypeName) => + Assert.Equal(expectedTypeName, VerifierSettings.GetTypeName(assemblyName)); + [Fact] public void InvokeInitialize() { diff --git a/src/Verify/VerifierSettings_PluginConvention.cs b/src/Verify/VerifierSettings_PluginConvention.cs index e3536bcb53..dd3218730c 100644 --- a/src/Verify/VerifierSettings_PluginConvention.cs +++ b/src/Verify/VerifierSettings_PluginConvention.cs @@ -38,20 +38,23 @@ static void ProcessFile(string file) internal static bool TryGetType(string file, [NotNullWhen(true)] out Type? type) { - var name = Path.GetFileNameWithoutExtension(file); - if (!name.StartsWith("Verify.")) + var assemblyName = Path.GetFileNameWithoutExtension(file); + if (!assemblyName.StartsWith("Verify.")) { type = null; return false; } #pragma warning disable CS0618 - var assembly = Assembly.LoadWithPartialName(name)!; + var assembly = Assembly.LoadWithPartialName(assemblyName)!; #pragma warning restore CS0618 - var typeName = $"VerifyTests.{name.Replace(".", "")}"; + var typeName = GetTypeName(assemblyName); type = assembly.GetType(typeName); return type != null; } + internal static string GetTypeName(string assemblyName) => + $"VerifyTests.{assemblyName.Replace(".", "")}"; + internal static void InvokeInitialize(Type type) { var method = type.GetMethods(BindingFlags.Static | BindingFlags.Public)