1
0
mirror of https://github.com/lvgl/lvgl.git synced 2025-02-04 07:13:00 +08:00
lvgl/tests/README.md
Chris Mumford b1bf7fd29a
test(ci) build and run tests in parallel. (#2515)
Create one GitHub workflow job for each build option build
or test execution. This allows each of the five builds to
be executed in parallel as well as making it easier to
navigate to the test output as it now resides in its own
job.

This change **does** change the command-line arguments to
the test execution script. This is required to allow the
build options name to be passed in.

New `tests/main.py` command-line help:

```
usage: main.py [-h] [--build-options BUILD_OPTIONS] [--clean]
               [--report]
               [{build,test} [{build,test} ...]]

Build and/or run LVGL tests.

positional arguments:
  {build,test}          build: compile build tests, test:
                        compile/run executable tests.

optional arguments:
  -h, --help            show this help message and exit
  --build-options BUILD_OPTIONS
                        the build option name to build or run.
                        When omitted all build configurations
                        are used.
  --clean               clean existing build artifacts before
                        operation.
  --report              generate code coverage report for
                        tests.

This program builds and optionally runs the LVGL test programs.
There are two types of LVGL tests: "build", and "test". The
build-only tests, as their name suggests, only verify that the
program successfully compiles and links (with various build
options). There are also a set of tests that execute to verify
correct LVGL library behavior.
```
2021-09-01 11:58:14 +02:00

58 lines
2.2 KiB
Markdown

# Tests for LVGL
The tests in the folder can be run locally and automatically by GitHub CI.
## Running locally
### Requirements (Linux)
Install requirements by:
```sh
scripts/install-prerequisites.sh
```
### Run test
1. Run all executable tests with `./tests/main.py test`.
2. Build all build-only tests with `./tests/main.py build`.
3. Clean prior test build, build all build-only tests,
run executable tests, and generate code coverage
report `./tests/main.py --clean --report build test`.
For full information on running tests run: `./tests/main.py --help`.
## Running automatically
GitHub's CI automatically runs these tests on pushes and pull requests to `master` and `releasev8.*` branches.
## Directory structure
- `src` Source files of the tests
- `test_cases` The written tests,
- `test_runners` Generated automatically from the files in `test_cases`.
- other miscellaneous files and folders
- `ref_imgs` - Reference images for screenshot compare
- `report` - Coverage report. Generated if the `report` flag was passed to `./main.py`
- `unity` Source files of the test engine
## Add new tests
### Create new test file
New test needs to be added into the `src/test_cases` folder. The name of the files should look like `test_<name>.c`. The the basic skeleton of a test file copy `_test_template.c`.
### Asserts
See the list of asserts [here](https://github.com/ThrowTheSwitch/Unity/blob/master/docs/UnityAssertionsReference.md).
There are some custom, LVGL specific asserts:
- `TEST_ASSERT_EQUAL_SCREENSHOT("image1.png")` Render the active screen and compare its content with an image in the `ref_imgs` folder.
If the compare fails `lvgl/test_screenshot_error.h` is created with the content of the frame buffer as an image.
To see the that image `#include "test_screenshot_error.h"` and call `test_screenshot_error_show();`.
- `TEST_ASSERT_EQUAL_COLOR(color1, color2)` Compare two colors.
### Adding new reference images
The reference images can be taken by copy-pasting the test code in to LVGL simulator and saving the screen.
LVGL needs to
- 800x480 resolution
- 32 bit color depth
- `LV_USE_PERF_MONITOR` and `LV_USE_MEM_MONITOR` disabled
- use the default theme, with the default color (don't set a theme manually)