mirror of
https://github.com/lvgl/lvgl.git
synced 2024-11-24 02:03:53 +08:00
53986b4b0e
* Refactor unit test scripts. Does the following: 1. Remove as many dependencies on the operating system shell as possible. For example, use of shutil.rmtree(...) instead of os.system('rm -r ...'). This brings this script a bit closer to being able to run on Windows. 2. Switch from os.system() to subprocess.check_call(). * This is a bit more secure as check_call() directly invokes the subprocess without evaluation the arguments on a command-line. * Removes the need to evaluate the return code as check_call() does this. * Can directly set environment variables (e.g. env=cmd_env) instead of including with subprocess invocation (e.g. BIN=test.bin). 3. Minor cleanup to main.py sys.argv parsing. 4. PEP8 formatting. * Ignore FileNotFoundError for rmtree('report'). * Back to os.system for gcovr. * Removed unused shutil import. |
||
---|---|---|
.. | ||
ref_imgs | ||
src | ||
unity | ||
.gitignore | ||
build.py | ||
config.yml | ||
defines.py | ||
main.py | ||
Makefile | ||
README.md | ||
test.py |
Tests for LVGL
The tests in the folder can be run locally and automatically by GitHub CI.
Running locally
Requirements (Linux)
- Be sure GCC and Python3 is installed.
- Install gcovr with
pip install gcovr
- Install Ruby with
sudo apt-get install ruby-full
Run test
- Enter
lvgl/tests/
- Run the tests with
./main.py [OPTIONS]
. The options are
report
Create a html page in thereport
folder with the coverage report.test
Build and run only test. Without this option LVGL will be built with various configurations.noclean
Do not clean the project before building. Useful while writing test to save some times.
For example:
./main.py
Run all the test as they run in the CI../main.py report test noclean
Run only the test, should be sued when writing tests.
Running automatically
TODO
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)