Skip to content

Commit

Permalink
Make system_env_vars and cypress_* vars os level
Browse files Browse the repository at this point in the history
  • Loading branch information
Karan Nagpal authored and Karan Nagpal committed Jul 22, 2021
1 parent 1e0fa8e commit d892577
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 46 deletions.
3 changes: 3 additions & 0 deletions bin/commands/runs.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ module.exports = function run(args) {
// accept the env list from command line and set it
utils.setTestEnvs(bsConfig, args);

// accept the system env list from bsconf and set it
utils.setSystemEnvs(bsConfig);

//accept the local from env variable if provided
utils.setLocal(bsConfig, args);

Expand Down
32 changes: 21 additions & 11 deletions bin/helpers/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,25 @@ exports.setTestEnvs = (bsConfig, args) => {
envKeys = bsConfig.run_settings.env;
}

// set env vars passed from command line args as a string
if (!this.isUndefined(args.env)) {
let argsEnvVars = this.fixCommaSeparatedString(args.env).split(',');
argsEnvVars.forEach((envVar) => {
let env = envVar.split("=");
envKeys[env[0]] = env[1];
});
}

if (Object.keys(envKeys).length === 0) {
bsConfig.run_settings.env = null;
} else {
bsConfig.run_settings.env = Object.keys(envKeys).map(key => (`${key}=${envKeys[key]}`)).join(',');
}
}

exports.setSystemEnvs = (bsConfig) => {
let envKeys = {};

// set env vars which are defined in system_env_vars key
if(!this.isUndefined(bsConfig.run_settings.system_env_vars) && Array.isArray(bsConfig.run_settings.system_env_vars) && bsConfig.run_settings.system_env_vars.length) {
let systemEnvVars = bsConfig.run_settings.system_env_vars;
Expand All @@ -290,19 +309,10 @@ exports.setTestEnvs = (bsConfig, args) => {
});
}

// set env vars passed from command line args as a string
if (!this.isUndefined(args.env)) {
let argsEnvVars = this.fixCommaSeparatedString(args.env).split(',');
argsEnvVars.forEach((envVar) => {
let env = envVar.split("=");
envKeys[env[0]] = env[1];
});
}

if (Object.keys(envKeys).length === 0) {
bsConfig.run_settings.env = null;
bsConfig.run_settings.system_env_vars = null;
} else {
bsConfig.run_settings.env = Object.keys(envKeys).map(key => (`${key}=${envKeys[key]}`)).join(',');
bsConfig.run_settings.system_env_vars = Object.keys(envKeys).map(key => (`${key}=${envKeys[key]}`));
}
}

Expand Down
45 changes: 10 additions & 35 deletions test/unit/bin/helpers/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -592,11 +592,12 @@ describe('utils', () => {
utils.setTestEnvs(bsConfig, args);
expect(bsConfig.run_settings.env).to.be.eq('env1=value1,env2=value2,env3=value3,env4=value4');
});
});

describe('setSystemEnvs', () => {
it('set vars passed in system_env_vars', () => {
process.env.ENV1 = 'env1';
process.env.ENV2 = 'env2'
let argsEnv = 'env3=value3 , env4=value4';
process.env.ENV2 = 'env2';
let bsConfig = {
run_settings: {
env: {
Expand All @@ -606,52 +607,26 @@ describe('utils', () => {
system_env_vars: ['ENV1', 'ENV2']
},
};
let args = {
env: argsEnv,
};

utils.setTestEnvs(bsConfig, args);
expect(bsConfig.run_settings.env).to.be.eq('env1=value1,env2=value2,ENV1=env1,ENV2=env2,env3=value3,env4=value4');
utils.setSystemEnvs(bsConfig);
expect(bsConfig.run_settings.system_env_vars).to.be.an('array').that.includes('ENV1=env1');
expect(bsConfig.run_settings.system_env_vars).to.be.an('array').that.includes('ENV2=env2');
delete process.env.ENV1;
delete process.env.ENV2;
});

it('set vars defined on machine as CYPRESS_ or cypress_', () => {
process.env.CYPRESS_TEST_1 = 'env1';
process.env.cypress_test_2 = 'env2'
process.env.cypress_test_2 = 'env2';
let bsConfig = {
run_settings: {
env: null
},
};
let args = {
env: null,
};

utils.setTestEnvs(bsConfig, args);
expect(bsConfig.run_settings.env).to.be.eq('CYPRESS_TEST_1=env1,cypress_test_2=env2');
delete process.env.CYPRESS_TEST_1;
delete process.env.cypress_test_2;
});

it('set vars defined on machine as CYPRESS_ or cypress_ with args and env set in browserstack.json', () => {
process.env.CYPRESS_TEST_1 = 'env1';
process.env.cypress_test_2 = 'env2'
let argsEnv = 'env3=value3 , env4=value4';
let bsConfig = {
run_settings: {
env: {
env1: 'value1',
env2: 'value2',
}
},
};
let args = {
env: argsEnv,
};

utils.setTestEnvs(bsConfig, args);
expect(bsConfig.run_settings.env).to.be.eq('env1=value1,env2=value2,CYPRESS_TEST_1=env1,cypress_test_2=env2,env3=value3,env4=value4');
utils.setSystemEnvs(bsConfig);
expect(bsConfig.run_settings.system_env_vars).to.be.an('array').that.includes('CYPRESS_TEST_1=env1');
expect(bsConfig.run_settings.system_env_vars).to.be.an('array').that.includes('cypress_test_2=env2');
delete process.env.CYPRESS_TEST_1;
delete process.env.cypress_test_2;
});
Expand Down

0 comments on commit d892577

Please sign in to comment.