fix: unify gh read and CRUD semantics
This commit is contained in:
@@ -159,13 +159,20 @@ export async function runGhCliPrContract(): Promise<JsonRecord> {
|
||||
assertCondition(Array.isArray(pullRequests) && pullRequests.length === 1, "pr list should return pullRequests", listData);
|
||||
assertCondition(pullRequests[0]?.number === 42 && pullRequests[0]?.base && pullRequests[0]?.head, "pr list should expose PR summary", pullRequests[0]);
|
||||
|
||||
const read = await runCli(["gh", "pr", "read", "42", "--repo", "pikasTech/unidesk", "--json", "body,title,state,head,base"], env);
|
||||
assertCondition(read.status === 0, "pr read should succeed through REST", read.json ?? { stdout: read.stdout });
|
||||
const readData = dataOf(read.json ?? {});
|
||||
const pullRequest = readData.pullRequest as JsonRecord;
|
||||
assertCondition(pullRequest.number === 42 && pullRequest.url === "https://github.com/pikasTech/unidesk/pull/42", "pr read should expose PR details", readData);
|
||||
const selected = readData.json as JsonRecord;
|
||||
assertCondition(selected.body === "PR body" && selected.title === "contract PR", "pr read --json should select fields", readData);
|
||||
|
||||
const view = await runCli(["gh", "pr", "view", "42", "--repo", "pikasTech/unidesk", "--json", "body,title,state,head,base"], env);
|
||||
assertCondition(view.status === 0, "pr view should succeed through REST", view.json ?? { stdout: view.stdout });
|
||||
assertCondition(view.status === 0, "pr view alias should succeed through REST", view.json ?? { stdout: view.stdout });
|
||||
const viewData = dataOf(view.json ?? {});
|
||||
const pullRequest = viewData.pullRequest as JsonRecord;
|
||||
assertCondition(pullRequest.number === 42 && pullRequest.url === "https://github.com/pikasTech/unidesk/pull/42", "pr view should expose PR details", viewData);
|
||||
const selected = viewData.json as JsonRecord;
|
||||
assertCondition(selected.body === "PR body" && selected.title === "contract PR", "pr view --json should select fields", viewData);
|
||||
assertCondition((viewData.pullRequest as JsonRecord).number === 42, "pr view alias should expose PR details", viewData);
|
||||
const viewSelected = viewData.json as JsonRecord;
|
||||
assertCondition(viewSelected.body === "PR body" && viewSelected.title === "contract PR", "pr view alias should preserve selected fields", viewData);
|
||||
|
||||
const preflight = await runBun([
|
||||
"scripts/code-queue-pr-preflight-example.ts",
|
||||
@@ -295,7 +302,7 @@ export async function runGhCliPrContract(): Promise<JsonRecord> {
|
||||
ok: true,
|
||||
checks: [
|
||||
"gh help lists pr create/comment",
|
||||
"pr list/view work through REST with token and no gh binary dependency",
|
||||
"pr list/read/view work through REST with token and no gh binary dependency",
|
||||
"pr create dry-run exposes planned operation",
|
||||
"pr comment dry-run preserves markdown text",
|
||||
"pr update replace/append and close/reopen are available",
|
||||
|
||||
Reference in New Issue
Block a user