Recognize .pio_version directive (integer arguments only)

This commit is contained in:
Jeff Epler 2024-09-05 08:37:43 -05:00
parent be66c02eb3
commit a8fa218e45
3 changed files with 25 additions and 1 deletions

View file

@ -58,6 +58,8 @@ class Program: # pylint: disable=too-few-public-methods
wrap = None
wrap_target = None
offset = -1
pio_version = 0
for i, line in enumerate(text_program.split("\n")):
line = line.strip()
if not line:
@ -68,6 +70,8 @@ class Program: # pylint: disable=too-few-public-methods
if program_name:
raise RuntimeError("Multiple programs not supported")
program_name = line.split()[1]
elif line.startswith(".pio_version"):
pio_version = int(line.split()[1], 0)
elif line.startswith(".origin"):
offset = int(line.split()[1], 0)
elif line.startswith(".wrap_target"):
@ -247,6 +251,9 @@ class Program: # pylint: disable=too-few-public-methods
if offset != -1:
self.pio_kwargs["offset"] = offset
if pio_version != 0:
self.pio_kwargs["pio_version"] = pio_version
if sideset_count != 0:
self.pio_kwargs["sideset_pin_count"] = sideset_count

View file

@ -45,4 +45,6 @@ def assert_assembly_fails(
def assert_pio_kwargs(source: str, **kw: Any) -> None:
program = adafruit_pioasm.Program(source)
assert kw == program.pio_kwargs
assert (
kw == program.pio_kwargs
), f"Assembling {source!r}: Expected {kw}, got {program.pio_kwargs}"

15
tests/test_version.py Normal file
View file

@ -0,0 +1,15 @@
# SPDX-FileCopyrightText: 2024 Jeff Epler, written for Adafruit Industries
#
# SPDX-License-Identifier: MIT
"""
Tests version dependent instructions
"""
from pytest_helpers import assert_pio_kwargs, assert_assembly_fails
def test_version() -> None:
assert_pio_kwargs(".pio_version 0", sideset_enable=0)
assert_pio_kwargs(".pio_version 1", pio_version=1, sideset_enable=0)
assert_assembly_fails(".pio_version muffin", errtype=ValueError)