File: _common.py

package info (click to toggle)
python-graphviz 0.20.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,188 kB
  • sloc: python: 4,098; makefile: 13
file content (55 lines) | stat: -rw-r--r-- 1,468 bytes parent folder | download
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)