109 lines
4.1 KiB
Python
109 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"
|