Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,106 @@ internal static class InheritedTestsFromDifferentProjectTests_NonGenericMethodDa
}


// ===== FILE SEPARATOR =====

// <auto-generated/>
#pragma warning disable

// <auto-generated/>
#pragma warning disable
#nullable enable
namespace TUnit.Generated;
internal sealed class InheritedTestsFromDifferentProjectTests_VerifyInheritedCategoriesAreAvailable_TestSource_GUID : global::TUnit.Core.Interfaces.SourceGenerator.ITestSource
{
public async global::System.Collections.Generic.IAsyncEnumerable<global::TUnit.Core.TestMetadata> GetTestsAsync(string testSessionId, [global::System.Runtime.CompilerServices.EnumeratorCancellation] global::System.Threading.CancellationToken cancellationToken = default)
{
var metadata = new global::TUnit.Core.TestMetadata<global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests>
{
TestName = "VerifyInheritedCategoriesAreAvailable",
TestClassType = typeof(global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests),
TestMethodName = "VerifyInheritedCategoriesAreAvailable",
Dependencies = global::System.Array.Empty<global::TUnit.Core.TestDependency>(),
AttributeFactory = () =>
[
new global::TUnit.Core.TestAttribute(),
new global::TUnit.TestProject.Attributes.EngineTest(Pass),
new global::TUnit.Core.InheritsTestsAttribute()
],
DataSources = new global::TUnit.Core.IDataSourceAttribute[]
{
},
ClassDataSources = new global::TUnit.Core.IDataSourceAttribute[]
{
},
PropertyDataSources = new global::TUnit.Core.PropertyDataSource[]
{
},
PropertyInjections = new global::TUnit.Core.PropertyInjectionData[]
{
},
InheritanceDepth = 0,
FilePath = @"",
LineNumber = 26,
MethodMetadata = new global::TUnit.Core.MethodMetadata
{
Type = typeof(global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests),
TypeReference = global::TUnit.Core.TypeReference.CreateConcrete("TUnit.TestProject.InheritedTestsFromDifferentProjectTests, TestsBase`1"),
Name = "VerifyInheritedCategoriesAreAvailable",
GenericTypeCount = 0,
ReturnType = typeof(void),
ReturnTypeReference = global::TUnit.Core.TypeReference.CreateConcrete("void, System.Private.CoreLib"),
Parameters = global::System.Array.Empty<global::TUnit.Core.ParameterMetadata>(),
Class = global::TUnit.Core.ClassMetadata.GetOrAdd("TestsBase`1:global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests", () =>
{
var classMetadata = new global::TUnit.Core.ClassMetadata
{
Type = typeof(global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests),
TypeReference = global::TUnit.Core.TypeReference.CreateConcrete("TUnit.TestProject.InheritedTestsFromDifferentProjectTests, TestsBase`1"),
Name = "InheritedTestsFromDifferentProjectTests",
Namespace = "TUnit.TestProject",
Assembly = global::TUnit.Core.AssemblyMetadata.GetOrAdd("TestsBase`1", () => new global::TUnit.Core.AssemblyMetadata { Name = "TestsBase`1" }),
Parameters = global::System.Array.Empty<global::TUnit.Core.ParameterMetadata>(),
Properties = global::System.Array.Empty<global::TUnit.Core.PropertyMetadata>(),
Parent = null
};
// Set ClassMetadata and ContainingTypeMetadata references on properties to avoid circular dependency
foreach (var prop in classMetadata.Properties)
{
prop.ClassMetadata = classMetadata;
prop.ContainingTypeMetadata = classMetadata;
}
return classMetadata;
})
},
InstanceFactory = (typeArgs, args) => new global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests(),
TestInvoker = async (instance, args) =>
{
var typedInstance = (global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests)instance;
var context = global::TUnit.Core.TestContext.Current;
typedInstance.VerifyInheritedCategoriesAreAvailable();
await global::System.Threading.Tasks.Task.CompletedTask;
},
InvokeTypedTest = async (instance, args, cancellationToken) =>
{
instance.VerifyInheritedCategoriesAreAvailable();
await global::System.Threading.Tasks.Task.CompletedTask;
},
};
metadata.UseRuntimeDataGeneration(testSessionId);
yield return metadata;
yield break;
}
}
internal static class InheritedTestsFromDifferentProjectTests_VerifyInheritedCategoriesAreAvailable_ModuleInitializer_GUID
{
[global::System.Runtime.CompilerServices.ModuleInitializer]
public static void Initialize()
{
global::TUnit.Core.SourceRegistrar.Register(typeof(global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests), new InheritedTestsFromDifferentProjectTests_VerifyInheritedCategoriesAreAvailable_TestSource_GUID());
}
}


