Recognize .pio_version directive (integer arguments only)
This commit is contained in:
parent
be66c02eb3
commit
a8fa218e45
3 changed files with 25 additions and 1 deletions
|
|
@ -58,6 +58,8 @@ class Program: # pylint: disable=too-few-public-methods
|
||||||
wrap = None
|
wrap = None
|
||||||
wrap_target = None
|
wrap_target = None
|
||||||
offset = -1
|
offset = -1
|
||||||
|
pio_version = 0
|
||||||
|
|
||||||
for i, line in enumerate(text_program.split("\n")):
|
for i, line in enumerate(text_program.split("\n")):
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
if not line:
|
if not line:
|
||||||
|
|
@ -68,6 +70,8 @@ class Program: # pylint: disable=too-few-public-methods
|
||||||
if program_name:
|
if program_name:
|
||||||
raise RuntimeError("Multiple programs not supported")
|
raise RuntimeError("Multiple programs not supported")
|
||||||
program_name = line.split()[1]
|
program_name = line.split()[1]
|
||||||
|
elif line.startswith(".pio_version"):
|
||||||
|
pio_version = int(line.split()[1], 0)
|
||||||
elif line.startswith(".origin"):
|
elif line.startswith(".origin"):
|
||||||
offset = int(line.split()[1], 0)
|
offset = int(line.split()[1], 0)
|
||||||
elif line.startswith(".wrap_target"):
|
elif line.startswith(".wrap_target"):
|
||||||
|
|
@ -247,6 +251,9 @@ class Program: # pylint: disable=too-few-public-methods
|
||||||
if offset != -1:
|
if offset != -1:
|
||||||
self.pio_kwargs["offset"] = offset
|
self.pio_kwargs["offset"] = offset
|
||||||
|
|
||||||
|
if pio_version != 0:
|
||||||
|
self.pio_kwargs["pio_version"] = pio_version
|
||||||
|
|
||||||
if sideset_count != 0:
|
if sideset_count != 0:
|
||||||
self.pio_kwargs["sideset_pin_count"] = sideset_count
|
self.pio_kwargs["sideset_pin_count"] = sideset_count
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,4 +45,6 @@ def assert_assembly_fails(
|
||||||
|
|
||||||
def assert_pio_kwargs(source: str, **kw: Any) -> None:
|
def assert_pio_kwargs(source: str, **kw: Any) -> None:
|
||||||
program = adafruit_pioasm.Program(source)
|
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
15
tests/test_version.py
Normal 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)
|
||||||
Loading…
Reference in a new issue