Skip to content

test: TestCloseAllJoinsStandingTickerAndLaterProcessCanStart flakes on TempDir cleanup (directory not empty) #1499

Description

@AbirAbbas

What happened

touched packages on PR #1438 went red on cmd/codeaf (2026-09-24, CI run 36037211855). The PR's only cmd/codeaf change is one new case in update_test.go; the failing test is elsewhere in the package:

--- FAIL: TestCloseAllJoinsStandingTickerAndLaterProcessCanStart (0.13s)
    testing.go:1464: TempDir RemoveAll cleanup: unlinkat /tmp/codeaf-ci/TestCloseAllJoinsStandingTickerAndLaterProcessCanStart1246116880/003: directory not empty
FAIL	github.com/Agent-Field/codeaf/cmd/codeaf	98.730s

Every assertion in the test passes. What fails is t.TempDir()'s own cleanup: something writes into one of the test's temp directories while Go is removing it, after closeAll() has returned. So some writer outlives closeAll, either the later process's standing ticker or another background writer v3TestProcess starts.

Replication

Deterministic (no model). On dev@c26ea9c98, with no other change:

go test -count=30 -run '^TestCloseAllJoinsStandingTickerAndLaterProcessCanStart$' ./cmd/codeaf/

This failed 1 time in 30 on a laptop, with the same TempDir RemoveAll cleanup … directory not empty line. Raising -count makes it show up more reliably.

Field (real models). Not applicable.

Acceptance

  • go test -count=200 -run '^TestCloseAllJoinsStandingTickerAndLaterProcessCanStart$' ./cmd/codeaf/ passes. The fix should make whatever writes into the test's temp tree after closeAll() returns stop before it returns, rather than retrying the cleanup or skipping the check. The test exists to prove that nothing writes after Close.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions