Skip to content

Commit e4681f5

Browse files
Merge pull request #57 from browserstack/bug_fixes
validateBstackJson & isCypressProjDirValid Fix
2 parents 832af98 + 0c2e7d4 commit e4681f5

File tree

1 file changed

+114
-67
lines changed

1 file changed

+114
-67
lines changed

bin/helpers/utils.js

Lines changed: 114 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,29 @@
1-
'use strict';
1+
"use strict";
22
const os = require("os");
33
const path = require("path");
44
const fs = require("fs");
55

6-
const usageReporting = require('./usageReporting'),
7-
logger = require('./logger').winstonLogger,
8-
Constants = require('./constants');
6+
const usageReporting = require("./usageReporting"),
7+
logger = require("./logger").winstonLogger,
8+
Constants = require("./constants");
99

1010
exports.validateBstackJson = (bsConfigPath) => {
1111
return new Promise(function (resolve, reject) {
1212
try {
1313
logger.info(`Reading config from ${bsConfigPath}`);
1414
let bsConfig = require(bsConfigPath);
1515
resolve(bsConfig);
16-
}
17-
catch (e) {
18-
reject("Couldn't find the browserstack.json file at \"" + bsConfigPath + "\". Please use --config-file <path to browserstack.json>.");
16+
} catch (e) {
17+
reject(
18+
e.code === "MODULE_NOT_FOUND"
19+
? "Couldn't find the browserstack.json file at \"" +
20+
bsConfigPath +
21+
'". Please use --config-file <path to browserstack.json>.'
22+
: `Invalid browserstack.json file. Error : ${e.message}`
23+
);
1924
}
2025
});
21-
}
26+
};
2227

2328
exports.getErrorCodeFromMsg = (errMsg) => {
2429
let errorCode = null;
@@ -51,71 +56,89 @@ exports.getErrorCodeFromMsg = (errMsg) => {
5156
errorCode = "invalid_directory_structure";
5257
break;
5358
}
54-
if (errMsg.includes("Please use --config-file <path to browserstack.json>.")) {
59+
if (
60+
errMsg.includes("Please use --config-file <path to browserstack.json>.")
61+
) {
5562
errorCode = "bstack_json_path_invalid";
63+
} else if (errMsg.includes("Invalid browserstack.json file.")) {
64+
errorCode = "bstack_json_invalid";
5665
}
5766
return errorCode;
58-
}
67+
};
5968

6069
exports.getErrorCodeFromErr = (err) => {
6170
let errorCode = null;
62-
if (err.code === 'SyntaxError') {
63-
errorCode = 'bstack_json_parse_error';
64-
} else if (err.code === 'EACCES') {
65-
errorCode = 'bstack_json_no_permission';
71+
if (err.code === "SyntaxError") {
72+
errorCode = "bstack_json_parse_error";
73+
} else if (err.code === "EACCES") {
74+
errorCode = "bstack_json_no_permission";
6675
} else {
67-
errorCode = 'bstack_json_invalid_unknown';
76+
errorCode = "bstack_json_invalid_unknown";
6877
}
69-
return errorCode
70-
}
78+
return errorCode;
79+
};
7180

72-
exports.sendUsageReport = (bsConfig, args, message, message_type, error_code) => {
81+
exports.sendUsageReport = (
82+
bsConfig,
83+
args,
84+
message,
85+
message_type,
86+
error_code
87+
) => {
7388
usageReporting.send({
7489
cli_args: args,
7590
message: message,
7691
message_type: message_type,
7792
error_code: error_code,
78-
bstack_config: bsConfig
93+
bstack_config: bsConfig,
7994
});
80-
}
95+
};
8196

8297
exports.setUsageReportingFlag = (bsConfig, disableUsageReporting) => {
83-
if (disableUsageReporting === undefined && bsConfig && bsConfig['disable_usage_reporting'] != undefined) {
84-
process.env.DISABLE_USAGE_REPORTING = bsConfig['disable_usage_reporting'];
98+
if (
99+
disableUsageReporting === undefined &&
100+
bsConfig &&
101+
bsConfig["disable_usage_reporting"] != undefined
102+
) {
103+
process.env.DISABLE_USAGE_REPORTING = bsConfig["disable_usage_reporting"];
85104
} else {
86105
process.env.DISABLE_USAGE_REPORTING = disableUsageReporting;
87106
}
88-
}
107+
};
89108

