diff --git a/TUnit.Core.SourceGenerator.Tests/AssemblyLoaderTests.Test.DotNet8_0.verified.txt b/TUnit.Core.SourceGenerator.Tests/AssemblyLoaderTests.Test.DotNet8_0.verified.txt index e0e2a7e2e9..cca5c88b27 100644 --- a/TUnit.Core.SourceGenerator.Tests/AssemblyLoaderTests.Test.DotNet8_0.verified.txt +++ b/TUnit.Core.SourceGenerator.Tests/AssemblyLoaderTests.Test.DotNet8_0.verified.txt @@ -1,16 +1,11 @@ [ // #pragma warning disable -namespace AssemblyLoaderTests; - -public static class AssemblyLoader +public static class AssemblyLoader_Guid { [global::System.Runtime.CompilerServices.ModuleInitializer] public static void Initialize() { - global::TUnit.Core.SourceRegistrar.RegisterAssembly(() => typeof(global::System.SequencePosition).Assembly); - global::TUnit.Core.SourceRegistrar.RegisterAssembly(() => typeof(global::System.Xml.XmlNamedNodeMap).Assembly); - global::TUnit.Core.SourceRegistrar.RegisterAssembly(() => typeof(global::System.Xml.Linq.XAttribute).Assembly); global::TUnit.Core.SourceRegistrar.RegisterAssembly(() => typeof(global::TUnit.Core.AsyncEvent<>).Assembly); } } diff --git a/TUnit.Core.SourceGenerator.Tests/AssemblyLoaderTests.Test.DotNet9_0.verified.txt b/TUnit.Core.SourceGenerator.Tests/AssemblyLoaderTests.Test.DotNet9_0.verified.txt index 556c15a76a..cca5c88b27 100644 --- a/TUnit.Core.SourceGenerator.Tests/AssemblyLoaderTests.Test.DotNet9_0.verified.txt +++ b/TUnit.Core.SourceGenerator.Tests/AssemblyLoaderTests.Test.DotNet9_0.verified.txt @@ -1,17 +1,11 @@ [ // #pragma warning disable -namespace AssemblyLoaderTests; - -public static class AssemblyLoader +public static class AssemblyLoader_Guid { [global::System.Runtime.CompilerServices.ModuleInitializer] public static void Initialize() { - global::TUnit.Core.SourceRegistrar.RegisterAssembly(() => typeof(global::System.SequencePosition).Assembly); - global::TUnit.Core.SourceRegistrar.RegisterAssembly(() => typeof(global::System.Diagnostics.ActivityChangedEventArgs).Assembly); - global::TUnit.Core.SourceRegistrar.RegisterAssembly(() => typeof(global::System.Xml.XmlNamedNodeMap).Assembly); - global::TUnit.Core.SourceRegistrar.RegisterAssembly(() => typeof(global::System.Xml.Linq.XAttribute).Assembly); global::TUnit.Core.SourceRegistrar.RegisterAssembly(() => typeof(global::TUnit.Core.AsyncEvent<>).Assembly); } } diff --git a/TUnit.Core.SourceGenerator.Tests/AssemblyLoaderTests.Test.Net4_7.verified.txt b/TUnit.Core.SourceGenerator.Tests/AssemblyLoaderTests.Test.Net4_7.verified.txt index b099a991be..cca5c88b27 100644 --- a/TUnit.Core.SourceGenerator.Tests/AssemblyLoaderTests.Test.Net4_7.verified.txt +++ b/TUnit.Core.SourceGenerator.Tests/AssemblyLoaderTests.Test.Net4_7.verified.txt @@ -1,14 +1,11 @@ [ // #pragma warning disable -namespace AssemblyLoaderTests; - -public static class AssemblyLoader +public static class AssemblyLoader_Guid { [global::System.Runtime.CompilerServices.ModuleInitializer] public static void Initialize() { - global::TUnit.Core.SourceRegistrar.RegisterAssembly(() => typeof(global::System.Runtime.CompilerServices.AsyncMethodBuilderAttribute).Assembly); global::TUnit.Core.SourceRegistrar.RegisterAssembly(() => typeof(global::TUnit.Core.AsyncEvent<>).Assembly); } } diff --git a/TUnit.Core.SourceGenerator.Tests/AssemblyLoaderTests.cs b/TUnit.Core.SourceGenerator.Tests/AssemblyLoaderTests.cs index 295d5415b8..523178b9bf 100644 --- a/TUnit.Core.SourceGenerator.Tests/AssemblyLoaderTests.cs +++ b/TUnit.Core.SourceGenerator.Tests/AssemblyLoaderTests.cs @@ -1,3 +1,4 @@ +using System.Runtime.InteropServices; using TUnit.Core.SourceGenerator.CodeGenerators; using TUnit.Core.SourceGenerator.Tests.Options; @@ -9,9 +10,21 @@ internal class AssemblyLoaderTests : TestsBase public Task Test() => RunTest(Path.Combine(Git.RootDirectory.FullName, "TUnit.TestProject", "BasicTests.cs"), - new RunTestOptions() + new RunTestOptions { - VerifyConfigurator = verify => verify.UniqueForTargetFrameworkAndVersion() + VerifyConfigurator = verify => + { + return verify.UniqueForTargetFrameworkAndVersion() + .ScrubLinesWithReplace(line => + { + if (line.Contains("public static class AssemblyLoader")) + { + return "public static class AssemblyLoader_Guid"; + } + + return line; + }); + } }, async generatedFiles => { diff --git a/TUnit.Core.SourceGenerator/CodeGenerators/AssemblyLoaderGenerator.cs b/TUnit.Core.SourceGenerator/CodeGenerators/AssemblyLoaderGenerator.cs index aedede8c59..f3b0d2df8c 100644 --- a/TUnit.Core.SourceGenerator/CodeGenerators/AssemblyLoaderGenerator.cs +++ b/TUnit.Core.SourceGenerator/CodeGenerators/AssemblyLoaderGenerator.cs @@ -35,22 +35,16 @@ private void GenerateCode(SourceProductionContext context, Compilation compilati .ToArray(); var sourceBuilder = new SourceCodeWriter(); - + sourceBuilder.WriteLine("// "); sourceBuilder.WriteLine("#pragma warning disable"); - - if(!string.IsNullOrEmpty(compilation.Assembly.Name)) - { - sourceBuilder.WriteLine($"namespace {compilation.Assembly.Name};"); - sourceBuilder.WriteLine(); - } - - sourceBuilder.WriteLine("public static class AssemblyLoader"); + + sourceBuilder.WriteLine("public static class AssemblyLoader" + Guid.NewGuid().ToString("N")); sourceBuilder.WriteLine("{"); sourceBuilder.WriteLine("[global::System.Runtime.CompilerServices.ModuleInitializer]"); sourceBuilder.WriteLine("public static void Initialize()"); sourceBuilder.WriteLine("{"); - + foreach (var type in types) { var typeName = type.GloballyQualifiedNonGeneric(); @@ -59,13 +53,13 @@ private void GenerateCode(SourceProductionContext context, Compilation compilati { typeName += $"<{new string(',', type.TypeParameters.Length - 1)}>"; } - + sourceBuilder.WriteLine($"global::TUnit.Core.SourceRegistrar.RegisterAssembly(() => typeof({typeName}).Assembly);"); } - + sourceBuilder.WriteLine("}"); sourceBuilder.WriteLine("}"); - + context.AddSource("AssemblyLoader.g.cs", sourceBuilder.ToString()); } @@ -108,6 +102,7 @@ private static bool IsSystemAssembly(IAssemblySymbol assemblySymbol) return publicKeyToken.SequenceEqual(new byte[] { 0xb7, 0x7a, 0x5c, 0x56, 0x19, 0x34, 0xe0, 0x89 }) // .NET Framework || publicKeyToken.SequenceEqual(new byte[] { 0x7c, 0xec, 0x85, 0xd7, 0xbe, 0xa7, 0x79, 0x8e }) // .NET Core + || publicKeyToken.SequenceEqual(new byte[] { 0xcc, 0x7b, 0x13, 0xff, 0xcd, 0x2d, 0xdd, 0x51 }) // System.Private || publicKeyToken.SequenceEqual(new byte[] { 0xb0, 0x3f, 0x5f, 0x7f, 0x11, 0xd5, 0x0a, 0x3a }); // mscorlib } diff --git a/TUnit.PublicAPI/Tests.Playwright_Library_Has_No_API_Changes.DotNet2_0.verified.txt b/TUnit.PublicAPI/Tests.Playwright_Library_Has_No_API_Changes.DotNet2_0.verified.txt index 2fbc0fff73..f9e0121abc 100644 --- a/TUnit.PublicAPI/Tests.Playwright_Library_Has_No_API_Changes.DotNet2_0.verified.txt +++ b/TUnit.PublicAPI/Tests.Playwright_Library_Has_No_API_Changes.DotNet2_0.verified.txt @@ -1,10 +1,10 @@ [assembly: System.Runtime.Versioning.TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName=".NET Standard 2.0")] +public static class AssemblyLoader_Guid +{ + public static void Initialize() { } +} namespace TUnit.Playwright { - public static class AssemblyLoader - { - public static void Initialize() { } - } public class BrowserTest : TUnit.Playwright.PlaywrightTest { public BrowserTest() { } diff --git a/TUnit.PublicAPI/Tests.Playwright_Library_Has_No_API_Changes.DotNet8_0.verified.txt b/TUnit.PublicAPI/Tests.Playwright_Library_Has_No_API_Changes.DotNet8_0.verified.txt index bd3cf63c5b..022bef3662 100644 --- a/TUnit.PublicAPI/Tests.Playwright_Library_Has_No_API_Changes.DotNet8_0.verified.txt +++ b/TUnit.PublicAPI/Tests.Playwright_Library_Has_No_API_Changes.DotNet8_0.verified.txt @@ -1,11 +1,11 @@ [assembly: System.Runtime.Versioning.TargetFramework(".NETCoreApp,Version=v8.0", FrameworkDisplayName=".NET 8.0")] +public static class AssemblyLoader_Guid +{ + [System.Runtime.CompilerServices.ModuleInitializer] + public static void Initialize() { } +} namespace TUnit.Playwright { - public static class AssemblyLoader - { - [System.Runtime.CompilerServices.ModuleInitializer] - public static void Initialize() { } - } public class BrowserTest : TUnit.Playwright.PlaywrightTest { public BrowserTest() { } diff --git a/TUnit.PublicAPI/Tests.Playwright_Library_Has_No_API_Changes.DotNet9_0.verified.txt b/TUnit.PublicAPI/Tests.Playwright_Library_Has_No_API_Changes.DotNet9_0.verified.txt index 12661f6562..1491edf0d6 100644 --- a/TUnit.PublicAPI/Tests.Playwright_Library_Has_No_API_Changes.DotNet9_0.verified.txt +++ b/TUnit.PublicAPI/Tests.Playwright_Library_Has_No_API_Changes.DotNet9_0.verified.txt @@ -1,11 +1,11 @@ [assembly: System.Runtime.Versioning.TargetFramework(".NETCoreApp,Version=v9.0", FrameworkDisplayName=".NET 9.0")] +public static class AssemblyLoader_Guid +{ + [System.Runtime.CompilerServices.ModuleInitializer] + public static void Initialize() { } +} namespace TUnit.Playwright { - public static class AssemblyLoader - { - [System.Runtime.CompilerServices.ModuleInitializer] - public static void Initialize() { } - } public class BrowserTest : TUnit.Playwright.PlaywrightTest { public BrowserTest() { } diff --git a/TUnit.PublicAPI/Tests.cs b/TUnit.PublicAPI/Tests.cs index a4166344e6..a3c5144830 100644 --- a/TUnit.PublicAPI/Tests.cs +++ b/TUnit.PublicAPI/Tests.cs @@ -46,6 +46,15 @@ private async Task VerifyPublicApi(Assembly assembly) await Verify(publicApi) .AddScrubber(sb => Scrub(sb)) .ScrubLinesWithReplace(x => x.Replace("\r\n", "\n")) + .ScrubLinesWithReplace(line => + { + if (line.Contains("public static class AssemblyLoader")) + { + return "public static class AssemblyLoader_Guid"; + } + + return line; + }) .OnVerifyMismatch(async (pair, message, verify) => { var received = await FilePolyfill.ReadAllTextAsync(pair.ReceivedPath);