From d892577e0a508b42ae1855f22ae9bfdc122b613d Mon Sep 17 00:00:00 2001 From: Karan Nagpal Date: Thu, 22 Jul 2021 19:40:21 +0530 Subject: [PATCH] Make system_env_vars and cypress_* vars os level --- bin/commands/runs.js | 3 +++ bin/helpers/utils.js | 32 +++++++++++++++--------- test/unit/bin/helpers/utils.js | 45 ++++++++-------------------------- 3 files changed, 34 insertions(+), 46 deletions(-) diff --git a/bin/commands/runs.js b/bin/commands/runs.js index 8645421e..b3dfe19a 100644 --- a/bin/commands/runs.js +++ b/bin/commands/runs.js @@ -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); diff --git a/bin/helpers/utils.js b/bin/helpers/utils.js index 840733df..d1be2654 100644 --- a/bin/helpers/utils.js +++ b/bin/helpers/utils.js @@ -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; @@ -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]}`)); } } diff --git a/test/unit/bin/helpers/utils.js b/test/unit/bin/helpers/utils.js index 82f9bf35..9abfa5a6 100644 --- a/test/unit/bin/helpers/utils.js +++ b/test/unit/bin/helpers/utils.js @@ -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: { @@ -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; });