apex-code-coverage-transformer
Version:
Transform Salesforce Apex code coverage JSONs into other formats accepted by SonarQube, GitHub, GitLab, Azure, Bitbucket, etc.
78 lines • 2.69 kB
JavaScript
;
import { existsSync } from 'node:fs';
import { readFile } from 'node:fs/promises';
import { resolve } from 'node:path';
import TransformerTransform from '../commands/acc-transformer/transform.js';
import { getRepoRoot } from '../utils/getRepoRoot.js';
export const postrun = async function (options) {
let commandType;
let coverageJson;
if ([
'project:deploy:validate',
'project:deploy:start',
'project:deploy:report',
'project:deploy:resume',
'hardis:project:deploy:smart',
].includes(options.Command.id)) {
commandType = 'deploy';
}
else if (['apex:run:test', 'apex:get:test', 'hardis:org:test:apex'].includes(options.Command.id)) {
commandType = 'test';
}
else {
return;
}
let configFile;
const { repoRoot } = await getRepoRoot();
if (!repoRoot) {
return;
}
const configPath = resolve(repoRoot, '.apexcodecovtransformer.config.json');
try {
const jsonString = await readFile(configPath, 'utf-8');
configFile = JSON.parse(jsonString);
}
catch (error) {
return;
}
const outputReport = configFile.outputReportPath || 'coverage.xml';
const coverageFormat = configFile.format || 'sonar';
const ignorePackageDirs = configFile.ignorePackageDirectories || '';
if (commandType === 'deploy') {
coverageJson = configFile.deployCoverageJsonPath || '.';
}
else {
coverageJson = configFile.testCoverageJsonPath || '.';
}
if (coverageJson.trim() === '.') {
return;
}
const coverageJsonPath = resolve(coverageJson);
const outputReportPath = resolve(outputReport);
if (!existsSync(coverageJsonPath)) {
return;
}
const commandArgs = [];
commandArgs.push('--coverage-json');
commandArgs.push(coverageJsonPath);
commandArgs.push('--output-report');
commandArgs.push(outputReportPath);
if (coverageFormat.trim() !== '') {
const formatArray = coverageFormat.split(',');
for (const format of formatArray) {
const sanitizedFormat = format.replace(/,/g, '');
commandArgs.push('--format');
commandArgs.push(sanitizedFormat);
}
}
if (ignorePackageDirs.trim() !== '') {
const ignorePackageDirArray = ignorePackageDirs.split(',');
for (const dirs of ignorePackageDirArray) {
const sanitizedDir = dirs.replace(/,/g, '');
commandArgs.push('--ignore-package-directory');
commandArgs.push(sanitizedDir);
}
}
await TransformerTransform.run(commandArgs);
};
//# sourceMappingURL=postrun.js.map