Skip to content

Commit d892577

Browse files
Karan NagpalKaran Nagpal
authored andcommitted
Make system_env_vars and cypress_* vars os level
1 parent 1e0fa8e commit d892577

File tree

3 files changed

+34
-46
lines changed

3 files changed

+34
-46
lines changed

bin/commands/runs.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ module.exports = function run(args) {
3939
// accept the env list from command line and set it
4040
utils.setTestEnvs(bsConfig, args);
4141

42+
// accept the system env list from bsconf and set it
43+
utils.setSystemEnvs(bsConfig);
44+
4245
//accept the local from env variable if provided
4346
utils.setLocal(bsConfig, args);
4447

bin/helpers/utils.js

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,25 @@ exports.setTestEnvs = (bsConfig, args) => {
273273
envKeys = bsConfig.run_settings.env;
274274
}
275275

276+
// set env vars passed from command line args as a string
277+
if (!this.isUndefined(args.env)) {
278+
let argsEnvVars = this.fixCommaSeparatedString(args.env).split(',');
279+
argsEnvVars.forEach((envVar) => {
280+
let env = envVar.split("=");
281+
envKeys[env[0]] = env[1];
282+
});
283+
}
284+
285+
if (Object.keys(envKeys).length === 0) {
286+
bsConfig.run_settings.env = null;
287+
} else {
288+
bsConfig.run_settings.env = Object.keys(envKeys).map(key => (`${key}=${envKeys[key]}`)).join(',');
289+
}
290+
}
291+
292+
exports.setSystemEnvs = (bsConfig) => {
293+
let envKeys = {};
294+
276295
// set env vars which are defined in system_env_vars key
277296
if(!this.isUndefined(bsConfig.run_settings.system_env_vars) && Array.isArray(bsConfig.run_settings.system_env_vars) && bsConfig.run_settings.system_env_vars.length) {
278297
let systemEnvVars = bsConfig.run_settings.system_env_vars;
@@ -290,19 +309,10 @@ exports.setTestEnvs = (bsConfig, args) => {
290309
});
291310
}
292311

293-
// set env vars passed from command line args as a string
294-
if (!this.isUndefined(args.env)) {
295-
let argsEnvVars = this.fixCommaSeparatedString(args.env).split(',');
296-
argsEnvVars.forEach((envVar) => {
297-
let env = envVar.split("=");
298-
envKeys[env[0]] = env[1];
299-
});
300-
}
301-
302312
if (Object.keys(envKeys).length === 0) {
303-
bsConfig.run_settings.env = null;
313+
bsConfig.run_settings.system_env_vars = null;
304314
} else {
305-
bsConfig.run_settings.env = Object.keys(envKeys).map(key => (`${key}=${envKeys[key]}`)).join(',');
315+
bsConfig.run_settings.system_env_vars = Object.keys(envKeys).map(key => (`${key}=${envKeys[key]}`));
306316
}
307317
}
308318

test/unit/bin/helpers/utils.js

Lines changed: 10 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -592,11 +592,12 @@ describe('utils', () => {
592592
utils.setTestEnvs(bsConfig, args);
593593
expect(bsConfig.run_settings.env).to.be.eq('env1=value1,env2=value2,env3=value3,env4=value4');
594594
});
595+
});
595596

597+
describe('setSystemEnvs', () => {
596598
it('set vars passed in system_env_vars', () => {
597599
process.env.ENV1 = 'env1';
598-
process.env.ENV2 = 'env2'
599-
let argsEnv = 'env3=value3 , env4=value4';
600+
process.env.ENV2 = 'env2';
600601
let bsConfig = {
601602
run_settings: {
602603
env: {
@@ -606,52 +607,26 @@ describe('utils', () => {
606607
system_env_vars: ['ENV1', 'ENV2']
607608
},
608609
};
609-
let args = {
610-
env: argsEnv,
611-
};
612610

613-
utils.setTestEnvs(bsConfig, args);
614-
expect(bsConfig.run_settings.env).to.be.eq('env1=value1,env2=value2,ENV1=env1,ENV2=env2,env3=value3,env4=value4');
611+
utils.setSystemEnvs(bsConfig);
612+
expect(bsConfig.run_settings.system_env_vars).to.be.an('array').that.includes('ENV1=env1');
613+
expect(bsConfig.run_settings.system_env_vars).to.be.an('array').that.includes('ENV2=env2');
615614
delete process.env.ENV1;
616615
delete process.env.ENV2;
617616
});
618617

619618
it('set vars defined on machine as CYPRESS_ or cypress_', () => {
620619
process.env.CYPRESS_TEST_1 = 'env1';
621-
process.env.cypress_test_2 = 'env2'
620+
process.env.cypress_test_2 = 'env2';
622621
let bsConfig = {
623622
run_settings: {
624623
env: null
625624
},
626625
};
627-
let args = {
628-
env: null,
629-
};
630-
631-
utils.setTestEnvs(bsConfig, args);
632-
expect(bsConfig.run_settings.env).to.be.eq('CYPRESS_TEST_1=env1,cypress_test_2=env2');
633-
delete process.env.CYPRESS_TEST_1;
634-
delete process.env.cypress_test_2;
635-
});
636-
637-
it('set vars defined on machine as CYPRESS_ or cypress_ with args and env set in browserstack.json', () => {
638-
process.env.CYPRESS_TEST_1 = 'env1';
639-
process.env.cypress_test_2 = 'env2'
640-
let argsEnv = 'env3=value3 , env4=value4';
641-
let bsConfig = {
642-
run_settings: {
643-
env: {
644-
env1: 'value1',
645-
env2: 'value2',
646-
}
647-
},
648-
};
649-
let args = {
650-
env: argsEnv,
651-
};
652626

653-
utils.setTestEnvs(bsConfig, args);
654-
expect(bsConfig.run_settings.env).to.be.eq('env1=value1,env2=value2,CYPRESS_TEST_1=env1,cypress_test_2=env2,env3=value3,env4=value4');
627+
utils.setSystemEnvs(bsConfig);
628+
expect(bsConfig.run_settings.system_env_vars).to.be.an('array').that.includes('CYPRESS_TEST_1=env1');
629+
expect(bsConfig.run_settings.system_env_vars).to.be.an('array').that.includes('cypress_test_2=env2');
655630
delete process.env.CYPRESS_TEST_1;
656631
delete process.env.cypress_test_2;
657632
});

0 commit comments

Comments
 (0)