feat: 发布固件底层开发 Skill 套件
This commit is contained in:
commit
c7ae3b4ce1
72 files changed
+10212
No files matched your search
+76
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Behavioral smoke tests for build_pinmux_csv.py."""
|
||||
|
||||
import csv
|
||||
import json
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
SCRIPT = Path(__file__).with_name("build_pinmux_csv.py")
|
||||
HEADERS = ["引脚号", "功能名称", "引脚名称", "有效电平", "FMUX寄存器", "FMUX当前值", "FMUX默认值", "FMUX_list"]
|
||||
|
||||
|
||||
def run(payload):
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
root = Path(tmp)
|
||||
source = root / "input.json"
|
||||
output = root / "out.csv"
|
||||
source.write_text(json.dumps(payload, ensure_ascii=False), encoding="utf-8")
|
||||
result = subprocess.run(
|
||||
[sys.executable, str(SCRIPT), "--input", str(source), "--output", str(output)],
|
||||
text=True,
|
||||
capture_output=True,
|
||||
check=False,
|
||||
)
|
||||
data = output.read_bytes() if output.exists() else b""
|
||||
return result, data
|
||||
|
||||
|
||||
def valid_row():
|
||||
return {
|
||||
"pin_number": "A12",
|
||||
"function_name": "CAM_RST0",
|
||||
"pin_name": "PAD_MIPI_TXM4",
|
||||
"is_gpio": True,
|
||||
"active_level": "低有效",
|
||||
"fmux_register": "0x030010A4",
|
||||
"fmux_current": "3",
|
||||
"fmux_default": "0",
|
||||
"fmux_list": "0:XGPIOA_20; 1:CAM_MCLK0; 3:GPIOA_20",
|
||||
}
|
||||
|
||||
|
||||
def main():
|
||||
result, data = run({"project_name": "测试 项目", "rows": [valid_row()]})
|
||||
assert result.returncode == 0, result.stderr
|
||||
assert data.startswith(b"\xef\xbb\xbf")
|
||||
rows = list(csv.reader(data.decode("utf-8-sig").splitlines()))
|
||||
assert rows[0] == HEADERS
|
||||
assert len(rows) == 2 and rows[1][0] == "A12"
|
||||
|
||||
bad = valid_row()
|
||||
bad["active_level"] = None
|
||||
result, data = run({"project_name": "bad", "rows": [bad]})
|
||||
assert result.returncode == 2 and not data
|
||||
assert "GPIO 有效电平无效" in result.stderr
|
||||
|
||||
duplicate = valid_row()
|
||||
result, data = run({"project_name": "dup", "rows": [valid_row(), duplicate]})
|
||||
assert result.returncode == 2 and not data
|
||||
assert "引脚号重复" in result.stderr
|
||||
|
||||
mismatched_mux = valid_row()
|
||||
mismatched_mux["fmux_current"] = "7"
|
||||
result, data = run({"project_name": "mux", "rows": [mismatched_mux]})
|
||||
assert result.returncode == 2 and not data
|
||||
assert "FMUX当前值 7 未出现在 FMUX_list" in result.stderr
|
||||
|
||||
print("Pinmux CSV behavioral tests passed")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in new issue
Block a user