fix: normalize Forgejo PR/issue state to uppercase
Forgejo REST API returns state as lowercase ("closed"/"open") but
branch.ts compares against GraphQL-style uppercase ("CLOSED"/"MERGED").
This caused @claude on closed/merged PRs to take the open-PR checkout
path, failing with "fatal: invalid reference: refs/pull/N/head".
Normalize state to uppercase in the Forgejo data fetcher, matching the
existing pattern used for review state (line 153).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
2e1165ed90
commit
29a1032aa6
2 files changed
+4
-4
No files matched your search
@@ -300,7 +300,7 @@ export async function fetchForgejoData({
|
||||
lastEditedAt: undefined,
|
||||
additions: pr.additions,
|
||||
deletions: pr.deletions,
|
||||
state: pr.state,
|
||||
state: pr.state.toUpperCase(), // Normalize to uppercase (Forgejo REST returns "closed"/"open", branch.ts expects "CLOSED"/"MERGED")
|
||||
labels: {
|
||||
nodes: (pr.labels ?? []).map((l) => ({
|
||||
name: typeof l === "string" ? l : (l.name ?? ""),
|
||||
@@ -352,7 +352,7 @@ export async function fetchForgejoData({
|
||||
createdAt: issue.created_at,
|
||||
updatedAt: issue.updated_at,
|
||||
lastEditedAt: undefined,
|
||||
state: issue.state ?? "open",
|
||||
state: (issue.state ?? "open").toUpperCase(), // Normalize to uppercase for consistency with GraphQL conventions
|
||||
labels: {
|
||||
nodes: (issue.labels ?? []).map((l) => ({
|
||||
name: typeof l === "string" ? l : (l.name ?? ""),
|
||||
|
||||
@@ -211,7 +211,7 @@ describe("fetchForgejoData", () => {
|
||||
expect(pr.lastEditedAt).toBeUndefined();
|
||||
expect(pr.additions).toBe(42);
|
||||
expect(pr.deletions).toBe(15);
|
||||
expect(pr.state).toBe("open");
|
||||
expect(pr.state).toBe("OPEN");
|
||||
});
|
||||
|
||||
it("should map PR labels correctly", async () => {
|
||||
@@ -455,7 +455,7 @@ describe("fetchForgejoData", () => {
|
||||
expect(issue.createdAt).toBe("2024-01-10T08:00:00Z");
|
||||
expect(issue.updatedAt).toBe("2024-01-14T09:00:00Z");
|
||||
expect(issue.lastEditedAt).toBeUndefined();
|
||||
expect(issue.state).toBe("open");
|
||||
expect(issue.state).toBe("OPEN");
|
||||
expect(issue.labels.nodes).toEqual([{ name: "bug" }]);
|
||||
});
|
||||
|
||||
|
||||
Reference in new issue
Block a user