Skip to content

Commit 98f6cdb

Browse files
Merge pull request #266 from 07souravkunda/force_upload_masking_error_fix
enable --force-upload to upload npm packages
2 parents 4847b2e + 6cf33d1 commit 98f6cdb

File tree

13 files changed

+101
-45
lines changed

13 files changed

+101
-45
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.error(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.error(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.error(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.error(utils.formatRequest(err, resp, body));
4043
reject(Constants.userMessages.API_DEPRECATED);
4144
}
4245
} else if (resp.statusCode != 201) {
46+
logger.error(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.error(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.error(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.error(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.error(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.error(utils.formatRequest(err, resp, body));
244249
process.exitCode = Constants.ERROR_EXIT_CODE;
245250
}
246251
}

bin/helpers/checkUploaded.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ const checkUploadedMd5 = (bsConfig, args, instrumentBlocks) => {
8282
zipUrlPresent: false,
8383
packageUrlPresent: false,
8484
};
85-
if (args["force-upload"] && !utils.isTrueString(bsConfig.run_settings.cache_dependencies)) {
85+
if (args["force-upload"]) {
8686
return resolve(obj);
8787
}
8888

bin/helpers/reporterHTML.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,14 +105,14 @@ 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.');
115-
logger.error(message);
115+
logger.error(utils.formatRequest(err, resp, body));
116116

117117
utils.sendUsageReport(bsConfig, args, message, messageType, errorCode, null, rawArgs);
118118
return;
@@ -145,7 +145,7 @@ let reportGenerator = (bsConfig, buildId, args, rawArgs, cb) => {
145145
logger.error(`Error generating the report: ${error}`);
146146
response = {message: message};
147147
}
148-
logger.error(response.message);
148+
logger.error(utils.formatRequest(err, resp, body));
149149
} else if (resp.statusCode != 200) {
150150
messageType = Constants.messageTypes.ERROR;
151151
errorCode = 'api_failed_build_generate_report';
@@ -158,7 +158,7 @@ let reportGenerator = (bsConfig, buildId, args, rawArgs, cb) => {
158158
if (build.message === 'Unauthorized') errorCode = 'api_auth_failed';
159159
} else {
160160
message = Constants.userMessages.BUILD_GENERATE_REPORT_FAILED.replace('<build-id>', buildId);
161-
logger.error(message);
161+
logger.error(utils.formatRequest(err, resp, body));
162162
}
163163
} else {
164164
messageType = Constants.messageTypes.SUCCESS;

bin/helpers/utils.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const getmac = require('getmac').default;
77
const { v4: uuidv4 } = require('uuid');
88
const browserstack = require('browserstack-local');
99
const crypto = require('crypto');
10+
const util = require('util');
1011

1112
const usageReporting = require("./usageReporting"),
1213
logger = require("./logger").winstonLogger,
@@ -969,6 +970,14 @@ exports.setCLIMode = (bsConfig, args) => {
969970
}
970971
}
971972

973+
exports.formatRequest = (err, resp, body) => {
974+
return {
975+
err,
976+
status: resp ? resp.statusCode : null,
977+
body: body ? util.format('%j', body) : null
978+
}
979+
}
980+
972981
exports.stopBrowserStackBuild = async (bsConfig, args, buildId, rawArgs) => {
973982
let that = this;
974983
return new Promise(function (resolve, reject) {

bin/helpers/zipUpload.js

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

5454
if (err) {
55-
reject(err);
55+
reject({message: err, stacktrace: utils.formatRequest(err, resp, body)});
5656
} else {
5757
try {
5858
responseData = JSON.parse(body);
@@ -63,22 +63,22 @@ const uploadSuits = (bsConfig, filePath, opts, obj) => {
6363
if (resp.statusCode == 401) {
6464
if (responseData && responseData["error"]) {
6565
responseData["time"] = Date.now() - obj.startTime;
66-
return reject(responseData["error"]);
66+
return reject({message: responseData["error"], stacktrace: utils.formatRequest(err, resp, body)});
6767
} else {
68-
return reject(Constants.validationMessages.INVALID_DEFAULT_AUTH_PARAMS);
68+
return reject({message: Constants.validationMessages.INVALID_DEFAULT_AUTH_PARAMS, stacktrace: utils.formatRequest(err, resp, body)});
6969
}
7070
}
7171
if (!opts.propogateError){
7272
return resolve({});
7373
}
7474
if(responseData && responseData["error"]){
7575
responseData["time"] = Date.now() - obj.startTime;
76-
reject(responseData["error"]);
76+
reject({message: responseData["error"], stacktrace: utils.formatRequest(err, resp, body)});
7777
} else {
7878
if (resp.statusCode == 413) {
79-
reject(Constants.userMessages.ZIP_UPLOAD_LIMIT_EXCEEDED);
79+
reject({message: Constants.userMessages.ZIP_UPLOAD_LIMIT_EXCEEDED, stacktrace: utils.formatRequest(err, resp, body)});
8080
} else {
81-
reject(Constants.userMessages.ZIP_UPLOADER_NOT_REACHABLE);
81+
reject({message: Constants.userMessages.ZIP_UPLOADER_NOT_REACHABLE, stacktrace: utils.formatRequest(err, resp, body)});
8282
}
8383
}
8484
} else {
@@ -147,9 +147,10 @@ const uploadCypressZip = (bsConfig, md5data, packageData) => {
147147
});
148148
return resolve(obj);
149149
}).catch((error) => {
150-
purgeUploadBar(testZipUploadObj);
151-
purgeUploadBar(npmPackageZipUploadObj);
152-
return reject(error);
150+
testZipUploadObj.bar1 && purgeUploadBar(testZipUploadObj);
151+
npmPackageZipUploadObj.bar1 && purgeUploadBar(npmPackageZipUploadObj);
152+
logger.error(error.stacktrace)
153+
return reject(error.message);
153154
})
154155
})
155156
}

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/checkUploaded.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ describe("checkUploaded", () => {
204204
});
205205
});
206206

207-
it("resolves with zipUrlPresent false and packageUrlPresent true if force-upload enabled and cache_dependencies enabled", () => {
207+
it("resolves with zipUrlPresent false and packageUrlPresent false if force-upload enabled and cache_dependencies enabled", () => {
208208
let requestStub = sandbox
209209
.stub(request, "post")
210210
.yields(null, { statusCode: 200 }, '{"npmPackageUrl":"bs://random_hashid2"}');
@@ -219,11 +219,12 @@ describe("checkUploaded", () => {
219219
bsConfig.run_settings.cache_dependencies = true
220220
return checkUploadedMd5rewire(bsConfig, {"force-upload": true}, instrumentBlocks)
221221
.then((data) => {
222-
chai.assert.deepEqual(data, { zipUrlPresent: false, packageUrlPresent: true, npm_package_md5sum: 'random_md5sum', npmPackageUrl: 'bs://random_hashid2' })
223-
sinon.assert.calledOnce(requestStub);
224-
sinon.assert.calledOnce(checkSpecsMd5Stub);
222+
chai.assert.deepEqual(data, { zipUrlPresent: false, packageUrlPresent: false })
223+
sinon.assert.notCalled(requestStub);
224+
sinon.assert.notCalled(checkSpecsMd5Stub);
225225
})
226226
.catch((_error) => {
227+
console.log(_error)
227228
chai.assert.fail("Promise error");
228229
});
229230
});

0 commit comments

Comments
 (0)