mirror of
https://github.com/RsyncProject/rsync.git
synced 2026-10-08 01:51:41 -04:00
Every branch that added a test which skips somewhere had to edit RSYNC_EXPECT_SKIPPED, a single ~3 KB YAML line duplicated across seven workflow steps -- so two such branches always conflicted, and the conflict was in the one format git cannot merge. The lists move to testsuite/skiplist/*.txt, one name per line with the reason as a comment, and RSYNC_EXPECT_SKIPPED takes @FILE entries which runtests.py expands (relative to srcdir, so out-of-tree builds work). Several compose, which lets the 46 names common to Linux/macOS/Cygwin live in one file: adding a require_tcp test now edits one line of common.txt instead of three lists in three files. Lists must be sorted, duplicate-free, and name real tests, and an unreadable or malformed list is a hard error -- it must never degrade to "expect no skips", which would silently disarm the oracle on that job. fleettest passes the spec through to the remote runtests.py, which expands it against the tree that was staged there. The oracle itself is unchanged. Verified on Linux by running the full suite in all three lanes (check, check30, check29) against the new files: same expected sets, all green.
70 lines
2.3 KiB
YAML
70 lines
2.3 KiB
YAML
name: Test rsync on macOS
|
|
|
|
on:
|
|
push:
|
|
branches: [ master ]
|
|
paths-ignore:
|
|
- '.github/workflows/*.yml'
|
|
- '!.github/workflows/macos-build.yml'
|
|
pull_request:
|
|
types: [opened, synchronize, reopened, labeled]
|
|
paths-ignore:
|
|
- '.github/workflows/*.yml'
|
|
- '!.github/workflows/macos-build.yml'
|
|
schedule:
|
|
- cron: '42 8 * * *'
|
|
|
|
jobs:
|
|
test:
|
|
# 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: macos-latest
|
|
name: Test rsync on macOS
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
- name: prep
|
|
run: |
|
|
brew install automake openssl xxhash zstd lz4
|
|
pip3 install --user --break-system-packages commonmark
|
|
echo "$(brew --prefix)/bin" >>"$GITHUB_PATH"
|
|
- name: configure
|
|
run: |
|
|
BREW_PREFIX=$(brew --prefix)
|
|
OPENSSL_PREFIX=$(brew --prefix openssl)
|
|
CPPFLAGS="-I${BREW_PREFIX}/include -I${OPENSSL_PREFIX}/include" \
|
|
LDFLAGS="-L${BREW_PREFIX}/lib -L${OPENSSL_PREFIX}/lib" \
|
|
./configure --with-rrsync
|
|
- name: make
|
|
run: make
|
|
- name: install
|
|
run: sudo make install
|
|
- name: info
|
|
run: rsync --version
|
|
- name: check
|
|
# chown-fake / devices-fake / xattrs / xattrs-hlink now RUN on macOS
|
|
# (rsyncfns.py drives xattrs via the `xattr` command), verified on a
|
|
# real macOS host, so they're no longer in the skip set.
|
|
run: sudo RSYNC_EXPECT_SKIPPED=@testsuite/skiplist/common.txt,@testsuite/skiplist/macos.txt make check
|
|
- name: check (TCP daemon transport)
|
|
# Second run with daemon tests over a real loopback rsyncd; the default
|
|
# 'make check' above uses the secure stdio-pipe transport.
|
|
run: sudo ./runtests.py --rsync-bin="$PWD/rsync" --use-tcp -j 8
|
|
- name: ssl file list
|
|
run: rsync-ssl --no-motd download.samba.org::rsyncftp/ || true
|
|
- name: save artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
retention-days: 45
|
|
name: macos-bin
|
|
path: |
|
|
rsync
|
|
rsync-ssl
|
|
rsync.1
|
|
rsync-ssl.1
|
|
rsyncd.conf.5
|
|
rrsync.1
|
|
rrsync
|