diff --git a/bonobo/commands/run.py b/bonobo/commands/run.py index 7b23b9d..8c0186c 100644 --- a/bonobo/commands/run.py +++ b/bonobo/commands/run.py @@ -78,21 +78,17 @@ def read(filename, module, install=False, quiet=False, verbose=False, default_en raise RuntimeError('UNEXPECTED: argparse should not allow this.') env_dir = Path(filename).parent or Path(module).parent - if default_env_file: for f in default_env_file: env_file_path = env_dir.joinpath(f) load_dotenv(env_file_path) - if default_env: for e in default_env: set_env_var(e) - if env_file: for f in env_file: env_file_path = env_dir.joinpath(f) load_dotenv(env_file_path, override=True) - if env: for e in env: set_env_var(e, override=True) diff --git a/bonobo/examples/environment/env_vars/get_passed_env.py b/bonobo/examples/environment/env_vars/get_passed_env.py index 6ef64d1..f236ba7 100644 --- a/bonobo/examples/environment/env_vars/get_passed_env.py +++ b/bonobo/examples/environment/env_vars/get_passed_env.py @@ -7,7 +7,8 @@ def extract(): env_test_user = os.getenv('ENV_TEST_USER', 'user') env_test_number = os.getenv('ENV_TEST_NUMBER', 'number') env_test_string = os.getenv('ENV_TEST_STRING', 'string') - return env_test_user, env_test_number, env_test_string + env_user = os.getenv('USER') + return env_test_user, env_test_number, env_test_string, env_user def load(s: str): diff --git a/tests/test_commands.py b/tests/test_commands.py index 4508869..0e6205d 100644 --- a/tests/test_commands.py +++ b/tests/test_commands.py @@ -200,32 +200,87 @@ class TestEnvFile(object): @all_runners -def test_run_file_with_default_env_file_and_env_file(runner, capsys): - runner( - 'run', '--quiet', - get_examples_path('environment/env_files/get_passed_env_file.py'), - '--default-env-file', '.env_one', '--env-file', '.env_two', - ) - out, err = capsys.readouterr() - out = out.split('\n') - assert out[0] == '321' - assert out[1] == 'not_sweet_password' - assert out[2] == 'abril' +class TestEnvFileCombinations(object): + def test_run_file_with_default_env_file_and_env_file(self, runner, capsys): + runner( + 'run', '--quiet', + get_examples_path('environment/env_files/get_passed_env_file.py'), + '--default-env-file', '.env_one', '--env-file', '.env_two', + ) + out, err = capsys.readouterr() + out = out.split('\n') + assert out[0] == '321' + assert out[1] == 'not_sweet_password' + assert out[2] == 'abril' + + def test_run_file_with_default_env_file_and_env_file_and_env_vars(self, runner, capsys): + runner( + 'run', '--quiet', + get_examples_path('environment/env_files/get_passed_env_file.py'), + '--default-env-file', '.env_one', '--env-file', '.env_two', + '--env', 'TEST_USER_PASSWORD=SWEETpassWORD', '--env', + 'MY_SECRET=444', + ) + out, err = capsys.readouterr() + out = out.split('\n') + assert out[0] == '444' + assert out[1] == 'SWEETpassWORD' + assert out[2] == 'abril' @all_runners -def test_run_file_with_default_env_file_and_env_file_and_env_vars(runner, capsys): - runner( - 'run', '--quiet', - get_examples_path('environment/env_files/get_passed_env_file.py'), - '--default-env-file', '.env_one', '--env-file', '.env_two', - '--env', 'TEST_USER_PASSWORD=SWEETpassWORD', '--env', 'MY_SECRET=444', - ) - out, err = capsys.readouterr() - out = out.split('\n') - assert out[0] == '444' - assert out[1] == 'SWEETpassWORD' - assert out[2] == 'abril' +class TestDefaultEnvVars(object): + def test_run_file_with_default_env_var(self, runner, capsys): + runner( + 'run', '--quiet', + get_examples_path('environment/env_vars/get_passed_env.py'), + '--default-env', 'USER=clowncity' + ) + out, err = capsys.readouterr() + out = out.split('\n') + assert out[0] == 'user' + assert out[1] == 'number' + assert out[2] == 'string' + assert out[3] != 'clowncity' + + def test_run_file_with_default_env_vars(self, runner, capsys): + runner( + 'run', '--quiet', + get_examples_path('environment/env_vars/get_passed_env.py'), + '--env', 'ENV_TEST_NUMBER=123', '--env', 'ENV_TEST_USER=cwandrews', + '--default-env', "ENV_TEST_STRING='my_test_string'" + ) + out, err = capsys.readouterr() + out = out.split('\n') + assert out[0] == 'cwandrews' + assert out[1] == '123' + assert out[2] == 'my_test_string' + + def test_run_module_with_default_env_var(self, runner, capsys): + runner( + 'run', '--quiet', '-m', + 'bonobo.examples.environment.env_vars.get_passed_env', + '--env', 'ENV_TEST_NUMBER=123', + '--default-env', 'ENV_TEST_STRING=string' + ) + out, err = capsys.readouterr() + out = out.split('\n') + assert out[0] == 'cwandrews' + assert out[1] == '123' + assert out[2] != 'string' + + def test_run_module_with_default_env_vars(self, runner, capsys): + runner( + 'run', '--quiet', '-m', + 'bonobo.examples.environment.env_vars.get_passed_env', + '--env', 'ENV_TEST_NUMBER=123', '--env', 'ENV_TEST_USER=cwandrews', + '--default-env', "ENV_TEST_STRING='string'" + ) + out, err = capsys.readouterr() + out = out.split('\n') + assert out[0] == 'cwandrews' + assert out[1] == '123' + assert out[2] != 'string' @all_runners @@ -240,7 +295,7 @@ class TestEnvVars(object): out = out.split('\n') assert out[0] != 'test_user' assert out[1] == '123' - assert out[2] == 'string' + assert out[2] == 'my_test_string' def test_run_file_with_env_vars(self, runner, capsys): runner(