Restore environ after running tests
This commit is contained in:
parent
99d9cb0b0d
commit
7428d42c16
20
test.py
20
test.py
@ -7,19 +7,33 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
import warnings
|
import warnings
|
||||||
from tempfile import TemporaryDirectory
|
from tempfile import TemporaryDirectory
|
||||||
|
from contextlib import contextmanager
|
||||||
|
from typing import Iterator
|
||||||
|
|
||||||
base = os.path.dirname(os.path.abspath(__file__))
|
base = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
|
||||||
|
@contextmanager
|
||||||
|
def env_vars(**kw: str) -> Iterator[None]:
|
||||||
|
originals = {k: os.environ.get(k) for k in kw}
|
||||||
|
os.environ.update(kw)
|
||||||
|
try:
|
||||||
|
yield
|
||||||
|
finally:
|
||||||
|
for k, v in originals.items():
|
||||||
|
if v is None:
|
||||||
|
os.environ.pop(k, None)
|
||||||
|
else:
|
||||||
|
os.environ[k] = v
|
||||||
|
|
||||||
|
|
||||||
def init_env() -> None:
|
def init_env() -> None:
|
||||||
sys.path.insert(0, base)
|
sys.path.insert(0, base)
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
warnings.simplefilter('error')
|
warnings.simplefilter('error')
|
||||||
os.environ['PYTHONWARNINGS'] = 'error'
|
with TemporaryDirectory() as tdir, env_vars(PYTHONWARNINGS='error', HOME=tdir, USERPROFILE=tdir):
|
||||||
with TemporaryDirectory() as tdir:
|
|
||||||
os.environ['HOME'] = os.environ['USERPROFILE'] = tdir
|
|
||||||
init_env()
|
init_env()
|
||||||
m = importlib.import_module('kitty_tests.main')
|
m = importlib.import_module('kitty_tests.main')
|
||||||
m.run_tests() # type: ignore
|
m.run_tests() # type: ignore
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user