108 lines
4.1 KiB
Python
108 lines
4.1 KiB
Python
import pytest
|
|
|
|
from bonobo.util.testing import EnvironmentTestCase
|
|
|
|
|
|
@pytest.fixture
|
|
def env1(tmpdir):
|
|
env_file = tmpdir.join('.env_one')
|
|
env_file.write('\n'.join((
|
|
'SECRET=unknown',
|
|
'PASSWORD=sweet',
|
|
'PATH=first',
|
|
)))
|
|
return str(env_file)
|
|
|
|
|
|
@pytest.fixture
|
|
def env2(tmpdir):
|
|
env_file = tmpdir.join('.env_two')
|
|
env_file.write('\n'.join((
|
|
'PASSWORD=bitter',
|
|
"PATH='second'",
|
|
)))
|
|
return str(env_file)
|
|
|
|
|
|
class TestDefaultEnvFile(EnvironmentTestCase):
|
|
def test_run_with_default_env_file(self, runner, target, env1):
|
|
env = self.run_environ(runner, *target, '--default-env-file', env1)
|
|
assert env.get('SECRET') == 'unknown'
|
|
assert env.get('PASSWORD') == 'sweet'
|
|
assert env.get('PATH') == '/usr/bin'
|
|
|
|
def test_run_with_multiple_default_env_files(self, runner, target, env1, env2):
|
|
env = self.run_environ(runner, *target, '--default-env-file', env1, '--default-env-file', env2)
|
|
assert env.get('SECRET') == 'unknown'
|
|
assert env.get('PASSWORD') == 'sweet'
|
|
assert env.get('PATH') == '/usr/bin'
|
|
|
|
env = self.run_environ(runner, *target, '--default-env-file', env2, '--default-env-file', env1)
|
|
assert env.get('SECRET') == 'unknown'
|
|
assert env.get('PASSWORD') == 'bitter'
|
|
assert env.get('PATH') == '/usr/bin'
|
|
|
|
|
|
class TestEnvFile(EnvironmentTestCase):
|
|
def test_run_with_file(self, runner, target, env1):
|
|
env = self.run_environ(runner, *target, '--env-file', env1)
|
|
assert env.get('SECRET') == 'unknown'
|
|
assert env.get('PASSWORD') == 'sweet'
|
|
assert env.get('PATH') == 'first'
|
|
|
|
def test_run_with_multiple_files(self, runner, target, env1, env2):
|
|
env = self.run_environ(runner, *target, '--env-file', env1, '--env-file', env2)
|
|
assert env.get('SECRET') == 'unknown'
|
|
assert env.get('PASSWORD') == 'bitter'
|
|
assert env.get('PATH') == 'second'
|
|
|
|
env = self.run_environ(runner, *target, '--env-file', env2, '--env-file', env1)
|
|
assert env.get('SECRET') == 'unknown'
|
|
assert env.get('PASSWORD') == 'sweet'
|
|
assert env.get('PATH') == 'first'
|
|
|
|
|
|
class TestEnvFileCombinations(EnvironmentTestCase):
|
|
def test_run_with_both_env_files(self, runner, target, env1, env2):
|
|
env = self.run_environ(runner, *target, '--default-env-file', env1, '--env-file', env2)
|
|
assert env.get('SECRET') == 'unknown'
|
|
assert env.get('PASSWORD') == 'bitter'
|
|
assert env.get('PATH') == 'second'
|
|
|
|
def test_run_with_both_env_files_then_overrides(self, runner, target, env1, env2):
|
|
env = self.run_environ(
|
|
runner, *target, '--default-env-file', env1, '--env-file', env2, '--env', 'PASSWORD=mine', '--env',
|
|
'SECRET=s3cr3t'
|
|
)
|
|
assert env.get('SECRET') == 's3cr3t'
|
|
assert env.get('PASSWORD') == 'mine'
|
|
assert env.get('PATH') == 'second'
|
|
|
|
|
|
class TestEnvVars(EnvironmentTestCase):
|
|
def test_run_no_env(self, runner, target):
|
|
env = self.run_environ(runner, *target, environ={'USER': 'romain'})
|
|
assert env.get('USER') == 'romain'
|
|
|
|
def test_run_env(self, runner, target):
|
|
env = self.run_environ(runner, *target, '--env', 'USER=serious', environ={'USER': 'romain'})
|
|
assert env.get('USER') == 'serious'
|
|
|
|
def test_run_env_mixed(self, runner, target):
|
|
env = self.run_environ(runner, *target, '--env', 'ONE=1', '--env', 'TWO="2"', environ={'USER': 'romain'})
|
|
assert env.get('USER') == 'romain'
|
|
assert env.get('ONE') == '1'
|
|
assert env.get('TWO') == '2'
|
|
|
|
def test_run_default_env(self, runner, target):
|
|
env = self.run_environ(runner, *target, '--default-env', 'USER=clown')
|
|
assert env.get('USER') == 'clown'
|
|
|
|
env = self.run_environ(runner, *target, '--default-env', 'USER=clown', environ={'USER': 'romain'})
|
|
assert env.get('USER') == 'romain'
|
|
|
|
env = self.run_environ(
|
|
runner, *target, '--env', 'USER=serious', '--default-env', 'USER=clown', environ={'USER': 'romain'}
|
|
)
|
|
assert env.get('USER') == 'serious'
|