Files
ClaudeDo/tests/ClaudeDo.Worker.Tests/CLAUDE.md
mika kuns cfc45118e4
All checks were successful
Release / release (push) Successful in 35s
docs: sync CLAUDE.md files with current architecture
Drop the removed tag system, fix the retired Manual status and the atomic
queue-claim location, refresh the App DI registrations to the Islands VMs,
update the Data table list, correct a stale test reference, and document the
interface-folder and single-consumer-fold conventions plus the .NET 8 build path.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 15:59:43 +02:00

1.7 KiB

ClaudeDo.Worker.Tests

xUnit integration tests for the Worker and Data layers.

Framework

  • xUnit 2.5.3 with xunit.runner.visualstudio
  • No mocking library — custom sealed fakes (FakeClaudeProcess, FakeHubContext, FakeHubClients, FakeClientProxy)
  • Real SQLite databases per test via DbFixture
  • Real git repos for worktree tests via GitRepoFixture
  • coverlet for coverage collection

Test Infrastructure

  • DbFixture — creates unique temp SQLite DB, applies schema, cleans up DB + WAL/SHM files on dispose
  • GitRepoFixture — creates temp git repo with initial commit, configures user/email, handles Windows read-only .git cleanup. Tests skip if git is unavailable.

Test Areas

Area File What it covers
Repositories ListRepositoryTests CRUD, tag junctions
TaskRepositoryTests CRUD, status transitions, stale flip
Runner WorktreeManagerTests Worktree creation, commit detection, error on non-git dir
CommitMessageBuilderTests Slug generation, title/description truncation
StreamAnalyzerTests NDJSON parsing, session/token/turn extraction
Services QueueServiceTests FIFO ordering, override slot contention, cancellation, active tracking
StaleTaskRecoveryTests Flips orphaned running tasks to failed

Conventions

  • Test classes implement IDisposable and create fixtures in constructor
  • Helper factory methods for entities: MakeTask(), CreateListAsync(), SeedListWithAgentTag()
  • Concurrency tests use TaskCompletionSource as gates for deterministic ordering
  • Git-dependent tests are conditionally skipped via Skip = ... when git is not available

Running

dotnet test tests/ClaudeDo.Worker.Tests