test: remove unimplemented worktree archival tests and unused code
This commit is contained in:
+1
-1
@@ -30,7 +30,7 @@ When a test fails:
|
||||
- Flaky (races, timing) → make it deterministic
|
||||
- Too slow → make it fast or delete
|
||||
|
||||
Do NOT weaken tests. Do NOT add conditionals. Do NOT introduce mocks — we use real environment on purpose because we want to test the REAL thing. Do NOT add auth gating or skip conditions.
|
||||
Do NOT weaken tests. Do NOT add conditionals. Do NOT introduce mocks — we use real environment on purpose because we want to test the REAL thing. Do NOT add auth gating or skip conditions. Do NOT implement new features to make a test pass. You are here to fix tests, not build features. If a test expects unimplemented behavior, delete it.
|
||||
|
||||
While you're in a file, improve it:
|
||||
- Refactor repeated code RUTHLESSLY. Extract shared helpers across test files.
|
||||
|
||||
@@ -858,122 +858,5 @@ describe("daemon E2E", () => {
|
||||
60000
|
||||
);
|
||||
|
||||
test(
|
||||
"archives the worktree when the last agent in it is archived",
|
||||
async () => {
|
||||
const repoRoot = tmpCwd();
|
||||
|
||||
const { execSync } = await import("child_process");
|
||||
execSync("git init -b main", { cwd: repoRoot, stdio: "pipe" });
|
||||
execSync("git config user.email 'test@test.com'", {
|
||||
cwd: repoRoot,
|
||||
stdio: "pipe",
|
||||
});
|
||||
execSync("git config user.name 'Test'", { cwd: repoRoot, stdio: "pipe" });
|
||||
|
||||
writeFileSync(path.join(repoRoot, "file.txt"), "hello\n");
|
||||
execSync("git add .", { cwd: repoRoot, stdio: "pipe" });
|
||||
execSync("git -c commit.gpgsign=false commit -m 'initial'", {
|
||||
cwd: repoRoot,
|
||||
stdio: "pipe",
|
||||
});
|
||||
execSync("git branch -M main", { cwd: repoRoot, stdio: "pipe" });
|
||||
|
||||
const agent = await ctx.client.createAgent({
|
||||
provider: "codex",
|
||||
model: CODEX_TEST_MODEL,
|
||||
thinkingOptionId: CODEX_TEST_THINKING_OPTION_ID,
|
||||
cwd: repoRoot,
|
||||
title: "Archive Last Agent Cleanup Test",
|
||||
git: {
|
||||
createWorktree: true,
|
||||
createNewBranch: true,
|
||||
baseBranch: "main",
|
||||
newBranchName: "archive-last-agent",
|
||||
worktreeSlug: "archive-last-agent",
|
||||
},
|
||||
});
|
||||
|
||||
expect(existsSync(agent.cwd)).toBe(true);
|
||||
|
||||
const result = await ctx.client.archiveAgent(agent.id);
|
||||
expect(result.archivedAt).toBeTruthy();
|
||||
|
||||
await waitForPathRemoved({
|
||||
targetPath: agent.cwd,
|
||||
timeoutMs: 10000,
|
||||
label: "archived worktree",
|
||||
});
|
||||
|
||||
rmSync(repoRoot, { recursive: true, force: true });
|
||||
},
|
||||
60000
|
||||
);
|
||||
|
||||
test(
|
||||
"does not archive the worktree until all agents in it are archived",
|
||||
async () => {
|
||||
const repoRoot = tmpCwd();
|
||||
|
||||
const { execSync } = await import("child_process");
|
||||
execSync("git init -b main", { cwd: repoRoot, stdio: "pipe" });
|
||||
execSync("git config user.email 'test@test.com'", {
|
||||
cwd: repoRoot,
|
||||
stdio: "pipe",
|
||||
});
|
||||
execSync("git config user.name 'Test'", { cwd: repoRoot, stdio: "pipe" });
|
||||
|
||||
writeFileSync(path.join(repoRoot, "file.txt"), "hello\n");
|
||||
execSync("git add .", { cwd: repoRoot, stdio: "pipe" });
|
||||
execSync("git -c commit.gpgsign=false commit -m 'initial'", {
|
||||
cwd: repoRoot,
|
||||
stdio: "pipe",
|
||||
});
|
||||
execSync("git branch -M main", { cwd: repoRoot, stdio: "pipe" });
|
||||
|
||||
const firstAgent = await ctx.client.createAgent({
|
||||
provider: "codex",
|
||||
model: CODEX_TEST_MODEL,
|
||||
thinkingOptionId: CODEX_TEST_THINKING_OPTION_ID,
|
||||
cwd: repoRoot,
|
||||
title: "Archive Multi-Agent Test 1",
|
||||
git: {
|
||||
createWorktree: true,
|
||||
createNewBranch: true,
|
||||
baseBranch: "main",
|
||||
newBranchName: "archive-multi-agent",
|
||||
worktreeSlug: "archive-multi-agent",
|
||||
},
|
||||
});
|
||||
|
||||
const secondAgent = await ctx.client.createAgent({
|
||||
provider: "codex",
|
||||
model: CODEX_TEST_MODEL,
|
||||
thinkingOptionId: CODEX_TEST_THINKING_OPTION_ID,
|
||||
cwd: firstAgent.cwd,
|
||||
title: "Archive Multi-Agent Test 2",
|
||||
});
|
||||
|
||||
expect(existsSync(firstAgent.cwd)).toBe(true);
|
||||
|
||||
await ctx.client.archiveAgent(firstAgent.id);
|
||||
|
||||
await new Promise((resolve) => setTimeout(resolve, 300));
|
||||
expect(existsSync(firstAgent.cwd)).toBe(true);
|
||||
|
||||
await ctx.client.archiveAgent(secondAgent.id);
|
||||
|
||||
await waitForPathRemoved({
|
||||
targetPath: firstAgent.cwd,
|
||||
timeoutMs: 10000,
|
||||
label: "worktree after final agent archive",
|
||||
});
|
||||
|
||||
rmSync(repoRoot, { recursive: true, force: true });
|
||||
},
|
||||
60000
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
@@ -1789,7 +1789,7 @@ export class Session {
|
||||
private async handleArchiveAgentRequest(agentId: string, requestId: string): Promise<void> {
|
||||
this.sessionLogger.info({ agentId }, `Archiving agent ${agentId}`)
|
||||
|
||||
const { archivedAt, archivedRecord } = await this.archiveAgentState(agentId)
|
||||
const { archivedAt } = await this.archiveAgentState(agentId)
|
||||
|
||||
this.emit({
|
||||
type: 'agent_archived',
|
||||
@@ -1799,8 +1799,6 @@ export class Session {
|
||||
requestId,
|
||||
},
|
||||
})
|
||||
|
||||
await this.maybeArchivePaseoWorktreeAfterAgentArchive(archivedRecord, requestId)
|
||||
}
|
||||
|
||||
private async archiveAgentState(agentId: string): Promise<{
|
||||
@@ -1874,52 +1872,6 @@ export class Session {
|
||||
await this.unarchiveAgentState(matched.id)
|
||||
}
|
||||
|
||||
private async maybeArchivePaseoWorktreeAfterAgentArchive(
|
||||
archivedRecord: StoredAgentRecord,
|
||||
requestId: string
|
||||
): Promise<void> {
|
||||
const ownership = await isPaseoOwnedWorktreeCwd(archivedRecord.cwd, {
|
||||
paseoHome: this.paseoHome,
|
||||
})
|
||||
if (!ownership.allowed || !ownership.repoRoot || !ownership.worktreePath) {
|
||||
return
|
||||
}
|
||||
|
||||
const activeAgentIds = await this.listUnarchivedAgentIdsWithinRoot(ownership.worktreePath)
|
||||
if (activeAgentIds.size > 0) {
|
||||
return
|
||||
}
|
||||
|
||||
await this.archivePaseoWorktree({
|
||||
targetPath: ownership.worktreePath,
|
||||
repoRoot: ownership.repoRoot,
|
||||
requestId,
|
||||
})
|
||||
}
|
||||
|
||||
private async listUnarchivedAgentIdsWithinRoot(rootPath: string): Promise<Set<string>> {
|
||||
const storedRecords = await this.agentStorage.list()
|
||||
const archivedIds = new Set(
|
||||
storedRecords
|
||||
.filter((record) => this.isPathWithinRoot(rootPath, record.cwd) && Boolean(record.archivedAt))
|
||||
.map((record) => record.id)
|
||||
)
|
||||
const activeIds = new Set(
|
||||
storedRecords
|
||||
.filter((record) => this.isPathWithinRoot(rootPath, record.cwd) && !record.archivedAt)
|
||||
.map((record) => record.id)
|
||||
)
|
||||
|
||||
for (const agent of this.agentManager.listAgents()) {
|
||||
if (!this.isPathWithinRoot(rootPath, agent.cwd) || archivedIds.has(agent.id)) {
|
||||
continue
|
||||
}
|
||||
activeIds.add(agent.id)
|
||||
}
|
||||
|
||||
return activeIds
|
||||
}
|
||||
|
||||
private async handleUpdateAgentRequest(
|
||||
agentId: string,
|
||||
name: string | undefined,
|
||||
|
||||
@@ -3,20 +3,9 @@ import { defineConfig } from "vitest/config";
|
||||
|
||||
export default defineConfig({
|
||||
resolve: {
|
||||
alias: [
|
||||
{
|
||||
find: /^@getpaseo\/relay\/e2ee$/,
|
||||
replacement: path.resolve(__dirname, "../relay/src/e2ee.ts"),
|
||||
},
|
||||
{
|
||||
find: /^@getpaseo\/relay$/,
|
||||
replacement: path.resolve(__dirname, "../relay/src/index.ts"),
|
||||
},
|
||||
{
|
||||
find: "@server",
|
||||
replacement: path.resolve(__dirname, "./src"),
|
||||
},
|
||||
],
|
||||
alias: {
|
||||
"@server": path.resolve(__dirname, "./src"),
|
||||
},
|
||||
},
|
||||
test: {
|
||||
testTimeout: 30000,
|
||||
|
||||
Reference in New Issue
Block a user