90109
exports.setParallels = (bsConfig, args) => {
91110
if (!this.isUndefined(args.parallels)) {
92-
bsConfig['run_settings']['parallels'] = args.parallels;
111+
bsConfig["run_settings"]["parallels"] = args.parallels;
93112
}
94-
}
113+
};
95114

96115
exports.setUsername = (bsConfig, args) => {
97116
if (!this.isUndefined(args.username)) {
98-
bsConfig['auth']['username'] = args.username;
117+
bsConfig["auth"]["username"] = args.username;
99118
} else if (!this.isUndefined(process.env.BROWSERSTACK_USERNAME)) {
100-
bsConfig['auth']['username'] = process.env.BROWSERSTACK_USERNAME;
101-
logger.info("Reading username from the environment variable BROWSERSTACK_USERNAME");
119+
bsConfig["auth"]["username"] = process.env.BROWSERSTACK_USERNAME;
120+
logger.info(
121+
"Reading username from the environment variable BROWSERSTACK_USERNAME"
122+
);
102123
}
103-
}
124+
};
104125

105126
exports.setAccessKey = (bsConfig, args) => {
106127
if (!this.isUndefined(args.key)) {
107-
bsConfig['auth']['access_key'] = args.key;
128+
bsConfig["auth"]["access_key"] = args.key;
108129
} else if (!this.isUndefined(process.env.BROWSERSTACK_ACCESS_KEY)) {
109-
bsConfig['auth']['access_key'] = process.env.BROWSERSTACK_ACCESS_KEY;
110-
logger.info("Reading access key from the environment variable BROWSERSTACK_ACCESS_KEY");
130+
bsConfig["auth"]["access_key"] = process.env.BROWSERSTACK_ACCESS_KEY;
131+
logger.info(
132+
"Reading access key from the environment variable BROWSERSTACK_ACCESS_KEY"
133+
);
111134
}
112-
}
135+
};
113136

114137
exports.setBuildName = (bsConfig, args) => {
115-
if (!this.isUndefined(args['build-name'])) {
116-
bsConfig['run_settings']['build_name'] = args['build-name'];
138+
if (!this.isUndefined(args["build-name"])) {
139+
bsConfig["run_settings"]["build_name"] = args["build-name"];
117140
}
118-
}
141+
};
119142

120143
// specs can be passed from bstack configuration file
121144
// specs can be passed via command line args as a string
@@ -149,71 +172,95 @@ exports.fixCommaSeparatedString = (string) => {
149172

150173
exports.isUndefined = value => (value === undefined || value === null);
151174

152-
exports.isFloat = value => (Number(value) && Number(value) % 1 !== 0);
175+
exports.isFloat = (value) => Number(value) && Number(value) % 1 !== 0;
153176

154177
exports.isParallelValid = (value) => {
155178
return this.isUndefined(value) || !(isNaN(value) || this.isFloat(value) || parseInt(value, 10) === 0 || parseInt(value, 10) < -1) || value === Constants.cliMessages.RUN.DEFAULT_PARALLEL_MESSAGE;
156179
}
157180

158181
exports.getUserAgent = () => {
159182
return `BStack-Cypress-CLI/1.3.0 (${os.arch()}/${os.platform()}/${os.release()})`;
160-
}
183+
};
161184

162185
exports.isAbsolute = (configPath) => {
163-
return path.isAbsolute(configPath)
164-
}
186+
return path.isAbsolute(configPath);
187+
};
165188

166189
exports.getConfigPath = (configPath) => {
167-
return this.isAbsolute(configPath) ? configPath : path.join(process.cwd(), configPath);
168-
}
190+
return this.isAbsolute(configPath)
191+
? configPath
192+
: path.join(process.cwd(), configPath);
193+
};
169194

170195
exports.configCreated = (args) => {
171-
let message = Constants.userMessages.CONFIG_FILE_CREATED
196+
let message = Constants.userMessages.CONFIG_FILE_CREATED;
172197
logger.info(message);
173-
this.sendUsageReport(null, args, message, Constants.messageTypes.SUCCESS, null);
174-
}
198+
this.sendUsageReport(
199+
null,
200+
args,
201+
message,
202+
Constants.messageTypes.SUCCESS,
203+
null
204+
);
205+
};
175206

