from pathlib import Path
import pytest

from speculos.client import SpeculosClient

from ethereum_client.ethereum_cmd import EthereumCommand


SCRIPT_DIR = Path(__file__).absolute().parent
API_URL = "http://127.0.0.1:5000"


def pytest_addoption(parser):
    # nanos, nanox, nanosp
    parser.addoption("--model", action="store", default="nanos")
    # qt: default, requires a X server
    # headless: nothing is displayed
    parser.addoption("--display", action="store", default="qt")

    path: str = SCRIPT_DIR.parent.parent / "bin" / "app.elf"
    parser.addoption("--path", action="store", default=path)

@pytest.fixture()
def client(pytestconfig):
    file_path = pytestconfig.getoption("path")
    model = pytestconfig.getoption("model")

    args = ['--log-level', 'speculos:DEBUG','--model', model, '--display', pytestconfig.getoption("display")]
    with SpeculosClient(app=str(file_path), args=args) as client:
        yield client


@pytest.fixture()
def cmd(client, pytestconfig):
    yield EthereumCommand(
        client=client,
        debug=True,
        model=pytestconfig.getoption("model"),
    )
