test(omo-codex): batch 104 (21 files)

This commit is contained in:
YeonGyu-Kim
2026-05-30 19:12:21 +09:00
parent 89ac00f0e7
commit e9c9142afe
21 changed files with 3653 additions and 0 deletions
@@ -0,0 +1,63 @@
import { mkdirSync, mkdtempSync, rmSync } from "node:fs";
import { tmpdir } from "node:os";
import path from "node:path";
import { afterEach, describe, expect, it } from "vitest";
import {
claimPostCompactPending,
isPostCompactPending,
isPostCompactRecoveryInProgress,
markSessionCompacted,
sessionCachePath,
} from "../src/persistent-cache.js";
const tempDirectories: string[] = [];
afterEach(() => {
for (const directory of tempDirectories.splice(0)) {
rmSync(directory, { recursive: true, force: true });
}
});
describe("persistent post-compact state", () => {
it("#given post-compact pending state #when static recovery is claimed twice #then only the first caller proceeds", () => {
// given
const pluginData = mkdtempSync(path.join(tmpdir(), "codex-rules-cache-"));
tempDirectories.push(pluginData);
const cachePath = sessionCachePath("session-cache-claim", pluginData);
markSessionCompacted(cachePath);
// when
const firstClaim = claimPostCompactPending(cachePath, "static");
const secondClaim = claimPostCompactPending(cachePath, "static");
// then
expect(firstClaim).toBe("claimed");
expect(secondClaim).toBe("not-pending");
expect(isPostCompactPending(cachePath, "static")).toBe(false);
expect(isPostCompactRecoveryInProgress(cachePath, "static")).toBe(true);
expect(isPostCompactPending(cachePath, "dynamic")).toBe(true);
});
it("#given post-compact pending state and contended lock #when static recovery is claimed #then reports contention without consuming pending state", () => {
// given
const pluginData = mkdtempSync(path.join(tmpdir(), "codex-rules-cache-"));
tempDirectories.push(pluginData);
const cachePath = sessionCachePath("session-cache-contended", pluginData);
markSessionCompacted(cachePath);
const lockPath = `${cachePath}.lock`;
mkdirSync(lockPath);
try {
// when
const claim = claimPostCompactPending(cachePath, "static");
// then
expect(claim).toBe("contended");
expect(isPostCompactPending(cachePath, "static")).toBe(true);
expect(isPostCompactRecoveryInProgress(cachePath, "static")).toBe(false);
} finally {
rmSync(lockPath, { recursive: true, force: true });
}
});
});