README.md
1# Tests for LVGL
2
3The tests in the folder can be run locally and automatically by GitHub CI.
4
5## Running locally
6
7### Requirements (Linux)
8
9Install requirements by:
10
11```sh
12scripts/install-prerequisites.sh
13```
14
15### Run test
161. Run all executable tests with `./tests/main.py test`.
172. Build all build-only tests with `./tests/main.py build`.
183. Clean prior test build, build all build-only tests,
19 run executable tests, and generate code coverage
20 report `./tests/main.py --clean --report build test`.
214. You can re-generate the test images by adding option `--update-image`.
22 It relies on scripts/LVGLImage.py, which requires pngquant and pypng.
23 You can run below command firstly and follow instructions in logs to install them.
24 `./tests/main.py --update-image test`
25 Note that different version of pngquant may generate different images.
26 As of now the generated image on CI uses pngquant 2.13.1-1.
27
28For full information on running tests run: `./tests/main.py --help`.
29
30## Running automatically
31
32GitHub's CI automatically runs these tests on pushes and pull requests to `master` and `releasev8.*` branches.
33
34## Directory structure
35- `src` Source files of the tests
36 - `test_cases` The written tests,
37 - `test_runners` Generated automatically from the files in `test_cases`.
38 - other miscellaneous files and folders
39- `ref_imgs` - Reference images for screenshot compare
40- `report` - Coverage report. Generated if the `report` flag was passed to `./main.py`
41- `unity` Source files of the test engine
42
43## Add new tests
44
45### Create new test file
46New test needs to be added into the `src/test_cases` folder. The name of the files should look like `test_<name>.c`. The basic skeleton of a test file copy `_test_template.c`.
47
48### Asserts
49See the list of asserts [here](https://github.com/ThrowTheSwitch/Unity/blob/master/docs/UnityAssertionsReference.md).
50
51There are some custom, LVGL specific asserts:
52- `TEST_ASSERT_EQUAL_SCREENSHOT("image1.png")` Render the active screen and compare its content with an image in the `ref_imgs` folder.
53 - If the reference image is not found it will be created automatically from the rendered screen.
54 - If the compare fails an `<image_name>_err.png` file will be created with the rendered content next to the reference image.
55- `TEST_ASSERT_EQUAL_COLOR(color1, color2)` Compare two colors.
56
57