kaneo (minimalist kanban) fork to experiment adding a tangled integration github.com/usekaneo/kaneo
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix(github): only ignore missing label removals

Tin 399c7977 4f370aac

+25 -3
+13 -1
apps/api/src/plugins/github/utils/labels.ts
··· 81 81 issue_number: issueNumber, 82 82 name: labelName, 83 83 }); 84 - } catch {} 84 + } catch (error) { 85 + if ( 86 + typeof error === "object" && 87 + error !== null && 88 + "status" in error && 89 + error.status === 404 90 + ) { 91 + return; 92 + } 93 + 94 + console.error(`Failed to remove label "${labelName}" from issue:`, error); 95 + throw error; 96 + } 85 97 }
+12 -2
tests/api/plugins/github/utils/labels.test.ts
··· 66 66 }); 67 67 }); 68 68 69 - it("swallows label removal errors", async () => { 69 + it("ignores missing labels during removal", async () => { 70 70 const octokit = createOctokitMock(); 71 - octokit.rest.issues.removeLabel.mockRejectedValue(new Error("gone")); 71 + octokit.rest.issues.removeLabel.mockRejectedValue({ status: 404 }); 72 72 73 73 await expect( 74 74 removeLabel(octokit as never, "usekaneo", "kaneo", 21, "status:done"), 75 75 ).resolves.toBeUndefined(); 76 + }); 77 + 78 + it("rethrows unexpected label removal errors", async () => { 79 + const octokit = createOctokitMock(); 80 + const error = new Error("gone"); 81 + octokit.rest.issues.removeLabel.mockRejectedValue(error); 82 + 83 + await expect( 84 + removeLabel(octokit as never, "usekaneo", "kaneo", 21, "status:done"), 85 + ).rejects.toThrow("gone"); 76 86 }); 77 87 });