# Copyright (c) 2023 Nordic Semiconductor ASA # # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations import os from pathlib import Path from typing import Generator import pytest from twister_harness.device.binary_adapter import NativeSimulatorAdapter from twister_harness.twister_harness_config import DeviceConfig @pytest.fixture def resources() -> Path: """Return path to `resources` folder""" return Path(__file__).parent.joinpath('resources') @pytest.fixture def zephyr_base() -> str: zephyr_base_path = os.getenv('ZEPHYR_BASE') if zephyr_base_path is None: pytest.fail('Environmental variable ZEPHYR_BASE has to be set.') else: return zephyr_base_path @pytest.fixture def twister_harness(zephyr_base) -> str: """Retrun path to pytest-twister-harness src directory""" pytest_twister_harness_path = str(Path(zephyr_base) / 'scripts' / 'pylib' / 'pytest-twister-harness' / 'src') return pytest_twister_harness_path @pytest.fixture def shell_simulator_path(resources: Path) -> str: return str(resources / 'shell_simulator.py') @pytest.fixture def shell_simulator_adapter( tmp_path: Path, shell_simulator_path: str ) -> Generator[NativeSimulatorAdapter, None, None]: build_dir = tmp_path / 'build_dir' os.mkdir(build_dir) device = NativeSimulatorAdapter(DeviceConfig(build_dir=build_dir, type='native', base_timeout=5.0)) try: device.command = ['python3', shell_simulator_path] device.launch() yield device finally: device.write(b'quit\n') device.close()