66 lines
1.6 KiB
Python
66 lines
1.6 KiB
Python
|
"""
|
||
|
Let's make sure them docs work yah?
|
||
|
"""
|
||
|
from contextlib import contextmanager
|
||
|
import os
|
||
|
import sys
|
||
|
import subprocess
|
||
|
import platform
|
||
|
import pprint
|
||
|
|
||
|
import pytest
|
||
|
|
||
|
|
||
|
@pytest.fixture(scope='session')
|
||
|
def confdir():
|
||
|
dirname = os.path.dirname
|
||
|
dirpath = os.path.abspath(
|
||
|
dirname(dirname(os.path.realpath(__file__)))
|
||
|
)
|
||
|
return dirpath
|
||
|
|
||
|
|
||
|
@pytest.fixture
|
||
|
def run_example_in_subproc(loglevel, testdir, arb_addr):
|
||
|
|
||
|
@contextmanager
|
||
|
def run(script_code):
|
||
|
script_file = testdir.makefile('.py', script_code)
|
||
|
cmdargs = [
|
||
|
sys.executable,
|
||
|
str(script_file),
|
||
|
]
|
||
|
kwargs = dict()
|
||
|
if platform.system() == 'Windows':
|
||
|
# without this, tests hang on windows forever
|
||
|
kwargs['creationflags'] = subprocess.CREATE_NEW_PROCESS_GROUP
|
||
|
|
||
|
proc = testdir.popen(
|
||
|
cmdargs,
|
||
|
stdout=subprocess.PIPE,
|
||
|
stderr=subprocess.PIPE,
|
||
|
**kwargs,
|
||
|
)
|
||
|
assert not proc.returncode
|
||
|
yield proc
|
||
|
proc.wait()
|
||
|
assert proc.returncode == 0
|
||
|
|
||
|
yield run
|
||
|
|
||
|
|
||
|
def test_a_trynamic_first_scene(confdir, run_example_in_subproc):
|
||
|
ex_file = os.path.join(confdir, 'examples', 'a_trynamic_first_scene.py')
|
||
|
with open(ex_file, 'r') as ex:
|
||
|
code = ex.read()
|
||
|
|
||
|
with run_example_in_subproc(code) as proc:
|
||
|
proc.wait()
|
||
|
err, _ = proc.stderr.read(), proc.stdout.read()
|
||
|
|
||
|
# if we get some gnarly output let's aggregate and raise
|
||
|
if err and b'Error' in err:
|
||
|
raise Exception(err.decode())
|
||
|
|
||
|
assert proc.returncode == 0
|