mirror of
https://github.com/facebook/zstd.git
synced 2024-11-23 08:46:45 +08:00
c0b46738b4
When creating a new `Makefile` target to build, it's also necessary to update the `clean` target, which purpose is to remove built targets when they are present. This process is simple, but it's also easy to forget : since there is a large distance between the position in the `Makefile` where the new built target is added, and the place where the list of files to `clean` is defined. Moreover, the list of files becomes pretty long over time, hence it's difficult to visually ensure that all built targets are present there, or that no old target (no longer produced) is no longer in the list This PR tries to improve this process by adding a CLEAN variable. Now, when a new built target is added to the `Makefile`, it should preceded by : ``` CLEAN += newTarget newTarget: <TAB> ...recipe... ``` This new requirement is somewhat similar to `.PHONY: newTarget` for non-built targets. This new method offers the advantage of locality : there is no separate place in the file to maintain a list of files to clean. This makes maintenance of `make clean` easier.
1.8 KiB
1.8 KiB
Testing
Zstandard CI testing is split up into three sections: short, medium, and long tests.
Short Tests
Short tests run on CircleCI for new commits on every branch and pull request. They consist of the following tests:
- Compilation on all supported targets (x86, x86_64, ARM, AArch64, PowerPC, and PowerPC64)
- Compilation on various versions of gcc, clang, and g++
tests/playTests.sh
on x86_64, without the tests on long data (CLI tests)- Small tests (
tests/legacy.c
,tests/longmatch.c
) on x64_64
Medium Tests
Medium tests run on every commit and pull request to dev
branch, on TravisCI.
They consist of the following tests:
- The following tests run with UBsan and Asan on x86_64 and x86, as well as with
Msan on x86_64
tests/playTests.sh --test-large-data
- Fuzzer tests:
tests/fuzzer.c
,tests/zstreamtest.c
, andtests/decodecorpus.c
tests/zstreamtest.c
under Tsan (streaming mode, including multithreaded mode)- Valgrind Test (
make -C tests test-valgrind
) (testing CLI and fuzzer undervalgrind
) - Fuzzer tests (see above) on ARM, AArch64, PowerPC, and PowerPC64
Long Tests
Long tests run on all commits to release
branch,
and once a day on the current version of dev
branch,
on TravisCI.
They consist of the following tests:
- Entire test suite (including fuzzers and some other specialized tests) on:
- x86_64 and x86 with UBsan and Asan
- x86_64 with Msan
- ARM, AArch64, PowerPC, and PowerPC64
- Streaming mode fuzzer with Tsan (for the
zstdmt
testing) - ZlibWrapper tests, including under valgrind
- Versions test (ensuring
zstd
can decode files from all previous versions) pzstd
with asan and tsan, as well as in 32-bits mode- Testing
zstd
with legacy mode off - Entire test suite and make install on macOS