Phase 15: add compaction source fallback regression tests
Cover session_compact without prior before_compact inferring auto, and manual /compact preserving manual source with reinject off by default. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,47 @@
|
|||||||
|
import { describe, expect, it } from "vitest";
|
||||||
|
import {
|
||||||
|
consumeCompactionOnSessionCompact,
|
||||||
|
createCompactionRuntime,
|
||||||
|
ensureCompactionSourceMarked,
|
||||||
|
markManualCompactionFromInput,
|
||||||
|
} from "../src/compaction";
|
||||||
|
import { createDefaultSettings } from "../src/settings";
|
||||||
|
import { createInitialState } from "../src/state";
|
||||||
|
|
||||||
|
describe("compaction source fallback on session_compact", () => {
|
||||||
|
it("infers auto when session_compact runs without prior session_before_compact", () => {
|
||||||
|
const runtime = createCompactionRuntime();
|
||||||
|
const state = createInitialState();
|
||||||
|
expect(runtime.pendingCompactionSource).toBeNull();
|
||||||
|
|
||||||
|
ensureCompactionSourceMarked(runtime);
|
||||||
|
const shouldReinject = consumeCompactionOnSessionCompact(
|
||||||
|
runtime,
|
||||||
|
state,
|
||||||
|
true,
|
||||||
|
createDefaultSettings(),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(shouldReinject).toBe(true);
|
||||||
|
expect(state.lastCompactionSource).toBe("auto");
|
||||||
|
expect(runtime.pendingCompactionSource).toBeNull();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("keeps manual source from input and skips reinject by default", () => {
|
||||||
|
const runtime = createCompactionRuntime();
|
||||||
|
const state = createInitialState();
|
||||||
|
markManualCompactionFromInput("/compact", runtime);
|
||||||
|
|
||||||
|
ensureCompactionSourceMarked(runtime);
|
||||||
|
const shouldReinject = consumeCompactionOnSessionCompact(
|
||||||
|
runtime,
|
||||||
|
state,
|
||||||
|
true,
|
||||||
|
createDefaultSettings(),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(shouldReinject).toBe(false);
|
||||||
|
expect(state.lastCompactionSource).toBe("manual");
|
||||||
|
expect(runtime.clearPendingReinjectOnNextUserInput).toBe(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user