58 lines
1.6 KiB
Python
Executable File
58 lines
1.6 KiB
Python
Executable File
# 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()
|