mirror of
https://github.com/espressif/esp-idf.git
synced 2025-12-07 17:08:49 +00:00
examples: Add storage example tests
This commit is contained in:
58
examples/storage/semihost_vfs/semihost_vfs_example_test.py
Normal file
58
examples/storage/semihost_vfs/semihost_vfs_example_test.py
Normal file
@@ -0,0 +1,58 @@
|
||||
from io import open
|
||||
import os
|
||||
import shutil
|
||||
import tempfile
|
||||
import ttfw_idf
|
||||
|
||||
try:
|
||||
from itertools import izip_longest as zip_longest
|
||||
except ImportError:
|
||||
# Python 3
|
||||
from itertools import zip_longest
|
||||
|
||||
|
||||
@ttfw_idf.idf_example_test(env_tag="test_jtag_arm")
|
||||
def test_examples_semihost_vfs(env, extra_data):
|
||||
|
||||
rel_project_path = os.path.join('examples', 'storage', 'semihost_vfs')
|
||||
dut = env.get_dut('semihost_vfs', rel_project_path)
|
||||
idf_path = dut.app.get_sdk_path()
|
||||
proj_path = os.path.join(idf_path, rel_project_path)
|
||||
host_file_name = 'host_file.txt'
|
||||
|
||||
try:
|
||||
temp_dir = tempfile.mkdtemp()
|
||||
host_file_path = os.path.join(proj_path, 'data', host_file_name)
|
||||
shutil.copyfile(host_file_path, os.path.join(temp_dir, host_file_name))
|
||||
openocd_extra_args = '-c \'set ESP_SEMIHOST_BASEDIR {}\''.format(temp_dir)
|
||||
|
||||
with ttfw_idf.OCDProcess(os.path.join(proj_path, 'openocd.log'), openocd_extra_args):
|
||||
dut.start_app()
|
||||
dut.expect_all('example: Switch to semihosted stdout',
|
||||
'example: Switched back to UART stdout',
|
||||
'example: Wrote 2798 bytes',
|
||||
'====================== HOST DATA START =========================',
|
||||
timeout=20)
|
||||
with open(host_file_path) as f:
|
||||
file_content = [line.strip() for line in f]
|
||||
dut.expect_all(*file_content, timeout=20)
|
||||
dut.expect_all('====================== HOST DATA END =========================',
|
||||
'example: Read 6121 bytes',
|
||||
timeout=5)
|
||||
|
||||
with open(os.path.join(temp_dir, 'esp32_stdout.txt')) as f:
|
||||
def expected_content():
|
||||
yield 'example: Switched to semihosted stdout'
|
||||
for i in range(100):
|
||||
yield 'Semihosted stdout write {}'.format(i)
|
||||
yield 'example: Switch to UART stdout'
|
||||
|
||||
for actual, expected in zip_longest(f, expected_content(), fillvalue='-'):
|
||||
if expected not in actual: # "in" used because of the printed ASCII color codes
|
||||
raise RuntimeError('"{}" != "{}"'.format(expected, actual.strip()))
|
||||
finally:
|
||||
shutil.rmtree(temp_dir, ignore_errors=True)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
test_examples_semihost_vfs()
|
||||
Reference in New Issue
Block a user