// ===== FILE SEPARATOR =====

// <auto-generated/>
Expand All @@ -383,6 +483,7 @@ internal sealed class InheritedTestsFromDifferentProjectTests_BaseTest_TestSourc
AttributeFactory = () =>
[
new global::TUnit.Core.TestAttribute(),
new global::TUnit.Core.CategoryAttribute("BaseCategory"),
new global::TUnit.TestProject.Attributes.EngineTest(Pass),
new global::TUnit.Core.InheritsTestsAttribute()
],
Expand Down Expand Up @@ -461,6 +562,108 @@ internal static class InheritedTestsFromDifferentProjectTests_BaseTest_ModuleIni
}


// ===== FILE SEPARATOR =====

// <auto-generated/>
#pragma warning disable

// <auto-generated/>
#pragma warning disable
#nullable enable
namespace TUnit.Generated;
internal sealed class InheritedTestsFromDifferentProjectTests_BaseTestWithMultipleCategories_TestSource_GUID : global::TUnit.Core.Interfaces.SourceGenerator.ITestSource
{
public async global::System.Collections.Generic.IAsyncEnumerable<global::TUnit.Core.TestMetadata> GetTestsAsync(string testSessionId, [global::System.Runtime.CompilerServices.EnumeratorCancellation] global::System.Threading.CancellationToken cancellationToken = default)
{
var metadata = new global::TUnit.Core.TestMetadata<global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests>
{
TestName = "BaseTestWithMultipleCategories",
TestClassType = typeof(global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests),
TestMethodName = "BaseTestWithMultipleCategories",
Dependencies = global::System.Array.Empty<global::TUnit.Core.TestDependency>(),
AttributeFactory = () =>
[
new global::TUnit.Core.TestAttribute(),
new global::TUnit.Core.CategoryAttribute("AnotherBaseCategory"),
new global::TUnit.Core.CategoryAttribute("MultipleCategories"),
new global::TUnit.TestProject.Attributes.EngineTest(Pass),
new global::TUnit.Core.InheritsTestsAttribute()
],
DataSources = new global::TUnit.Core.IDataSourceAttribute[]
{
},
ClassDataSources = new global::TUnit.Core.IDataSourceAttribute[]
{
},
PropertyDataSources = new global::TUnit.Core.PropertyDataSource[]
{
},
PropertyInjections = new global::TUnit.Core.PropertyInjectionData[]
{
},
InheritanceDepth = 1,
FilePath = @"",
LineNumber = 5,
MethodMetadata = new global::TUnit.Core.MethodMetadata
{
Type = typeof(global::TUnit.TestProject.Library.BaseTests),
TypeReference = global::TUnit.Core.TypeReference.CreateConcrete("TUnit.TestProject.Library.BaseTests, TestsBase`1"),
Name = "BaseTestWithMultipleCategories",
GenericTypeCount = 0,
ReturnType = typeof(void),
ReturnTypeReference = global::TUnit.Core.TypeReference.CreateConcrete("void, System.Private.CoreLib"),
Parameters = global::System.Array.Empty<global::TUnit.Core.ParameterMetadata>(),
Class = global::TUnit.Core.ClassMetadata.GetOrAdd("TestsBase`1:global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests", () =>
{
var classMetadata = new global::TUnit.Core.ClassMetadata
{
Type = typeof(global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests),
TypeReference = global::TUnit.Core.TypeReference.CreateConcrete("TUnit.TestProject.InheritedTestsFromDifferentProjectTests, TestsBase`1"),
Name = "InheritedTestsFromDifferentProjectTests",
Namespace = "TUnit.TestProject",
Assembly = global::TUnit.Core.AssemblyMetadata.GetOrAdd("TestsBase`1", () => new global::TUnit.Core.AssemblyMetadata { Name = "TestsBase`1" }),
Parameters = global::System.Array.Empty<global::TUnit.Core.ParameterMetadata>(),
Properties = global::System.Array.Empty<global::TUnit.Core.PropertyMetadata>(),
Parent = null
};
// Set ClassMetadata and ContainingTypeMetadata references on properties to avoid circular dependency
foreach (var prop in classMetadata.Properties)
{
prop.ClassMetadata = classMetadata;
prop.ContainingTypeMetadata = classMetadata;
}
return classMetadata;
})
},
InstanceFactory = (typeArgs, args) => new global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests(),
TestInvoker = async (instance, args) =>
{
var typedInstance = (global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests)instance;
var context = global::TUnit.Core.TestContext.Current;
typedInstance.BaseTestWithMultipleCategories();
await global::System.Threading.Tasks.Task.CompletedTask;
},
InvokeTypedTest = async (instance, args, cancellationToken) =>
{
instance.BaseTestWithMultipleCategories();
await global::System.Threading.Tasks.Task.CompletedTask;
},
};
metadata.UseRuntimeDataGeneration(testSessionId);
yield return metadata;
yield break;
}
}
internal static class InheritedTestsFromDifferentProjectTests_BaseTestWithMultipleCategories_ModuleInitializer_GUID
{
[global::System.Runtime.CompilerServices.ModuleInitializer]
public static void Initialize()
{
global::TUnit.Core.SourceRegistrar.Register(typeof(global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests), new InheritedTestsFromDifferentProjectTests_BaseTestWithMultipleCategories_TestSource_GUID());
}
}


