51 lines
1.1 KiB
Python
51 lines
1.1 KiB
Python
# coding=utf-8
|
|
|
|
from os import environ
|
|
import shlex
|
|
import subprocess
|
|
import sys
|
|
|
|
import pytest
|
|
|
|
ENV_NAME = "KIVY_NO_ARGS"
|
|
KIVY_ENVS_TO_EXCLUDE = ("KIVY_UNITTEST", "KIVY_PACKAGING")
|
|
|
|
EXPECTED_STR = "Kivy Usage"
|
|
|
|
TRUTHY = {"true", "1", "yes"}
|
|
FALSY = {"false", "0", "no", "anything-else"}
|
|
|
|
SAMPLE_VALUES = {*TRUTHY, *FALSY}
|
|
|
|
|
|
def _patch_env(*filtered_keys, **kw):
|
|
env = {k: v for k, v in environ.items() if k not in filtered_keys}
|
|
env.update(kw)
|
|
return env
|
|
|
|
|
|
def _kivy_subproces_import(env):
|
|
return subprocess.run(
|
|
[sys.executable, "-c", "import kivy", "--help"],
|
|
stdout=subprocess.PIPE,
|
|
stderr=subprocess.PIPE,
|
|
env=env,
|
|
).stdout.decode("utf8")
|
|
|
|
|
|
@pytest.mark.parametrize("value", SAMPLE_VALUES)
|
|
def test_env_exist(value):
|
|
env = _patch_env(*KIVY_ENVS_TO_EXCLUDE, **{ENV_NAME: value})
|
|
stdout = _kivy_subproces_import(env)
|
|
|
|
if value in TRUTHY:
|
|
assert EXPECTED_STR not in stdout
|
|
else:
|
|
assert EXPECTED_STR in stdout
|
|
|
|
|
|
def test_env_not_exist():
|
|
env = _patch_env(ENV_NAME, *KIVY_ENVS_TO_EXCLUDE)
|
|
stdout = _kivy_subproces_import(env)
|
|
assert EXPECTED_STR in stdout
|