blob: 90e82cf65cceb6728c3004abc4655ec075f38450 [file] [log] [blame]
# Copyright (c) 2023 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0
import logging
from typing import Generator, Type
import pytest
from twister_harness.device.device_abstract import DeviceAbstract
from twister_harness.device.factory import DeviceFactory
from twister_harness.twister_harness_config import DeviceConfig, TwisterHarnessConfig
logger = logging.getLogger(__name__)
@pytest.fixture(scope='function')
def dut(request: pytest.FixtureRequest) -> Generator[DeviceAbstract, None, None]:
"""Return device instance."""
twister_harness_config: TwisterHarnessConfig = request.config.twister_harness_config # type: ignore
device_config: DeviceConfig = twister_harness_config.devices[0]
device_type = device_config.type
device_class: Type[DeviceAbstract] = DeviceFactory.get_device(device_type)
device = device_class(device_config)
try:
device.connect()
device.generate_command()
device.initialize_log_files()
device.flash_and_run()
device.connect()
yield device
except KeyboardInterrupt:
pass
finally: # to make sure we close all running processes after user broke execution
device.disconnect()
device.stop()