@humanbased/crosscheck 1.3.0-beta.93 → 1.3.0-beta.94

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=superseded-fix-pr.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"superseded-fix-pr.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/superseded-fix-pr.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,225 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { autoFixBranchName, autoFixPRIntro, isCrosscheckAutoFixPR, buildSupersededComment, closeSupersededAutoFixPRs, sourcePRHasMerged, } from '../github/superseded-fix-pr.js';
3
+ const OWNER = 'humanbased-ai';
4
+ const REPO = 'monorepo';
5
+ // The pair from the reported regression: #2527 merged as 8ae3dc694, and the auto-fix
6
+ // PR #2532 cut from its pre-fix state stayed open and mergeable.
7
+ const SOURCE_PR = 2527;
8
+ const FIX_PR = 2532;
9
+ const MERGE_SHA = '8ae3dc694b1f2a3c5d7e9f0a1b2c3d4e5f60718a';
10
+ function makeOctokit(options = {}) {
11
+ const list = vi.fn(async () => {
12
+ if (options.listError)
13
+ throw options.listError;
14
+ return { data: options.open ?? [] };
15
+ });
16
+ const createComment = vi.fn(async () => {
17
+ if (options.commentError)
18
+ throw options.commentError;
19
+ return { data: { id: 1 } };
20
+ });
21
+ const update = vi.fn(async () => {
22
+ if (options.updateError)
23
+ throw options.updateError;
24
+ return { data: {} };
25
+ });
26
+ return {
27
+ octokit: {
28
+ rest: { pulls: { list, update }, issues: { createComment } },
29
+ },
30
+ list,
31
+ createComment,
32
+ update,
33
+ };
34
+ }
35
+ function autoFixPR(number = FIX_PR, sourcePrNumber = SOURCE_PR) {
36
+ return {
37
+ number,
38
+ body: [
39
+ autoFixPRIntro(sourcePrNumber),
40
+ '',
41
+ `Review: https://github.com/${OWNER}/${REPO}/pull/${sourcePrNumber}`,
42
+ ].join('\n'),
43
+ };
44
+ }
45
+ describe('autoFixBranchName', () => {
46
+ it('matches the branch the fix step pushes', () => {
47
+ expect(autoFixBranchName(SOURCE_PR)).toBe('fix/cr-2527-review-issues');
48
+ });
49
+ });
50
+ describe('isCrosscheckAutoFixPR', () => {
51
+ it('recognises the body the fix step writes', () => {
52
+ expect(isCrosscheckAutoFixPR(autoFixPR().body, SOURCE_PR)).toBe(true);
53
+ });
54
+ it('rejects a body naming a different source PR', () => {
55
+ expect(isCrosscheckAutoFixPR(autoFixPR(FIX_PR, 2444).body, SOURCE_PR)).toBe(false);
56
+ });
57
+ it('rejects a hand-written PR that only shares the branch name', () => {
58
+ expect(isCrosscheckAutoFixPR('Picking up the review findings from #2527 by hand.', SOURCE_PR)).toBe(false);
59
+ });
60
+ it('rejects an empty body', () => {
61
+ expect(isCrosscheckAutoFixPR(null, SOURCE_PR)).toBe(false);
62
+ });
63
+ });
64
+ describe('buildSupersededComment', () => {
65
+ it('names the merged source PR and links the merge commit', () => {
66
+ const body = buildSupersededComment({ owner: OWNER, repo: REPO, sourcePrNumber: SOURCE_PR, mergeCommitSha: MERGE_SHA });
67
+ expect(body).toContain('Superseded');
68
+ expect(body).toContain(`#${SOURCE_PR} merged`);
69
+ expect(body).toContain(`https://github.com/${OWNER}/${REPO}/commit/${MERGE_SHA}`);
70
+ });
71
+ it('omits the merge link when the merge commit is unknown', () => {
72
+ const body = buildSupersededComment({ owner: OWNER, repo: REPO, sourcePrNumber: SOURCE_PR, mergeCommitSha: null });
73
+ expect(body).toContain(`#${SOURCE_PR} merged,`);
74
+ expect(body).not.toContain('/commit/');
75
+ });
76
+ });
77
+ describe('closeSupersededAutoFixPRs', () => {
78
+ it('comments then closes the auto-fix PR cut from the merged PR', async () => {
79
+ const { octokit, list, createComment, update } = makeOctokit({ open: [autoFixPR()] });
80
+ const outcomes = await closeSupersededAutoFixPRs(octokit, OWNER, REPO, SOURCE_PR, MERGE_SHA);
81
+ expect(outcomes).toEqual([{ prNumber: FIX_PR, status: 'closed' }]);
82
+ expect(list).toHaveBeenCalledWith({
83
+ owner: OWNER, repo: REPO, state: 'open', head: `${OWNER}:fix/cr-2527-review-issues`,
84
+ });
85
+ expect(createComment).toHaveBeenCalledWith(expect.objectContaining({
86
+ issue_number: FIX_PR,
87
+ body: expect.stringContaining('Superseded'),
88
+ }));
89
+ expect(update).toHaveBeenCalledWith({ owner: OWNER, repo: REPO, pull_number: FIX_PR, state: 'closed' });
90
+ // The reason must land before the PR closes, or a reader sees a bare closed PR.
91
+ expect(createComment.mock.invocationCallOrder[0]).toBeLessThan(update.mock.invocationCallOrder[0]);
92
+ });
93
+ it('returns no outcomes when the merged PR had no auto-fix PR', async () => {
94
+ const { octokit, update } = makeOctokit({ open: [] });
95
+ const outcomes = await closeSupersededAutoFixPRs(octokit, OWNER, REPO, SOURCE_PR, MERGE_SHA);
96
+ expect(outcomes).toEqual([]);
97
+ expect(update).not.toHaveBeenCalled();
98
+ });
99
+ it('leaves a PR crosscheck did not author open', async () => {
100
+ const { octokit, createComment, update } = makeOctokit({
101
+ open: [{ number: 2540, body: 'Manual follow-up on the same branch name.' }],
102
+ });
103
+ const outcomes = await closeSupersededAutoFixPRs(octokit, OWNER, REPO, SOURCE_PR, MERGE_SHA);
104
+ expect(outcomes).toEqual([{ prNumber: 2540, status: 'not_crosscheck' }]);
105
+ expect(createComment).not.toHaveBeenCalled();
106
+ expect(update).not.toHaveBeenCalled();
107
+ });
108
+ it('reports a close failure instead of throwing', async () => {
109
+ const { octokit } = makeOctokit({ open: [autoFixPR()], updateError: new Error('Resource not accessible by integration') });
110
+ const outcomes = await closeSupersededAutoFixPRs(octokit, OWNER, REPO, SOURCE_PR, MERGE_SHA);
111
+ expect(outcomes).toEqual([
112
+ { prNumber: FIX_PR, status: 'failed', reason: 'Resource not accessible by integration' },
113
+ ]);
114
+ });
115
+ it('does not close the PR when the superseded comment could not be posted', async () => {
116
+ const { octokit, update } = makeOctokit({ open: [autoFixPR()], commentError: new Error('403 Forbidden') });
117
+ const outcomes = await closeSupersededAutoFixPRs(octokit, OWNER, REPO, SOURCE_PR, MERGE_SHA);
118
+ expect(outcomes[0].status).toBe('failed');
119
+ expect(update).not.toHaveBeenCalled();
120
+ });
121
+ });
122
+ describe('closeSupersededAutoFixPRs — concurrency', () => {
123
+ // AGENTS.md: never await inside a loop. Serialising the candidates makes every
124
+ // later one wait on the comment+close round-trips of the earlier ones.
125
+ it('processes candidates concurrently', async () => {
126
+ const started = [];
127
+ let releaseAll = () => { };
128
+ const gate = new Promise(resolve => { releaseAll = resolve; });
129
+ const createComment = vi.fn(async ({ issue_number }) => {
130
+ started.push(issue_number);
131
+ await gate;
132
+ return { data: { id: 1 } };
133
+ });
134
+ const octokit = {
135
+ rest: {
136
+ pulls: {
137
+ list: vi.fn(async () => ({ data: [autoFixPR(2532), autoFixPR(2533), autoFixPR(2534)] })),
138
+ update: vi.fn(async () => ({ data: {} })),
139
+ },
140
+ issues: { createComment },
141
+ },
142
+ };
143
+ const pending = closeSupersededAutoFixPRs(octokit, OWNER, REPO, SOURCE_PR, MERGE_SHA);
144
+ // Every candidate must be in flight before any of them is allowed to finish.
145
+ await Promise.resolve();
146
+ expect(started).toEqual([2532, 2533, 2534]);
147
+ releaseAll();
148
+ const outcomes = await pending;
149
+ expect(outcomes.map(o => o.prNumber)).toEqual([2532, 2533, 2534]);
150
+ expect(outcomes.every(o => o.status === 'closed')).toBe(true);
151
+ });
152
+ it('still comments before closing within each candidate', async () => {
153
+ const order = [];
154
+ const octokit = {
155
+ rest: {
156
+ pulls: {
157
+ list: vi.fn(async () => ({ data: [autoFixPR(2532), autoFixPR(2533)] })),
158
+ update: vi.fn(async ({ pull_number }) => {
159
+ order.push(`close:${pull_number}`);
160
+ return { data: {} };
161
+ }),
162
+ },
163
+ issues: {
164
+ createComment: vi.fn(async ({ issue_number }) => {
165
+ order.push(`comment:${issue_number}`);
166
+ return { data: { id: 1 } };
167
+ }),
168
+ },
169
+ },
170
+ };
171
+ await closeSupersededAutoFixPRs(octokit, OWNER, REPO, SOURCE_PR, MERGE_SHA);
172
+ expect(order.indexOf('comment:2532')).toBeLessThan(order.indexOf('close:2532'));
173
+ expect(order.indexOf('comment:2533')).toBeLessThan(order.indexOf('close:2533'));
174
+ });
175
+ it('keeps one candidate failing from taking down the others', async () => {
176
+ const octokit = {
177
+ rest: {
178
+ pulls: {
179
+ list: vi.fn(async () => ({ data: [autoFixPR(2532), autoFixPR(2533)] })),
180
+ update: vi.fn(async ({ pull_number }) => {
181
+ if (pull_number === 2532)
182
+ throw new Error('403 Forbidden');
183
+ return { data: {} };
184
+ }),
185
+ },
186
+ issues: { createComment: vi.fn(async () => ({ data: { id: 1 } })) },
187
+ },
188
+ };
189
+ const outcomes = await closeSupersededAutoFixPRs(octokit, OWNER, REPO, SOURCE_PR, MERGE_SHA);
190
+ expect(outcomes).toEqual([
191
+ { prNumber: 2532, status: 'failed', reason: '403 Forbidden' },
192
+ { prNumber: 2533, status: 'closed' },
193
+ ]);
194
+ });
195
+ });
196
+ describe('sourcePRHasMerged', () => {
197
+ // The merge handler sweeps once. A fallback auto-fix PR created after that
198
+ // sweep is never seen by it, so it stays open and mergeable — the exact
199
+ // stale-snapshot regression this feature exists to prevent. The fix step
200
+ // asks this immediately before it pushes and opens the PR.
201
+ const octokitWith = (result) => ({
202
+ rest: { pulls: { get: vi.fn(async () => {
203
+ if (result instanceof Error)
204
+ throw result;
205
+ return { data: result };
206
+ }) } },
207
+ });
208
+ it('is true once the source PR has merged', async () => {
209
+ expect(await sourcePRHasMerged(octokitWith({ merged: true, state: 'closed' }), OWNER, REPO, SOURCE_PR)).toBe(true);
210
+ });
211
+ it('is false while the source PR is still open', async () => {
212
+ expect(await sourcePRHasMerged(octokitWith({ merged: false, state: 'open' }), OWNER, REPO, SOURCE_PR)).toBe(false);
213
+ });
214
+ it('is false for a PR closed without merging', async () => {
215
+ // The source branch is still where that finding gets addressed.
216
+ expect(await sourcePRHasMerged(octokitWith({ merged: false, state: 'closed' }), OWNER, REPO, SOURCE_PR)).toBe(false);
217
+ });
218
+ it('fails open when the state cannot be read', async () => {
219
+ // A dropped fix is invisible; an unreadable lookup must not silently discard
220
+ // work. Today's behaviour is to always create, so failing open is no
221
+ // regression — the merge webhook remains the primary mechanism.
222
+ expect(await sourcePRHasMerged(octokitWith(new Error('502 Bad Gateway')), OWNER, REPO, SOURCE_PR)).toBe(false);
223
+ });
224
+ });
225
+ //# sourceMappingURL=superseded-fix-pr.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"superseded-fix-pr.test.js","sourceRoot":"","sources":["../../src/__tests__/superseded-fix-pr.test.ts"],"names":[],"mappings":"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"}
@@ -194,4 +194,64 @@ describe('createWebhookServer — issue_comment handling', () => {
194
194
  }
195
195
  });
