Files
rsync/testsuite
Andrew Tridgell 47e087d8eb testsuite: portable make_data_file helper; drop hard /dev/urandom dependency
symlink-dirlink-basis.test and chdir-symlink-race.test both
require a multi-kilobyte non-trivial-content source file for the
rsync delta algorithm to exercise.  Both used dd / head against
/dev/urandom directly, which fails on platforms that don't ship
/dev/urandom (e.g. HPE NonStop).  The dd error gets swallowed by
'2>/dev/null' and the test then fails with a misleading 'failed
to create test file' that hides the real cause.

Add make_data_file <path> <size> to testsuite/rsync.fns.  Prefers
/dev/urandom when readable (kernel-provided randomness, fast),
falling back to a deterministic awk LCG seeded from PID and a
POSIX cksum of the destination path.  Output is constrained to
printable ASCII (33..126) so the helper survives two awk-portability
quirks:

  - printf '%c', 0 terminates the string in some awks, emitting
    fewer than sz bytes;
  - gawk in UTF-8 locales encodes printf '%c', N for N > 127 as
    a 2-byte UTF-8 sequence, emitting more than sz bytes.

The tests don't need 8-bit binary entropy -- they just need
non-trivial bytes for rsync's block-matching algorithm.

Update both call sites to use the helper.  Linux/FreeBSD/macOS
still take the /dev/urandom fast path; NonStop and any other
platform missing the device get the awk fallback transparently.
Both paths verified locally with the symlink-dirlink-basis test.
2026-05-21 07:40:30 +10:00
..
2022-03-26 10:01:12 -07:00
2022-01-15 17:21:01 -08:00
2021-09-26 16:57:55 -07:00
2021-09-26 16:57:55 -07:00
2021-09-26 16:57:55 -07:00
2022-01-15 17:21:01 -08:00
2021-09-26 16:57:55 -07:00
2022-01-15 17:21:01 -08:00
2021-09-26 16:57:55 -07:00
2021-09-26 16:57:55 -07:00
2021-09-26 16:57:55 -07:00
2022-01-15 17:21:01 -08:00
2020-07-07 11:43:33 -07:00
2025-08-23 17:13:28 +10:00
2025-08-23 17:30:59 +10:00
2022-01-15 17:21:01 -08:00
2021-09-26 16:57:55 -07:00
2021-09-26 16:57:55 -07:00
2025-12-31 11:37:27 +11:00
2021-09-26 16:57:55 -07:00
2025-01-15 05:30:32 +11:00
2021-09-26 16:57:55 -07:00
2021-09-26 16:57:55 -07:00
2025-01-15 05:30:32 +11:00
2021-09-26 16:57:55 -07:00

automatic testsuite for rsync			-*- text -*-

We're trying to develop some more substantial tests to prevent rsync
regressions.  Ideally, all code changes or bug reports would come with
an appropriate test suite.

You can run these tests by typing "make check" in the build directory.
The tests will run using the rsync binary in the build directory, so
you do not need to do "make install" first.  Indeed, you probably
should not install rsync before running the tests.

If you instead type "make installcheck" then the suite will test the
rsync binary from its installed location (e.g. /usr/local/bin/rsync).
You can use this to test a distribution build, or perhaps to run a new
test suite against an old version of rsync.  Note that in accordance
with the GNU Standards, installcheck does not look for rsync on the
path.

If the tests pass, you should see a report to that effect.  Some tests
require being root or some other precondition, and so will normally not
be checked -- look at the test scripts for more information.

If the tests fail, you will see rather more output.  The scratch
directory will remain in the build directory.  It would be useful if
you could include the log messages when reporting a failure.

These tests also run automatically on the build farm, and you can see
the results on http://build.samba.org/.