mirror of
https://github.com/mikecarper/MeshCore.git
synced 2026-09-14 20:35:33 +00:00
70 lines
2.0 KiB
Python
70 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import json
|
|
from pathlib import Path
|
|
import subprocess
|
|
import sys
|
|
import tempfile
|
|
import unittest
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
CHECKER = ROOT / "scripts" / "check_firmware_capabilities.py"
|
|
|
|
|
|
class FirmwareCapabilityCheckerTest(unittest.TestCase):
|
|
def run_checker(self, image_bytes, *extra_args):
|
|
temp_dir = tempfile.TemporaryDirectory()
|
|
self.addCleanup(temp_dir.cleanup)
|
|
directory = Path(temp_dir.name)
|
|
image = directory / "firmware.elf"
|
|
manifest = directory / "firmware.capabilities.json"
|
|
image.write_bytes(image_bytes)
|
|
result = subprocess.run(
|
|
[
|
|
sys.executable,
|
|
str(CHECKER),
|
|
"--image",
|
|
str(image),
|
|
"--output",
|
|
str(manifest),
|
|
"--target",
|
|
"test_target",
|
|
"--platform",
|
|
"ESP32_PLATFORM",
|
|
"--build-profile",
|
|
"auto",
|
|
*extra_args,
|
|
],
|
|
capture_output=True,
|
|
text=True,
|
|
check=False,
|
|
)
|
|
return result, json.loads(manifest.read_text())
|
|
|
|
def test_writes_verified_manifest(self):
|
|
result, manifest = self.run_checker(
|
|
b"prefix retry.preset suffix",
|
|
"--capability",
|
|
"cli.retry_preset",
|
|
"--expect",
|
|
"cli.retry_preset=retry.preset",
|
|
)
|
|
self.assertEqual(result.returncode, 0, result.stderr)
|
|
self.assertTrue(manifest["verified"])
|
|
self.assertEqual(manifest["build_profile"], "auto")
|
|
|
|
def test_fails_when_promised_marker_is_missing(self):
|
|
result, manifest = self.run_checker(
|
|
b"unrelated image",
|
|
"--expect",
|
|
"web.webconfig=start webconfig",
|
|
)
|
|
self.assertEqual(result.returncode, 1)
|
|
self.assertFalse(manifest["verified"])
|
|
self.assertIn("promised", result.stderr)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|