Files
seedsigner/tests
kdmukai a6dfb0cdc0 Fix CI crash in screenshot generator when latest-release fetch fails
The screenshot generator fetches the latest release tag at import time via an
unauthenticated GitHub API call. GitHub-hosted runners share outbound IPs and
the unauthenticated api.github.com limit is 60 req/hr/IP, so the call was
intermittently rate-limited (HTTP 403), returned (None, None), and fed None into
the mock_version_to_most_recent_release Version mock. That crashed rendering for
every locale with "TypeError: 'NoneType' object is not subscriptable" in the
OpeningSplash version string (and would likewise hit len(None) on the Version
settings screen).

Substitute a placeholder version name and timestamp when the fetch can't resolve
the latest release, so the "release build" screenshots still render instead of
feeding None into the mock. The real fetch is unchanged when it succeeds.
2026-08-09 18:23:34 -05:00
..
2025-10-23 14:23:27 -05:00
2024-11-06 14:00:36 -06:00
2025-02-27 10:53:57 -06:00
2024-11-05 12:19:35 -06:00
2025-12-17 21:11:14 +01:00
2025-12-26 07:13:00 -06:00
2024-03-02 07:46:35 -06:00
2025-12-09 20:17:18 +01:00
2024-07-14 13:21:23 -05:00
2025-01-02 18:38:03 -06:00

Running Tests

The tests are designed to be run on non-Raspi hardware.

Setup

On your testing machine you'll have to install:

# general dependencies
pip3 install -r requirements.txt

# test suite dependencies
pip3 install -r tests/requirements.txt

Then make the seedsigner python module visible/importable to the tests by installing it:

pip3 install -e .

Running all tests, calculating overall test coverage

tldr: just run the convenience script from the project root:

./tests/run_full_coverage.sh

Running tests manually

Run the whole test suite:

pytest

Run a specific test file:

pytest tests/test_this_file.py

Run a specific test:

pytest tests/test_this_file.py::test_this_specific_test

Force pytest to show logging output:

pytest tests/test_this_file.py::test_this_specific_test -o log_cli=1

# or (same result)

pytest tests/test_this_file.py::test_this_specific_test --log-cli-level=DEBUG

Annoying complications:

  • If you want to see print() statements that are in a test file, add -s
  • Better idea: use a proper logger in the test file and use one of the above options to display logs

Screenshot generator

The screenshot generator is meant to mostly be a utility and not really part of the test suite. However, it is actually implemented to be run by pytest.

see: Screenshot generator README

Generate coverage manually

Run tests and generate test coverage

coverage run -m pytest

The screenshots can generate their own separate coverage report:

coverage run -m pytest tests/screenshot_generator/generator.py --locale es

Show the resulting test coverage details:

coverage report

Generate the interactive html report:

coverage html