diff --git a/src/handlers/cloverCoverageHandler.ts b/src/handlers/cloverCoverageHandler.ts index 540ab7a..1711131 100644 --- a/src/handlers/cloverCoverageHandler.ts +++ b/src/handlers/cloverCoverageHandler.ts @@ -81,6 +81,11 @@ export class CloverCoverageHandler implements CoverageHandler { } public finalize(): CloverCoverageObject { + if (this.coverageObj.coverage?.project?.file) { + this.coverageObj.coverage.project.file.sort((a, b) => + a['@path'].localeCompare(b['@path']) + ); + } return this.coverageObj; } } diff --git a/src/handlers/coberturaCoverageHandler.ts b/src/handlers/coberturaCoverageHandler.ts index 07a687f..0afa55a 100644 --- a/src/handlers/coberturaCoverageHandler.ts +++ b/src/handlers/coberturaCoverageHandler.ts @@ -81,6 +81,18 @@ export class CoberturaCoverageHandler implements CoverageHandler { } public finalize(): CoberturaCoverageObject { + if (this.coverageObj.coverage?.packages?.package) { + this.coverageObj.coverage.packages.package.sort((a, b) => + a['@name'].localeCompare(b['@name']) + ); + for (const pkg of this.coverageObj.coverage.packages.package) { + if (pkg.classes?.class) { + pkg.classes.class.sort((a, b) => + a['@filename'].localeCompare(b['@filename']) + ); + } + } + } return this.coverageObj; } } diff --git a/src/handlers/lcovCoverageHandler.ts b/src/handlers/lcovCoverageHandler.ts index 5d037b0..bd79c93 100644 --- a/src/handlers/lcovCoverageHandler.ts +++ b/src/handlers/lcovCoverageHandler.ts @@ -39,6 +39,11 @@ export class LcovCoverageHandler implements CoverageHandler { } public finalize(): LcovCoverageObject { + if ('files' in this.coverageObj && Array.isArray(this.coverageObj.files)) { + this.coverageObj.files.sort((a, b) => + a.sourceFile.localeCompare(b.sourceFile) + ); + } return this.coverageObj; } } diff --git a/src/handlers/sonarCoverageHandler.ts b/src/handlers/sonarCoverageHandler.ts index aac2596..990f261 100644 --- a/src/handlers/sonarCoverageHandler.ts +++ b/src/handlers/sonarCoverageHandler.ts @@ -31,6 +31,11 @@ export class SonarCoverageHandler implements CoverageHandler { } public finalize(): SonarCoverageObject { + if (this.coverageObj.coverage?.file) { + this.coverageObj.coverage.file.sort((a, b) => + a['@path'].localeCompare(b['@path']) + ); + } return this.coverageObj; } } diff --git a/src/helpers/generateReport.ts b/src/helpers/generateReport.ts index fdf33bb..da5b686 100644 --- a/src/helpers/generateReport.ts +++ b/src/helpers/generateReport.ts @@ -10,7 +10,6 @@ export function generateReport( if (format === 'lcovonly') { if ('files' in coverageObj) { let lcovOutput = ''; - coverageObj.files.sort((a, b) => a.sourceFile.localeCompare(b.sourceFile)); for (const file of coverageObj.files) { lcovOutput += `TN:\nSF:${file.sourceFile}\n`; lcovOutput += 'FNF:0\nFNH:0\n'; @@ -29,9 +28,6 @@ export function generateReport( } const isHeadless = format === 'cobertura' || format === 'clover'; - if ('files' in coverageObj) { - coverageObj.files.sort((a, b) => a.sourceFile.localeCompare(b.sourceFile)); - } let xml = create(coverageObj).end({ prettyPrint: true, indent: ' ', headless: isHeadless }); if (format === 'cobertura') {