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