summaryrefslogtreecommitdiff
path: root/scripts/frontend/merge_coverage_frontend.js
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-02-26 09:08:47 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-02-26 09:08:47 +0000
commit66d4203791a01fdedf668a78818a229ea2c07aad (patch)
tree374fc9f6c5e709cf6ab48e257e6bfe4a504d6bbb /scripts/frontend/merge_coverage_frontend.js
parenta496f41f60e12a0a5c31482b7594ad547e0ade42 (diff)
downloadgitlab-ce-66d4203791a01fdedf668a78818a229ea2c07aad.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'scripts/frontend/merge_coverage_frontend.js')
-rw-r--r--scripts/frontend/merge_coverage_frontend.js31
1 files changed, 31 insertions, 0 deletions
diff --git a/scripts/frontend/merge_coverage_frontend.js b/scripts/frontend/merge_coverage_frontend.js
new file mode 100644
index 00000000000..507695b45e5
--- /dev/null
+++ b/scripts/frontend/merge_coverage_frontend.js
@@ -0,0 +1,31 @@
+const { create } = require('istanbul-reports');
+const { createCoverageMap } = require('istanbul-lib-coverage');
+const { createContext } = require('istanbul-lib-report');
+const { resolve } = require('path');
+const { sync } = require('glob');
+
+const coverageMap = createCoverageMap();
+
+const coverageDir = resolve(__dirname, '../../coverage-frontend');
+const reportFiles = sync(`${coverageDir}/*/coverage-final.json`);
+
+// Normalize coverage report generated by jest that has additional "data" key
+// https://github.com/facebook/jest/issues/2418#issuecomment-423806659
+const normalizeReport = report => {
+ const normalizedReport = Object.assign({}, report);
+ Object.entries(normalizedReport).forEach(([k, v]) => {
+ if (v.data) normalizedReport[k] = v.data;
+ });
+ return normalizedReport;
+};
+
+reportFiles
+ .map(reportFile => require(reportFile))
+ .map(normalizeReport)
+ .forEach(report => coverageMap.merge(report));
+
+const context = createContext({ coverageMap: coverageMap, dir: 'coverage-frontend' });
+
+['json', 'lcov', 'text-summary', 'clover'].forEach(reporter => {
+ create(reporter, {}).execute(context);
+});