Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
164fd70
Before(Class) and After(Class) appear to be parallel when in differen…
thomhurst Sep 11, 2025
01bfcd8
feat: add ExecutionContext and TestExecutionContext for improved para…
thomhurst Sep 11, 2025
0ae6c41
refactor: clean up whitespace and improve code readability in HookOrc…
thomhurst Sep 11, 2025
5836409
feat: implement SequentialCoordinator for managing sequential executi…
thomhurst Sep 11, 2025
7cb6b05
fix: resolve HookOrchestrator semaphore deadlock by refactoring coord…
thomhurst Sep 11, 2025
868143c
fix: resolve race condition in semaphore coordination logic
thomhurst Sep 11, 2025
5e008d6
fix: resolve hook orchestrator deadlock through improved coordination
thomhurst Sep 11, 2025
6b8a5ef
refactor: rename RestoreContextAsyncLocal to SetAsyncLocalContext and…
thomhurst Sep 11, 2025
7dbb121
feat: add timeout support for test execution with TimeoutHelper utility
thomhurst Sep 11, 2025
7c63684
fix: detect and handle circular dependencies in test execution
thomhurst Sep 11, 2025
cf7b9e0
refactor: change class accessibility from public to internal for enca…
thomhurst Sep 12, 2025
9cfad2d
fix: wrap hook execution in try-catch to handle exceptions and improv…
thomhurst Sep 12, 2025
397a3e2
fix: remove unused CompleteHookChain class and streamline hook proces…
thomhurst Sep 12, 2025
5a6f662
fix: generate individual files for data source helpers, hooks, and pr…
thomhurst Sep 12, 2025
1554b24
fix: implement IEquatable for multiple data model classes and improve…
thomhurst Sep 12, 2025
c722088
fix: rename ITestOrchestrator to ITestCoordinator and update references
thomhurst Sep 12, 2025
fddbc98
fix: update context property setters to maintain synchronization acro…
thomhurst Sep 12, 2025
38e8955
fix: refactor hook initializers and streamline test source generation
thomhurst Sep 12, 2025
a0c64da
fix: append GUID to hook metadata and update related test file namesp…
thomhurst Sep 12, 2025
680f1a9
Merge branch 'main' into bug/3044
thomhurst Sep 13, 2025
f319902
fix: skip execution for tests marked as skipped
thomhurst Sep 13, 2025
fd5056b
fix: inject properties into test instance after creation
thomhurst Sep 13, 2025
53abc5b
Merge branch 'main' into bug/3044 - keeping TestRunner refactoring
thomhurst Sep 13, 2025
96e9107
feat: add support for maximum parallel test execution limit
thomhurst Sep 13, 2025
26ab310
fix: update source generator test snapshots for restructured test runner
thomhurst Sep 13, 2025
efe663e
fix: update line numbers in verified test files for accuracy
thomhurst Sep 13, 2025
fe027a5
fix: ensure only first test failure bubbles up with fail-fast enabled
thomhurst Sep 13, 2025
92af694
Fix critical hook execution bugs
thomhurst Sep 13, 2025
7144b90
Update public API snapshots
thomhurst Sep 13, 2025
758772d
Merge branch 'main' into bug/3044
thomhurst Sep 13, 2025
c2f6163
fix: prevent assembly hooks from executing multiple times
thomhurst Sep 13, 2025
3e224ce
fix: handle skipped tests properly to avoid cast exceptions
thomhurst Sep 13, 2025
f29fe6b
fix: report test run as failed when all tests are skipped
thomhurst Sep 13, 2025
64df731
fix: correct logic for skipped test failure - only trigger when NO te…
thomhurst Sep 13, 2025
bc85647
fix: ensure test run is marked as failed when all tests are skipped
thomhurst Sep 13, 2025
60f8c59
Fix skipped test detection by checking after instance creation
thomhurst Sep 13, 2025
1e733df
Fix skipped test session outcome using CloseTestSessionResult
claude[bot] Sep 13, 2025
bd03514
fix: remove unnecessary reference to TUnit.Assertions.dll in project …
thomhurst Sep 14, 2025
136a399
Merge branch 'main' into bug/3044
thomhurst Sep 14, 2025
4ddca57
fix: remove return type from ExecuteTestAsync and related message cre…
thomhurst Sep 14, 2025
e8032ff
fix: remove unused parameters and clean up code in TestCoordinator an…
thomhurst Sep 14, 2025
80df829
fix: replace ConcurrentDictionary with GetOnlyDictionary in BeforeHoo…
thomhurst Sep 14, 2025
322cbb3
fix: initialize test class instance before executing test
thomhurst Sep 14, 2025
5eb9018
fix: introduce TestInitializer for better test initializer logic and SRP
thomhurst Sep 14, 2025
f6aef9b
fix: rename DynamicTest to AbstractDynamicTest and update references
thomhurst Sep 14, 2025
36a1e7e
fix: refactor DynamicTest to AbstractDynamicTest and update related r…
thomhurst Sep 14, 2025
775f9ce
fix: update test result expectations in DynamicTests to reflect new c…
thomhurst Sep 14, 2025
b71996c
fix: implement retry logic for test execution in RetryHelper
thomhurst Sep 14, 2025
09c8af5
fix: enhance TestInitializer to utilize EventReceiverOrchestrator for…
thomhurst Sep 14, 2025
f6c69e0
fix: reorder hook execution to ensure BeforeEvery hooks run before Be…
thomhurst Sep 14, 2025
81ab03a
fix: enhance test result handling and refactor test execution flow
thomhurst Sep 14, 2025
defa229
fix: Fix TestContext reuse in repeated tests and timing initialization
thomhurst Sep 14, 2025
0b36b74
fix: enhance retry logic to reset test context and improve retry beha…
thomhurst Sep 14, 2025
8b8732e
fix: replace GetOnlyDictionary with ThreadSafeDictionary for improved…
thomhurst Sep 15, 2025
b84361c
fix: refactor GetOnlyDictionary to ThreadSafeDictionary and introduce…
thomhurst Sep 15, 2025
f8aa1dc
fix: refactor NotInParallel test execution to use ExecuteSequentially…
thomhurst Sep 15, 2025
d723dcb
fix: refactor test scheduling to introduce ConstraintKeyScheduler for…
thomhurst Sep 15, 2025
d9c7b11
fix: remove TestContext.Current assignment to improve test execution …
thomhurst Sep 15, 2025
02bf19c
fix: add tests for TestContext isolation to ensure context does not l…
thomhurst Sep 15, 2025
9a53b48
fix: enhance NotInParallel execution tests with improved time handlin…
thomhurst Sep 15, 2025
b7c8bdc
fix: optimize test grouping by removing unnecessary sorting and enhan…
thomhurst Sep 15, 2025
d528008
fix: enhance test context handling with ClassConstructor support and …
thomhurst Sep 18, 2025
30fdbfc
fix: improve test disposal handling and enhance test grouping sorting…
thomhurst Sep 18, 2025
ae0dd34
fix: improve test instance disposal handling to prevent resource leaks
thomhurst Sep 18, 2025
dbb37c8
fix: enhance test execution order verification and improve disposal h…
thomhurst Sep 18, 2025
94d0f83
fix: enhance test execution reliability with retry logic and relaxed …
thomhurst Sep 18, 2025
a778c42
fix: update test argument types to ensure consistency with long values
thomhurst Sep 18, 2025
8b64376
fix: improve circular dependency handling in test execution
thomhurst Sep 18, 2025
d37e4de
Merge branch 'main' into bug/3044
thomhurst Sep 18, 2025
6fe5fe3
fix: improve cycle detection message and format error output for circ…
thomhurst Sep 18, 2025
7c8cf0e
Merge branch 'main' into bug/3044
thomhurst Sep 18, 2025
a700e70
fix: handle SkipTestException and mark test as skipped
thomhurst Sep 18, 2025
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
6 changes: 6 additions & 0 deletions .idea/.idea.TUnit/.idea/copilot.data.migration.agent.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/.idea.TUnit/.idea/copilot.data.migration.edit.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file modified .serena/cache/csharp/document_symbols_cache_v23-06-25.pkl
Binary file not shown.
37 changes: 0 additions & 37 deletions KNOWN_ISSUES.md

