Skip to content

Commit

Permalink
Merge pull request #284 from P-R-O-C-H-Y/feature/wokwi-scenario-support
Browse files Browse the repository at this point in the history
  • Loading branch information
hfudev authored Apr 29, 2024
2 parents c66a8a7 + 9c7e8d4 commit 1778f7a
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 0 deletions.
3 changes: 3 additions & 0 deletions pytest-embedded-wokwi/pytest_embedded_wokwi/wokwi_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ def __init__(
firmware_resolver: IDFFirmwareResolver,
wokwi_cli_path: t.Optional[str] = None,
wokwi_timeout: t.Optional[int] = None,
wokwi_scenario: t.Optional[str] = None,
app: t.Optional['IdfApp'] = None,
**kwargs,
):
Expand All @@ -57,6 +58,8 @@ def __init__(
cmd = [wokwi_cli, '--interactive', app.app_path]
if (wokwi_timeout is not None) and (wokwi_timeout > 0):
cmd.extend(['--timeout', str(wokwi_timeout)])
if (wokwi_scenario is not None) and os.path.exists(wokwi_scenario):
cmd.extend(['--scenario', wokwi_scenario])

super().__init__(
cmd=cmd,
Expand Down
5 changes: 5 additions & 0 deletions pytest-embedded/pytest_embedded/dut_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ def _fixture_classes_and_options_fn(
qemu_extra_args,
wokwi_cli_path,
wokwi_timeout,
wokwi_scenario,
skip_regenerate_image,
encrypt,
keyfile,
Expand Down Expand Up @@ -298,6 +299,7 @@ def _fixture_classes_and_options_fn(
kwargs[fixture].update({
'wokwi_cli_path': wokwi_cli_path,
'wokwi_timeout': wokwi_timeout,
'wokwi_scenario': wokwi_scenario,
'msg_queue': msg_queue,
'app': None,
'meta': _meta,
Expand Down Expand Up @@ -603,6 +605,7 @@ def create(
qemu_extra_args: t.Optional[str] = None,
wokwi_cli_path: t.Optional[str] = None,
wokwi_timeout: t.Optional[int] = 0,
wokwi_scenario: t.Optional[str] = None,
skip_regenerate_image: t.Optional[bool] = None,
encrypt: t.Optional[bool] = None,
keyfile: t.Optional[str] = None,
Expand Down Expand Up @@ -648,6 +651,7 @@ def create(
- qemu_extra_args: Additional QEMU arguments.
- wokwi_cli_path: Wokwi CLI path.
- wokwi_timeout: Wokwi timeout.
- wokwi_scenario: Wokwi scenario path.
- skip_regenerate_image: Skip image regeneration flag.
- encrypt: Encryption flag.
- keyfile: Keyfile for encryption.
Expand Down Expand Up @@ -709,6 +713,7 @@ def create(
'qemu_extra_args': qemu_extra_args,
'wokwi_cli_path': wokwi_cli_path,
'wokwi_timeout': wokwi_timeout,
'wokwi_scenario': wokwi_scenario,
'skip_regenerate_image': skip_regenerate_image,
'encrypt': encrypt,
'keyfile': keyfile,
Expand Down
12 changes: 12 additions & 0 deletions pytest-embedded/pytest_embedded/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,10 @@ def pytest_addoption(parser):
type=_gte_one_int,
help='Simulation timeout in milliseconds (Default: 86400000)',
)
wokwi_group.addoption(
'--wokwi-scenario',
help='Path to the wokwi scenario file (Default: None)',
)


###########
Expand Down Expand Up @@ -945,6 +949,13 @@ def wokwi_timeout(request: FixtureRequest) -> t.Optional[str]:
return _request_param_or_config_option_or_default(request, 'wokwi_timeout', None)


@pytest.fixture
@multi_dut_argument
def wokwi_scenario(request: FixtureRequest) -> t.Optional[str]:
"""Enable parametrization for the same cli option"""
return _request_param_or_config_option_or_default(request, 'wokwi_scenario', None)


####################
# Private Fixtures #
####################
Expand Down Expand Up @@ -1001,6 +1012,7 @@ def parametrize_fixtures(
qemu_extra_args,
wokwi_cli_path,
wokwi_timeout,
wokwi_scenario,
skip_regenerate_image,
encrypt,
keyfile,
Expand Down

0 comments on commit 1778f7a

Please sign in to comment.