Files
esptool/test/test_uf2_ids.py

67 lines
2.0 KiB
Python

import json
from conftest import need_to_install_package_err
import pytest
import requests
try:
from esptool.targets import CHIP_DEFS
except ImportError:
need_to_install_package_err()
FAMILIES_URL = (
"https://raw.githubusercontent.com/microsoft/uf2/master/utils/uf2families.json"
)
@pytest.fixture(scope="class")
def uf2_json():
"""Download UF2 family IDs from Microsoft UF2 repo and filter out ESP chips"""
res = requests.get(FAMILIES_URL)
assert res.status_code == 200
uf2_families_json = json.loads(res.content)
# filter out just ESP chips
chips = [
chip
for chip in uf2_families_json
if chip["short_name"].upper().startswith("ESP")
]
return chips
def test_check_uf2family_ids(uf2_json):
"""Compare UF2 family IDs from Microsoft UF2 repo and with stored values"""
# check if all UF2 family ids match
for chip in uf2_json:
assert int(chip["id"], 0) == CHIP_DEFS[chip["short_name"].lower()].UF2_FAMILY_ID
def test_check_uf2(uf2_json):
"""Check if all non-beta chip definition has UF2 family id in esptool
and also in Microsoft repo
"""
# remove beta chip definitions
esptool_chips = set(
[chip.upper() for chip in CHIP_DEFS.keys() if "beta" not in chip]
)
microsoft_repo_chips = set([chip["short_name"] for chip in uf2_json])
diff = esptool_chips.symmetric_difference(microsoft_repo_chips)
if diff:
out = []
# there was a difference between the chip support
for chip in diff:
if chip not in esptool_chips:
out.append(
f"Missing chip definition for '{chip}' in esptool "
"which was defined in Microsoft UF2 Github repo."
)
else:
out.append(
f"Please consider adding support for chip '{chip}' "
f"to the UF2 repository: {FAMILIES_URL}"
)
pytest.fail("\n".join(out))