Skip to content

Commit a5cc541

Browse files
committed
refactor: remove stubs/ and use mockro for MicroPython type checking
1 parent a417e94 commit a5cc541

8 files changed

Lines changed: 84 additions & 140 deletions

File tree

.gatorgrade.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
- description: "Run pytest with mockro stubs"
2+
check: ExecuteCommand
3+
options:
4+
command: uv run pytest
5+
6+
- description: "Run mypy type checks"
7+
check: ExecuteCommand
8+
options:
9+
command: uv run mypy src tests

gatorgrade.yml

Lines changed: 0 additions & 4 deletions
This file was deleted.

pyproject.toml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,24 @@
11
[project]
22
name = "assignment-template"
33
version = "1.0.0"
4-
requires-python= ">=3.10"
4+
requires-python= ">=3.11"
55
dependencies = [
66
"gatorgrade",
7+
"mockro",
78
"mypy>=1.19.1",
89
"pytest",
910
]
1011

11-
[tool.pytest]
12+
[tool.pytest.ini_options]
1213
pythonpath = [
1314
"src"
1415
]
1516
testpaths = [
1617
"tests"
1718
]
19+
filterwarnings = [
20+
"ignore::pytest.PytestAssertRewriteWarning"
21+
]
22+
23+
[tool.mypy]
24+
ignore_missing_imports = true

src/main.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
1-
def main():
2-
pass
1+
import machine
2+
import network
3+
4+
5+
def main() -> None:
6+
led = machine.Pin(2, machine.Pin.OUT)
7+
led.on()
8+
9+
wlan = network.WLAN(network.STA_IF)
10+
wlan.active(True)
11+
312

413
if __name__ == "__main__":
5-
main()
14+
main()

tests/conftest.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import mockro
2+
3+
# Uncomment and adjust the overrides below to change how mocked hardware
4+
# behaves during tests.
5+
# mockro.patch("machine.Pin.value", return_value=1)
6+
# mockro.patch("network.WLAN.isconnected", return_value=True)

tests/test_main.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import machine
2+
import network
3+
4+
from main import main
5+
6+
7+
def test_main_runs_with_mockro() -> None:
8+
main()
9+
10+
11+
def test_led_can_be_turned_on() -> None:
12+
led = machine.Pin(2, machine.Pin.OUT)
13+
led.on()
14+
assert led.value() == 0
15+
16+
17+
def test_wlan_initially_inactive() -> None:
18+
wlan = network.WLAN(network.STA_IF)
19+
assert not wlan.active()

tests/tests.py

Lines changed: 0 additions & 2 deletions
This file was deleted.

uv.lock

Lines changed: 29 additions & 129 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)