update tests

This commit is contained in:
proddy
2026-06-07 15:14:35 +02:00
parent 14df556e36
commit 776ffdc931
3 changed files with 106 additions and 273 deletions

View File

@@ -0,0 +1,76 @@
#!/usr/bin/env python3
"""Regenerate test/test_api/test_api.h from the native-test-create build, then run the API tests.
Workflow:
1. Run `pio run -e native-test-create -t exec` and capture its output.
2. Extract everything between the START/END "CUT HERE" markers.
3. Write that block to test/test_api/test_api.h.
4. Run `pio run -e native-test -t exec`.
"""
import subprocess
import sys
from pathlib import Path
START_MARKER = "// ---------- START - CUT HERE ----------"
END_MARKER = "// ---------- END - CUT HERE ----------"
# project root is the parent of this script's "scripts" directory
PROJECT_ROOT = Path(__file__).resolve().parent.parent
OUTPUT_HEADER = PROJECT_ROOT / "test" / "test_api" / "test_api.h"
def run(cmd, capture):
"""Run a command in the project root. Streams to the console; optionally captures stdout."""
print(f"\n>>> {' '.join(cmd)}\n", flush=True)
if capture:
# capture stdout while still echoing it so the user sees progress
result = subprocess.run(cmd, cwd=PROJECT_ROOT, text=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
print(result.stdout, end="", flush=True)
return result.returncode, result.stdout
result = subprocess.run(cmd, cwd=PROJECT_ROOT)
return result.returncode, None
def extract_between_markers(output):
"""Return the text strictly between the START and END markers (markers excluded)."""
lines = output.splitlines()
start = end = None
for i, line in enumerate(lines):
if START_MARKER in line and start is None:
start = i
elif END_MARKER in line and start is not None:
end = i
break
if start is None or end is None:
return None
return "\n".join(lines[start + 1 : end]) + "\n"
def main():
# 1. build + exec the generator
code, output = run(["pio", "run", "-e", "native-test-create", "-t", "exec"], capture=True)
if code != 0:
print(f"\nERROR: 'native-test-create' exec failed with exit code {code}", file=sys.stderr)
return code
# 2. extract the header content
content = extract_between_markers(output)
if content is None:
print(f"\nERROR: could not find content between markers:\n {START_MARKER}\n {END_MARKER}", file=sys.stderr)
return 1
# 3. write it to test_api.h
OUTPUT_HEADER.parent.mkdir(parents=True, exist_ok=True)
OUTPUT_HEADER.write_text(content, encoding="utf-8")
print(f"\nWrote {len(content.splitlines())} lines to {OUTPUT_HEADER}", flush=True)
# 4. build + exec the actual tests
code, _ = run(["pio", "run", "-e", "native-test", "-t", "exec"], capture=False)
if code != 0:
print(f"\nERROR: 'native-test' exec failed with exit code {code}", file=sys.stderr)
return code
if __name__ == "__main__":
sys.exit(main())

View File

@@ -68,7 +68,9 @@ static TestStream stream;
// load the tests
// this is generated from this file when compiled with -DEMSESP_UNITY_CREATE
// copy the output to the test_api.h file
#ifndef EMSESP_UNITY_CREATE
#include "test_api.h"
#endif
// Unity's setup call - is called before each test - empty for now
void setUp() {

File diff suppressed because one or more lines are too long