Skip to content

Commit 5a5bce0

Browse files
committed
test: added mock idf related files.
1 parent 0e00d7c commit 5a5bce0

File tree

15 files changed

+110
-31
lines changed

15 files changed

+110
-31
lines changed

conftest.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,18 @@ def copy_fixtures(testdir: Testdir):
2828
yield
2929

3030

31+
@pytest.fixture()
32+
def copy_mock_esp_idf(testdir: Testdir):
33+
esp_idf = os.path.join(os.path.dirname(__file__), 'tests', 'esp-idf')
34+
for item in os.listdir(esp_idf):
35+
if os.path.isfile(os.path.join(esp_idf, item)):
36+
shutil.copy(os.path.join(esp_idf, item), os.path.join(str(testdir.tmpdir), item))
37+
else:
38+
shutil.copytree(os.path.join(esp_idf, item), os.path.join(str(testdir.tmpdir), item))
39+
40+
yield
41+
42+
3143
@pytest.fixture(autouse=True)
3244
def cache_file_remove(cache_dir):
3345
yield

pytest-embedded-idf/tests/test_idf.py

Lines changed: 55 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -988,50 +988,74 @@ def test_python_case(dut):
988988
for testcase in junit_report[1:]:
989989
assert testcase.attrib['is_unity_case'] == '1' # Other test cases
990990

991-
992-
def test_skip_if_soc(testdir):
993-
EMBEDDED_SERVICES = ['--embedded-services', 'esp,idf']
991+
def test_esp_bool_parser_returned_values(testdir, copy_mock_esp_idf, monkeypatch): # noqa: ARG001
992+
monkeypatch.setenv('IDF_PATH', str(testdir))
993+
from esp_bool_parser import SOC_HEADERS, SUPPORTED_TARGETS
994+
assert SOC_HEADERS == {
995+
'esp32': {'SOC_A': 0, 'SOC_B': 1, 'SOC_C': 0},
996+
'esp32s2': {'SOC_A': 0, 'SOC_B': 0, 'SOC_C': 0},
997+
'esp32c3': {'SOC_A': 1, 'SOC_B': 1, 'SOC_C': 1},
998+
'esp32s3': {'SOC_A': 1, 'SOC_B': 0, 'SOC_C': 1},
999+
'esp32c2': {'SOC_A': 0, 'SOC_B': 1, 'SOC_C': 0},
1000+
'esp32c6': {'SOC_A': 1, 'SOC_B': 0, 'SOC_C': 0},
1001+
'esp32h2': {'SOC_A': 0, 'SOC_B': 1, 'SOC_C': 1},
1002+
'esp32p4': {'SOC_A': 0, 'SOC_B': 0, 'SOC_C': 1},
1003+
'linux': {},
1004+
'esp32c5': {'SOC_A': 1, 'SOC_B': 1, 'SOC_C': 0},
1005+
'esp32c61': {'SOC_A': 0, 'SOC_B': 0, 'SOC_C': 1},
1006+
'esp32h21': {'SOC_A': 0, 'SOC_B': 0, 'SOC_C': 0}
1007+
}
1008+
assert SUPPORTED_TARGETS == ['esp32', 'esp32s2', 'esp32c3', 'esp32s3', 'esp32c2', 'esp32c6', 'esp32h2', 'esp32p4']
1009+
1010+
1011+
def test_skip_if_soc(testdir, copy_mock_esp_idf, monkeypatch): # noqa: ARG001
1012+
monkeypatch.setenv('IDF_PATH', str(testdir))
1013+
from esp_bool_parser import SOC_HEADERS, SUPPORTED_TARGETS
1014+
1015+
def run_test_for_condition(condition, condition_func):
1016+
to_skip = sum([1 for t in SUPPORTED_TARGETS if condition_func(SOC_HEADERS[t])])
1017+
to_pass = len(SUPPORTED_TARGETS) - to_skip
1018+
testdir.makepyfile(f"""
1019+
import pytest
1020+
from esp_bool_parser.constants import SUPPORTED_TARGETS
1021+
1022+
@pytest.mark.skip_if_soc("{condition}")
1023+
@pytest.mark.parametrize('target', SUPPORTED_TARGETS, indirect=True)
1024+
def test_skip_if_for_condition():
1025+
pass
1026+
""")
1027+
1028+
result = testdir.runpytest('-s', '--embedded-services', 'esp,idf')
1029+
result.assert_outcomes(passed=to_pass, skipped=to_skip)
1030+
1031+
1032+
for c, cf in [
1033+
('SOC_A == 1', lambda h: h['SOC_A'] == 1),
1034+
('SOC_A == 1 or SOC_B == 1', lambda h: h['SOC_A'] == 1 or h['SOC_B'] == 1),
1035+
('SOC_A == 1 and SOC_B == 1', lambda h: h['SOC_A'] == 1 and h['SOC_B'] == 1),
1036+
('SOC_A == 1 or SOC_B == 1 and SOC_C == 1', lambda h: h['SOC_A'] == 1 or (h['SOC_B'] == 1 and h['SOC_C'] == 1)),
1037+
('SOC_A == 1 and SOC_B == 0 or SOC_C == 1 ', lambda h: (h['SOC_A'] == 1 and h['SOC_B'] == 0) or h['SOC_C'] == 1), # noqa: E501
1038+
]:
1039+
run_test_for_condition(c, cf)
1040+
1041+
1042+
def test_skip_if_soc_target_in_args(testdir, copy_mock_esp_idf, monkeypatch): # noqa: ARG001
1043+
monkeypatch.setenv('IDF_PATH', str(testdir))
9941044

