Skip to content

Commit a429893

Browse files
authored
fix: handle citgm failures better (nodejs#497)
1 parent 3c3712a commit a429893

File tree

4 files changed

+49
-12
lines changed

4 files changed

+49
-12
lines changed

bin/ncu-ci

+6-3
Original file line numberDiff line numberDiff line change
@@ -351,10 +351,13 @@ class CICommand {
351351
await build.getResults();
352352
build.display();
353353

354-
const json = build.formatAsJson();
355-
if (json !== undefined) {
356-
this.json = this.json.concat(json);
354+
if (argv.json) {
355+
const json = build.formatAsJson();
356+
if (json !== undefined) {
357+
this.json = this.json.concat(json);
358+
}
357359
}
360+
358361
if ((argv.copy || argv.markdown) && !argv.stats) {
359362
this.markdown += build.formatAsMarkdown();
360363
}

lib/ci/build-types/citgm_build.js

+22-7
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,19 @@ class CITGMBuild extends TestBuild {
2828

2929
this.id = jobid;
3030
this.noBuild = noBuild;
31+
this.failures = [];
3132
}
3233

3334
async getResults() {
34-
const { apiUrl } = this;
35+
const { apiUrl, cli } = this;
3536

3637
let headerData;
3738
try {
3839
headerData = await this.getBuildData('Summary');
3940
} catch (err) {
40-
this.failures = [
41-
new NCUFailure({ url: this.apiUrl }, err.message)
42-
];
41+
cli.stopSpinner('Failed to download Summary data',
42+
cli.SPINNER_STATUS.FAILED);
43+
this.failures.push(new NCUFailure({ url: this.apiUrl }, err.message));
4344
return this.failures;
4445
}
4546
const { result } = headerData;
@@ -55,9 +56,9 @@ class CITGMBuild extends TestBuild {
5556
try {
5657
resultData = await this.getBuildData('Results');
5758
} catch (err) {
58-
this.failures = [
59-
new NCUFailure({ url: apiUrl }, err.message)
60-
];
59+
cli.stopSpinner('Failed to download Results data',
60+
cli.SPINNER_STATUS.FAILED);
61+
this.failures.push(new NCUFailure({ url: apiUrl }, err.message));
6162
return this.failures;
6263
}
6364

@@ -110,6 +111,20 @@ class CITGMBuild extends TestBuild {
110111
}
111112
}
112113

114+
display() {
115+
const { failures } = this;
116+
117+
if (failures.length) {
118+
for (const failure of failures) {
119+
this.displayFailure(failure);
120+
}
121+
return;
122+
}
123+
124+
this.displayHeader();
125+
this.displayBuilds();
126+
}
127+
113128
displayBuilds() {
114129
const { cli, results } = this;
115130
const { failed, skipped, passed, total } = results.statistics;

lib/ci/build-types/citgm_comparison_build.js

+20-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class CITGMComparisonBuild {
1818
this.cli = cli;
1919
this.builds = { baseBuild, comparisonBuild };
2020
this.results = {};
21+
this.failures = { baseBuild: [], comparisonBuild: [] };
2122
}
2223

2324
async getResults() {
@@ -33,6 +34,14 @@ class CITGMComparisonBuild {
3334
await baseBuild.getResults();
3435
await comparisonBuild.getResults();
3536

37+
if (baseBuild.failures.length || comparisonBuild.failures.length) {
38+
this.failures.baseBuild =
39+
this.failures.baseBuild.concat(baseBuild.failures);
40+
this.failures.comparisonBuild =
41+
this.failures.comparisonBuild.concat(comparisonBuild.failures);
42+
return;
43+
}
44+
3645
const { failures: baseFailures } = baseBuild.results;
3746
const { failures: comparisonFailures } = comparisonBuild.results;
3847

@@ -70,7 +79,17 @@ class CITGMComparisonBuild {
7079
}
7180

7281
display() {
73-
const { builds } = this;
82+
const { builds, failures } = this;
83+
84+
if (failures.baseBuild.length || failures.comparisonBuild.length) {
85+
for (const failure of failures.baseBuild) {
86+
builds.baseBuild.displayFailure(failure);
87+
}
88+
for (const failure of failures.comparisonBuild) {
89+
builds.comparisonBuild.displayFailure(failure);
90+
}
91+
return;
92+
}
7493

7594
// Display header for both CITGM runs.
7695
builds.baseBuild.displayHeader();

lib/ci/build-types/test_build.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class TestBuild extends Job {
4747
this.builtOn = builtOn;
4848
}
4949

50-
setDailyBuildData({ result, changeSet, actions, timestamp, builtOn }) {
50+
setDailyBuildData({ result, changeSet, timestamp, builtOn }) {
5151
this.change = changeSet.items[0] || {};
5252
this.date = new Date(timestamp);
5353
this.result = result;

0 commit comments

Comments
 (0)