196
196
  });
197
+ const closedPREvent = (merged) => ({
198
+ action: 'closed', number: 2527,
199
+ pull_request: {
200
+ title: 'feat: campaign chip', body: '', html_url: 'https://github.com/acme/repo/pull/2527',
201
+ head: { ref: 'feat/chip', sha: 'e358bdba7', repo: { full_name: 'acme/repo' } },
202
+ base: { ref: 'staging', repo: { full_name: 'acme/repo' } },
203
+ user: { login: 'bob' },
204
+ merged,
205
+ merge_commit_sha: merged ? '8ae3dc694' : null,
206
+ },
207
+ repository: { name: 'repo', owner: { login: 'acme' }, clone_url: '' },
208
+ });
209
+ describe('createWebhookServer — merged pull_request handling', () => {
210
+ it('calls onMerged for a PR closed as merged', async () => {
211
+ const merged = [];
212
+ const prReceived = [];
213
+ const server = createWebhookServer(config, secret, e => prReceived.push(e), () => { }, undefined, undefined, e => merged.push(e));
214
+ await startServer(server);
215
+ try {
216
+ const status = await postWebhook(server, 'pull_request', closedPREvent(true));
217
+ await new Promise(r => setImmediate(r));
218
+ expect(status).toBe(200);
219
+ expect(merged).toHaveLength(1);
220
+ expect(merged[0].pull_request.merge_commit_sha).toBe('8ae3dc694');
221
+ // A merge is not a review trigger.
222
+ expect(prReceived).toHaveLength(0);
223
+ }
224
+ finally {
225
+ await stopServer(server);
226
+ }
227
+ });
228
+ it('does not call onMerged for a PR closed unmerged', async () => {
229
+ const merged = [];
230
+ const server = createWebhookServer(config, secret, () => { }, () => { }, undefined, undefined, e => merged.push(e));
231
+ await startServer(server);
232
+ try {
233
+ const status = await postWebhook(server, 'pull_request', closedPREvent(false));
234
+ await new Promise(r => setImmediate(r));
235
+ expect(status).toBe(200);
236
+ expect(merged).toHaveLength(0);
237
+ }
238
+ finally {
239
+ await stopServer(server);
240
+ }
241
+ });
242
+ it('acknowledges a merged PR when no onMerged handler is provided', async () => {
243
+ const prReceived = [];
244
+ const server = createWebhookServer(config, secret, e => prReceived.push(e), () => { });
245
+ await startServer(server);
246
+ try {
247
+ const status = await postWebhook(server, 'pull_request', closedPREvent(true));
248
+ await new Promise(r => setImmediate(r));
249
+ expect(status).toBe(200);
250
+ expect(prReceived).toHaveLength(0);
251
+ }
252
+ finally {
253
+ await stopServer(server);
254
+ }
255
+ });
256
+ });
197
257
  //# sourceMappingURL=webhook.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.test.js","sourceRoot":"","sources":["../../src/__tests__/webhook.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webhook.test.js","sourceRoot":"","sources":["../../src/__tests__/webhook.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AA2KA,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAuBD,wBAAsB,QAAQ,CAAC,IAAI,GAAE,SAAc,iBAy2ClD"}
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AA4KA,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAuBD,wBAAsB,QAAQ,CAAC,IAAI,GAAE,SAAc,iBAo4ClD"}
@@ -2,6 +2,7 @@ import { execSync, spawn } from 'child_process';
2
2
  import chalk from 'chalk';
