Files
rsync/testsuite
Andrew Tridgell 144e7902d5 acls: keep --acls functional where the OS lacks a race-safe ACL primitive
When the receiver cannot pin an entry with a held fd and the kernel has no
*xattrat syscalls (pre-6.13 Linux, the BSDs, Solaris, ...), the hardened ACL
path previously skipped the apply with a warning and reported success -- it
silently left the destination ACL stale, so a changed or revoked source ACL
did not propagate yet rsync exited 0.

Per project policy, prefer the documented --acls functionality over refusing it
on platforms that cannot offer the race-safe primitive (Linux 6.13+ takes the
secure xacl_*_at() path, and an operator who needs the guarantee can move
there).  The get / default-ACL-delete / set fallbacks now fall through to the
path-based sys_acl_*file() calls -- the long-standing 3.4.x behaviour -- which
restores correct ACL application at the cost of the parent-symlink race that is
unavoidable on those platforms.

Tests: a new acls-unpinnable test asserts a received ACL updates (and removes a
stale grant from) a no-owner-read (0300) destination directory -- validated on
the path-based fallback via a forced-no-xattrat build and on the xattrat path;
its non-Linux / proto-29 skips are added to the per-platform expect-skip lists.
acl-symlink-race PASSES with a note (rather than skipping) where -VV reports no
race-safe primitive, so its skip set stays kernel-independent -- the same
workflow's RSYNC_EXPECT_SKIPPED is shared by no-xattrat and 6.13+ boxes.
2026-06-15 15:24:42 +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
2026-05-15 11:51:33 +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
2021-09-26 16:57:55 -07:00
2021-11-07 10:23:01 -08: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
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/.