0% found this document useful (0 votes)
12 views3 pages

Howto Tests

The document provides instructions for running regression tests for util-linux, emphasizing the importance of including tests for invasive changes or bug fixes. It details commands for compiling binaries, running tests with and without root permissions, and options for excluding specific tests. Additionally, it mentions external services for code coverage and analysis related to the project.

Uploaded by

konsumirre
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views3 pages

Howto Tests

The document provides instructions for running regression tests for util-linux, emphasizing the importance of including tests for invasive changes or bug fixes. It details commands for compiling binaries, running tests with and without root permissions, and options for excluding specific tests. Additionally, it mentions external services for code coverage and analysis related to the project.

Uploaded by

konsumirre
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

util-linux regression tests

~~~~~~~~~~~~~~~~~~~~~~~~~~~

It's expected that for each invasive change or important bugfix you will
include a test to your patch.

Compile binaries, libs, extra test programs and run the basic tests:

$ make check

Compile extra test programs only:

$ make check-programs

Note that the configure option --disable-static disables many of libmount and
libblkid unit tests.

Run all tests including tests that require root permissions:

# cd tests
# ./run.sh [options, see --help]

Alternatively using sudo and make:

$ make check-programs
$ sudo -E make check TS_OPTS="--parallel=1"

note that as root you have to manually remove output and diff directories

# rm -rf output diff

or run 'make clean' as root.

Run subset of tests:

$ cd tests
$ ./run.sh <test_directory-name>

for example:

$ ./run.sh blkid
$ ./run.sh libmount

or individual test script, for example:

$ ./ts/cal/year

The tests is possible to exclude by ./run.sh --exclude=<list> where the


<list> is blank separated test names in format "testdir/testname", for example:

$ ./run.sh --exclude="mount/move"

The --exclude is evaluated by the ./run.sh script only. See below

TS_OPT_testdir_[testscript_]fake=

environment variable which provides more powerful functionality to skip tests.


*** WARNING for root users ***

The tests touch your /etc/fstab, initialize loop devices or scsi_debug devices
if executed with root permissions.

Please, be careful and use these tests only for development and never on
production system.

fuzz targets
------------

The fuzz targets can be built and run along with the other tests (after installing
clang):

$ ./tools/config-gen fuzz
$ make check

environment variables
---------------------

TS_COMMAND

Evaluated by "make check" to override the default command (run.sh).


Example:
- build all test dependencies, but skip the actual test
$ make check TS_COMMAND="true"

TS_OPTS

Evaluated by "make check" to pass options.to run.sh (see ./run.sh --help).


Examples:
- run utmp tests only
$ make check TS_OPTS="--parallel=1 utmp"

TS_OPT_testdir_[testscript_]fake="<yes|no>"

Evaluated by any test script to skip certain tests.


Examples:
- skip all the tests within "fdisk" test-directory:
$ make check TS_OPT_fdisk_fake="yes"

- skip only "fdisk/bsd" test:


$ make check TS_OPT_fdisk_bsd_fake="yes"

- skip all "fdisk" tests except fdisk/bsd:


$ make check TS_OPT_fdisk_fake="yes" TS_OPT_fdisk_bsd_fake="no"

TS_OPT_testdir_[testscript_]known_fail="<yes|no>"

Similar usage like TS_OPT_*_fake above. "known_fail" means that the given
test will run but (negative) results will be ignored. The build log and test
diffs will still remind you about the issue.

TS_OPT_testdir_[testscript_]verbose="<yes|no>"

Set verbosity for certain tests. Similar usage like TS_OPT_*_fake above.
TS_OPT_testdir_[testscript_]memcheck="<yes|no>"

Run certain tests with valgrind. Similar usage like TS_OPT_*_fake above.

External services
-----------------

Coveralls coverage reports

URL: https://coveralls.io/github/util-linux/util-linux

lgtm CI - automatically executed security code analysis

URL: https://lgtm.com/projects/g/util-linux/util-linux/

Coverity Scan

URL: https://scan.coverity.com/projects/karelzak-util-linux

Fossies codespell report

URL: https://fossies.org/linux/test/util-linux-master.tar.gz/codespell.html

OSS-Fuzz

URL: https://google.github.io/oss-fuzz/
URL: https://oss-fuzz-build-logs.storage.googleapis.com/index.html#util-linux
URL: https://oss-fuzz.com/coverage-report/job/libfuzzer_asan_util-linux/latest

CIFuzz

URL: https://google.github.io/oss-fuzz/getting-started/continuous-integration/
URL: https://github.com/util-linux/util-linux/actions?query=workflow%3ACIFuzz

You might also like