diff --git a/lib/file-set-pipeline/log.js b/lib/file-set-pipeline/log.js index a67fe6e..b2cf072 100644 --- a/lib/file-set-pipeline/log.js +++ b/lib/file-set-pipeline/log.js @@ -36,7 +36,7 @@ export async function log(context, settings) { func = settings.reporter } - let diagnostics = func( + let diagnostics = await func( context.files.filter( (file) => file.data.unifiedEngineGiven && !file.data.unifiedEngineIgnored ), diff --git a/lib/index.js b/lib/index.js index c25d48a..da768d4 100644 --- a/lib/index.js +++ b/lib/index.js @@ -17,7 +17,7 @@ * @callback VFileReporter * @param {Array} files * @param {VFileReporterOptions} options - * @returns {string} + * @returns {string | Promise} * * @typedef Settings * @property {Options['processor']} processor diff --git a/test/reporting.js b/test/reporting.js index 43c53a7..cb2d496 100644 --- a/test/reporting.js +++ b/test/reporting.js @@ -18,6 +18,9 @@ const windows = process.platform === 'win32' const cross = windows ? '×' : '✖' const danger = windows ? '‼' : '⚠' +/** @type {import('unified-engine').VFileReporter} */ +const vfileReporterPrettyAsync = async (files) => vfileReporterPretty(files) + // See: . const original = process.env.CI @@ -169,6 +172,29 @@ test('reporting', async () => { ) }) + await new Promise((resolve) => { + const stderr = spy() + + engine( + { + processor: noop(), + cwd: new URL('two-files/', fixtures), + streamError: stderr.stream, + files: ['.'], + extensions: ['txt'], + reporter: vfileReporterPrettyAsync + }, + (error, code) => { + assert.deepEqual( + [error, code, stripAnsi(stderr())], + [null, 0, ''], + 'should support async reporters' + ) + resolve(undefined) + } + ) + }) + await new Promise((resolve) => { const stderr = spy() const cwd = new URL('two-files/', fixtures)