Auto stash before merge of "SlEggBotEL32Cfg" and "origin/SlEggBotEL32Cfg"
This commit is contained in:
83
tests/test_package_firmware.py
Normal file
83
tests/test_package_firmware.py
Normal file
@@ -0,0 +1,83 @@
|
||||
import json
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
from scripts.package_firmware import build_manifest, extract_firmware_version, package_bundle
|
||||
|
||||
|
||||
class PackageFirmwareTests(unittest.TestCase):
|
||||
def test_extract_firmware_version_reads_init_string(self):
|
||||
header_text = '#define initSting "EBBv13_and_above Protocol emulated by Eggduino-Firmware V1.6a"\n'
|
||||
|
||||
self.assertEqual(extract_firmware_version(header_text), "1.6a")
|
||||
|
||||
def test_build_manifest_matches_expected_esp32_offsets(self):
|
||||
manifest = build_manifest("1.6a")
|
||||
|
||||
self.assertEqual(manifest["name"], "EggDuino ESP32 Firmware")
|
||||
self.assertEqual(manifest["version"], "1.6a")
|
||||
self.assertTrue(manifest["new_install_prompt_erase"])
|
||||
self.assertEqual(manifest["builds"][0]["chipFamily"], "ESP32")
|
||||
self.assertEqual(
|
||||
manifest["builds"][0]["parts"],
|
||||
[
|
||||
{"path": "bootloader.bin", "offset": 4096},
|
||||
{"path": "partitions.bin", "offset": 32768},
|
||||
{"path": "boot_app0.bin", "offset": 57344},
|
||||
{"path": "firmware.bin", "offset": 65536},
|
||||
],
|
||||
)
|
||||
|
||||
def test_package_bundle_copies_outputs_and_removes_stale_files(self):
|
||||
with tempfile.TemporaryDirectory() as temp_dir:
|
||||
temp_path = Path(temp_dir)
|
||||
build_dir = temp_path / "build"
|
||||
build_dir.mkdir()
|
||||
header_path = temp_path / "EggDuino.h"
|
||||
output_dir = temp_path / "firmware"
|
||||
output_dir.mkdir()
|
||||
boot_app0_path = temp_path / "boot_app0.bin"
|
||||
|
||||
build_artifacts = {
|
||||
"bootloader.bin": "bootloader",
|
||||
"partitions.bin": "partitions",
|
||||
"firmware.bin": "firmware-bin",
|
||||
"firmware.elf": "firmware-elf",
|
||||
"firmware.map": "firmware-map",
|
||||
}
|
||||
for file_name, contents in build_artifacts.items():
|
||||
(build_dir / file_name).write_text(contents, encoding="utf-8")
|
||||
|
||||
header_path.write_text(
|
||||
'#define initSting "EBBv13_and_above Protocol emulated by Eggduino-Firmware V1.6b"\n',
|
||||
encoding="utf-8",
|
||||
)
|
||||
boot_app0_path.write_text("boot-app0", encoding="utf-8")
|
||||
(output_dir / "stale.txt").write_text("old", encoding="utf-8")
|
||||
|
||||
package_bundle(
|
||||
build_dir=build_dir,
|
||||
boot_app0_path=boot_app0_path,
|
||||
header_path=header_path,
|
||||
output_dir=output_dir,
|
||||
)
|
||||
|
||||
self.assertFalse((output_dir / "stale.txt").exists())
|
||||
expected_files = {
|
||||
"bootloader.bin": "bootloader",
|
||||
"partitions.bin": "partitions",
|
||||
"firmware.bin": "firmware-bin",
|
||||
"firmware.elf": "firmware-elf",
|
||||
"firmware.map": "firmware-map",
|
||||
"boot_app0.bin": "boot-app0",
|
||||
}
|
||||
for file_name, contents in expected_files.items():
|
||||
self.assertEqual((output_dir / file_name).read_text(encoding="utf-8"), contents)
|
||||
|
||||
manifest = json.loads((output_dir / "manifest.json").read_text(encoding="utf-8"))
|
||||
self.assertEqual(manifest["version"], "1.6b")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user