9951045
def run_pytest_with_target(target):
9961046
count = len(target.split('|'))
997-
return testdir.runpytest(*EMBEDDED_SERVICES, '--target', target, '--count', count)
998-
999-
testdir.makepyfile("""
1000-
import pytest
1001-
from esp_bool_parser.constants import SUPPORTED_TARGETS
1002-
1003-
@pytest.mark.skip_if_soc("SOC_ULP_LP_UART_SUPPORTED == 1")
1004-
@pytest.mark.parametrize('target', ['esp32', 'esp32s3', 'esp32c6'], indirect=True)
1005-
def test_lp_uart_wakeup():
1006-
pass
1007-
1008-
@pytest.mark.skip_if_soc("SOC_BLE_SUPPORTED == 1")
1009-
@pytest.mark.parametrize('target', SUPPORTED_TARGETS, indirect=True)
1010-
def test_ble():
1011-
pass
1012-
1013-
@pytest.mark.skip_if_soc("SOC_ADC_SAMPLE_FREQ_THRES_HIGH == 83333")
1014-
@pytest.mark.parametrize('target', SUPPORTED_TARGETS, indirect=True)
1015-
def test_adc():
1016-
pass
1017-
1018-
""")
1019-
1020-
result = testdir.runpytest('-s', *EMBEDDED_SERVICES)
1021-
result.assert_outcomes(passed=14, failed=0, skipped=5)
1047+
return testdir.runpytest( '--embedded-services', 'esp,idf', '--target', target, '--count', count)
10221048

10231049
testdir.makepyfile("""
10241050
import pytest
10251051
1026-
@pytest.mark.skip_if_soc("SOC_ULP_LP_UART_SUPPORTED == 1")
1052+
@pytest.mark.skip_if_soc("SOC_A == 1")
10271053
def test_from_args():
10281054
pass
10291055
10301056
""")
10311057

10321058
results = [
1033-
(run_pytest_with_target('esp32'), {'passed': 0, 'failed': 0, 'skipped': 1}),
1034-
(run_pytest_with_target('esp32c5'), {'passed': 1, 'failed': 0, 'skipped': 0}),
10351059
(run_pytest_with_target('auto'), {'passed': 1, 'failed': 0, 'skipped': 0}),
10361060
(run_pytest_with_target('esp32|esp32'), {'passed': 1, 'failed': 0, 'skipped': 0}),
10371061
]
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#define SOC_A 0
2+
#define SOC_B 1
3+
#define SOC_C 0
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#define SOC_A 0
2+
#define SOC_B 1
3+
#define SOC_C 0
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#define SOC_A 1
2+
#define SOC_B 1
3+
#define SOC_C 1
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#define SOC_A 1
2+
#define SOC_B 1
3+
#define SOC_C 0
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#define SOC_A 1
2+
#define SOC_B 0
3+
#define SOC_C 0
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#define SOC_A 0
2+
#define SOC_B 0
3+
#define SOC_C 1
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#define SOC_A 0
2+
#define SOC_B 1
3+
#define SOC_C 1
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#define SOC_A 0
2+
#define SOC_B 0
3+
#define SOC_C 0
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#define SOC_A 0
2+
#define SOC_B 0
3+
#define SOC_C 1
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#define SOC_A 0
2+
#define SOC_B 0
3+
#define SOC_C 0
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#define SOC_A 1
2+
#define SOC_B 0
3+
#define SOC_C 1
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
set(IDF_VERSION_MAJOR 5)
2+
set(IDF_VERSION_MINOR 5)
3+
set(IDF_VERSION_PATCH 0)
4+
5+
set(ENV{IDF_VERSION} "${IDF_VERSION_MAJOR}.${IDF_VERSION_MINOR}.${IDF_VERSION_PATCH}")
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
SUPPORTED_TARGETS = ['esp32', 'esp32s2', 'esp32c3', 'esp32s3', 'esp32c2', 'esp32c6', 'esp32h2', 'esp32p4']
5+
PREVIEW_TARGETS = ['linux', 'esp32c5', 'esp32c61', 'esp32h21']

0 commit comments

Comments
 (0)