Runtime tests for Apache NuttX master
that upstream CI does not run. NuttX is built and booted on sim and QEMU
targets and driven with NTFC.
Target-side test apps (C, NuttX style) live in apps/, NTFC tests
(Python) in ntfc/.
Architecture and the exact list of test cases: Documentation/.
Upstream NuttX CI boots only a few single-node images and leaves most runtime features untested. This repo runs nightly against NuttX master the scenarios that are too heavy or host-dependent for upstream CI: many emulated nodes per test, NuttX talking to Linux, real devices (NICs, block devices, virtio), root-only host setup.
./repo_init.sh
python -m venv .venv && . .venv/bin/activate
pip install -r ntfc/requirements.txt ./external/nuttx-ntfc
python -m ntfc test --manifest ntfc/manifest-ci-sim.yamlManifests: ntfc/manifest-ci-{sim,qemu-armv8a,rv-virt,qemu-intel64}.yaml.
repo_init.sh reads sources.env; every value can be overridden with an
environment variable of the same name (or the matching input of the
tests workflow):
| Variable | Default |
|---|---|
NUTTX_REPO |
https://github.com/apache/nuttx |
NUTTX_REF |
master |
APPS_REPO |
https://github.com/apache/nuttx-apps |
APPS_REF |
master |
NTFC_REPO |
https://github.com/apache/nuttx-ntfc |
NTFC_REF |
main |
A ref can be a branch, a tag, or a full 40-character commit SHA:
NUTTX_REPO=https://github.com/me/nuttx NUTTX_REF=my-branch ./repo_init.sh --forcedocker build -t nuttx-testlab tools/docker
tools/docker/run.sh ci-sim
TESTLAB_SESSION=sim-smoke TESTLAB_TESTPATH=ntfc/tests/smoke/test_smoke.py \
tools/docker/run.sh ci-simtools/docker/run.sh [--image IMG] <manifest-name> runs
ntfc/manifest-<manifest-name>.yaml in the container; results go to
result/.
pr.yml— every pull request and push tomaster: lint (checkpatch, shellcheck, tox, Sphinx-W, docs check) and all tests on all targets against NuttX master.nightly.yml— all tests on all targets against NuttX master, daily at 01:00 UTC.tests.yml— reusable; also started manually from Actions → Tests → Run workflow withtargets(all or one), optionalsessionandtestpath, andnuttx_repo/nuttx_ref/apps_repo/apps_ref.docker-image.yml— publishesghcr.io/railab/nuttx-testlab/testlabwhentools/docker/**changes onmaster. Test jobs pull this image; a PR that changestools/docker/**builds its own.
See CONTRIBUTING.md and AGENTS.md.