Skip to content

Commit 1da9162

Browse files
SouravSourav
authored andcommitted
show error stacktrace with custom messages
1 parent d0a6851 commit 1da9162

File tree

10 files changed

+67
-20
lines changed

10 files changed

+67
-20
lines changed

bin/commands/info.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ module.exports = function info(args, rawArgs) {
4747
errorCode = 'api_failed_build_info';
4848

4949
logger.info(message);
50+
logger.info(utils.formatRequest(err, resp, body));
5051
} else {
5152
let build = null;
5253
try {
@@ -66,6 +67,7 @@ module.exports = function info(args, rawArgs) {
6667
message = Constants.userMessages.API_DEPRECATED;
6768
logger.info(message);
6869
}
70+
logger.info(utils.formatRequest(err, resp, body));
6971
} else if (resp.statusCode != 200) {
7072
messageType = Constants.messageTypes.ERROR;
7173
errorCode = 'api_failed_build_info';
@@ -80,6 +82,7 @@ module.exports = function info(args, rawArgs) {
8082
message = Constants.userMessages.BUILD_INFO_FAILED;
8183
logger.error(message);
8284
}
85+
logger.info(utils.formatRequest(err, resp, body));
8386
} else {
8487
messageType = Constants.messageTypes.SUCCESS;
8588
message = `Build info for build id: \n ${JSON.stringify(

bin/helpers/build.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ const request = require('request');
44
const config = require('./config'),
55
capabilityHelper = require("../helpers/capabilityHelper"),
66
Constants = require('../helpers/constants'),
7-
utils = require('../helpers/utils');
7+
utils = require('../helpers/utils'),
8+
logger = require('../helpers/logger').winstonLogger;
89

910
const createBuild = (bsConfig, zip) => {
1011
return new Promise(function (resolve, reject) {
@@ -24,6 +25,7 @@ const createBuild = (bsConfig, zip) => {
2425

2526
request.post(options, function (err, resp, body) {
2627
if (err) {
28+
logger.info(utils.formatRequest(err, resp, body));
2729
reject(err);
2830
} else {
2931
let build = null;
@@ -37,9 +39,11 @@ const createBuild = (bsConfig, zip) => {
3739
if (build) {
3840
resolve(build.message);
3941
} else {
42+
logger.info(utils.formatRequest(err, resp, body));
4043
reject(Constants.userMessages.API_DEPRECATED);
4144
}
4245
} else if (resp.statusCode != 201) {
46+
logger.info(utils.formatRequest(err, resp, body));
4347
if (build) {
4448
reject(`${Constants.userMessages.BUILD_FAILED} Error: ${build.message}`);
4549
} else {

bin/helpers/buildArtifacts.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ const sendUpdatesToBstack = async (bsConfig, buildId, args, options, rawArgs) =>
162162
request.post(options, function (err, resp, data) {
163163
if(err) {
164164
utils.sendUsageReport(bsConfig, args, err, Constants.messageTypes.ERROR, 'api_failed_build_artifacts_status_update', null, rawArgs);
165+
logger.info(utils.formatRequest(err, resp, body));
165166
reject(err);
166167
} else {
167168
try {
@@ -203,6 +204,7 @@ exports.downloadBuildArtifacts = async (bsConfig, buildId, args, rawArgs) => {
203204
let buildDetails = null;
204205
request.get(options, async function (err, resp, body) {
205206
if(err) {
207+
logger.info(utils.formatRequest(err, resp, body));
206208
utils.sendUsageReport(bsConfig, args, err, Constants.messageTypes.ERROR, 'api_failed_build_artifacts', null, rawArgs);
207209
process.exitCode = Constants.ERROR_EXIT_CODE;
208210
} else {
@@ -211,6 +213,7 @@ exports.downloadBuildArtifacts = async (bsConfig, buildId, args, rawArgs) => {
211213
if(resp.statusCode != 200) {
212214
logger.error('Downloading the build artifacts failed.');
213215
logger.error(`Error: Request failed with status code ${resp.statusCode}`)
216+
logger.info(utils.formatRequest(err, resp, body));
214217
utils.sendUsageReport(bsConfig, args, buildDetails, Constants.messageTypes.ERROR, 'api_failed_build_artifacts', null, rawArgs);
215218
process.exitCode = Constants.ERROR_EXIT_CODE;
216219
} else {
@@ -220,6 +223,7 @@ exports.downloadBuildArtifacts = async (bsConfig, buildId, args, rawArgs) => {
220223
messageType = Constants.messageTypes.ERROR;
221224
message = Constants.userMessages.DOWNLOAD_BUILD_ARTIFACTS_FAILED.replace('<build-id>', buildId).replace('<machine-count>', BUILD_ARTIFACTS_FAIL_COUNT);
222225
logger.error(message);
226+
logger.info(utils.formatRequest(err, resp, body));
223227
process.exitCode = Constants.ERROR_EXIT_CODE;
224228
} else {
225229
messageType = Constants.messageTypes.SUCCESS;
@@ -241,6 +245,7 @@ exports.downloadBuildArtifacts = async (bsConfig, buildId, args, rawArgs) => {
241245
}
242246
utils.sendUsageReport(bsConfig, args, err, messageType, errorCode, null, rawArgs);
243247
logger.error(`Error: Request failed with status code ${resp.statusCode}`)
248+
logger.info(utils.formatRequest(err, resp, body));
244249
process.exitCode = Constants.ERROR_EXIT_CODE;
245250
}
246251
}

bin/helpers/reporterHTML.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,14 +105,15 @@ let reportGenerator = (bsConfig, buildId, args, rawArgs, cb) => {
105105
let messageType = null;
106106
let errorCode = null;
107107
let build;
108-
108+
109109
if (err) {
110110
message = err;
111111
messageType = Constants.messageTypes.ERROR;
112112
errorCode = 'api_failed_build_report';
113113

114114
logger.error('Generating the build report failed.');
115115
logger.error(message);
116+
logger.info(utils.formatRequest(err, resp, body));
116117

117118
utils.sendUsageReport(bsConfig, args, message, messageType, errorCode, null, rawArgs);
118119
return;
@@ -135,6 +136,7 @@ let reportGenerator = (bsConfig, buildId, args, rawArgs, cb) => {
135136
message = Constants.userMessages.API_DEPRECATED;
136137
logger.info(message);
137138
}
139+
logger.info(utils.formatRequest(err, resp, body));
138140
} else if (resp.statusCode === 422) {
139141
messageType = Constants.messageTypes.ERROR;
140142
errorCode = 'api_failed_build_generate_report';
@@ -146,6 +148,7 @@ let reportGenerator = (bsConfig, buildId, args, rawArgs, cb) => {
146148
response = {message: message};
147149
}
148150
logger.error(response.message);
151+
logger.info(utils.formatRequest(err, resp, body));
149152
} else if (resp.statusCode != 200) {
150153
messageType = Constants.messageTypes.ERROR;
151154
errorCode = 'api_failed_build_generate_report';
@@ -160,6 +163,7 @@ let reportGenerator = (bsConfig, buildId, args, rawArgs, cb) => {
160163
message = Constants.userMessages.BUILD_GENERATE_REPORT_FAILED.replace('<build-id>', buildId);
161164
logger.error(message);
162165
}
166+
logger.info(utils.formatRequest(err, resp, body));
163167
} else {
164168
messageType = Constants.messageTypes.SUCCESS;
165169
message = `Report for build: ${buildId} was successfully created.`;

bin/helpers/utils.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -969,6 +969,14 @@ exports.setCLIMode = (bsConfig, args) => {
969969
}
970970
}
971971

972+
exports.formatRequest = (err, resp, body) => {
973+
return {
974+
err,
975+
status: resp ? resp.statusCode : null,
976+
body: body ? JSON.stringify(body) : null
977+
}
978+
}
979+
972980
exports.stopBrowserStackBuild = async (bsConfig, args, buildId, rawArgs) => {
973981
let that = this;
974982
return new Promise(function (resolve, reject) {
@@ -1079,4 +1087,4 @@ exports.getVideoConfig = (cypressJson) => {
10791087
if (!this.isUndefined(cypressJson.videoUploadOnPasses)) conf.videoUploadOnPasses = cypressJson.videoUploadOnPasses;
10801088

10811089
return conf;
1082-
}
1090+
}

bin/helpers/zipUpload.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ const uploadSuits = (bsConfig, filePath, opts, obj) => {
5252
var r = request.post(options, function (err, resp, body) {
5353

5454
if (err) {
55+
logger.info(utils.formatRequest(err, resp, body));
5556
reject(err);
5657
} else {
5758
try {
@@ -60,6 +61,7 @@ const uploadSuits = (bsConfig, filePath, opts, obj) => {
6061
responseData = {};
6162
}
6263
if (resp.statusCode != 200) {
64+
logger.info(utils.formatRequest(err, resp, body));
6365
if (resp.statusCode == 401) {
6466
if (responseData && responseData["error"]) {
6567
responseData["time"] = Date.now() - obj.startTime;

test/unit/bin/commands/info.js

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ const chai = require("chai"),
55

66
const Constants = require("../../../../bin/helpers/constants"),
77
logger = require("../../../../bin/helpers/logger").winstonLogger,
8-
testObjects = require("../../support/fixtures/testObjects");
8+
testObjects = require("../../support/fixtures/testObjects"),
9+
formatRequest = require('../../../../bin/helpers/utils').formatRequest;
910

1011
const proxyquire = require("proxyquire").noCallThru();
1112

@@ -60,7 +61,8 @@ describe("buildInfo", () => {
6061
setCypressConfigFilename: setCypressConfigFilenameStub,
6162
getUserAgent: getUserAgentStub,
6263
getConfigPath: getConfigPathStub,
63-
setDefaults: setDefaultsStub
64+
setDefaults: setDefaultsStub,
65+
formatRequest,
6466
},
6567
request: {get: requestStub},
6668
});
@@ -98,7 +100,8 @@ describe("buildInfo", () => {
98100
setCypressConfigFilename: setCypressConfigFilenameStub,
99101
getUserAgent: getUserAgentStub,
100102
getConfigPath: getConfigPathStub,
101-
setDefaults: setDefaultsStub
103+
setDefaults: setDefaultsStub,
104+
formatRequest,
102105
},
103106
request: {get: requestStub},
104107
});
@@ -160,7 +163,8 @@ describe("buildInfo", () => {
160163
setCypressConfigFilename: setCypressConfigFilenameStub,
161164
getUserAgent: getUserAgentStub,
162165
getConfigPath: getConfigPathStub,
163-
setDefaults: setDefaultsStub
166+
setDefaults: setDefaultsStub,
167+
formatRequest,
164168
},
165169
request: {get: requestStub},
166170
});
@@ -204,7 +208,8 @@ describe("buildInfo", () => {
204208
setCypressConfigFilename: setCypressConfigFilenameStub,
205209
getUserAgent: getUserAgentStub,
206210
getConfigPath: getConfigPathStub,
207-
setDefaults: setDefaultsStub
211+
setDefaults: setDefaultsStub,
212+
formatRequest,
208213
},
209214
request: {get: requestStub},
210215
});
@@ -243,7 +248,8 @@ describe("buildInfo", () => {
243248
setCypressConfigFilename: setCypressConfigFilenameStub,
244249
getUserAgent: getUserAgentStub,
245250
getConfigPath: getConfigPathStub,
246-
setDefaults: setDefaultsStub
251+
setDefaults: setDefaultsStub,
252+
formatRequest,
247253
},
248254
request: {get: requestStub},
249255
});

test/unit/bin/helpers/build.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ const chai = require("chai"),
55

66
const Constants = require("../../../../bin/helpers/constants"),
77
logger = require("../../../../bin/helpers/logger").winstonLogger,
8-
testObjects = require("../../support/fixtures/testObjects");
8+
testObjects = require("../../support/fixtures/testObjects"),
9+
formatRequest = require("../../../../bin/helpers/utils").formatRequest;
910

1011
const proxyquire = require("proxyquire").noCallThru();
1112

@@ -37,6 +38,7 @@ describe("build", () => {
3738
const build = proxyquire("../../../../bin/helpers/build", {
3839
"../helpers/utils": {
3940
getUserAgent: getUserAgentStub,
41+
formatRequest,
4042
},
4143
"../helpers/capabilityHelper": {
4244
caps: capsStub,
@@ -64,6 +66,7 @@ describe("build", () => {
6466
const build = proxyquire("../../../../bin/helpers/build", {
6567
"../helpers/utils": {
6668
getUserAgent: getUserAgentStub,
69+
formatRequest,
6770
},
6871
"../helpers/capabilityHelper": {
6972
caps: capsStub,
@@ -121,6 +124,7 @@ describe("build", () => {
121124
const build = proxyquire("../../../../bin/helpers/build", {
122125
"../helpers/utils": {
123126
getUserAgent: getUserAgentStub,
127+
formatRequest,
124128
},
125129
"../helpers/capabilityHelper": {
126130
caps: capsStub,
@@ -153,6 +157,7 @@ describe("build", () => {
153157
const build = proxyquire("../../../../bin/helpers/build", {
154158
"../helpers/utils": {
155159
getUserAgent: getUserAgentStub,
160+
formatRequest,
156161
},
157162
"../helpers/capabilityHelper": {
158163
caps: capsStub,

test/unit/bin/helpers/reporterHTML.js

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ const fs = require('fs'),
99
request = require('request'),
1010
Constants = require("../../../../bin/helpers/constants"),
1111
logger = require("../../../../bin/helpers/logger").winstonLogger,
12-
testObjects = require("../../support/fixtures/testObjects");
12+
testObjects = require("../../support/fixtures/testObjects"),
13+
formatRequest = require("../../../../bin/helpers/utils").formatRequest;
1314

1415
const proxyquire = require("proxyquire").noCallThru();
1516

@@ -69,7 +70,8 @@ describe("reportHTML", () => {
6970
setCypressConfigFilename: setCypressConfigFilenameStub,
7071
sendUsageReport: sendUsageReportStub,
7172
setDefaults: setDefaultsStub,
72-
getErrorCodeFromErr: getErrorCodeFromErrStub
73+
getErrorCodeFromErr: getErrorCodeFromErrStub,
74+
formatRequest,
7375
},
7476
request: {get: requestStub}
7577
});
@@ -100,7 +102,8 @@ describe("reportHTML", () => {
100102
setCypressConfigFilename: setCypressConfigFilenameStub,
101103
sendUsageReport: sendUsageReportStub,
102104
setDefaults: setDefaultsStub,
103-
getErrorCodeFromErr: getErrorCodeFromErrStub
105+
getErrorCodeFromErr: getErrorCodeFromErrStub,
106+
formatRequest,
104107
},
105108
request: {get: requestStub}
106109
});
@@ -132,7 +135,8 @@ describe("reportHTML", () => {
132135
setCypressConfigFilename: setCypressConfigFilenameStub,
133136
sendUsageReport: sendUsageReportStub,
134137
setDefaults: setDefaultsStub,
135-
getErrorCodeFromErr: getErrorCodeFromErrStub
138+
getErrorCodeFromErr: getErrorCodeFromErrStub,
139+
formatRequest,
136140
},
137141
request: {get: requestStub}
138142
});
@@ -165,7 +169,8 @@ describe("reportHTML", () => {
165169
setCypressConfigFilename: setCypressConfigFilenameStub,
166170
sendUsageReport: sendUsageReportStub,
167171
setDefaults: setDefaultsStub,
168-
getErrorCodeFromErr: getErrorCodeFromErrStub
172+
getErrorCodeFromErr: getErrorCodeFromErrStub,
173+
formatRequest,
169174
},
170175
request: {get: requestStub}
171176
});
@@ -198,7 +203,8 @@ describe("reportHTML", () => {
198203
setCypressConfigFilename: setCypressConfigFilenameStub,
199204
sendUsageReport: sendUsageReportStub,
200205
setDefaults: setDefaultsStub,
201-
getErrorCodeFromErr: getErrorCodeFromErrStub
206+
getErrorCodeFromErr: getErrorCodeFromErrStub,
207+
formatRequest,
202208
},
203209
request: {get: requestStub}
204210
});
@@ -227,7 +233,8 @@ describe("reportHTML", () => {
227233
setCypressConfigFilename: setCypressConfigFilenameStub,
228234
sendUsageReport: sendUsageReportStub,
229235
setDefaults: setDefaultsStub,
230-
getErrorCodeFromErr: getErrorCodeFromErrStub
236+
getErrorCodeFromErr: getErrorCodeFromErrStub,
237+
formatRequest,
231238
},
232239
request: {get: requestStub}
233240
});
@@ -259,7 +266,8 @@ describe("reportHTML", () => {
259266
setCypressConfigFilename: setCypressConfigFilenameStub,
260267
sendUsageReport: sendUsageReportStub,
261268
setDefaults: setDefaultsStub,
262-
getErrorCodeFromErr: getErrorCodeFromErrStub
269+
getErrorCodeFromErr: getErrorCodeFromErrStub,
270+
formatRequest,
263271
},
264272
request: {get: requestStub}
265273
});

test/unit/bin/helpers/zipUpload.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ const chai = require("chai"),
66
request = require("request");
77

88
const logger = require("../../../../bin/helpers/logger").winstonLogger,
9-
constant = require('../../../../bin/helpers/constants');
9+
constant = require('../../../../bin/helpers/constants'),
10+
formatRequest = require('../../../../bin/helpers/utils').formatRequest;
1011

1112
const rewire = require("rewire"),
1213
cliProgress = require('cli-progress');
@@ -44,7 +45,8 @@ describe("zipUpload", () => {
4445
const zipUploader = rewire("../../../../bin/helpers/zipUpload");
4546
beforeEach(() => {
4647
utilsStub = {
47-
generateUploadParams: sinon.stub().returns({})
48+
generateUploadParams: sinon.stub().returns({}),
49+
formatRequest,
4850
};
4951
loggerStub = {
5052
info: sandbox.stub().returns(null)

0 commit comments

Comments
 (0)