Every route handler was written as one dense semicolon-chained line (server.mjs's main handler was over 2000 characters wide) — real width, not a VSCode wrapping artifact. Ran Prettier to break statement structure into properly indented multi-line code; left template literal string contents untouched since Prettier doesn't reformat inside those, so the large HTML-generating return strings are still single long lines by nature, just no longer compounded by unformatted surrounding JS. Verified: tests pass, node --check passes, and the app renders identically before/after (screenshotted the diff). No devDependency added — npx prettier@3.9.5 pinned in the new scripts keeps the zero-runtime-dependency pledge intact; formatting is a dev- time concern only. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
49 lines
1.6 KiB
JavaScript
49 lines
1.6 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { scanGiteaCandidates } from '../src/gitea.mjs';
|
|
test('finds subject fixes, paginates safely, and ignores body-only matches', async () => {
|
|
const calls = [],
|
|
fetchImpl = async (url) => {
|
|
calls.push(url);
|
|
if (url.includes('/git/commits/abc'))
|
|
return new Response(JSON.stringify({ files: [{ filename: 'web/verify.go' }] }));
|
|
return new Response(
|
|
JSON.stringify([
|
|
{
|
|
sha: 'abc',
|
|
commit: {
|
|
message: 'Fix DTLS verification\nDetailed body',
|
|
committer: { date: '2026-07-20T00:00:00Z' },
|
|
},
|
|
},
|
|
{
|
|
sha: 'def',
|
|
commit: {
|
|
message: 'Add feature\nfix mentioned only in body',
|
|
committer: { date: '2026-07-19T00:00:00Z' },
|
|
},
|
|
},
|
|
]),
|
|
);
|
|
};
|
|
const out = await scanGiteaCandidates({
|
|
baseUrl: 'https://gitea.example',
|
|
repositories: ['explewd/flit'],
|
|
fetchImpl,
|
|
});
|
|
assert.equal(out.candidates.length, 1);
|
|
assert.equal(out.candidates[0].sha, 'abc');
|
|
assert.equal(out.candidates[0].paths, 'web/verify.go');
|
|
assert.equal(out.errors.length, 0);
|
|
assert.ok(calls[0].includes('limit=50&page=1'));
|
|
});
|
|
test('isolates invalid and failed repositories', async () => {
|
|
const out = await scanGiteaCandidates({
|
|
baseUrl: 'https://gitea.example',
|
|
repositories: ['bad', 'explewd/missing'],
|
|
fetchImpl: async () => new Response('', { status: 404 }),
|
|
});
|
|
assert.equal(out.candidates.length, 0);
|
|
assert.equal(out.errors.length, 2);
|
|
});
|