@datadog/datadog-ci 5.2.0 → 5.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.
Files changed (40) hide show
  1. package/dist/commands/cli.d.ts +0 -2
  2. package/dist/commands/cli.js +20 -24
  3. package/dist/commands/cli.js.map +1 -1
  4. package/package.json +10 -13
  5. package/dist/commands/coverage/api.d.ts +0 -8
  6. package/dist/commands/coverage/api.js +0 -73
  7. package/dist/commands/coverage/api.js.map +0 -1
  8. package/dist/commands/coverage/cli.d.ts +0 -2
  9. package/dist/commands/coverage/cli.js +0 -6
  10. package/dist/commands/coverage/cli.js.map +0 -1
  11. package/dist/commands/coverage/interfaces.d.ts +0 -23
  12. package/dist/commands/coverage/interfaces.js +0 -3
  13. package/dist/commands/coverage/interfaces.js.map +0 -1
  14. package/dist/commands/coverage/renderer.d.ts +0 -13
  15. package/dist/commands/coverage/renderer.js +0 -88
  16. package/dist/commands/coverage/renderer.js.map +0 -1
  17. package/dist/commands/coverage/upload.d.ts +0 -36
  18. package/dist/commands/coverage/upload.js +0 -391
  19. package/dist/commands/coverage/upload.js.map +0 -1
  20. package/dist/commands/coverage/utils.d.ts +0 -15
  21. package/dist/commands/coverage/utils.js +0 -240
  22. package/dist/commands/coverage/utils.js.map +0 -1
  23. package/dist/commands/junit/api.d.ts +0 -9
  24. package/dist/commands/junit/api.js +0 -76
  25. package/dist/commands/junit/api.js.map +0 -1
  26. package/dist/commands/junit/cli.d.ts +0 -2
  27. package/dist/commands/junit/cli.js +0 -6
  28. package/dist/commands/junit/cli.js.map +0 -1
  29. package/dist/commands/junit/interfaces.d.ts +0 -16
  30. package/dist/commands/junit/interfaces.js +0 -3
  31. package/dist/commands/junit/interfaces.js.map +0 -1
  32. package/dist/commands/junit/renderer.d.ts +0 -12
  33. package/dist/commands/junit/renderer.js +0 -82
  34. package/dist/commands/junit/renderer.js.map +0 -1
  35. package/dist/commands/junit/upload.d.ts +0 -37
  36. package/dist/commands/junit/upload.js +0 -370
  37. package/dist/commands/junit/upload.js.map +0 -1
  38. package/dist/commands/junit/utils.d.ts +0 -3
  39. package/dist/commands/junit/utils.js +0 -26
  40. package/dist/commands/junit/utils.js.map +0 -1
