jest-allure2-reporter
Version:
Idiomatic Jest reporter for Allure Framework
45 lines (37 loc) • 1.28 kB
text/typescript
import type {
AllureTestItemSourceLocation,
ExtractSourceCodeHelperResult,
KeyedHelperCustomizer,
} from 'jest-allure2-reporter';
import { log } from '../../logger';
import { defaults, isEmpty } from '../../utils';
import type { ReporterConfig } from '../types';
export const extractSourceCode: KeyedHelperCustomizer<'extractSourceCode'> = ({
reporterConfig,
}) => {
const config = reporterConfig as ReporterConfig;
return async function extractSourceCodeHelper(
location: AllureTestItemSourceLocation,
includeComments = false,
): Promise<ExtractSourceCodeHelperResult | undefined> {
if (isEmpty(location)) {
return undefined;
}
const plugins = config.sourceCode ? Object.values(config.sourceCode.plugins) : [];
let result: ExtractSourceCodeHelperResult = {};
for (const p of plugins) {
try {
result = defaults(result, await p.extractSourceCode?.(location, includeComments));
} catch (error: unknown) {
log.warn(
error,
`Plugin "${p.name}" failed to extract source code for ${location.fileName}:${location.lineNumber}:${location.columnNumber}`,
);
}
if (result?.code) {
break;
}
}
return isEmpty(result) ? undefined : result;
};
};