test: cover saveFindings temp dir cases
This commit is contained in:
+59
-6
@@ -1,15 +1,22 @@
|
||||
import { describe, it } from 'node:test';
|
||||
import { describe, it, afterEach } from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import fs from 'fs';
|
||||
import os from 'os';
|
||||
import path from 'path';
|
||||
import fs from 'node:fs';
|
||||
import os from 'node:os';
|
||||
import path from 'node:path';
|
||||
import { saveFindings } from './comments.js';
|
||||
import { FINDINGS_PATH } from './config.js';
|
||||
|
||||
describe('saveFindings', () => {
|
||||
const tempDirs = [];
|
||||
const makeTempDir = prefix => {
|
||||
const dir = fs.mkdtempSync(path.join(os.tmpdir(), prefix));
|
||||
tempDirs.push(dir);
|
||||
return dir;
|
||||
};
|
||||
|
||||
it('writes findings to workspace and mirror dirs when provided', () => {
|
||||
const workspace = fs.mkdtempSync(path.join(os.tmpdir(), 'findings-ws-'));
|
||||
const mirrorDir = fs.mkdtempSync(path.join(os.tmpdir(), 'findings-mirror-'));
|
||||
const workspace = makeTempDir('findings-ws-');
|
||||
const mirrorDir = makeTempDir('findings-mirror-');
|
||||
const findings = [{ level: 'warning', role: 'Leo', location: 'file.js:1', suggestion: 'test' }];
|
||||
|
||||
saveFindings(workspace, findings, mirrorDir);
|
||||
@@ -19,4 +26,50 @@ describe('saveFindings', () => {
|
||||
assert.equal(workspaceText, JSON.stringify(findings, null, 2) + '\n');
|
||||
assert.equal(mirrorText, JSON.stringify(findings, null, 2) + '\n');
|
||||
});
|
||||
|
||||
it('writes only to workspace when mirrorDir is omitted', () => {
|
||||
const workspace = makeTempDir('findings-ws-');
|
||||
const findings = [{ level: 'info', role: 'Maya', location: 'file.js:2', suggestion: 'note' }];
|
||||
|
||||
saveFindings(workspace, findings);
|
||||
|
||||
const workspaceText = fs.readFileSync(path.join(workspace, FINDINGS_PATH), 'utf8');
|
||||
assert.equal(workspaceText, JSON.stringify(findings, null, 2) + '\n');
|
||||
});
|
||||
|
||||
it('does not duplicate writes when mirrorDir matches workspace', () => {
|
||||
const workspace = makeTempDir('findings-same-');
|
||||
const findings = [];
|
||||
const writeCalls = [];
|
||||
const originalWriteFileSync = fs.writeFileSync;
|
||||
|
||||
fs.writeFileSync = (...args) => {
|
||||
writeCalls.push(args[0]);
|
||||
return originalWriteFileSync(...args);
|
||||
};
|
||||
|
||||
try {
|
||||
saveFindings(workspace, findings, workspace);
|
||||
} finally {
|
||||
fs.writeFileSync = originalWriteFileSync;
|
||||
}
|
||||
|
||||
assert.equal(writeCalls.length, 1);
|
||||
assert.equal(writeCalls[0], path.join(workspace, FINDINGS_PATH));
|
||||
});
|
||||
|
||||
it('writes an empty JSON array when findings is empty', () => {
|
||||
const workspace = makeTempDir('findings-empty-');
|
||||
|
||||
saveFindings(workspace, []);
|
||||
|
||||
const workspaceText = fs.readFileSync(path.join(workspace, FINDINGS_PATH), 'utf8');
|
||||
assert.equal(workspaceText, '[]\n');
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
while (tempDirs.length > 0) {
|
||||
fs.rmSync(tempDirs.pop(), { recursive: true, force: true });
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user