This file was deleted.

44 changes: 22 additions & 22 deletions TUnit.Analyzers.Tests/DynamicTestAwaitExpressionSuppressorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,95 +17,95 @@ await AnalyzerTestHelpers
using System.Threading.Tasks;
using TUnit;
using TUnit.Core;

namespace TUnit.TestProject.DynamicTests;

public class Basic
{
public void SomeMethod()
{
Console.Out.WriteLine(@"Hello, World!");
}

public async ValueTask SomeMethod_ValueTask()
{
await default(ValueTask);
Console.WriteLine(@"Hello, World!");
}

public async Task SomeMethod_Task()
{
await Task.CompletedTask;
Console.WriteLine(@"Hello, World!");
}

public void SomeMethod_Args(int a, string b, bool c)
{
Console.WriteLine(@"Hello, World!");
}

public async ValueTask SomeMethod_ValueTask_Args(int a, string b, bool c)
{
await default(ValueTask);
Console.WriteLine(@"Hello, World!");
}

public async Task SomeMethod_Task_Args(int a, string b, bool c)
{
await Task.CompletedTask;
Console.WriteLine(@"Hello, World!");
}

#pragma warning disable TUnitWIP0001
[DynamicTestBuilder]
#pragma warning restore TUnitWIP0001
public async Task BuildTests(DynamicTestBuilderContext context)
{
await Task.Delay(TimeSpan.FromSeconds(0.5));
context.AddTest(new DynamicTestInstance<Basic>

context.AddTest(new DynamicTest<Basic>
{
TestMethod = @class => @class.SomeMethod(),
TestMethodArguments = [],
Attributes = [new RepeatAttribute(5)]
});
context.AddTest(new DynamicTestInstance<Basic>

context.AddTest(new DynamicTest<Basic>
{
TestMethod = @class => {|#0:@class.SomeMethod_Task()|},
TestMethodArguments = [],
Attributes = [new RepeatAttribute(5)]
});
context.AddTest(new DynamicTestInstance<Basic>

context.AddTest(new DynamicTest<Basic>
{
TestMethod = @class => {|#1:@class.SomeMethod_ValueTask()|},
TestMethodArguments = [],
Attributes = [new RepeatAttribute(5)]
});
context.AddTest(new DynamicTestInstance<Basic>

context.AddTest(new DynamicTest<Basic>
{
TestMethod = @class => @class.SomeMethod_Args(1, "test", true),
TestMethodArguments = [2, "test", false],
Attributes = [new RepeatAttribute(5)]
});
context.AddTest(new DynamicTestInstance<Basic>

context.AddTest(new DynamicTest<Basic>
{
TestMethod = @class => {|#2:@class.SomeMethod_Task_Args(1, "test", true)|},
TestMethodArguments = [2, "test", false],
Attributes = [new RepeatAttribute(5)]
});
context.AddTest(new DynamicTestInstance<Basic>

context.AddTest(new DynamicTest<Basic>
{
TestMethod = @class => {|#3:@class.SomeMethod_ValueTask_Args(1, "test", true)|},
TestMethodArguments = [2, "test", false],
Attributes = [new RepeatAttribute(5)]
});
context.AddTest(new DynamicTestInstance<Basic>

context.AddTest(new DynamicTest<Basic>
{
TestMethod = @class => {|#4:@class.SomeMethod_ValueTask_Args(1, "test", true)|},
TestMethodArguments = [2, "test", false],
Expand Down
2 changes: 1 addition & 1 deletion TUnit.Analyzers/DynamicTestAwaitExpressionSuppressor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public override void ReportSuppressions(SuppressionAnalysisContext context)
continue;
}

if (namedTypeSymbol.Name == "DynamicTest" || namedTypeSymbol.Name == "DynamicTestInstance")
if (namedTypeSymbol.Name == "DynamicTest" || namedTypeSymbol.Name == "DynamicTest")
{
Suppress(context, diagnostic);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,5 @@
</PackageReference>
</ItemGroup>

<ItemGroup>
<None Include="..\TUnit.Assertions\bin\$(Configuration)\netstandard2.0\TUnit.Assertions.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>

<Import Project="..\TestProject.targets" />
</Project>
</Project>
Loading
Loading