apex-code-coverage-transformer 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,40 +4,119 @@ import { create } from 'xmlbuilder2';
4
4
  import { getPackageDirectories } from './getPackageDirectories.js';
5
5
  import { findFilePath } from './findFilePath.js';
6
6
  import { normalizePathToUnix } from './normalizePathToUnix.js';
7
- export async function transformTestCoverageReport(testCoverageData) {
8
- const coverageObj = { coverage: { '@version': '1', file: [] } };
7
+ export async function transformTestCoverageReport(testCoverageData, format) {
9
8
  const warnings = [];
10
9
  let filesProcessed = 0;
11
10
  const { repoRoot, packageDirectories } = await getPackageDirectories();
12
- if (!Array.isArray(testCoverageData)) {
13
- testCoverageData = [testCoverageData];
11
+ let coverageData = testCoverageData;
12
+ if (!Array.isArray(coverageData)) {
13
+ coverageData = [coverageData];
14
14
  }
15
- for (const data of testCoverageData) {
16
- const name = data?.name;
17
- const lines = data?.lines;
18
- if (!name || !lines) {
19
- continue;
15
+ if (format === 'sonar') {
16
+ const coverageObj = { coverage: { '@version': '1', file: [] } };
17
+ for (const data of coverageData) {
18
+ const name = data?.name;
19
+ const lines = data?.lines;
20
+ if (!name || !lines)
21
+ continue;
22
+ const formattedFileName = name.replace(/no-map[\\/]+/, '');
23
+ const relativeFilePath = await findFilePath(formattedFileName, packageDirectories, repoRoot);
24
+ if (relativeFilePath === undefined) {
25
+ warnings.push(`The file name ${formattedFileName} was not found in any package directory.`);
26
+ continue;
27
+ }
28
+ const fileObj = {
29
+ '@path': normalizePathToUnix(relativeFilePath),
30
+ lineToCover: [],
31
+ };
32
+ for (const [lineNumber, isCovered] of Object.entries(lines)) {
33
+ fileObj.lineToCover.push({
34
+ '@lineNumber': Number(lineNumber),
35
+ '@covered': `${isCovered === 1}`,
36
+ });
37
+ }
38
+ filesProcessed++;
39
+ coverageObj.coverage.file.push(fileObj);
20
40
  }
21
- const formattedFileName = name.replace(/no-map[\\/]+/, '');
22
- const relativeFilePath = await findFilePath(formattedFileName, packageDirectories, repoRoot);
23
- if (relativeFilePath === undefined) {
24
- warnings.push(`The file name ${formattedFileName} was not found in any package directory.`);
25
- continue;
26
- }
27
- const fileObj = {
28
- '@path': normalizePathToUnix(relativeFilePath),
29
- lineToCover: [],
41
+ const xml = create(coverageObj).end({ prettyPrint: true, indent: ' ' });
42
+ return { xml, warnings, filesProcessed };
43
+ }
44
+ else if (format === 'cobertura') {
45
+ const coberturaObj = {
46
+ coverage: {
47
+ '@lines-valid': 0,
48
+ '@lines-covered': 0,
49
+ '@line-rate': 0,
50
+ '@branches-valid': 0,
51
+ '@branches-covered': 0,
52
+ '@branch-rate': 1,
53
+ '@timestamp': Date.now(),
54
+ '@complexity': 0,
55
+ '@version': '0.1',
56
+ sources: { source: ['.'] },
57
+ packages: { package: [] },
58
+ },
59
+ };
60
+ // Single package for all classes
61
+ const packageObj = {
62
+ '@name': 'main',
63
+ '@line-rate': 0,
64
+ '@branch-rate': 1,
65
+ classes: { class: [] },
30
66
  };
31
- for (const [lineNumber, isCovered] of Object.entries(lines)) {
32
- fileObj.lineToCover.push({
33
- '@lineNumber': Number(lineNumber),
34
- '@covered': `${isCovered === 1}`,
35
- });
67
+ coberturaObj.coverage.packages.package.push(packageObj);
68
+ for (const data of coverageData) {
69
+ const name = data?.name;
70
+ const lines = data?.lines;
71
+ if (!name || !lines)
72
+ continue;
73
+ const formattedFileName = name.replace(/no-map[\\/]+/, '');
74
+ const relativeFilePath = await findFilePath(formattedFileName, packageDirectories, repoRoot);
75
+ if (relativeFilePath === undefined) {
76
+ warnings.push(`The file name ${formattedFileName} was not found in any package directory.`);
77
+ continue;
78
+ }
79
+ const uncoveredLines = Object.entries(lines)
80
+ .filter(([, isCovered]) => isCovered === 0)
81
+ .map(([lineNumber]) => Number(lineNumber));
82
+ const coveredLines = Object.entries(lines)
83
+ .filter(([, isCovered]) => isCovered === 1)
84
+ .map(([lineNumber]) => Number(lineNumber));
85
+ const classObj = {
86
+ '@name': formattedFileName,
87
+ '@filename': normalizePathToUnix(relativeFilePath),
88
+ '@line-rate': (coveredLines.length / (coveredLines.length + uncoveredLines.length)).toFixed(4),
89
+ '@branch-rate': '1',
90
+ methods: {},
91
+ lines: {
92
+ line: [
93
+ ...uncoveredLines.map((lineNumber) => ({
94
+ '@number': lineNumber,
95
+ '@hits': 0,
96
+ '@branch': 'false',
97
+ })),
98
+ ...coveredLines.map((lineNumber) => ({
99
+ '@number': lineNumber,
100
+ '@hits': 1,
101
+ '@branch': 'false',
102
+ })),
103
+ ],
104
+ },
105
+ };
106
+ // Update package and overall coverage metrics
107
+ coberturaObj.coverage['@lines-valid'] += uncoveredLines.length + coveredLines.length;
108
+ coberturaObj.coverage['@lines-covered'] += coveredLines.length;
109
+ packageObj.classes.class.push(classObj);
110
+ filesProcessed++;
36
111
  }
37
- filesProcessed++;
38
- coverageObj.coverage.file.push(fileObj);
112
+ // Update overall line-rate for the package
113
+ packageObj['@line-rate'] = parseFloat((coberturaObj.coverage['@lines-covered'] / coberturaObj.coverage['@lines-valid']).toFixed(4));
114
+ coberturaObj.coverage['@line-rate'] = packageObj['@line-rate'];
115
+ let xml = create(coberturaObj).end({ prettyPrint: true, indent: ' ', headless: true });
116
+ // Add DOCTYPE declaration at the beginning of the XML
117
+ xml = `<?xml version="1.0" ?>\n<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd">\n${xml}`;
118
+ return { xml, warnings, filesProcessed };
39
119
  }
40
- const xml = create(coverageObj).end({ prettyPrint: true, indent: ' ' });
41
- return { xml, warnings, filesProcessed };
120
+ throw new Error(`Unsupported format: ${format}`);
42
121
  }
43
122
  //# sourceMappingURL=transformTestCoverageReport.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transformTestCoverageReport.js","sourceRoot":"","sources":["../../src/helpers/transformTestCoverageReport.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,qCAAqC;AAErC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,gBAAoC;IAEpC,MAAM,WAAW,GAAmB,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC;IAChF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,cAAc,GAAW,CAAC,CAAC;IAC/B,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAEvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,gBAAgB,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC;QAE1B,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACpB,SAAS;QACX,CAAC;QACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,gBAAgB,GAAG,MAAM,YAAY,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QAC7F,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,iBAAiB,0CAA0C,CAAC,CAAC;YAC5F,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAe;YAC1B,OAAO,EAAE,mBAAmB,CAAC,gBAAgB,CAAC;YAC9C,WAAW,EAAE,EAAE;SAChB,CAAC;QAEF,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;gBACvB,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC;gBACjC,UAAU,EAAE,GAAG,SAAS,KAAK,CAAC,EAAE;aACjC,CAAC,CAAC;QACL,CAAC;QACD,cAAc,EAAE,CAAC;QACjB,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"transformTestCoverageReport.js","sourceRoot":"","sources":["../../src/helpers/transformTestCoverageReport.ts"],"names":[],"mappings":"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"}
@@ -52,5 +52,48 @@ export type ConfigFile = {
52
52
  deployCoverageJsonPath: string;
53
53
  testCoverageJsonPath: string;
54
54
  coverageXmlPath: string;
55
+ format: string;
56
+ };
57
+ export type CoberturaLine = {
58
+ '@number': number;
59
+ '@hits': number;
60
+ '@branch': string;
61
+ };
62
+ export type CoberturaClass = {
63
+ '@name': string;
64
+ '@filename': string;
65
+ '@line-rate': string;
66
+ '@branch-rate': string;
67
+ methods: Record<string, never>;
68
+ lines: {
69
+ line: CoberturaLine[];
70
+ };
71
+ };
72
+ type CoberturaPackage = {
73
+ '@name': string;
74
+ '@line-rate': number;
75
+ '@branch-rate': number;
76
+ classes: {
77
+ class: CoberturaClass[];
78
+ };
79
+ };
80
+ export type CoberturaCoverageObject = {
81
+ coverage: {
82
+ '@lines-valid': number;
83
+ '@lines-covered': number;
84
+ '@line-rate': number;
85
+ '@branches-valid': number;
86
+ '@branches-covered': number;
87
+ '@branch-rate': number | string;
88
+ '@timestamp': number;
89
+ '@complexity': number;
90
+ '@version': string;
91
+ sources: {
92
+ source: string[];
93
+ };
94
+ packages: {
95
+ package: CoberturaPackage[];
96
+ };
97
+ };
55
98
  };
56
99
  export {};
@@ -30,6 +30,7 @@ export const postrun = async function (options) {
30
30
  return;
31
31
  }
32
32
  const coverageXml = configFile.coverageXmlPath || 'coverage.xml';
33
+ const coverageFormat = configFile.format || 'sonar';
33
34
  if (commandType === 'deploy') {
34
35
  coverageJson = configFile.deployCoverageJsonPath || '.';
35
36
  }
@@ -49,6 +50,8 @@ export const postrun = async function (options) {
49
50
  commandArgs.push(coverageJsonPath);
50
51
  commandArgs.push('--xml');
51
52
  commandArgs.push(coverageXmlPath);
53
+ commandArgs.push('--format');
54
+ commandArgs.push(coverageFormat);
52
55
  await TransformerTransform.run(commandArgs);
53
56
  };
54
57
  //# sourceMappingURL=postrun.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"postrun.js","sourceRoot":"","sources":["../../src/hooks/postrun.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,oBAAoB,MAAM,0CAA0C,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,CAAC,MAAM,OAAO,GAAoB,KAAK,WAAW,OAAO;IAC7D,IAAI,WAAmB,CAAC;IACxB,IAAI,YAAoB,CAAC;IACzB,IACE,CAAC,yBAAyB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,uBAAuB,CAAC,CAAC,QAAQ,CAC5G,OAAO,CAAC,OAAO,CAAC,EAAE,CACnB,EACD,CAAC;QACD,WAAW,GAAG,QAAQ,CAAC;IACzB,CAAC;SAAM,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3E,WAAW,GAAG,MAAM,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,OAAO;IACT,CAAC;IACD,IAAI,UAAsB,CAAC;IAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,qCAAqC,CAAC,CAAC;IAE5E,IAAI,CAAC;QACH,MAAM,UAAU,GAAW,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC/D,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAe,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAW,UAAU,CAAC,eAAe,IAAI,cAAc,CAAC;IAEzE,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC7B,YAAY,GAAG,UAAU,CAAC,sBAAsB,IAAI,GAAG,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,UAAU,CAAC,oBAAoB,IAAI,GAAG,CAAC;IACxD,CAAC;IAED,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/C,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE7C,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACpC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACnC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1B,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAClC,MAAM,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC9C,CAAC,CAAC"}
1
+ {"version":3,"file":"postrun.js","sourceRoot":"","sources":["../../src/hooks/postrun.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,oBAAoB,MAAM,0CAA0C,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,CAAC,MAAM,OAAO,GAAoB,KAAK,WAAW,OAAO;IAC7D,IAAI,WAAmB,CAAC;IACxB,IAAI,YAAoB,CAAC;IACzB,IACE,CAAC,yBAAyB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,uBAAuB,CAAC,CAAC,QAAQ,CAC5G,OAAO,CAAC,OAAO,CAAC,EAAE,CACnB,EACD,CAAC;QACD,WAAW,GAAG,QAAQ,CAAC;IACzB,CAAC;SAAM,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3E,WAAW,GAAG,MAAM,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,OAAO;IACT,CAAC;IACD,IAAI,UAAsB,CAAC;IAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,qCAAqC,CAAC,CAAC;IAE5E,IAAI,CAAC;QACH,MAAM,UAAU,GAAW,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC/D,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAe,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAW,UAAU,CAAC,eAAe,IAAI,cAAc,CAAC;IACzE,MAAM,cAAc,GAAW,UAAU,CAAC,MAAM,IAAI,OAAO,CAAC;IAE5D,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC7B,YAAY,GAAG,UAAU,CAAC,sBAAsB,IAAI,GAAG,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,UAAU,CAAC,oBAAoB,IAAI,GAAG,CAAC;IACxD,CAAC;IAED,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/C,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE7C,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACpC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACnC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1B,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAClC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7B,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACjC,MAAM,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC9C,CAAC,CAAC"}
@@ -1,19 +1,24 @@
1
1
  # summary
2
2
 
3
- Transforms the Code Coverage JSON into the Generic Test Coverage Format (XML).
3
+ Transforms the Code Coverage JSON into SonarQube or Cobertura format.
4
4
 
5
5
  # description
6
6
 
7
- This plugin will convert the code coverage JSON file created by the Salesforce CLI during Apex deployments and test runs into an XML accepted by tools like SonarQube.
7
+ Transform the Apex code coverage JSON file created by the Salesforce CLI deploy and test command into SonarQube or Cobertura format.
8
8
 
9
9
  # examples
10
10
 
11
- - `sf acc-transformer transform -j "coverage.json" -x "coverage.xml"`
11
+ - `sf acc-transformer transform -j "coverage.json" -x "coverage.xml" -f "sonar"`
12
+ - `sf acc-transformer transform -j "coverage.json" -x "coverage.xml" -f "cobertura"`
12
13
 
13
14
  # flags.coverage-json.summary
14
15
 
15
- Path to the code coverage JSON file created by the Salesforce CLI deployment or test command.
16
+ Path to the code coverage JSON file created by the Salesforce CLI deploy or test command.
16
17
 
17
18
  # flags.xml.summary
18
19
 
19
- Path to code coverage XML file that will be created by this plugin.
20
+ Path to the code coverage XML file that will be created by this plugin.
21
+
22
+ # flags.format.summary
23
+
24
+ Output format for the coverage report.