Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Ensure NotInParallel tests don't run alongside any others - #3015

#3015
Merged
thomhurst merged 1 commit into
mainthomhurst/TUnit:mainfrom
bug/3001thomhurst/TUnit:bug/3001Copy head branch name to clipboard
Aug 30, 2025
Merged

Ensure NotInParallel tests don't run alongside any others#3015
thomhurst merged 1 commit into
mainthomhurst/TUnit:mainfrom
bug/3001thomhurst/TUnit:bug/3001Copy head branch name to clipboard

Conversation

@thomhurst

Copy link
Copy Markdown
Owner

Fixes #3001

@claude

claude Bot commented Aug 30, 2025

Copy link
Copy Markdown
Contributor

Claude finished @thomhurst's task —— View job


PR Review Analysis

Reviewing PR #3015: "Ensure NotInParallel tests don't run alongside any others"

Todo List

  • Read the modified TestScheduler.cs file to understand changes
  • Analyze code quality and best practices
  • Check for potential bugs or issues
  • Evaluate performance considerations
  • Review security concerns
  • Assess test coverage implications
  • Provide comprehensive feedback

Review Feedback

✅ Code Quality & Best Practices

  • Clean implementation: The change is minimal and focused, changing only the execution flow without modifying complex logic
  • Consistent style: Follows existing code patterns and maintains proper async/await usage
  • Good separation of concerns: The change doesn't break the existing architecture

✅ Bug Fix Analysis

The core change addresses a critical scheduling issue:

Problem Fixed: Global NotInParallel tests were previously running concurrently with other test groups, violating their constraint contract.

Before (TestScheduler.cs:175-180):

var globalNotInParallelTask = ExecuteNotInParallelTestsAsync(...);
allTestTasks.Add(globalNotInParallelTask); // ❌ Runs with other groups

After:

await ExecuteNotInParallelTestsAsync(...); // ✅ Runs sequentially first

Impact: This ensures NotInParallel tests truly run in isolation, which is critical for tests that require exclusive access to shared resources.

✅ Performance Considerations

  • Potential slower execution: Global NotInParallel tests now block all other test execution, which may increase total test suite runtime
  • Correctness over speed: This is the correct trade-off - TUnit's reliability is more important than marginally faster execution
  • Minimal overhead: The change doesn't introduce additional allocations or complex logic
  • Keyed NotInParallel tests still optimized: These continue to run in parallel with other groups where possible

✅ Security Concerns

  • No security implications: This is a scheduling change with no exposure to external inputs or data handling
  • Resource isolation improved: Better isolation of NotInParallel tests reduces potential resource contention issues

⚠️ Test Coverage Considerations

  • Missing test validation: The PR doesn't include tests to verify the new behavior
  • Regression risk: Without tests, future changes might accidentally reintroduce concurrent execution of NotInParallel tests
  • Recommendation: Add integration tests that verify:
    1. Global NotInParallel tests complete before any other tests start
    2. Test execution order is preserved
    3. Keyed NotInParallel tests still work correctly

Minor Issues

  • Whitespace changes: The PR includes some trailing whitespace cleanup (lines 321, 331, 340, 357, 367, 372) - good housekeeping but unrelated to the fix
  • No breaking changes: The API surface remains unchanged

Overall Assessment: ✅ APPROVED

This is a correct and necessary fix for a critical scheduling bug. The implementation is clean, minimal, and follows TUnit's architectural patterns. While it may slightly impact performance, ensuring test isolation is paramount for test framework reliability.

Recommendations for follow-up:

  1. Add integration tests to verify the fix
  2. Consider documenting the execution order in comments or docs
  3. Monitor test suite performance impact in CI

@thomhurst
thomhurst merged commit 5b1d3eb into main Aug 30, 2025
9 of 10 checks passed
@thomhurst
thomhurst deleted the bug/3001 branch August 30, 2025 10:19
@claude claude Bot mentioned this pull request Aug 30, 2025
1 task
This was referenced Sep 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[NotInParallel] does not work when used on test methods without constraint key

1 participant

Morty Proxy This is a proxified and sanitized view of the page, visit original site.