From a7f170bc0365387b18c96c52ed2c53b6f650f939 Mon Sep 17 00:00:00 2001 From: Myllaume Date: Sun, 15 Mar 2026 15:21:35 +0100 Subject: [PATCH] fix: report dir --- controllers/modelize.js | 7 +------ controllers/modelize.test.js | 36 ++++++++++++++++++++++++++++++++++++ e2e/exec-modelize.sh | 1 + 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/controllers/modelize.js b/controllers/modelize.js index ed53ade..1e5815c 100644 --- a/controllers/modelize.js +++ b/controllers/modelize.js @@ -223,12 +223,7 @@ async function modelize(options) { if (reportMap.length > 0) { const reportHtml = writeReportFile(reportMap, config); - if (!fs.existsSync(envPathLogDir)) { - await fsPromise.mkdir(envPathLogDir); - } - if (!fs.existsSync(reportDir)) { - await fsPromise.mkdir(reportDir); - } + await fsPromise.mkdir(reportDir, { recursive: true }); const reportFilePath = path.join(reportDir, getTimestampTuple().join('') + '.html'); await fsPromise.writeFile(reportFilePath, reportHtml, 'utf8'); diff --git a/controllers/modelize.test.js b/controllers/modelize.test.js index f2c0d29..7e31d68 100644 --- a/controllers/modelize.test.js +++ b/controllers/modelize.test.js @@ -3,6 +3,7 @@ import Config from '../core/models/config.js'; import findMarkdownFilesRecursively from '../core/utils/findMarkdownFilesRecursively.js'; import getGraph from '../core/utils/getGraph.js'; import readRecordFile from '../core/utils/readRecordFile.js'; +import fsPromise from 'node:fs/promises'; jest.mock('../core/models/config.js'); jest.mock('../core/models/bibliography.js', () => { @@ -276,4 +277,39 @@ describe('modelize', () => { }, ]); }); + + it('should not create report dir if no report items', async () => { + fsPromise.mkdir.mockClear(); + + Config.get.mockReturnValue(config); + getGraph.mockReturnValue({ graph: 'graph', brokenEdges: [] }); + findMarkdownFilesRecursively.mockResolvedValue(['../file1.md']); + readRecordFile.mockResolvedValueOnce({ + records: [], + recordsCiteproc: [], + reportItems: [], + }); + + await modelize({ citeproc: false, customCss: false }); + + expect(fsPromise.mkdir).not.toHaveBeenCalled(); + }); + + it('should create report dir recursively when report items exist', async () => { + fsPromise.mkdir.mockClear(); + + Config.get.mockReturnValue(config); + getGraph.mockReturnValue({ graph: 'graph', brokenEdges: [] }); + findMarkdownFilesRecursively.mockResolvedValue(['../file1.md']); + readRecordFile.mockResolvedValueOnce({ + records: [{ id: 'test1' }], + recordsCiteproc: [], + reportItems: [{ isError: true, locator: { file: '../file1.md' }, message: 'error' }], + }); + + await modelize({ citeproc: false, customCss: false }); + + expect(fsPromise.mkdir).toHaveBeenCalledTimes(1); + expect(fsPromise.mkdir.mock.calls[0][1]).toEqual({ recursive: true }); + }); }); diff --git a/e2e/exec-modelize.sh b/e2e/exec-modelize.sh index 0fdc901..e66bafd 100644 --- a/e2e/exec-modelize.sh +++ b/e2e/exec-modelize.sh @@ -1,4 +1,5 @@ # Run on local / CI +set -e cd e2e/