]> git.ipfire.org Git - thirdparty/rsync.git/commit
testsuite: add fleettest.py fleet CI harness
authorAndrew Tridgell <andrew@tridgell.net>
Wed, 3 Jun 2026 23:35:33 +0000 (09:35 +1000)
committerAndrew Tridgell <andrew@tridgell.net>
Thu, 4 Jun 2026 03:00:04 +0000 (13:00 +1000)
commit09656e19c167230f4814c01545d82f4977751b2d
treeff899c9ca44718020e2fc06d3edcd174a87d3471
parent5972ebdaf83b7e4ed2dbdbd696ba4b35318f5932
testsuite: add fleettest.py fleet CI harness

fleettest.py builds the committed HEAD of a checkout on a fleet of remote machines over ssh and runs the test suite under both the stdio-pipe and --use-tcp transports in parallel, reporting only the unexpected results. Each target mirrors a .github/workflows/*.yml job: its configure flags, and the RSYNC_EXPECT_SKIPPED list parsed from the workflow.

The fleet is described by a JSON file (testsuite/fleettest.json, git-ignored); fleettest.json.example is a worked template. Use --fleet to point at another config and --repo to build a tree other than the current directory.

A target with nonroot:true reruns, as the unprivileged ssh user, the tests that declare a module-level fleet_nonroot=True (here ownership-depth and daemon). The set lives in the test files, so new privilege-sensitive tests join the non-root pass with no fleet-config change.

Also rename testsuite/README.testsuite to README.md and rewrite it as markdown documenting the current testsuite: runtests.py, the make check/check29/check30/installcheck/coverage targets, the result/exit-code conventions, and fleettest.py.
.gitignore
testsuite/README.md [new file with mode: 0644]
testsuite/README.testsuite [deleted file]
testsuite/daemon_test.py
testsuite/fleettest.json.example [new file with mode: 0644]
testsuite/fleettest.py [new file with mode: 0755]
testsuite/ownership-depth_test.py