|  |  |  | import os
 | 
					
						
							|  |  |  | import pytest
 | 
					
						
							|  |  |  | import random
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from openpilot.common.prefix import OpenpilotPrefix
 | 
					
						
							|  |  |  | from openpilot.system.hardware import TICI
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @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)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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)
 |