microproduct/atmosphericDelay/ISCEApp/site-packages/pytest_env/plugin.py

46 lines
1.2 KiB
Python
Raw Normal View History

2023-08-28 10:17:29 +00:00
"""Adopt environment section in pytest configuration files."""
import os
import pytest
def pytest_addoption(parser):
"""Add section to configuration files."""
help_msg = (
"a line separated list of environment variables "
"of the form NAME=VALUE."
)
parser.addini(
"env",
type="linelist",
help=help_msg,
default=[]
)
@pytest.hookimpl(tryfirst=True)
def pytest_load_initial_conftests(args, early_config, parser):
"""Load environment variables from configuration files."""
for e in early_config.getini("env"):
part = e.partition("=")
key = part[0].strip()
value = part[2].strip()
# Replace environment variables in value. for instance:
# TEST_DIR={USER}/repo_test_dir.
value = value.format(**os.environ)
# use D: as a way to designate a default value
# that will only override env variables if they
# do not exist already
dkey = key.split("D:")
default_val = False
if len(dkey) == 2:
key = dkey[1]
default_val = True
if not default_val or key not in os.environ:
os.environ[key] = value