mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-12 13:10:43 +00:00
test: tighten compaction safeguard assertions
This commit is contained in:
@@ -1380,14 +1380,12 @@ describe("compaction-safeguard recent-turn preservation", () => {
|
||||
|
||||
expect(result.cancel).not.toBe(true);
|
||||
const summaryCall = mockSummarizeInStages.mock.calls.at(-1)?.[0];
|
||||
expect(summaryCall?.headers).toMatchObject({
|
||||
"Copilot-Integration-Id": "vscode-chat",
|
||||
"Editor-Plugin-Version": "copilot-chat/0.35.0",
|
||||
"Openai-Organization": "github-copilot",
|
||||
"User-Agent": "GitHubCopilotChat/0.26.7",
|
||||
"X-Test": "1",
|
||||
"x-initiator": "user",
|
||||
});
|
||||
expect(summaryCall?.headers?.["Copilot-Integration-Id"]).toBe("vscode-chat");
|
||||
expect(summaryCall?.headers?.["Editor-Plugin-Version"]).toBe("copilot-chat/0.35.0");
|
||||
expect(summaryCall?.headers?.["Openai-Organization"]).toBe("github-copilot");
|
||||
expect(summaryCall?.headers?.["User-Agent"]).toBe("GitHubCopilotChat/0.26.7");
|
||||
expect(summaryCall?.headers?.["X-Test"]).toBe("1");
|
||||
expect(summaryCall?.headers?.["x-initiator"]).toBe("user");
|
||||
});
|
||||
|
||||
it("does not retry summaries unless quality guard is explicitly enabled", async () => {
|
||||
@@ -1871,16 +1869,13 @@ describe("compaction-safeguard recent-turn preservation", () => {
|
||||
const compaction = expectCompactionResult(result);
|
||||
expect(getApiKeyAndHeadersMock).not.toHaveBeenCalled();
|
||||
expect(mockSummarizeInStages).not.toHaveBeenCalled();
|
||||
expect(providerSummarize).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
previousSummary: "previous provider summary",
|
||||
customInstructions: expect.stringContaining("Keep milestone names."),
|
||||
summarizationInstructions: {
|
||||
identifierPolicy: "custom",
|
||||
identifierInstructions: "Preserve ticket IDs exactly.",
|
||||
},
|
||||
}),
|
||||
);
|
||||
const providerInput = providerSummarize.mock.calls[0]?.[0];
|
||||
expect(providerInput?.previousSummary).toBe("previous provider summary");
|
||||
expect(providerInput?.customInstructions).toContain("Keep milestone names.");
|
||||
expect(providerInput?.summarizationInstructions).toEqual({
|
||||
identifierPolicy: "custom",
|
||||
identifierInstructions: "Preserve ticket IDs exactly.",
|
||||
});
|
||||
const providerMessages = providerSummarize.mock.calls[0]?.[0]?.messages ?? [];
|
||||
expect(JSON.stringify(providerMessages)).not.toContain("openclaw.runtime-context");
|
||||
expect(JSON.stringify(providerMessages)).not.toContain("secret runtime context");
|
||||
@@ -2197,19 +2192,20 @@ describe("compaction-safeguard double-compaction guard", () => {
|
||||
expect(compaction.summary).not.toContain("No prior history.");
|
||||
expect(mockSummarizeInStages).toHaveBeenCalled();
|
||||
const summaryCall = mockSummarizeInStages.mock.calls[0]?.[0];
|
||||
expect(summaryCall?.messages).toEqual(
|
||||
expect.arrayContaining([
|
||||
expect.objectContaining({
|
||||
role: "custom",
|
||||
customType: "cron-request",
|
||||
content: "prepare the daily report",
|
||||
}),
|
||||
expect.objectContaining({
|
||||
role: "toolResult",
|
||||
toolName: "read",
|
||||
}),
|
||||
]),
|
||||
);
|
||||
const summaryMessages = summaryCall?.messages ?? [];
|
||||
const cronRequest = summaryMessages.find(
|
||||
(message) =>
|
||||
message.role === "custom" &&
|
||||
"customType" in message &&
|
||||
message.customType === "cron-request",
|
||||
) as { content?: unknown } | undefined;
|
||||
expect(cronRequest?.content).toBe("prepare the daily report");
|
||||
expect(
|
||||
summaryMessages.some(
|
||||
(message) =>
|
||||
message.role === "toolResult" && "toolName" in message && message.toolName === "read",
|
||||
),
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it("continues when messages include real conversation content", async () => {
|
||||
|
||||
Reference in New Issue
Block a user