UNPKG

@stryker-mutator/core

Version:

The extendable JavaScript mutation testing framework

40 lines (29 loc) 1.32 kB
import path from 'path'; import { schema, StrykerOptions } from '@stryker-mutator/api/core'; import { Logger } from '@stryker-mutator/api/logging'; import { commonTokens, tokens } from '@stryker-mutator/api/plugin'; import { Reporter } from '@stryker-mutator/api/report'; import fileUrl from 'file-url'; import { reporterUtil } from './reporter-util.js'; const INDENTION_LEVEL = 0; export const RESOURCES_DIR_NAME = 'strykerResources'; export class JsonReporter implements Reporter { private mainPromise: Promise<void> | undefined; constructor( private readonly options: StrykerOptions, private readonly log: Logger, ) {} public static readonly inject = tokens(commonTokens.options, commonTokens.logger); public onMutationTestReportReady(report: schema.MutationTestResult): void { this.mainPromise = this.generateReport(report); } public wrapUp(): Promise<void> | undefined { return this.mainPromise; } private async generateReport(report: schema.MutationTestResult) { const filePath = path.normalize(this.options.jsonReporter.fileName); this.log.debug(`Using relative path ${filePath}`); await reporterUtil.writeFile(path.resolve(filePath), JSON.stringify(report, null, INDENTION_LEVEL)); this.log.info(`Your report can be found at: ${fileUrl(filePath)}`); } }