mirror of
https://github.com/RsyncProject/rsync.git
synced 2026-11-06 03:53:33 -05:00
The stable-testsuite job ran the newer suite via --srcdir, pointing at the v34-stable-testsuite checkout while the binary came from here. The tests resolve their fixtures relative to the tree they live in -- support/lsh.sh, support/rrsync, old_versions/ -- so that pairing handed this branch's rsync someone else's helpers and failed 94 tests for reasons unrelated to 3.4.1. Overlay the suite onto this checkout instead, which is the composition fleettest.py --testsuite-repo already builds: this branch's code, the newer suite, one tree. old_versions/ is copied rather than git-archived because its static binaries are export-ignore'd. Also point the push/PR triggers at -sec-patches3; they still named -sec-patches2, so the job had stopped firing on push entirely. partial_nowrite joins the exclude list: it covers the receiver chmod-on-denied-open behaviour added in 3.5.0, which this base does not have. With this, the full 3.5.0 suite runs clean here and the expected-skip oracle matches exactly.
90 lines
3.5 KiB
YAML
90 lines
3.5 KiB
YAML
name: Stable testsuite
|
|
|
|
# Regression coverage for this stable-backport branch. The branch keeps the old
|
|
# shell test suite, so the modern Python suite is maintained separately on the
|
|
# v34-stable-testsuite branch. This job builds rsync from this branch and runs
|
|
# that suite against it.
|
|
#
|
|
# The suite is OVERLAID onto this checkout rather than run from its own
|
|
# directory via --srcdir. The tests resolve fixtures relative to the source
|
|
# tree they live in (support/lsh.sh, support/rrsync, old_versions/), so running
|
|
# them out of a second tree pairs this branch's binary with the other tree's
|
|
# helpers -- which fails ~90 tests for reasons that have nothing to do with this
|
|
# branch. Overlaying gives one tree: this branch's code, the newer suite.
|
|
# It is the same composition fleettest.py --testsuite-repo builds.
|
|
|
|
on:
|
|
push:
|
|
branches: [ v3.4.1-sec-patches3 ]
|
|
paths-ignore:
|
|
- '.github/workflows/*.yml'
|
|
- '!.github/workflows/stable-testsuite.yml'
|
|
pull_request:
|
|
types: [opened, synchronize, reopened, labeled]
|
|
branches: [ v3.4.1-sec-patches3 ]
|
|
paths-ignore:
|
|
- '.github/workflows/*.yml'
|
|
- '!.github/workflows/stable-testsuite.yml'
|
|
workflow_dispatch:
|
|
schedule:
|
|
- cron: '23 6 * * *'
|
|
|
|
jobs:
|
|
stable-testsuite:
|
|
# temporary gate: PR CI runs only for PRs labeled 'run-ci', to save CI
|
|
# minutes; labels need triage access, so fork PRs can't self-enable.
|
|
if: github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'run-ci')
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ ubuntu-latest, ubuntu-22.04 ]
|
|
name: Stable testsuite on ${{ matrix.os }}
|
|
steps:
|
|
- name: checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
- name: checkout stable testsuite
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: RsyncProject/rsync
|
|
ref: v34-stable-testsuite
|
|
path: stable-testsuite
|
|
fetch-depth: 1
|
|
# Merge, never delete: testsuite/skiplist/backport.txt is ours and names the
|
|
# tests this base cannot run; runtests.py reads it from the built tree.
|
|
# old_versions/ holds the static peer binaries the version-mixing tests need
|
|
# -- they are export-ignore'd, so they must be copied, not git-archived.
|
|
- name: overlay the stable testsuite
|
|
run: |
|
|
cp -a stable-testsuite/runtests.py .
|
|
cp -a stable-testsuite/testsuite/. testsuite/
|
|
cp -a stable-testsuite/old_versions .
|
|
rm -rf stable-testsuite
|
|
- name: prep
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y gcc g++ gawk autoconf automake \
|
|
acl libacl1-dev attr libattr1-dev liblz4-dev libzstd-dev libxxhash-dev \
|
|
python3-cmarkgfm openssl
|
|
echo "/usr/local/bin" >>"$GITHUB_PATH"
|
|
- name: configure
|
|
run: ./configure --with-rrsync
|
|
- name: make check-progs
|
|
run: make check-progs
|
|
- name: info
|
|
run: ./rsync --version
|
|
# Pipe transport (the secure stdio default). The TCP-only daemon tests skip
|
|
# here and are covered by the --use-tcp pass below; the platform lists carry
|
|
# those names, and backport.txt (read from this tree) drops the tests this
|
|
# base cannot run.
|
|
- name: run stable testsuite (pipe)
|
|
run: |
|
|
sudo RSYNC_EXPECT_SKIPPED=@testsuite/skiplist/common.txt,@testsuite/skiplist/linux.txt \
|
|
./runtests.py -j16
|
|
# TCP transport over loopback, exercising the daemon paths the pipe run skips.
|
|
- name: run stable testsuite (tcp)
|
|
run: |
|
|
sudo ./runtests.py --use-tcp -j8
|