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,
|
lastEditedAt: undefined,
|
||||||
additions: pr.additions,
|
additions: pr.additions,
|
||||||
deletions: pr.deletions,
|
deletions: pr.deletions,
|
||||||
state: pr.state,
|
state: pr.state.toUpperCase(), // Normalize to uppercase (Forgejo REST returns "closed"/"open", branch.ts expects "CLOSED"/"MERGED")
|
||||||
labels: {
|
labels: {
|
||||||
nodes: (pr.labels ?? []).map((l) => ({
|
nodes: (pr.labels ?? []).map((l) => ({
|
||||||
name: typeof l === "string" ? l : (l.name ?? ""),
|
name: typeof l === "string" ? l : (l.name ?? ""),
|
||||||
@@ -352,7 +352,7 @@ export async function fetchForgejoData({
|
|||||||
createdAt: issue.created_at,
|
createdAt: issue.created_at,
|
||||||
updatedAt: issue.updated_at,
|
updatedAt: issue.updated_at,
|
||||||
lastEditedAt: undefined,
|
lastEditedAt: undefined,
|
||||||
state: issue.state ?? "open",
|
state: (issue.state ?? "open").toUpperCase(), // Normalize to uppercase for consistency with GraphQL conventions
|
||||||
labels: {
|
labels: {
|
||||||
nodes: (issue.labels ?? []).map((l) => ({
|
nodes: (issue.labels ?? []).map((l) => ({
|
||||||
name: typeof l === "string" ? l : (l.name ?? ""),
|
name: typeof l === "string" ? l : (l.name ?? ""),
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ describe("fetchForgejoData", () => {
|
|||||||
expect(pr.lastEditedAt).toBeUndefined();
|
expect(pr.lastEditedAt).toBeUndefined();
|
||||||
expect(pr.additions).toBe(42);
|
expect(pr.additions).toBe(42);
|
||||||
expect(pr.deletions).toBe(15);
|
expect(pr.deletions).toBe(15);
|
||||||
expect(pr.state).toBe("open");
|
expect(pr.state).toBe("OPEN");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should map PR labels correctly", async () => {
|
it("should map PR labels correctly", async () => {
|
||||||
@@ -455,7 +455,7 @@ describe("fetchForgejoData", () => {
|
|||||||
expect(issue.createdAt).toBe("2024-01-10T08:00:00Z");
|
expect(issue.createdAt).toBe("2024-01-10T08:00:00Z");
|
||||||
expect(issue.updatedAt).toBe("2024-01-14T09:00:00Z");
|
expect(issue.updatedAt).toBe("2024-01-14T09:00:00Z");
|
||||||
expect(issue.lastEditedAt).toBeUndefined();
|
expect(issue.lastEditedAt).toBeUndefined();
|
||||||
expect(issue.state).toBe("open");
|
expect(issue.state).toBe("OPEN");
|
||||||
expect(issue.labels.nodes).toEqual([{ name: "bug" }]);
|
expect(issue.labels.nodes).toEqual([{ name: "bug" }]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user