44 lines
1.0 KiB
Python
Executable File
44 lines
1.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# vim:fileencoding=utf-8
|
|
# License: GPL v3 Copyright: 2016, Kovid Goyal <kovid at kovidgoyal.net>
|
|
|
|
import importlib
|
|
import os
|
|
import sys
|
|
import warnings
|
|
from tempfile import TemporaryDirectory
|
|
from contextlib import contextmanager
|
|
from typing import Iterator
|
|
|
|
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:
|
|
sys.path.insert(0, base)
|
|
|
|
|
|
def main() -> None:
|
|
warnings.simplefilter('error')
|
|
with TemporaryDirectory() as tdir, env_vars(PYTHONWARNINGS='error', HOME=tdir, USERPROFILE=tdir):
|
|
init_env()
|
|
m = importlib.import_module('kitty_tests.main')
|
|
m.run_tests() # type: ignore
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|