openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.4 KiB

import os
import pytest
import random
from openpilot.common.prefix import OpenpilotPrefix
from openpilot.system.hardware import TICI
1 year ago
global_seed = None
# @pytest.fixture(scope="session", autouse=True)
def pytest_sessionstart(session):
# session.config.cache.clear_cache()
seed = random.randint(0, 100000)
print('setting seed in sessionstart', seed)
session.config.cache.set('worker/seed', seed)
# global global_seed
# global_seed = 0#random.randint(0, 10000)
# os.environ['PYTEST_SEED'] = '0'
# # random.seed(seed)
# # print(f"Random seed set to {seed} for worker")
# print(f"Random seed selected for this session: {global_seed}")
@pytest.fixture(scope="function", autouse=True)
def openpilot_function_fixture():
starting_env = dict(os.environ)
random.seed(0)
# setup a clean environment for each test
with OpenpilotPrefix():
prefix = os.environ["OPENPILOT_PREFIX"]
yield
# ensure the test doesn't change the prefix
assert "OPENPILOT_PREFIX" in os.environ and prefix == os.environ["OPENPILOT_PREFIX"]
os.environ.clear()
os.environ.update(starting_env)
# If you use setUpClass, the environment variables won't be cleared properly,
# so we need to hook both the function and class pytest fixtures
@pytest.fixture(scope="class", autouse=True)
def openpilot_class_fixture():
starting_env = dict(os.environ)
yield
os.environ.clear()
os.environ.update(starting_env)
@pytest.hookimpl(tryfirst=True)
def pytest_collection_modifyitems(config, items):
skipper = pytest.mark.skip(reason="Skipping tici test on PC")
for item in items:
if not TICI and "tici" in item.keywords:
item.add_marker(skipper)
if "xdist_group_class_property" in item.keywords:
class_property_name = item.get_closest_marker('xdist_group_class_property').args[0]
class_property_value = getattr(item.cls, class_property_name)
item.add_marker(pytest.mark.xdist_group(class_property_value))
@pytest.hookimpl(trylast=True)
def pytest_configure(config):
1 year ago
if config.cache.get('worker/seed', None) is None:
config.cache.set('worker/seed', random.randint(0, 100000))
seed = config.cache.get('worker/seed', None)
random.seed(seed)
print('setting seed in configure', seed)
config_line = (
"xdist_group_class_property: group tests by a property of the class that contains them"
)
config.addinivalue_line("markers", config_line)