Skip to content

Commit 7c3f6d2

Browse files
authored
Merge pull request #342 from horw/feat/test-supported-targets
Feat/test supported targets
2 parents 52e69f4 + fff28ac commit 7c3f6d2

File tree

3 files changed

+43
-2
lines changed

3 files changed

+43
-2
lines changed

docs/usages/markers.rst

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,27 @@ Target Extension
8181

8282
In scenarios where the supported targets are [esp32, esp32c3, esp32s3], ``idf_parametrize`` simplifies the process of creating parameterized tests by automatically expanding the target list.
8383

84+
By default, the values for ``SUPPORTED_TARGETS`` and ``PREVIEW_TARGETS`` are imported from:
85+
86+
.. code:: python
87+
88+
from esp_bool_parser import PREVIEW_TARGETS, SUPPORTED_TARGETS
89+
90+
However, you can propagate custom values by using the following:
91+
92+
.. code:: python
93+
94+
from pytest_embedded_idf.utils import supported_targets, preview_targets
95+
96+
supported_targets.set(CUSTOM_SUPPORT_TARGETS)
97+
preview_targets.set(CUSTOM_SUPPORT_TARGETS)
98+
99+
Another way to override ``supported_targets`` and ``preview_targets`` is by using command-line arguments:
100+
101+
.. code:: sh
102+
103+
pytest --supported-targets esp32,esp32c3 --preview-targets esp32p4 ...
104+
84105
**Example:**
85106

86107
.. code:: python

pytest-embedded-idf/pytest_embedded_idf/utils.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import typing as t
2+
from contextvars import ContextVar
23

34
import pytest
45
from esp_bool_parser import PREVIEW_TARGETS, SUPPORTED_TARGETS
56

7+
supported_targets = ContextVar('supported_targets', default=SUPPORTED_TARGETS)
8+
preview_targets = ContextVar('preview_targets', default=PREVIEW_TARGETS)
9+
610

711
def _expand_target_values(values: t.List[t.List[t.Any]], target_index: int) -> t.List[t.List[t.Any]]:
812
"""
@@ -13,11 +17,11 @@ def _expand_target_values(values: t.List[t.List[t.Any]], target_index: int) -> t
1317
target = value[target_index]
1418
if target == 'supported_targets':
1519
expanded_values.extend([
16-
value[:target_index] + [target] + value[target_index + 1 :] for target in SUPPORTED_TARGETS
20+
value[:target_index] + [target] + value[target_index + 1 :] for target in supported_targets.get()
1721
])
1822
elif target == 'preview_targets':
1923
expanded_values.extend([
20-
value[:target_index] + [target] + value[target_index + 1 :] for target in PREVIEW_TARGETS
24+
value[:target_index] + [target] + value[target_index + 1 :] for target in preview_targets.get()
2125
])
2226
else:
2327
expanded_values.append(value)

pytest-embedded/pytest_embedded/plugin.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,12 @@ def pytest_addoption(parser):
208208
help='force mode for esptool',
209209
)
210210
idf_group = parser.getgroup('embedded-idf')
211+
idf_group.addoption(
212+
'--supported-targets', help='Comma-separated list of supported targets for the test case. (Default: None)'
213+
)
214+
idf_group.addoption(
215+
'--preview-targets', help='Comma-separated list of preview targets for the test case. (Default: None)'
216+
)
211217
idf_group.addoption(
212218
'--part-tool',
213219
help='Partition tool path, used for parsing partition table. '
@@ -1207,6 +1213,16 @@ def pytest_configure(config: Config) -> None:
12071213
)
12081214
config.stash[_junit_report_path_key] = config.option.xmlpath
12091215

1216+
supported_targets_args = config.getoption('supported_targets', None)
1217+
preview_targets_args = config.getoption('preview_targets', None)
1218+
if supported_targets_args or preview_targets_args:
1219+
from pytest_embedded_idf.utils import preview_targets, supported_targets
1220+
1221+
if supported_targets_args is not None:
1222+
supported_targets.set([_t.strip() for _t in supported_targets_args.split(',')])
1223+
if preview_targets_args:
1224+
preview_targets.set([_t.strip() for _t in preview_targets_args.split(',')])
1225+
12101226
config.stash[_pytest_embedded_key] = PytestEmbedded(
12111227
parallel_count=config.getoption('parallel_count'),
12121228
parallel_index=config.getoption('parallel_index'),

0 commit comments

Comments
 (0)