176207
exports.exportResults = (buildId, buildUrl) => {
177208
let data = "BUILD_ID=" + buildId + "\nBUILD_URL=" + buildUrl;
178209
fs.writeFileSync("log/build_results.txt", data, function (err) {
179210
if (err) {
180-
logger.warn(`Couldn't write BUILD_ID with value: ${buildId} to browserstack/build_results.txt`);
181-
logger.warn(`Couldn't write BUILD_URL with value: ${buildUrl} to browserstack/build_results.txt`);
211+
logger.warn(
212+
`Couldn't write BUILD_ID with value: ${buildId} to browserstack/build_results.txt`
213+
);
214+
logger.warn(
215+
`Couldn't write BUILD_URL with value: ${buildUrl} to browserstack/build_results.txt`
216+
);
182217
}
183218
});
184-
}
219+
};
185220

186221
exports.deleteResults = () => {
187-
fs.unlink("log/build_results.txt", function (err) {
188-
});
189-
}
222+
fs.unlink("log/build_results.txt", function (err) {});
223+
};
190224

191-
exports.isCypressProjDirValid = (cypressDir, cypressProjDir) => {
225+
exports.isCypressProjDirValid = (cypressProjDir, integrationFoldDir) => {
192226
// Getting absolute path
193-
cypressDir = path.resolve(cypressDir);
194-
cypressProjDir = path.resolve(cypressProjDir);
195-
if (cypressProjDir === cypressDir) return true;
196-
let parentTokens = cypressDir.split('/').filter(i => i.length);
197-
let childTokens = cypressProjDir.split('/').filter(i => i.length);
227+
let cypressDir = path.resolve(cypressProjDir);
228+
let integrationFolderDir = path.resolve(integrationFoldDir);
229+
if (!this.isAbsolute(integrationFoldDir)) {
230+
integrationFolderDir = path.resolve(path.join(cypressProjDir, integrationFoldDir));
231+
}
232+
if (integrationFolderDir === cypressDir) return true;
233+
let parentTokens = cypressDir.split("/").filter((i) => i.length);
234+
let childTokens = integrationFolderDir.split("/").filter((i) => i.length);
198235
return parentTokens.every((t, i) => childTokens[i] === t);
199-
}
236+
};
200237

201238
exports.getLocalFlag = (connectionSettings) => {
202-
return !this.isUndefined(connectionSettings) && !this.isUndefined(connectionSettings.local) && connectionSettings.local
203-
}
239+
return (
240+
!this.isUndefined(connectionSettings) &&
241+
!this.isUndefined(connectionSettings.local) &&
242+
connectionSettings.local
243+
);
244+
};
204245

205246
exports.setLocal = (bsConfig) => {
206247
if (!this.isUndefined(process.env.BROWSERSTACK_LOCAL)) {
207248
let local = false;
208-
if (String(process.env.BROWSERSTACK_LOCAL).toLowerCase() === "true") local = true;
209-
bsConfig['connection_settings']['local'] = local;
210-
logger.info("Reading local setting from the environment variable BROWSERSTACK_LOCAL");
249+
if (String(process.env.BROWSERSTACK_LOCAL).toLowerCase() === "true")
250+
local = true;
251+
bsConfig["connection_settings"]["local"] = local;
252+
logger.info(
253+
"Reading local setting from the environment variable BROWSERSTACK_LOCAL"
254+
);
211255
}
212-
}
256+
};
213257

214258
exports.setLocalIdentifier = (bsConfig) => {
215259
if (!this.isUndefined(process.env.BROWSERSTACK_LOCAL_IDENTIFIER)) {
216-
bsConfig['connection_settings']['local_identifier'] = process.env.BROWSERSTACK_LOCAL_IDENTIFIER;
217-
logger.info("Reading local identifier from the environment variable BROWSERSTACK_LOCAL_IDENTIFIER");
260+
bsConfig["connection_settings"]["local_identifier"] =
261+
process.env.BROWSERSTACK_LOCAL_IDENTIFIER;
262+
logger.info(
263+
"Reading local identifier from the environment variable BROWSERSTACK_LOCAL_IDENTIFIER"
264+
);
218265
}
219-
}
266+
};

0 commit comments

Comments
 (0)