Skip to content

Commit

Permalink
show error stacktrace with custom messages
Browse files Browse the repository at this point in the history
  • Loading branch information
Sourav authored and Sourav committed Mar 7, 2022
1 parent d0a6851 commit 1da9162
Show file tree
Hide file tree
Showing 10 changed files with 67 additions and 20 deletions.
3 changes: 3 additions & 0 deletions bin/commands/info.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ module.exports = function info(args, rawArgs) {
errorCode = 'api_failed_build_info';

logger.info(message);
logger.info(utils.formatRequest(err, resp, body));
} else {
let build = null;
try {
Expand All @@ -66,6 +67,7 @@ module.exports = function info(args, rawArgs) {
message = Constants.userMessages.API_DEPRECATED;
logger.info(message);
}
logger.info(utils.formatRequest(err, resp, body));
} else if (resp.statusCode != 200) {
messageType = Constants.messageTypes.ERROR;
errorCode = 'api_failed_build_info';
Expand All @@ -80,6 +82,7 @@ module.exports = function info(args, rawArgs) {
message = Constants.userMessages.BUILD_INFO_FAILED;
logger.error(message);
}
logger.info(utils.formatRequest(err, resp, body));
} else {
messageType = Constants.messageTypes.SUCCESS;
message = `Build info for build id: \n ${JSON.stringify(
Expand Down
6 changes: 5 additions & 1 deletion bin/helpers/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ const request = require('request');
const config = require('./config'),
capabilityHelper = require("../helpers/capabilityHelper"),
Constants = require('../helpers/constants'),
utils = require('../helpers/utils');
utils = require('../helpers/utils'),
logger = require('../helpers/logger').winstonLogger;

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

request.post(options, function (err, resp, body) {
if (err) {
logger.info(utils.formatRequest(err, resp, body));
reject(err);
} else {
let build = null;
Expand All @@ -37,9 +39,11 @@ const createBuild = (bsConfig, zip) => {
if (build) {
resolve(build.message);
} else {
logger.info(utils.formatRequest(err, resp, body));
reject(Constants.userMessages.API_DEPRECATED);
}
} else if (resp.statusCode != 201) {
logger.info(utils.formatRequest(err, resp, body));
if (build) {
reject(`${Constants.userMessages.BUILD_FAILED} Error: ${build.message}`);
} else {
Expand Down
5 changes: 5 additions & 0 deletions bin/helpers/buildArtifacts.js
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ const sendUpdatesToBstack = async (bsConfig, buildId, args, options, rawArgs) =>
request.post(options, function (err, resp, data) {
if(err) {
utils.sendUsageReport(bsConfig, args, err, Constants.messageTypes.ERROR, 'api_failed_build_artifacts_status_update', null, rawArgs);
logger.info(utils.formatRequest(err, resp, body));
reject(err);
} else {
try {
Expand Down Expand Up @@ -203,6 +204,7 @@ exports.downloadBuildArtifacts = async (bsConfig, buildId, args, rawArgs) => {
let buildDetails = null;
request.get(options, async function (err, resp, body) {
if(err) {
logger.info(utils.formatRequest(err, resp, body));
utils.sendUsageReport(bsConfig, args, err, Constants.messageTypes.ERROR, 'api_failed_build_artifacts', null, rawArgs);
process.exitCode = Constants.ERROR_EXIT_CODE;
} else {
Expand All @@ -211,6 +213,7 @@ exports.downloadBuildArtifacts = async (bsConfig, buildId, args, rawArgs) => {
if(resp.statusCode != 200) {
logger.error('Downloading the build artifacts failed.');
logger.error(`Error: Request failed with status code ${resp.statusCode}`)
logger.info(utils.formatRequest(err, resp, body));
utils.sendUsageReport(bsConfig, args, buildDetails, Constants.messageTypes.ERROR, 'api_failed_build_artifacts', null, rawArgs);
process.exitCode = Constants.ERROR_EXIT_CODE;
} else {
Expand All @@ -220,6 +223,7 @@ exports.downloadBuildArtifacts = async (bsConfig, buildId, args, rawArgs) => {
messageType = Constants.messageTypes.ERROR;
message = Constants.userMessages.DOWNLOAD_BUILD_ARTIFACTS_FAILED.replace('<build-id>', buildId).replace('<machine-count>', BUILD_ARTIFACTS_FAIL_COUNT);
logger.error(message);
logger.info(utils.formatRequest(err, resp, body));
process.exitCode = Constants.ERROR_EXIT_CODE;
} else {
messageType = Constants.messageTypes.SUCCESS;
Expand All @@ -241,6 +245,7 @@ exports.downloadBuildArtifacts = async (bsConfig, buildId, args, rawArgs) => {
}
utils.sendUsageReport(bsConfig, args, err, messageType, errorCode, null, rawArgs);
logger.error(`Error: Request failed with status code ${resp.statusCode}`)
logger.info(utils.formatRequest(err, resp, body));
process.exitCode = Constants.ERROR_EXIT_CODE;
}
}
Expand Down
6 changes: 5 additions & 1 deletion bin/helpers/reporterHTML.js
Original file line number Diff line number Diff line change
Expand Up @@ -105,14 +105,15 @@ let reportGenerator = (bsConfig, buildId, args, rawArgs, cb) => {
let messageType = null;
let errorCode = null;
let build;

if (err) {
message = err;
messageType = Constants.messageTypes.ERROR;
errorCode = 'api_failed_build_report';

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

utils.sendUsageReport(bsConfig, args, message, messageType, errorCode, null, rawArgs);
return;
Expand All @@ -135,6 +136,7 @@ let reportGenerator = (bsConfig, buildId, args, rawArgs, cb) => {
message = Constants.userMessages.API_DEPRECATED;
logger.info(message);
}
logger.info(utils.formatRequest(err, resp, body));
} else if (resp.statusCode === 422) {
messageType = Constants.messageTypes.ERROR;
errorCode = 'api_failed_build_generate_report';
Expand All @@ -146,6 +148,7 @@ let reportGenerator = (bsConfig, buildId, args, rawArgs, cb) => {
response = {message: message};
}
logger.error(response.message);
logger.info(utils.formatRequest(err, resp, body));
} else if (resp.statusCode != 200) {
messageType = Constants.messageTypes.ERROR;
errorCode = 'api_failed_build_generate_report';
Expand All @@ -160,6 +163,7 @@ let reportGenerator = (bsConfig, buildId, args, rawArgs, cb) => {
message = Constants.userMessages.BUILD_GENERATE_REPORT_FAILED.replace('<build-id>', buildId);
logger.error(message);
}
logger.info(utils.formatRequest(err, resp, body));
} else {
messageType = Constants.messageTypes.SUCCESS;
message = `Report for build: ${buildId} was successfully created.`;
Expand Down
10 changes: 9 additions & 1 deletion bin/helpers/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -969,6 +969,14 @@ exports.setCLIMode = (bsConfig, args) => {
}
}

exports.formatRequest = (err, resp, body) => {
return {
err,
status: resp ? resp.statusCode : null,
body: body ? JSON.stringify(body) : null
}
}

exports.stopBrowserStackBuild = async (bsConfig, args, buildId, rawArgs) => {
let that = this;
return new Promise(function (resolve, reject) {
Expand Down Expand Up @@ -1079,4 +1087,4 @@ exports.getVideoConfig = (cypressJson) => {
if (!this.isUndefined(cypressJson.videoUploadOnPasses)) conf.videoUploadOnPasses = cypressJson.videoUploadOnPasses;

return conf;
}
}
2 changes: 2 additions & 0 deletions bin/helpers/zipUpload.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ const uploadSuits = (bsConfig, filePath, opts, obj) => {
var r = request.post(options, function (err, resp, body) {

if (err) {
logger.info(utils.formatRequest(err, resp, body));
reject(err);
} else {
try {
Expand All @@ -60,6 +61,7 @@ const uploadSuits = (bsConfig, filePath, opts, obj) => {
responseData = {};
}
if (resp.statusCode != 200) {
logger.info(utils.formatRequest(err, resp, body));
if (resp.statusCode == 401) {
if (responseData && responseData["error"]) {
responseData["time"] = Date.now() - obj.startTime;
Expand Down
18 changes: 12 additions & 6 deletions test/unit/bin/commands/info.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ const chai = require("chai"),

const Constants = require("../../../../bin/helpers/constants"),
logger = require("../../../../bin/helpers/logger").winstonLogger,
testObjects = require("../../support/fixtures/testObjects");
testObjects = require("../../support/fixtures/testObjects"),
formatRequest = require('../../../../bin/helpers/utils').formatRequest;

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

Expand Down Expand Up @@ -60,7 +61,8 @@ describe("buildInfo", () => {
setCypressConfigFilename: setCypressConfigFilenameStub,
getUserAgent: getUserAgentStub,
getConfigPath: getConfigPathStub,
setDefaults: setDefaultsStub
setDefaults: setDefaultsStub,
formatRequest,
},
request: {get: requestStub},
});
Expand Down Expand Up @@ -98,7 +100,8 @@ describe("buildInfo", () => {
setCypressConfigFilename: setCypressConfigFilenameStub,
getUserAgent: getUserAgentStub,
getConfigPath: getConfigPathStub,
setDefaults: setDefaultsStub
setDefaults: setDefaultsStub,
formatRequest,
},
request: {get: requestStub},
});
Expand Down Expand Up @@ -160,7 +163,8 @@ describe("buildInfo", () => {
setCypressConfigFilename: setCypressConfigFilenameStub,
getUserAgent: getUserAgentStub,
getConfigPath: getConfigPathStub,
setDefaults: setDefaultsStub
setDefaults: setDefaultsStub,
formatRequest,
},
request: {get: requestStub},
});
Expand Down Expand Up @@ -204,7 +208,8 @@ describe("buildInfo", () => {
setCypressConfigFilename: setCypressConfigFilenameStub,
getUserAgent: getUserAgentStub,
getConfigPath: getConfigPathStub,
setDefaults: setDefaultsStub
setDefaults: setDefaultsStub,
formatRequest,
},
request: {get: requestStub},
});
Expand Down Expand Up @@ -243,7 +248,8 @@ describe("buildInfo", () => {
setCypressConfigFilename: setCypressConfigFilenameStub,
getUserAgent: getUserAgentStub,
getConfigPath: getConfigPathStub,
setDefaults: setDefaultsStub
setDefaults: setDefaultsStub,
formatRequest,
},
request: {get: requestStub},
});
Expand Down
7 changes: 6 additions & 1 deletion test/unit/bin/helpers/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ const chai = require("chai"),

const Constants = require("../../../../bin/helpers/constants"),
logger = require("../../../../bin/helpers/logger").winstonLogger,
testObjects = require("../../support/fixtures/testObjects");
testObjects = require("../../support/fixtures/testObjects"),
formatRequest = require("../../../../bin/helpers/utils").formatRequest;

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

Expand Down Expand Up @@ -37,6 +38,7 @@ describe("build", () => {
const build = proxyquire("../../../../bin/helpers/build", {
"../helpers/utils": {
getUserAgent: getUserAgentStub,
formatRequest,
},
"../helpers/capabilityHelper": {
caps: capsStub,
Expand Down Expand Up @@ -64,6 +66,7 @@ describe("build", () => {
const build = proxyquire("../../../../bin/helpers/build", {
"../helpers/utils": {
getUserAgent: getUserAgentStub,
formatRequest,
},
"../helpers/capabilityHelper": {
caps: capsStub,
Expand Down Expand Up @@ -121,6 +124,7 @@ describe("build", () => {
const build = proxyquire("../../../../bin/helpers/build", {
"../helpers/utils": {
getUserAgent: getUserAgentStub,
formatRequest,
},
"../helpers/capabilityHelper": {
caps: capsStub,
Expand Down Expand Up @@ -153,6 +157,7 @@ describe("build", () => {
const build = proxyquire("../../../../bin/helpers/build", {
"../helpers/utils": {
getUserAgent: getUserAgentStub,
formatRequest,
},
"../helpers/capabilityHelper": {
caps: capsStub,
Expand Down
24 changes: 16 additions & 8 deletions test/unit/bin/helpers/reporterHTML.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ const fs = require('fs'),
request = require('request'),
Constants = require("../../../../bin/helpers/constants"),
logger = require("../../../../bin/helpers/logger").winstonLogger,
testObjects = require("../../support/fixtures/testObjects");
testObjects = require("../../support/fixtures/testObjects"),
formatRequest = require("../../../../bin/helpers/utils").formatRequest;

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

Expand Down Expand Up @@ -69,7 +70,8 @@ describe("reportHTML", () => {
setCypressConfigFilename: setCypressConfigFilenameStub,
sendUsageReport: sendUsageReportStub,
setDefaults: setDefaultsStub,
getErrorCodeFromErr: getErrorCodeFromErrStub
getErrorCodeFromErr: getErrorCodeFromErrStub,
formatRequest,
},
request: {get: requestStub}
});
Expand Down Expand Up @@ -100,7 +102,8 @@ describe("reportHTML", () => {
setCypressConfigFilename: setCypressConfigFilenameStub,
sendUsageReport: sendUsageReportStub,
setDefaults: setDefaultsStub,
getErrorCodeFromErr: getErrorCodeFromErrStub
getErrorCodeFromErr: getErrorCodeFromErrStub,
formatRequest,
},
request: {get: requestStub}
});
Expand Down Expand Up @@ -132,7 +135,8 @@ describe("reportHTML", () => {
setCypressConfigFilename: setCypressConfigFilenameStub,
sendUsageReport: sendUsageReportStub,
setDefaults: setDefaultsStub,
getErrorCodeFromErr: getErrorCodeFromErrStub
getErrorCodeFromErr: getErrorCodeFromErrStub,
formatRequest,
},
request: {get: requestStub}
});
Expand Down Expand Up @@ -165,7 +169,8 @@ describe("reportHTML", () => {
setCypressConfigFilename: setCypressConfigFilenameStub,
sendUsageReport: sendUsageReportStub,
setDefaults: setDefaultsStub,
getErrorCodeFromErr: getErrorCodeFromErrStub
getErrorCodeFromErr: getErrorCodeFromErrStub,
formatRequest,
},
request: {get: requestStub}
});
Expand Down Expand Up @@ -198,7 +203,8 @@ describe("reportHTML", () => {
setCypressConfigFilename: setCypressConfigFilenameStub,
sendUsageReport: sendUsageReportStub,
setDefaults: setDefaultsStub,
getErrorCodeFromErr: getErrorCodeFromErrStub
getErrorCodeFromErr: getErrorCodeFromErrStub,
formatRequest,
},
request: {get: requestStub}
});
Expand Down Expand Up @@ -227,7 +233,8 @@ describe("reportHTML", () => {
setCypressConfigFilename: setCypressConfigFilenameStub,
sendUsageReport: sendUsageReportStub,
setDefaults: setDefaultsStub,
getErrorCodeFromErr: getErrorCodeFromErrStub
getErrorCodeFromErr: getErrorCodeFromErrStub,
formatRequest,
},
request: {get: requestStub}
});
Expand Down Expand Up @@ -259,7 +266,8 @@ describe("reportHTML", () => {
setCypressConfigFilename: setCypressConfigFilenameStub,
sendUsageReport: sendUsageReportStub,
setDefaults: setDefaultsStub,
getErrorCodeFromErr: getErrorCodeFromErrStub
getErrorCodeFromErr: getErrorCodeFromErrStub,
formatRequest,
},
request: {get: requestStub}
});
Expand Down
6 changes: 4 additions & 2 deletions test/unit/bin/helpers/zipUpload.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ const chai = require("chai"),
request = require("request");

const logger = require("../../../../bin/helpers/logger").winstonLogger,
constant = require('../../../../bin/helpers/constants');
constant = require('../../../../bin/helpers/constants'),
formatRequest = require('../../../../bin/helpers/utils').formatRequest;

const rewire = require("rewire"),
cliProgress = require('cli-progress');
Expand Down Expand Up @@ -44,7 +45,8 @@ describe("zipUpload", () => {
const zipUploader = rewire("../../../../bin/helpers/zipUpload");
beforeEach(() => {
utilsStub = {
generateUploadParams: sinon.stub().returns({})
generateUploadParams: sinon.stub().returns({}),
formatRequest,
};
loggerStub = {
info: sandbox.stub().returns(null)
Expand Down

0 comments on commit 1da9162

Please sign in to comment.