1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
"""Test helpers and test globals."""
import contextlib
import os
import pathlib
import platform
import subprocess
__all__ = ['EXPECTED_DOT_BINARY',
'EXPECTED_UNFLATTEN_BINARY',
'EXPECTED_DEFAULT_ENGINE',
'EXPECTED_DEFAULT_ENCODING',
'INVALID_CMD',
'as_cwd',
'check_startupinfo', 'StartupinfoMatcher']
EXPECTED_DOT_BINARY = pathlib.Path('dot')
EXPECTED_UNFLATTEN_BINARY = pathlib.Path('unflatten')
EXPECTED_DEFAULT_ENGINE = 'dot'
EXPECTED_DEFAULT_ENCODING = 'utf-8'
INVALID_CMD = ['']
@contextlib.contextmanager
def as_cwd(path):
"""Return a context manager, which changes to the path's directory
during the managed ``with`` context."""
cwd = pathlib.Path().resolve()
os.chdir(path)
yield
os.chdir(cwd)
def check_startupinfo(startupinfo) -> bool: # noqa: N803
return startupinfo is None
if platform.system().lower() == 'windows':
def check_startupinfo(startupinfo) -> bool: # noqa: N803,F811
return (isinstance(startupinfo, subprocess.STARTUPINFO)
and startupinfo.dwFlags & subprocess.STARTF_USESHOWWINDOW
and startupinfo.wShowWindow == subprocess.SW_HIDE)
class StartupinfoMatcher:
"""Verify the given startupinfo argument is as expected for the plaform."""
def __eq__(self, startupinfo) -> bool:
return check_startupinfo(startupinfo)
|