feat: expand diff exclusions
This commit is contained in:
+6
-2
@@ -11,7 +11,7 @@ const api = (path) => `${GITEA_SERVER_URL.replace(/\/$/, '')}/api/v1${path}`;
|
||||
*/
|
||||
export async function getPRDiff() {
|
||||
const resp = await axios.get(api(`/repos/${GITEA_REPOSITORY}/pulls/${PR_NUMBER}.diff`), { headers: headers(), timeout: 60000, httpsAgent });
|
||||
return filterDiff(resp.data, ['.gitea/']);
|
||||
return filterDiff(resp.data, ['.gitea/', '.amazonq/', '.claude/', '.codex/', '.gemini/', '.github/', 'CLAUDE.md', 'GEMINI.md', 'TODO.md', 'README.md']);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -20,7 +20,11 @@ export async function getPRDiff() {
|
||||
*/
|
||||
export function filterDiff(diff, excludePrefixes) {
|
||||
return diff.split(/(?=^diff --git )/m)
|
||||
.filter(block => !excludePrefixes.some(p => block.startsWith(`diff --git a/${p}`)))
|
||||
.filter(block => !excludePrefixes.some(p => {
|
||||
const prefix = `diff --git a/${p}`;
|
||||
const singleFile = `diff --git a/${p} b/${p}`;
|
||||
return block.startsWith(prefix) || block.startsWith(singleFile);
|
||||
}))
|
||||
.join('');
|
||||
}
|
||||
|
||||
|
||||
+11
-9
@@ -64,22 +64,24 @@ describe('filterDiff', async () => {
|
||||
|
||||
const block = (file) => `diff --git a/${file} b/${file}\n--- a/${file}\n+++ b/${file}\n@@ -1 +1 @@\n-old\n+new\n`;
|
||||
|
||||
it('filters out .gitea/ blocks', () => {
|
||||
const diff = block('.gitea/workflows/review.yaml') + block('src/index.js');
|
||||
const result = filterDiff(diff, ['.gitea/']);
|
||||
it('filters out configured folder blocks', () => {
|
||||
const diff = block('.gitea/workflows/review.yaml') + block('.amazonq/rules/triage-findings.md') + block('src/index.js');
|
||||
const result = filterDiff(diff, ['.gitea/', '.amazonq/']);
|
||||
assert.ok(!result.includes('.gitea/'));
|
||||
assert.ok(!result.includes('.amazonq/'));
|
||||
assert.ok(result.includes('src/index.js'));
|
||||
});
|
||||
|
||||
it('does not filter non-.gitea/ blocks', () => {
|
||||
const diff = block('src/index.js') + block('README.md');
|
||||
const result = filterDiff(diff, ['.gitea/']);
|
||||
assert.equal(result, diff);
|
||||
it('filters out configured top-level file blocks', () => {
|
||||
const diff = block('README.md') + block('src/index.js');
|
||||
const result = filterDiff(diff, ['README.md', 'TODO.md']);
|
||||
assert.ok(!result.includes('README.md'));
|
||||
assert.ok(result.includes('src/index.js'));
|
||||
});
|
||||
|
||||
it('returns empty string when all blocks are excluded', () => {
|
||||
const diff = block('.gitea/workflows/review.yaml') + block('.gitea/ai-review/findings.json');
|
||||
const result = filterDiff(diff, ['.gitea/']);
|
||||
const diff = block('.gitea/workflows/review.yaml') + block('.gitea/ai-review/findings.json') + block('CLAUDE.md');
|
||||
const result = filterDiff(diff, ['.gitea/', 'CLAUDE.md']);
|
||||
assert.equal(result, '');
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user