mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-14 06:42:58 +08:00
b1bf7fd29a
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. ```
2.2 KiB
2.2 KiB
Tests for LVGL
The tests in the folder can be run locally and automatically by GitHub CI.
Running locally
Requirements (Linux)
Install requirements by:
scripts/install-prerequisites.sh
Run test
- Run all executable tests with
./tests/main.py test
. - Build all build-only tests with
./tests/main.py build
. - 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 teststest_cases
The written tests,test_runners
Generated automatically from the files intest_cases
.- other miscellaneous files and folders
ref_imgs
- Reference images for screenshot comparereport
- Coverage report. Generated if thereport
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.
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 theref_imgs
folder. If the compare failslvgl/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 calltest_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
andLV_USE_MEM_MONITOR
disabled- use the default theme, with the default color (don't set a theme manually)