Metadata-Version: 2.4
Name: ntfc
Version: 0.0.1
Summary: NTFC for NuttX
Keywords: ntfc
Classifier: Topic :: Software Development :: Embedded Systems
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: click>=8.1
Requires-Dist: pyyaml
Requires-Dist: pyelftools
Requires-Dist: pexpect
Requires-Dist: psutil
Requires-Dist: pyserial
Requires-Dist: pytest
Requires-Dist: pytest-dependency
Requires-Dist: pytest-repeat
Requires-Dist: pytest-timeout
Requires-Dist: pytest-ordering
Requires-Dist: requests
Requires-Dist: pillow
Requires-Dist: pytz
Dynamic: license-file

# NTFC

NuttX Test Framework for Community.

## What is NTFC?

NTFC is a Python-based testing framework designed to automate the
testing of [NuttX RTOS](https://nuttx.apache.org/) on various
platforms. It provides a structured way to develop, discover,
and execute test cases against NuttX configurations.

## Purpose

NTFC enables developers to:

- **Validate NuttX functionality** across different configurations
  and hardware targets

- **Automate test execution** on NuttX devices for real hardware and
  host-based target

- **Detect system failures** including OS crashes and busy loop
  conditions

- **Dynamically discover applicable tests** based on the NuttX
  image configuration

- **Standardize testing workflows** using pytest, a widely-adopted
  Python testing framework

## How It Works

NTFC acts as a bridge between pytest and NuttX devices/simulators:

1. Loads a NuttX YAML configuration specifying the target device
   and build parameters

2. Builds or prepares the NuttX image (optionally flashing to
   hardware)

3. Discovers which test cases are applicable based on the NuttX
   configuration and ELF symbols

4. Executes tests by sending NSH commands to the running NuttX
   instance

5. Validates command output and monitors for system failures

This tool requires at least Python 3.10. Not tested with earlier
versions of Python.

## Features

- NuttX simulator, QEMU and devices with serial port are supported

- Run the command from NSH and compare with the expected output

- OS crash detection and busy loop detection

- Detection of supported test cases for a given NuttX image based on
  the configuration and image ELF file

## Installation

NTFC can be installed from source using pip. PyPI package release
is planned for future versions.

```bash
git clone <PATH_TO_NTFC_REPO>
cd ntfc
pip install -e .
```

NTFC requires Python 3.10 or later (not tested with older Python).

## Optional dependencies

- pytest-html - for HTML test reports
- pytest-json - for JSON test reports

## Usage

See [docs/quickstart](docs/quickstart.rst) for a quick start guide
and [docs/usage](docs/usage.rst) for detailed usage information.

### Preparing the Image for Testing

- ``CONFIG_DEBUG_SYMBOLS`` is required for automatic command
  detection
- ``CONFIG_DEBUG_FEATURES=y`` and ``CONFIG_DEBUG_ASSERTIONS=y`` are
  recommended for better error detection

### Test Cases

Currently available test case repositories:

- https://github.com/szafonimateusz-mi/nuttx-testing - NuttX RTOS
  functionality tests

For guidance on writing your own test cases, see
[docs/writing-test-cases](docs/writing-test-cases.rst).

## Contributing

To get started with developing NTFC, see
[CONTRIBUTING.md](CONTRIBUTING.md).

The roadmpa for the project can be found in [ROADMAP](docs/roadmap.rst).