// ===== FILE SEPARATOR =====

// <auto-generated/>
Expand Down Expand Up @@ -824,3 +1027,103 @@ internal static class InheritedTestsFromDifferentProjectTests_NonGenericMethodDa
global::TUnit.Core.SourceRegistrar.Register(typeof(global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests), new InheritedTestsFromDifferentProjectTests_NonGenericMethodDataSource_TestSource_GUID());
}
}


// ===== FILE SEPARATOR =====

// <auto-generated/>
#pragma warning disable

// <auto-generated/>
#pragma warning disable
#nullable enable
namespace TUnit.Generated;
internal sealed class InheritedTestsFromDifferentProjectTests_VerifyInheritedCategoriesAreAvailable_TestSource_GUID : global::TUnit.Core.Interfaces.SourceGenerator.ITestSource
{
public async global::System.Collections.Generic.IAsyncEnumerable<global::TUnit.Core.TestMetadata> GetTestsAsync(string testSessionId, [global::System.Runtime.CompilerServices.EnumeratorCancellation] global::System.Threading.CancellationToken cancellationToken = default)
{
var metadata = new global::TUnit.Core.TestMetadata<global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests>
{
TestName = "VerifyInheritedCategoriesAreAvailable",
TestClassType = typeof(global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests),
TestMethodName = "VerifyInheritedCategoriesAreAvailable",
Dependencies = global::System.Array.Empty<global::TUnit.Core.TestDependency>(),
AttributeFactory = () =>
[
new global::TUnit.Core.TestAttribute(),
new global::TUnit.TestProject.Attributes.EngineTest(Pass),
new global::TUnit.Core.InheritsTestsAttribute()
],
DataSources = new global::TUnit.Core.IDataSourceAttribute[]
{
},
ClassDataSources = new global::TUnit.Core.IDataSourceAttribute[]
{
},
PropertyDataSources = new global::TUnit.Core.PropertyDataSource[]
{
},
PropertyInjections = new global::TUnit.Core.PropertyInjectionData[]
{
},
InheritanceDepth = 0,
FilePath = @"",
LineNumber = 5,
MethodMetadata = new global::TUnit.Core.MethodMetadata
{
Type = typeof(global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests),
TypeReference = global::TUnit.Core.TypeReference.CreateConcrete("TUnit.TestProject.InheritedTestsFromDifferentProjectTests, TestsBase`1"),
Name = "VerifyInheritedCategoriesAreAvailable",
GenericTypeCount = 0,
ReturnType = typeof(void),
ReturnTypeReference = global::TUnit.Core.TypeReference.CreateConcrete("void, System.Private.CoreLib"),
Parameters = global::System.Array.Empty<global::TUnit.Core.ParameterMetadata>(),
Class = global::TUnit.Core.ClassMetadata.GetOrAdd("TestsBase`1:global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests", () =>
{
var classMetadata = new global::TUnit.Core.ClassMetadata
{
Type = typeof(global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests),
TypeReference = global::TUnit.Core.TypeReference.CreateConcrete("TUnit.TestProject.InheritedTestsFromDifferentProjectTests, TestsBase`1"),
Name = "InheritedTestsFromDifferentProjectTests",
Namespace = "TUnit.TestProject",
Assembly = global::TUnit.Core.AssemblyMetadata.GetOrAdd("TestsBase`1", () => new global::TUnit.Core.AssemblyMetadata { Name = "TestsBase`1" }),
Parameters = global::System.Array.Empty<global::TUnit.Core.ParameterMetadata>(),
Properties = global::System.Array.Empty<global::TUnit.Core.PropertyMetadata>(),
Parent = null
};
// Set ClassMetadata and ContainingTypeMetadata references on properties to avoid circular dependency
foreach (var prop in classMetadata.Properties)
{
prop.ClassMetadata = classMetadata;
prop.ContainingTypeMetadata = classMetadata;
}
return classMetadata;
})
},
InstanceFactory = (typeArgs, args) => new global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests(),
TestInvoker = async (instance, args) =>
{
var typedInstance = (global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests)instance;
var context = global::TUnit.Core.TestContext.Current;
typedInstance.VerifyInheritedCategoriesAreAvailable();
await global::System.Threading.Tasks.Task.CompletedTask;
},
InvokeTypedTest = async (instance, args, cancellationToken) =>
{
instance.VerifyInheritedCategoriesAreAvailable();
await global::System.Threading.Tasks.Task.CompletedTask;
},
};
metadata.UseRuntimeDataGeneration(testSessionId);
yield return metadata;
yield break;
}
}
internal static class InheritedTestsFromDifferentProjectTests_VerifyInheritedCategoriesAreAvailable_ModuleInitializer_GUID
{
[global::System.Runtime.CompilerServices.ModuleInitializer]
public static void Initialize()
{
global::TUnit.Core.SourceRegistrar.Register(typeof(global::TUnit.TestProject.InheritedTestsFromDifferentProjectTests), new InheritedTestsFromDifferentProjectTests_VerifyInheritedCategoriesAreAvailable_TestSource_GUID());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,18 @@ public Task Test() => RunTest(Path.Combine(Git.RootDirectory.FullName,
},
async generatedFiles =>
{
});
// Verify that inherited test methods have their categories properly included
var generatedCode = string.Join(Environment.NewLine, generatedFiles);

// Check that the BaseTest method has the BaseCategory attribute
await Assert.That(generatedCode).Contains("new global::TUnit.Core.CategoryAttribute(\"BaseCategory\")");

// Check that the BaseTestWithMultipleCategories method has both category attributes
await Assert.That(generatedCode).Contains("new global::TUnit.Core.CategoryAttribute(\"AnotherBaseCategory\")");
await Assert.That(generatedCode).Contains("new global::TUnit.Core.CategoryAttribute(\"MultipleCategories\")");

// Verify that the generated code includes the inherited test methods
await Assert.That(generatedCode).Contains("BaseTest");
await Assert.That(generatedCode).Contains("BaseTestWithMultipleCategories");
});
}
Loading
Loading