3
3
  import { createWebhookServer } from '../github/webhook.js';
4
4
  import { createGithubClient, getCommitMessage, registerOrgWebhook, deleteOrgWebhook, registerRepoWebhook, deleteRepoWebhook, patchOrgWebhookEvents, patchRepoWebhookEvents, findOrgWebhook, findRepoWebhook, listUserRepos, checkRepoAccessible, } from '../github/client.js';
5
+ import { closeSupersededAutoFixPRs } from '../github/superseded-fix-pr.js';
5
6
  import { detectOriginFull, assignReviewer } from '../github/detector.js';
6
7
  import { loadConfig, getGithubToken, getWebhookSecret, resolveConfigPath, promptDeploymentMode, detectScopesForDeployment, patchDeploymentConfig, detectGitHubLogin, getLinearCredentials, } from '../config/loader.js';
7
8
  import { randomFortune } from '../lib/fortune.js';
@@ -872,6 +873,29 @@ export async function runWatch(opts = {}) {
872
873
  catch (err) {
873
874
  logError({ repo: `${owner}/${repoName}`, pr: prNumber, phase: 'comment_trigger' }, err);
874
875
  }
876
+ }, async (event) => {
877
+ const owner = event.repository.owner.login;
878
+ const repoName = event.repository.name;
879
+ const prNumber = event.number;
880
+ try {
881
+ const octokit = createGithubClient(token);
882
+ const outcomes = await closeSupersededAutoFixPRs(octokit, owner, repoName, prNumber, event.pull_request.merge_commit_sha ?? null);
883
+ for (const outcome of outcomes) {
884
+ fileLog({
885
+ level: outcome.status === 'failed' ? 'warn' : 'info',
886
+ event: 'auto_fix_pr_superseded',
887
+ repo: `${owner}/${repoName}`, pr: prNumber,
888
+ fix_pr: outcome.prNumber, status: outcome.status,
889
+ ...(outcome.reason && { reason: outcome.reason }),
890
+ });
891
+ if (outcome.status === 'closed') {
892
+ bLog(chalk.dim(fmtTime()) + ` closed superseded auto-fix PR ${owner}/${repoName}#${outcome.prNumber} (${prNumber} merged)`);
893
+ }
894
+ }
895
+ }
896
+ catch (err) {
897
+ logError({ repo: `${owner}/${repoName}`, pr: prNumber, phase: 'auto_fix_supersede' }, err);
898
+ }
875
899
  });
876
900
  await new Promise((resolve, reject) => {
877
901
  server.on('error', (err) => {