@@ -1,240 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getCoverageDetailsUrl = exports.validateCoverageReport = exports.detectFormat = exports.toCoverageFormat = exports.isCoverageFormat = exports.coverageFormats = exports.cloverFormat = exports.simplecovInternalFormat = exports.simplecovFormat = exports.coberturaFormat = exports.opencoverFormat = exports.lcovFormat = exports.jacocoFormat = void 0;
7
- const fs_1 = __importDefault(require("fs"));
8
- const app_1 = require("@datadog/datadog-ci-base/helpers/app");
9
- const tags_1 = require("@datadog/datadog-ci-base/helpers/tags");
10
- const fast_xml_parser_1 = require("fast-xml-parser");
11
- const upath_1 = __importDefault(require("upath"));
12
- const renderer_1 = require("./renderer");
13
- const ROOT_TAG_REGEX = /<([^?!\s/>]+)/;
14
- exports.jacocoFormat = 'jacoco';
15
- exports.lcovFormat = 'lcov';
16
- exports.opencoverFormat = 'opencover';
17
- exports.coberturaFormat = 'cobertura';
18
- exports.simplecovFormat = 'simplecov';
19
- exports.simplecovInternalFormat = 'simplecov-internal';
20
- exports.cloverFormat = 'clover';
21
- exports.coverageFormats = [
22
- exports.jacocoFormat,
23
- exports.lcovFormat,
24
- exports.opencoverFormat,
25
- exports.coberturaFormat,
26
- exports.simplecovFormat,
27
- exports.simplecovInternalFormat,
28
- exports.cloverFormat,
29
- ];
30
- const isCoverageFormat = (value) => {
31
- return exports.coverageFormats.includes(value);
32
- };
33
- exports.isCoverageFormat = isCoverageFormat;
34
- const toCoverageFormat = (value) => {
35
- if (value === undefined) {
36
- return undefined;
37
- }
38
- if ((0, exports.isCoverageFormat)(value)) {
39
- return value;
40
- }
41
- throw new Error(`Invalid coverage format: ${value}`);
42
- };
43
- exports.toCoverageFormat = toCoverageFormat;
44
- const detectFormat = (filePath) => {
45
- if (!fs_1.default.existsSync(filePath)) {
46
- return undefined;
47
- }
48
- const lowercaseFile = filePath.toLowerCase();
49
- const filename = upath_1.default.basename(lowercaseFile);
50
- const extension = upath_1.default.extname(lowercaseFile);
51
- if (extension === '.xml' &&
52
- (filename.includes('coverage') ||
53
- filename.includes('jacoco') ||
54
- filename.includes('cobertura') ||
55
- filename.includes('clover'))) {
56
- return readFirstKb(filePath, (data) => {
57
- if (data.includes('<CoverageSession')) {
58
- return exports.opencoverFormat;
59
- }
60
- else if ((data.includes('<!DOCTYPE coverage') && data.includes('cobertura.sourceforge.net/xml/coverage')) ||
61
- (data.includes('<coverage') && data.includes('line-rate='))) {
62
- return exports.coberturaFormat;
63
- }
64
- else if ((data.includes('<!DOCTYPE report') && data.includes('-//JACOCO//DTD Report')) ||
65
- data.includes('<report')) {
66
- return exports.jacocoFormat;
67
- }
68
- else if (data.includes('<coverage') && data.includes('<project')) {
69
- return exports.cloverFormat;
70
- }
71
- });
72
- }
73
- else if (extension === '.json' && filename.includes('coverage')) {
74
- return readFirstKb(filePath, (data) => {
75
- if (data.includes('simplecov_version')) {
76
- return exports.simplecovFormat;
77
- }
78
- });
79
- }
80
- else if (filename === '.resultset.json') {
81
- return readFirstKb(filePath, (data) => {
82
- if (data.includes('coverage') && data.includes('lines')) {
83
- return exports.simplecovInternalFormat;
84
- }
85
- });
86
- }
87
- else if (extension === '.lcov' ||
88
- extension === '.lcov.info' ||
89
- extension === '.lcov-report.info' ||
90
- filename === 'lcov.info' ||
91
- filename === 'lcov-report.info' ||
92
- filename === 'lcov.dat') {
93
- return readFirstKb(filePath, (data) => {
94
- return data.startsWith('TN:') || data.startsWith('SF:') ? exports.lcovFormat : undefined;
95
- });
96
- }
97
- return undefined;
98
- };
99
- exports.detectFormat = detectFormat;
100
- const readFirstKb = (filePath, action) => {
101
- let fd;
102
- try {
103
- fd = fs_1.default.openSync(filePath, 'r');
104
- const buffer = Buffer.alloc(1024);
105
- fs_1.default.readSync(fd, buffer, 0, 1024, 0);
106
- const data = buffer.toString('utf8');
107
- return action(data);
108
- }
109
- catch (error) {
110
- (0, renderer_1.renderFileReadError)(filePath, error);
111
- return undefined;
112
- }
113
- finally {
114
- if (fd !== undefined) {
115
- fs_1.default.closeSync(fd);
116
- }
117
- }
118
- };
119
- const validateCoverageReport = (filePath, format) => {
120
- if (format === exports.jacocoFormat) {
121
- const xmlFileContentString = String(fs_1.default.readFileSync(filePath));
122
- const validationOutput = fast_xml_parser_1.XMLValidator.validate(xmlFileContentString);
123
- if (validationOutput !== true) {
124
- return validationOutput.err.msg;
125
- }
126
- // Check that the root element is 'report' and that the report contains sourcefile tags
127
- const rootTagMatch = xmlFileContentString.match(ROOT_TAG_REGEX);
128
- if (!rootTagMatch || rootTagMatch[1] !== 'report') {
129
- return 'Invalid Jacoco report: root element must be <report>';
130
- }
131
- if (!xmlFileContentString.includes('<sourcefile')) {
132
- return 'Invalid Jacoco report: missing <sourcefile> tags';
133
- }
134
- }
135
- if (format === exports.opencoverFormat) {
136
- const xmlFileContentString = String(fs_1.default.readFileSync(filePath));
137
- const validationOutput = fast_xml_parser_1.XMLValidator.validate(xmlFileContentString);
138
- if (validationOutput !== true) {
139
- return validationOutput.err.msg;
140
- }
141
- // Check that the root element is 'CoverageSession'
142
- const rootTagMatch = xmlFileContentString.match(ROOT_TAG_REGEX);
143
- if (!rootTagMatch || rootTagMatch[1] !== 'CoverageSession') {
144
- return 'Invalid Opencover report: root element must be <CoverageSession>';
145
- }
146
- }
147
- if (format === exports.coberturaFormat) {
148
- const xmlFileContentString = String(fs_1.default.readFileSync(filePath));
149
- const validationOutput = fast_xml_parser_1.XMLValidator.validate(xmlFileContentString);
150
- if (validationOutput !== true) {
151
- return validationOutput.err.msg;
152
- }
153
- // Check that the root element is 'coverage'
154
- const rootTagMatch = xmlFileContentString.match(ROOT_TAG_REGEX);
155
- if (!rootTagMatch || rootTagMatch[1] !== 'coverage') {
156
- return 'Invalid Cobertura report: root element must be <coverage>';
157
- }
158
- }
159
- if (format === exports.cloverFormat) {
160
- const xmlFileContentString = String(fs_1.default.readFileSync(filePath));
161
- const validationOutput = fast_xml_parser_1.XMLValidator.validate(xmlFileContentString);
162
- if (validationOutput !== true) {
163
- return validationOutput.err.msg;
164
- }
165
- // Check that the root element is 'coverage'
166
- const rootTagMatch = xmlFileContentString.match(ROOT_TAG_REGEX);
167
- if (!rootTagMatch || rootTagMatch[1] !== 'coverage') {
168
- return 'Invalid Clover report: root element must be <coverage>';
169
- }
170
- }
171
- if (format === exports.simplecovFormat) {
172
- try {
173
- const jsonContent = String(fs_1.default.readFileSync(filePath));
174
- const simplecovReport = JSON.parse(jsonContent);
175
- if (!simplecovReport['coverage']) {
176
- return `Invalid simplecov report: missing "meta" or "coverage" top-level fields`;
177
- }
178
- for (const [fileName, fileCoverage] of Object.entries(simplecovReport['coverage'])) {
179
- if (!fileCoverage['lines']) {
180
- return `Invalid simplecov report: file ${fileName} is missing "lines" field`;
181
- }
182
- }
183
- }
184
- catch (err) {
185
- return `Invalid simplecov report: could not parse JSON: ${err}`;
186
- }
187
- }
188
- if (format === exports.simplecovInternalFormat) {
189
- try {
190
- const jsonContent = String(fs_1.default.readFileSync(filePath));
191
- const simplecovInternalReport = JSON.parse(jsonContent);
192
- for (const [specName, s] of Object.entries(simplecovInternalReport)) {
193
- const spec = s;
194
- if (!spec['coverage']) {
195
- return `Invalid internal simplecov report: spec ${specName} is missing "coverage" field`;
196
- }
197
- for (const [fileName, fileCoverage] of Object.entries(spec['coverage'])) {
198
- if (!fileCoverage['lines']) {
199
- return `Invalid internal simplecov report: file ${fileName} is missing "lines" field`;
200
- }
201
- }
202
- }
203
- }
204
- catch (err) {
205
- return `Invalid internal simplecov report: could not parse JSON: ${err}`;
206
- }
207
- }
208
- if (format === exports.lcovFormat) {
209
- const content = fs_1.default.readFileSync(filePath, 'utf8');
210
- if (!content.startsWith('TN:') && !content.startsWith('SF:')) {
211
- return 'Invalid LCOV report: must start with TN: or SF:';
212
- }
213
- const lines = content.split(/\r?\n/).filter((line) => line.trim().length > 0);
214
- const hasData = lines.some((line) => line.startsWith('DA:'));
215
- if (!hasData) {
216
- return 'Invalid LCOV report: missing DA: lines';
217
- }
218
- const endsCorrectly = lines[lines.length - 1] === 'end_of_record';
219
- if (!endsCorrectly) {
220
- return 'Invalid LCOV report: does not end with "end_of_record"';
221
- }
222
- }
223
- return undefined;
224
- };
225
- exports.validateCoverageReport = validateCoverageReport;
226
- const getCoverageDetailsUrl = (spanTags) => {
227
- const repoUrl = spanTags[tags_1.GIT_REPOSITORY_URL];
228
- if (!repoUrl) {
229
- return '';
230
- }
231
- const prNumber = spanTags[tags_1.PR_NUMBER];
232
- if (!prNumber) {
233
- return '';
234
- }
235
- const escapedPrNumber = encodeURIComponent(prNumber);
236
- const escapedRepoUrl = encodeURIComponent(repoUrl);
237
- return `${(0, app_1.getBaseUrl)()}api/ui/code-coverage/redirect/pull-requests/${escapedPrNumber}?repository_url=${escapedRepoUrl}`;
238
- };
239
- exports.getCoverageDetailsUrl = getCoverageDetailsUrl;
240
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/commands/coverage/utils.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { AxiosPromise, AxiosRequestConfig, AxiosResponse } from 'axios';
2
- import { Payload } from './interfaces';
3
- export declare const datadogSite: string;
4
- export declare const intakeUrl: string;
5
- export declare const apiUrl: string;
6
- export declare const uploadJUnitXML: (request: (args: AxiosRequestConfig) => AxiosPromise<AxiosResponse>) => (jUnitXML: Payload) => Promise<AxiosResponse<AxiosResponse<any, any, {}>, any, {}>>;
7
- export declare const apiConstructor: (baseIntakeUrl: string, apiKey: string) => {
8
- uploadJUnitXML: (jUnitXML: Payload) => Promise<AxiosResponse<AxiosResponse<any, any, {}>, any, {}>>;
9
- };
@@ -1,76 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.apiConstructor = exports.uploadJUnitXML = exports.apiUrl = exports.intakeUrl = exports.datadogSite = void 0;
16
- const fs_1 = __importDefault(require("fs"));
17
- const zlib_1 = require("zlib");
18
- const utils_1 = require("@datadog/datadog-ci-base/helpers/utils");
19
- const form_data_1 = __importDefault(require("form-data"));
20
- const upath_1 = __importDefault(require("upath"));
21
- const uuid_1 = require("uuid");
22
- // Dependency follows-redirects sets a default maxBodyLength of 10 MB https://github.com/follow-redirects/follow-redirects/blob/b774a77e582b97174813b3eaeb86931becba69db/index.js#L391
23
- // We don't want any hard limit enforced by the CLI, the backend will enforce a max size by returning 413 errors.
24
- const maxBodyLength = Infinity;
25
- exports.datadogSite = process.env.DATADOG_SITE || process.env.DD_SITE || 'datadoghq.com';
26
- exports.intakeUrl = `https://cireport-intake.${exports.datadogSite}`;
27
- exports.apiUrl = `https://api.${exports.datadogSite}`;
28
- const uploadJUnitXML = (request) => (jUnitXML) => __awaiter(void 0, void 0, void 0, function* () {
29
- const form = new form_data_1.default();
30
- let fileName;
31
- try {
32
- fileName = upath_1.default.parse(jUnitXML.xmlPath).name;
33
- }
34
- catch (e) {
35
- fileName = 'default_file_name';
36
- }
37
- const reportTagsAndMetrics = {
38
- tags: jUnitXML.reportTags,
39
- metrics: jUnitXML.reportMeasures, // We can't change `metrics` to `measures` because the backend only accepts `metrics`.
40
- };
41
- const custom = {
42
- metadata: jUnitXML.spanTags,
43
- tags: jUnitXML.customTags,
44
- metrics: jUnitXML.customMeasures,
45
- session: reportTagsAndMetrics,
46
- '_dd.cireport_version': '3',
47
- '_dd.hostname': jUnitXML.hostname,
48
- '_dd.report_name': fileName,
49
- };
50
- if (jUnitXML.logsEnabled) {
51
- custom['_dd.junitxml_logs'] = true;
52
- }
53
- if (jUnitXML.xpathTags) {
54
- custom['_dd.junitxml_xpath_tags'] = jUnitXML.xpathTags;
55
- }
56
- form.append('event', JSON.stringify(custom), { filename: 'event.json' });
57
- form.append('junit_xml_report_file', fs_1.default.createReadStream(jUnitXML.xmlPath).pipe((0, zlib_1.createGzip)()), {
58
- filename: `${(0, uuid_1.v4)()}.xml.gz`,
59
- });
60
- return request({
61
- data: form,
62
- headers: form.getHeaders(),
63
- maxBodyLength,
64
- method: 'POST',
65
- url: 'api/v2/cireport',
66
- });
67
- });
68
- exports.uploadJUnitXML = uploadJUnitXML;
69
- const apiConstructor = (baseIntakeUrl, apiKey) => {
70
- const requestIntake = (0, utils_1.getRequestBuilder)({ baseUrl: baseIntakeUrl, apiKey });
71
- return {
72
- uploadJUnitXML: (0, exports.uploadJUnitXML)(requestIntake),
73
- };
74
- };
75
- exports.apiConstructor = apiConstructor;
76
- //# sourceMappingURL=api.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/commands/junit/api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAAmB;AACnB,+BAA+B;AAI/B,kEAAwE;AACxE,0DAAgC;AAChC,kDAAyB;AACzB,+BAAiC;AAIjC,sLAAsL;AACtL,iHAAiH;AACjH,MAAM,aAAa,GAAG,QAAQ,CAAA;AAEjB,QAAA,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,eAAe,CAAA;AAChF,QAAA,SAAS,GAAG,2BAA2B,mBAAW,EAAE,CAAA;AACpD,QAAA,MAAM,GAAG,eAAe,mBAAW,EAAE,CAAA;AAE3C,MAAM,cAAc,GACzB,CAAC,OAAkE,EAAE,EAAE,CAAC,CAAO,QAAiB,EAAE,EAAE;IAClG,MAAM,IAAI,GAAG,IAAI,mBAAQ,EAAE,CAAA;IAE3B,IAAI,QAAQ,CAAA;IACZ,IAAI;QACF,QAAQ,GAAG,eAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAA;KAC9C;IAAC,OAAO,CAAC,EAAE;QACV,QAAQ,GAAG,mBAAmB,CAAA;KAC/B;IAED,MAAM,oBAAoB,GAAwB;QAChD,IAAI,EAAE,QAAQ,CAAC,UAAU;QACzB,OAAO,EAAE,QAAQ,CAAC,cAAc,EAAE,sFAAsF;KACzH,CAAA;IAED,MAAM,MAAM,GAAwB;QAClC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,IAAI,EAAE,QAAQ,CAAC,UAAU;QACzB,OAAO,EAAE,QAAQ,CAAC,cAAc;QAChC,OAAO,EAAE,oBAAoB;QAC7B,sBAAsB,EAAE,GAAG;QAC3B,cAAc,EAAE,QAAQ,CAAC,QAAQ;QACjC,iBAAiB,EAAE,QAAQ;KAC5B,CAAA;IAED,IAAI,QAAQ,CAAC,WAAW,EAAE;QACxB,MAAM,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAA;KACnC;IAED,IAAI,QAAQ,CAAC,SAAS,EAAE;QACtB,MAAM,CAAC,yBAAyB,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAA;KACvD;IAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAC,QAAQ,EAAE,YAAY,EAAC,CAAC,CAAA;IAEtE,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,YAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAA,iBAAU,GAAE,CAAC,EAAE;QAC7F,QAAQ,EAAE,GAAG,IAAA,SAAM,GAAE,SAAS;KAC/B,CAAC,CAAA;IAEF,OAAO,OAAO,CAAC;QACb,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;QAC1B,aAAa;QACb,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,iBAAiB;KACvB,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AA/CU,QAAA,cAAc,kBA+CxB;AAEI,MAAM,cAAc,GAAG,CAAC,aAAqB,EAAE,MAAc,EAAE,EAAE;IACtE,MAAM,aAAa,GAAG,IAAA,yBAAiB,EAAC,EAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAC,CAAC,CAAA;IAEzE,OAAO;QACL,cAAc,EAAE,IAAA,sBAAc,EAAC,aAAa,CAAC;KAC9C,CAAA;AACH,CAAC,CAAA;AANY,QAAA,cAAc,kBAM1B"}
@@ -1,2 +0,0 @@
1
- import { JunitUploadCommand } from './upload';
2
- export declare const commands: (typeof JunitUploadCommand)[];
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.commands = void 0;
4
- const upload_1 = require("./upload");
5
- exports.commands = [upload_1.JunitUploadCommand];
6
- //# sourceMappingURL=cli.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/commands/junit/cli.ts"],"names":[],"mappings":";;;AAAA,qCAA2C;AAE9B,QAAA,QAAQ,GAAG,CAAC,2BAAkB,CAAC,CAAA"}
@@ -1,16 +0,0 @@
1
- import type { AxiosPromise, AxiosResponse } from 'axios';
2
- import { SpanTags } from '@datadog/datadog-ci-base/helpers/interfaces';
3
- export interface Payload {
4
- hostname: string;
5
- logsEnabled: boolean;
6
- spanTags: SpanTags;
7
- customTags: Record<string, string>;
8
- customMeasures: Record<string, number>;
9
- reportTags: Record<string, string>;
10
- reportMeasures: Record<string, number>;
11
- xmlPath: string;
12
- xpathTags?: Record<string, string>;
13
- }
14
- export interface APIHelper {
15
- uploadJUnitXML(jUnitXML: Payload): AxiosPromise<AxiosResponse>;
16
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=interfaces.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/commands/junit/interfaces.ts"],"names":[],"mappings":""}
@@ -1,12 +0,0 @@
1
- import { SpanTags } from '@datadog/datadog-ci-base/helpers/interfaces';
2
- import { Payload } from './interfaces';
3
- export declare const renderInvalidFile: (xmlPath: string, errorMessage: string) => string;
4
- export declare const renderFailedUpload: (payload: Payload, errorMessage: string) => string;
5
- export declare const renderFailedGitDBSync: (err: any) => string;
6
- export declare const renderRetriedUpload: (payload: Payload, errorMessage: string, attempt: number) => string;
7
- export declare const renderSuccessfulUpload: (dryRun: boolean, fileCount: number, duration: number) => string;
8
- export declare const renderSuccessfulGitDBSync: (dryRun: boolean, elapsed: number) => string;
9
- export declare const renderSuccessfulCommand: (spanTags: SpanTags, service?: string, env?: string) => string;
10
- export declare const renderDryRunUpload: (payload: Payload) => string;
11
- export declare const renderUpload: (payload: Payload) => string;
12
- export declare const renderCommandInfo: (basePaths: string[], service: string | undefined, concurrency: number, dryRun: boolean) => string;
@@ -1,82 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.renderCommandInfo = exports.renderUpload = exports.renderDryRunUpload = exports.renderSuccessfulCommand = exports.renderSuccessfulGitDBSync = exports.renderSuccessfulUpload = exports.renderRetriedUpload = exports.renderFailedGitDBSync = exports.renderFailedUpload = exports.renderInvalidFile = void 0;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const upath_1 = __importDefault(require("upath"));
9
- const utils_1 = require("./utils");
10
- const ICONS = {
11
- FAILED: '❌',
12
- SUCCESS: '✅',
13
- WARNING: '⚠️',
14
- };
15
- const renderInvalidFile = (xmlPath, errorMessage) => {
16
- const jUnitXMLPath = `[${chalk_1.default.bold.dim(xmlPath)}]`;
17
- return chalk_1.default.red(`${ICONS.FAILED} Invalid jUnitXML file ${jUnitXMLPath}: ${errorMessage}\n`);
18
- };
19
- exports.renderInvalidFile = renderInvalidFile;
20
- const renderFailedUpload = (payload, errorMessage) => {
21
- const jUnitXMLPath = `[${chalk_1.default.bold.dim(payload.xmlPath)}]`;
22
- return chalk_1.default.red(`${ICONS.FAILED} Failed upload jUnitXML for ${jUnitXMLPath}: ${errorMessage}\n`);
23
- };
24
- exports.renderFailedUpload = renderFailedUpload;
25
- const renderFailedGitDBSync = (err) => {
26
- return chalk_1.default.red.bold(`${ICONS.FAILED} Could not sync git metadata: ${err}\n`);
27
- };
28
- exports.renderFailedGitDBSync = renderFailedGitDBSync;
29
- const renderRetriedUpload = (payload, errorMessage, attempt) => {
30
- const jUnitXMLPath = `[${chalk_1.default.bold.dim(payload.xmlPath)}]`;
31
- return chalk_1.default.yellow(`[attempt ${attempt}] Retrying jUnitXML upload ${jUnitXMLPath}: ${errorMessage}\n`);
32
- };
33
- exports.renderRetriedUpload = renderRetriedUpload;
34
- const renderSuccessfulUpload = (dryRun, fileCount, duration) => {
35
- return chalk_1.default.green(`${dryRun ? '[DRYRUN] ' : ''}${ICONS.SUCCESS} Uploaded ${fileCount} files in ${duration} seconds.`);
36
- };
37
- exports.renderSuccessfulUpload = renderSuccessfulUpload;
38
- const renderSuccessfulGitDBSync = (dryRun, elapsed) => {
39
- return chalk_1.default.green(`${dryRun ? '[DRYRUN] ' : ''}${ICONS.SUCCESS} Synced git metadata in ${elapsed} seconds.`);
40
- };
41
- exports.renderSuccessfulGitDBSync = renderSuccessfulGitDBSync;
42
- const renderSuccessfulCommand = (spanTags, service, env) => {
43
- let fullStr = '';
44
- fullStr += chalk_1.default.green('=================================================================================================\n');
45
- fullStr += chalk_1.default.green('* View detailed reports on Datadog (they can take a few minutes to become available)\n');
46
- const redirectTestCommitURL = (0, utils_1.getTestCommitRedirectURL)(spanTags, service, env);
47
- if (redirectTestCommitURL) {
48
- fullStr += chalk_1.default.green('* Commit report:\n');
49
- fullStr += chalk_1.default.green(`* ${redirectTestCommitURL}\n`);
50
- }
51
- const testRunsUrl = (0, utils_1.getTestRunsUrl)(spanTags);
52
- if (testRunsUrl) {
53
- fullStr += chalk_1.default.green('* Test runs report:\n');
54
- fullStr += chalk_1.default.green(`* ${testRunsUrl}\n`);
55
- }
56
- fullStr += chalk_1.default.green('=================================================================================================\n');
57
- return fullStr;
58
- };
59
- exports.renderSuccessfulCommand = renderSuccessfulCommand;
60
- const renderDryRunUpload = (payload) => `[DRYRUN] ${(0, exports.renderUpload)(payload)}`;
61
- exports.renderDryRunUpload = renderDryRunUpload;
62
- const renderUpload = (payload) => `Uploading jUnit XML test report file in ${payload.xmlPath}`;
63
- exports.renderUpload = renderUpload;
64
- const renderCommandInfo = (basePaths, service, concurrency, dryRun) => {
65
- let fullStr = '';
66
- if (dryRun) {
67
- fullStr += chalk_1.default.yellow(`${ICONS.WARNING} DRY-RUN MODE ENABLED. WILL NOT UPLOAD JUNIT XML\n`);
68
- }
69
- fullStr += chalk_1.default.green(`Starting upload with concurrency ${concurrency}. \n`);
70
- if (basePaths.length === 1 && !!upath_1.default.extname(basePaths[0])) {
71
- fullStr += chalk_1.default.green(`Will upload jUnit XML file ${basePaths[0]}\n`);
72
- }
73
- else {
74
- fullStr += chalk_1.default.green(`Will look for jUnit XML files in ${basePaths.join(', ')}\n`);
75
- }
76
- if (service) {
77
- fullStr += chalk_1.default.green(`service: ${service}`);
78
- }
79
- return fullStr;
80
- };
81
- exports.renderCommandInfo = renderCommandInfo;
82
- //# sourceMappingURL=renderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/commands/junit/renderer.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- import { BaseCommand } from '@datadog/datadog-ci-base';
2
- export declare class JunitUploadCommand extends BaseCommand {
3
- static paths: string[][];
4
- static usage: import("clipanion").Usage;
5
- private basePaths;
6
- private verbose;
7
- private dryRun;
8
- private env;
9
- private logs;
10
- private maxConcurrency;
11
- private measures;
12
- private service;
13
- private tags;
14
- private reportTags;
15
- private reportMeasures;
16
- private rawXPathTags;
17
- private gitRepositoryURL;
18
- private skipGitMetadataUpload;
19
- private fips;
20
- private fipsIgnoreError;
21
- private automaticReportsDiscovery;
22
- private ignoredPaths;
23
- private config;
24
- private xpathTags?;
25
- private logger;
26
- execute(): Promise<1 | undefined>;
27
- private uploadToGitDB;
28
- private getApiHelper;
29
- private parseXPathTags;
30
- private getMatchingJUnitXMLFiles;
31
- private getSpanTags;
32
- private getCustomTags;
33
- private getCustomMeasures;
34
- private getReportTags;
35
- private getReportMeasures;
36
- private uploadJUnitXML;
37
- }