@humanbased/crosscheck 1.9.2-beta.7 → 1.9.2-beta.9

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=test-gate.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-gate.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/test-gate.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { readdirSync, readFileSync } from 'fs';
3
+ import { join } from 'path';
4
+ import { fileURLToPath } from 'url';
5
+ import yaml from 'js-yaml';
6
+ const WORKFLOWS_DIR = join(fileURLToPath(import.meta.url), '..', '..', '..', '.github', 'workflows');
7
+ function readWorkflow(file) {
8
+ return yaml.load(readFileSync(join(WORKFLOWS_DIR, file), 'utf8'));
9
+ }
10
+ function findPublishJobs() {
11
+ return readdirSync(WORKFLOWS_DIR).flatMap(file => Object.entries(readWorkflow(file).jobs)
12
+ .filter(([, job]) => job.steps?.some(step => /\bnpm publish\b/.test(step.run ?? '')))
13
+ .map(([jobId, job]) => [`${file}:${jobId}`, job.steps ?? []]));
14
+ }
15
+ describe('publish jobs', () => {
16
+ it('finds the @beta, @alpha and @latest jobs', () => {
17
+ expect(findPublishJobs().map(([name]) => name)).toEqual(expect.arrayContaining(['publish.yml:staging', 'publish.yml:alpha', 'release.yml:publish']));
18
+ });
19
+ it.each(findPublishJobs())('%s runs the tests before it pushes or publishes anything', (_name, steps) => {
20
+ const testStep = steps.findIndex(step => step.run?.trim() === 'npm test');
21
+ const firstOutwardStep = steps.findIndex(step => /\b(npm publish|git push)\b/.test(step.run ?? ''));
22
+ expect(testStep).toBeGreaterThanOrEqual(0);
23
+ expect(testStep).toBeLessThan(firstOutwardStep);
24
+ });
25
+ });
26
+ describe('the CI check that merges require', () => {
27
+ const ci = readWorkflow('ci.yml');
28
+ it('runs on pull requests to staging, so fork PRs report it', () => {
29
+ expect(ci.on.pull_request?.branches).toEqual(expect.arrayContaining(['main', 'staging']));
30
+ });
31
+ // The require-tests ruleset names these checks in repository settings. Changing
32
+ // them here without changing the ruleset leaves every PR waiting for a check
33
+ // that never reports.
34
+ it('keeps the job name and Node versions the ruleset names', () => {
35
+ expect(ci.jobs.check?.name).toBe('Lint, typecheck, build & test');
36
+ expect(ci.jobs.check?.strategy?.matrix?.node).toEqual(['18', '20', '22']);
37
+ });
38
+ });
39
+ //# sourceMappingURL=test-gate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-gate.test.js","sourceRoot":"","sources":["../../src/__tests__/test-gate.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@humanbased/crosscheck",
3
- "version": "1.9.2-beta.7",
3
+ "version": "1.9.2-beta.9",
4
4
  "description": "AI code review pipeline that turns agent-written PRs into merge-ready patches",
5
5
  "bin": {
6
6
  "crosscheck": "dist/cli.js",