]> git.ipfire.org Git - thirdparty/zstd.git/commit
[regression] Add initial regression test framework 1432/head
authorNick Terrell <terrelln@fb.com>
Tue, 20 Nov 2018 20:37:43 +0000 (12:37 -0800)
committerNick Terrell <terrelln@fb.com>
Thu, 29 Nov 2018 22:33:04 +0000 (14:33 -0800)
commit4aaa36f74b01f3a68b80bb6ff8090ec49a7ac216
tree57eaf1495835282d962a2bf367a4cc254b6d796f
parent787532b91ac107e77340c6061cb6964283b89210
[regression] Add initial regression test framework

The regression tests run nightly or on the `regression`
branch for convenience. The results get uploaded as the
artifacts of the job. If they change, check the diff
printed in the job. If all is well, download the new
results and commit them to the repo.

This code will only run on a UNIX like platform. It
could be made to run on Windows, but I don't think that
it is necessary. It also uses C99.

* data: This module defines the data to run tests on.
  It downloads data from a URL into a cache directory,
  checks it against a checksum, and unpacks it. It also
  provides helpers for accessing the data.
* config: This module defines the configs to run tests
  with. A config is a set of API parameters and a set of
  CLI flags.
* result: This module is a helper for method that defines
  the result type.
* method: This module defines the compression methods
  to test. It is what runs the regression test using the
  data and the config. It reports the total compressed
  size, or an error/skip.
* test: This is the test binary that runs the tests for
  every (data, config, method) tuple, and prints the
  results to the output file and stderr.
* results.csv: The results that the current commit is
  expected to produce.
13 files changed:
.circleci/config.yml
tests/regression/Makefile [new file with mode: 0644]
tests/regression/config.c [new file with mode: 0644]
tests/regression/config.h [new file with mode: 0644]
tests/regression/data.c [new file with mode: 0644]
tests/regression/data.h [new file with mode: 0644]
tests/regression/levels.h [new file with mode: 0644]
tests/regression/method.c [new file with mode: 0644]
tests/regression/method.h [new file with mode: 0644]
tests/regression/result.c [new file with mode: 0644]
tests/regression/result.h [new file with mode: 0644]
tests/regression/results.csv [new file with mode: 0644]
tests/regression/test.c [new file with mode: 0644]