test: reduce boilerplate in imported-session tests · Entire
test: reduce boilerplate in imported-session tests
cbfd048 → main
- Merge the two strategy cleanup tests into one
TestImportedSessions_SurviveCleanupwith a sharedsaveImportedStatehelper. - Merge the list/info read-only tests into one
TestImportedSession_MarkedReadOnlywith a run helper.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Sessions
01KX4DTCMV8EMWKYCKMBASNVBA View transcript
Changes
4
cmd/entire/cli
Msessions_test.go +23/-52
strategy
- Dcleanup_imported_test.go -43
- Aimported_session_test.go +70
- Dmanual_commit_session_test.go -48
20 unmodified lines
package strategy
import (
"context"
"testing"
"time"
"github.com/entireio/cli/cmd/entire/cli/session"
"github.com/entireio/cli/cmd/entire/cli/testutil"
)
func TestListOrphanedSessionStates_SkipsImported(t *testing.T) {
// Not parallel: t.Chdir.
dir := t.TempDir()
testutil.InitRepo(t, dir)
testutil.WriteFile(t, dir, "f.txt", "x")
testutil.GitAdd(t, dir, "f.txt")
testutil.GitCommit(t, dir, "init")
t.Chdir(dir)
ctx := context.Background()
store, err := session.NewStateStore(ctx)
if err != nil {
t.Fatalf("NewStateStore: %v", err)
}
old := time.Now().Add(-24 * time.Hour) // past sessionGracePeriod
if err := store.Save(ctx, &session.State{
SessionID: "imported-orphan", Kind: session.KindImported,
Phase: session.PhaseEnded, StartedAt: old, EndedAt: &old,
}); err != nil {
t.Fatalf("save: %v", err)
}
items, err := ListOrphanedSessionStates(ctx)
if err != nil {
t.Fatalf("ListOrphanedSessionStates: %v", err)
}
for _, it := range items {
if it.ID == "imported-orphan" {
t.Fatal("imported session was flagged as orphaned")
}
}
}
package strategy
import (
"context"
"testing"
"time"
"github.com/entireio/cli/cmd/entire/cli/session"
"github.com/entireio/cli/cmd/entire/cli/testutil"
)
// saveImportedState sets up an isolated repo (commit + chdir) and writes a
// read-only imported session state, returning its id. Not parallel (t.Chdir).
func saveImportedState(t *testing.T) string {
t.Helper()
dir := t.TempDir()
testutil.InitRepo(t, dir)
testutil.WriteFile(t, dir, "f.txt", "x")
testutil.GitAdd(t, dir, "f.txt")
testutil.GitCommit(t, dir, "init")
t.Chdir(dir)
old := time.Now().Add(-24 * time.Hour) // past both stale and grace thresholds
const sid = "imported-session"
store, err := session.NewStateStore(context.Background())
if err != nil {
t.Fatalf("NewStateStore: %v", err)
}
if err := store.Save(context.Background(), &session.State{
SessionID: sid, Kind: session.KindImported,
Phase: session.PhaseEnded, StartedAt: old, EndedAt: &old,
}); err != nil {
t.Fatalf("save imported state: %v", err)
}
return sid
}
// Imported sessions are read-only and commit-less (no shadow branch, empty
// BaseCommit); neither cleanup path may purge or flag them.
func TestImportedSessions_SurviveCleanup(t *testing.T) {
sid := saveImportedState(t)
ctx := context.Background()
states, err := NewManualCommitStrategy().listAllSessionStates(ctx)
if err != nil {
t.Fatalf("listAllSessionStates: %v", err)
}
if !containsSessionID(states, sid) {
t.Error("listAllSessionStates purged the imported session")
}
items, err := ListOrphanedSessionStates(ctx)
if err != nil {
t.Fatalf("ListOrphanedSessionStates: %v", err)
}
for _, it := range items {
if it.ID == sid {
t.Error("entire clean flagged the imported session as orphaned")
}
}
}
func containsSessionID(states []*SessionState, sid string) bool {
for _, s := range states {
if s.SessionID == sid {
return true
}
}
return false
}
package strategy
import (
"context"
"testing"
"time"
"github.com/entireio/cli/cmd/entire/cli/session"
"github.com/entireio/cli/cmd/entire/cli/testutil"
)
func TestListAllSessionStates_KeepsImported(t *testing.T) {
// Not parallel: t.Chdir.
dir := t.TempDir()
testutil.InitRepo(t, dir)
testutil.WriteFile(t, dir, "f.txt", "x")
testutil.GitAdd(t, dir, "f.txt")
testutil.GitCommit(t, dir, "init")
t.Chdir(dir)
ctx := context.Background()
store, err := session.NewStateStore(ctx)
if err != nil {
t.Fatalf("NewStateStore: %v", err)
}
old := time.Now().Add(-24 * time.Hour)
imported := &session.State{
SessionID: "imported-keep", Kind: session.KindImported,
Phase: session.PhaseEnded, StartedAt: old, EndedAt: &old,
}
if err := store.Save(ctx, imported); err != nil {
t.Fatalf("save imported: %v", err)
}
states, err := NewManualCommitStrategy().listAllSessionStates(ctx)
if err != nil {
t.Fatalf("listAllSessionStates: %v", err)
}
found := false
for _, s := range states {
if s.SessionID == "imported-keep" {
found = true
}
}
if !found {
t.Fatal("imported session was purged by listAllSessionStates orphan cleanup")
}
}