fix: stabilize ci tests

This commit is contained in:
Peter Steinberger
2026-01-23 09:52:22 +00:00
parent 6e570561b6
commit bb9bddebb4
3 changed files with 89 additions and 120 deletions

View File

@@ -11,7 +11,7 @@ if [[ -n "$SMOKE_PREVIOUS_VERSION" ]]; then
PREVIOUS_VERSION="$SMOKE_PREVIOUS_VERSION" PREVIOUS_VERSION="$SMOKE_PREVIOUS_VERSION"
else else
VERSIONS_JSON="$(npm view clawdbot versions --json)" VERSIONS_JSON="$(npm view clawdbot versions --json)"
read -r LATEST_VERSION PREVIOUS_VERSION < <(node - <<'NODE' versions_line="$(node - <<'NODE'
const raw = process.env.VERSIONS_JSON || "[]"; const raw = process.env.VERSIONS_JSON || "[]";
let versions; let versions;
try { try {
@@ -30,6 +30,8 @@ const previous = versions.length >= 2 ? versions[versions.length - 2] : latest;
process.stdout.write(`${latest} ${previous}`); process.stdout.write(`${latest} ${previous}`);
NODE NODE
)" )"
LATEST_VERSION="${versions_line%% *}"
PREVIOUS_VERSION="${versions_line#* }"
fi fi
if [[ -n "${CLAWDBOT_INSTALL_LATEST_OUT:-}" ]]; then if [[ -n "${CLAWDBOT_INSTALL_LATEST_OUT:-}" ]]; then

View File

@@ -89,7 +89,7 @@ describe("handleDiscordMessagingAction", () => {
}, },
enableAllActions, enableAllActions,
); );
expect(reactMessageDiscord).toHaveBeenCalledWith("C1", "M1", "✅", {}); expect(reactMessageDiscord).toHaveBeenCalledWith("C1", "M1", "✅");
}); });
it("forwards accountId for reactions", async () => { it("forwards accountId for reactions", async () => {
@@ -116,7 +116,7 @@ describe("handleDiscordMessagingAction", () => {
}, },
enableAllActions, enableAllActions,
); );
expect(removeOwnReactionsDiscord).toHaveBeenCalledWith("C1", "M1", {}); expect(removeOwnReactionsDiscord).toHaveBeenCalledWith("C1", "M1");
}); });
it("removes reactions when remove flag set", async () => { it("removes reactions when remove flag set", async () => {
@@ -130,7 +130,7 @@ describe("handleDiscordMessagingAction", () => {
}, },
enableAllActions, enableAllActions,
); );
expect(removeReactionDiscord).toHaveBeenCalledWith("C1", "M1", "✅", {}); expect(removeReactionDiscord).toHaveBeenCalledWith("C1", "M1", "✅");
}); });
it("rejects removes without emoji", async () => { it("rejects removes without emoji", async () => {
@@ -252,18 +252,15 @@ describe("handleDiscordGuildAction - channel management", () => {
}, },
channelsEnabled, channelsEnabled,
); );
expect(createChannelDiscord).toHaveBeenCalledWith( expect(createChannelDiscord).toHaveBeenCalledWith({
{ guildId: "G1",
guildId: "G1", name: "test-channel",
name: "test-channel", type: 0,
type: 0, parentId: undefined,
parentId: undefined, topic: "Test topic",
topic: "Test topic", position: undefined,
position: undefined, nsfw: undefined,
nsfw: undefined, });
},
{},
);
expect(result.details).toMatchObject({ ok: true }); expect(result.details).toMatchObject({ ok: true });
}); });
@@ -292,18 +289,15 @@ describe("handleDiscordGuildAction - channel management", () => {
}, },
channelsEnabled, channelsEnabled,
); );
expect(editChannelDiscord).toHaveBeenCalledWith( expect(editChannelDiscord).toHaveBeenCalledWith({
{ channelId: "C1",
channelId: "C1", name: "new-name",
name: "new-name", topic: "new topic",
topic: "new topic", position: undefined,
position: undefined, parentId: undefined,
parentId: undefined, nsfw: undefined,
nsfw: undefined, rateLimitPerUser: undefined,
rateLimitPerUser: undefined, });
},
{},
);
}); });
it("clears the channel parent when parentId is null", async () => { it("clears the channel parent when parentId is null", async () => {
@@ -315,18 +309,15 @@ describe("handleDiscordGuildAction - channel management", () => {
}, },
channelsEnabled, channelsEnabled,
); );
expect(editChannelDiscord).toHaveBeenCalledWith( expect(editChannelDiscord).toHaveBeenCalledWith({
{ channelId: "C1",
channelId: "C1", name: undefined,
name: undefined, topic: undefined,
topic: undefined, position: undefined,
position: undefined, parentId: null,
parentId: null, nsfw: undefined,
nsfw: undefined, rateLimitPerUser: undefined,
rateLimitPerUser: undefined, });
},
{},
);
}); });
it("clears the channel parent when clearParent is true", async () => { it("clears the channel parent when clearParent is true", async () => {
@@ -338,23 +329,20 @@ describe("handleDiscordGuildAction - channel management", () => {
}, },
channelsEnabled, channelsEnabled,
); );
expect(editChannelDiscord).toHaveBeenCalledWith( expect(editChannelDiscord).toHaveBeenCalledWith({
{ channelId: "C1",
channelId: "C1", name: undefined,
name: undefined, topic: undefined,
topic: undefined, position: undefined,
position: undefined, parentId: null,
parentId: null, nsfw: undefined,
nsfw: undefined, rateLimitPerUser: undefined,
rateLimitPerUser: undefined, });
},
{},
);
}); });
it("deletes a channel", async () => { it("deletes a channel", async () => {
await handleDiscordGuildAction("channelDelete", { channelId: "C1" }, channelsEnabled); await handleDiscordGuildAction("channelDelete", { channelId: "C1" }, channelsEnabled);
expect(deleteChannelDiscord).toHaveBeenCalledWith("C1", {}); expect(deleteChannelDiscord).toHaveBeenCalledWith("C1");
}); });
it("moves a channel", async () => { it("moves a channel", async () => {
@@ -368,15 +356,12 @@ describe("handleDiscordGuildAction - channel management", () => {
}, },
channelsEnabled, channelsEnabled,
); );
expect(moveChannelDiscord).toHaveBeenCalledWith( expect(moveChannelDiscord).toHaveBeenCalledWith({
{ guildId: "G1",
guildId: "G1", channelId: "C1",
channelId: "C1", parentId: "P1",
parentId: "P1", position: 5,
position: 5, });
},
{},
);
}); });
it("clears the channel parent on move when parentId is null", async () => { it("clears the channel parent on move when parentId is null", async () => {
@@ -389,15 +374,12 @@ describe("handleDiscordGuildAction - channel management", () => {
}, },
channelsEnabled, channelsEnabled,
); );
expect(moveChannelDiscord).toHaveBeenCalledWith( expect(moveChannelDiscord).toHaveBeenCalledWith({
{ guildId: "G1",
guildId: "G1", channelId: "C1",
channelId: "C1", parentId: null,
parentId: null, position: undefined,
position: undefined, });
},
{},
);
}); });
it("clears the channel parent on move when clearParent is true", async () => { it("clears the channel parent on move when clearParent is true", async () => {
@@ -410,15 +392,12 @@ describe("handleDiscordGuildAction - channel management", () => {
}, },
channelsEnabled, channelsEnabled,
); );
expect(moveChannelDiscord).toHaveBeenCalledWith( expect(moveChannelDiscord).toHaveBeenCalledWith({
{ guildId: "G1",
guildId: "G1", channelId: "C1",
channelId: "C1", parentId: null,
parentId: null, position: undefined,
position: undefined, });
},
{},
);
}); });
it("creates a category with type=4", async () => { it("creates a category with type=4", async () => {
@@ -427,15 +406,12 @@ describe("handleDiscordGuildAction - channel management", () => {
{ guildId: "G1", name: "My Category" }, { guildId: "G1", name: "My Category" },
channelsEnabled, channelsEnabled,
); );
expect(createChannelDiscord).toHaveBeenCalledWith( expect(createChannelDiscord).toHaveBeenCalledWith({
{ guildId: "G1",
guildId: "G1", name: "My Category",
name: "My Category", type: 4,
type: 4, position: undefined,
position: undefined, });
},
{},
);
}); });
it("edits a category", async () => { it("edits a category", async () => {
@@ -444,19 +420,16 @@ describe("handleDiscordGuildAction - channel management", () => {
{ categoryId: "CAT1", name: "Renamed Category" }, { categoryId: "CAT1", name: "Renamed Category" },
channelsEnabled, channelsEnabled,
); );
expect(editChannelDiscord).toHaveBeenCalledWith( expect(editChannelDiscord).toHaveBeenCalledWith({
{ channelId: "CAT1",
channelId: "CAT1", name: "Renamed Category",
name: "Renamed Category", position: undefined,
position: undefined, });
},
{},
);
}); });
it("deletes a category", async () => { it("deletes a category", async () => {
await handleDiscordGuildAction("categoryDelete", { categoryId: "CAT1" }, channelsEnabled); await handleDiscordGuildAction("categoryDelete", { categoryId: "CAT1" }, channelsEnabled);
expect(deleteChannelDiscord).toHaveBeenCalledWith("CAT1", {}); expect(deleteChannelDiscord).toHaveBeenCalledWith("CAT1");
}); });
it("sets channel permissions for role", async () => { it("sets channel permissions for role", async () => {
@@ -471,16 +444,13 @@ describe("handleDiscordGuildAction - channel management", () => {
}, },
channelsEnabled, channelsEnabled,
); );
expect(setChannelPermissionDiscord).toHaveBeenCalledWith( expect(setChannelPermissionDiscord).toHaveBeenCalledWith({
{ channelId: "C1",
channelId: "C1", targetId: "R1",
targetId: "R1", targetType: 0,
targetType: 0, allow: "1024",
allow: "1024", deny: "2048",
deny: "2048", });
},
{},
);
}); });
it("sets channel permissions for member", async () => { it("sets channel permissions for member", async () => {
@@ -494,16 +464,13 @@ describe("handleDiscordGuildAction - channel management", () => {
}, },
channelsEnabled, channelsEnabled,
); );
expect(setChannelPermissionDiscord).toHaveBeenCalledWith( expect(setChannelPermissionDiscord).toHaveBeenCalledWith({
{ channelId: "C1",
channelId: "C1", targetId: "U1",
targetId: "U1", targetType: 1,
targetType: 1, allow: "1024",
allow: "1024", deny: undefined,
deny: undefined, });
},
{},
);
}); });
it("removes channel permissions", async () => { it("removes channel permissions", async () => {
@@ -512,7 +479,7 @@ describe("handleDiscordGuildAction - channel management", () => {
{ channelId: "C1", targetId: "R1" }, { channelId: "C1", targetId: "R1" },
channelsEnabled, channelsEnabled,
); );
expect(removeChannelPermissionDiscord).toHaveBeenCalledWith("C1", "R1", {}); expect(removeChannelPermissionDiscord).toHaveBeenCalledWith("C1", "R1");
}); });
}); });

View File

@@ -40,7 +40,7 @@ const sendReq = (
); );
}; };
describe("gateway server chat", () => { describe("gateway server chat", () => {
const timeoutMs = process.platform === "win32" ? 120_000 : 60_000; const timeoutMs = 120_000;
test( test(
"handles history, abort, idempotency, and ordering flows", "handles history, abort, idempotency, and ordering flows",
{ timeout: timeoutMs }, { timeout: timeoutMs },