diff options
-rw-r--r-- | .cirrus.yml | 6 | ||||
-rw-r--r-- | .github/workflows/build.yml | 39 | ||||
-rw-r--r-- | testsuite/fuzzy.test | 2 | ||||
-rw-r--r-- | testsuite/itemize.test | 12 | ||||
-rw-r--r-- | testsuite/rsync.fns | 18 |
5 files changed, 60 insertions, 17 deletions
diff --git a/.cirrus.yml b/.cirrus.yml index 1aa90052..15cbc2dc 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -2,6 +2,8 @@ freebsd_task: name: FreeBSD freebsd_instance: image: freebsd-12-1-release-amd64 + env: + PATH: /usr/local/bin:$PATH prep_script: - dd if=/dev/zero of=/tmp/zpool bs=1M count=1024 - zpool create -m `pwd`/testtmp zpool /tmp/zpool @@ -13,8 +15,8 @@ freebsd_task: install_script: - make install info_script: - - /usr/local/bin/rsync --version + - rsync --version test_script: - make check ssl_file_list_script: - - /usr/local/bin/rsync-ssl --no-motd download.samba.org::rsyncftp/ || true + - rsync-ssl --no-motd download.samba.org::rsyncftp/ || true diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fbab5cd4..fd0cf4d2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,8 +13,9 @@ jobs: steps: - uses: actions/checkout@v2 - name: prep - run: sudo apt-get install acl libacl1-dev attr libattr1-dev - liblz4-dev libzstd-dev libxxhash-dev python3-cmarkgfm openssl + run: | + sudo apt-get install acl libacl1-dev attr libattr1-dev liblz4-dev libzstd-dev libxxhash-dev python3-cmarkgfm openssl + echo "::add-path::/usr/local/bin" - name: configure run: ./configure --with-included-popt --with-included-zlib - name: make @@ -22,7 +23,7 @@ jobs: - name: install run: sudo make install - name: info - run: /usr/local/bin/rsync --version + run: rsync --version - name: check run: sudo make check - name: check30 @@ -30,7 +31,7 @@ jobs: - name: check29 run: sudo make check29 - name: ssl file list - run: /usr/local/bin/rsync-ssl --no-motd download.samba.org::rsyncftp/ || true + run: rsync-ssl --no-motd download.samba.org::rsyncftp/ || true macos-build: runs-on: macos-latest @@ -40,6 +41,7 @@ jobs: run: | brew install automake openssl xxhash zstd lz4 sudo pip3 install commonmark + echo "::add-path::/usr/local/bin" - name: configure run: CPPFLAGS=-I/usr/local/opt/openssl/include/ LDFLAGS=-L/usr/local/opt/openssl/lib/ ./configure - name: make @@ -47,8 +49,33 @@ jobs: - name: install run: sudo make install - name: info - run: /usr/local/bin/rsync --version + run: rsync --version - name: check run: sudo make check - name: ssl file list - run: /usr/local/bin/rsync-ssl --no-motd download.samba.org::rsyncftp/ || true + run: rsync-ssl --no-motd download.samba.org::rsyncftp/ || true + + cygwin-build: + runs-on: windows-latest + if: "contains(github.event.head_commit.message, '[buildall]')" + steps: + - uses: actions/checkout@v2 + - uses: crazy-max/ghaction-chocolatey@v1.2.2 + with: + args: install -y --no-progress cygwin cyg-get + - name: prep + run: | + cyg-get make autoconf automake gcc-core libssl-devel libzstd-devel liblz4-devel + echo "::add-path::C:/tools/cygwin/bin" + - name: configure + run: bash -c './configure --disable-md2man --disable-xxhash' + - name: make + run: bash -c 'make' + - name: install + run: bash -c 'make install' + - name: info + run: bash -c '/usr/local/bin/rsync --version' + - name: check + run: bash -c 'make check' + - name: ssl file list + run: bash -c 'PATH="/usr/local/bin:$PATH" rsync-ssl --no-motd download.samba.org::rsyncftp/ || true' diff --git a/testsuite/fuzzy.test b/testsuite/fuzzy.test index 39726a03..05c5b068 100644 --- a/testsuite/fuzzy.test +++ b/testsuite/fuzzy.test @@ -12,7 +12,7 @@ mkdir "$fromdir" mkdir "$todir" -cp -p "$srcdir"/rsync.c "$fromdir"/rsync.c +cp_p "$srcdir"/rsync.c "$fromdir"/rsync.c cp_touch "$fromdir"/rsync.c "$todir"/rsync2.c sleep 1 diff --git a/testsuite/itemize.test b/testsuite/itemize.test index c37f9785..9988cb72 100644 --- a/testsuite/itemize.test +++ b/testsuite/itemize.test @@ -17,9 +17,9 @@ outfile="$scratchdir/rsync.out" makepath "$fromdir/foo" makepath "$fromdir/bar/baz" -cp -p "$srcdir/configure.ac" "$fromdir/foo/config1" -cp -p "$srcdir/config.sub" "$fromdir/foo/config2" -cp -p "$srcdir/rsync.h" "$fromdir/bar/baz/rsync" +cp_p "$srcdir/configure.ac" "$fromdir/foo/config1" +cp_p "$srcdir/config.sub" "$fromdir/foo/config2" +cp_p "$srcdir/rsync.h" "$fromdir/bar/baz/rsync" chmod 600 "$fromdir"/foo/config? "$fromdir/bar/baz/rsync" umask 0 ln -s ../bar/baz/rsync "$fromdir/foo/sym" @@ -66,7 +66,7 @@ diff $diffopt "$chkfile" "$outfile" || test_fail "test 1 failed" # Ensure there are no accidental directory-time problems. $RSYNC -a -f '-! */' "$fromdir/" "$todir" -cp -p "$srcdir/configure.ac" "$fromdir/foo/config2" +cp_p "$srcdir/configure.ac" "$fromdir/foo/config2" chmod 601 "$fromdir/foo/config2" $RSYNC -iplrH "$fromdir/" "$todir/" \ | tee "$outfile" @@ -79,7 +79,7 @@ EOT diff $diffopt "$chkfile" "$outfile" || test_fail "test 2 failed" $RSYNC -a -f '-! */' "$fromdir/" "$todir" -cp -p "$srcdir/config.sub" "$fromdir/foo/config2" +cp_p "$srcdir/config.sub" "$fromdir/foo/config2" sleep 1 # For directory mod below to ensure time difference rm "$todir/foo/sym" umask 0 @@ -99,7 +99,7 @@ cLc$T.$dots foo/sym -> ../bar/baz/rsync EOT diff $diffopt "$chkfile" "$outfile" || test_fail "test 3 failed" -cp -p "$srcdir/configure.ac" "$fromdir/foo/config2" +cp_p "$srcdir/configure.ac" "$fromdir/foo/config2" chmod 600 "$fromdir/foo/config2" # Lack of -t is for unchanged hard-link stress-test! $RSYNC -vvplrH "$fromdir/" "$todir/" \ diff --git a/testsuite/rsync.fns b/testsuite/rsync.fns index fb1721f3..68389e70 100644 --- a/testsuite/rsync.fns +++ b/testsuite/rsync.fns @@ -1,4 +1,4 @@ -#! /bin/sh +#!/bin/sh # Copyright (C) 2001 by Martin Pool <mbp@samba.org> @@ -62,7 +62,7 @@ set_cp_destdir() { # Perform a "cp -p", making sure that timestamps are really the same, # even if the copy rounded microsecond times on the destination file. cp_touch() { - cp -p "${@}" || test_fail "cp -p failed" + cp_p "${@}" if test $# -gt 2 -o -d "$2"; then set_cp_destdir "${@}" # sets destdir var while test $# -gt 1; do @@ -125,6 +125,20 @@ get_rootgid() { esac } +# When copying via "cp -p", we want to ensure that a non-root user does not +# preserve ownership (we want our files to be created as the testing user). +# For instance, a Cygwin CI run might have git files owned by a different +# user than the (admin) user running the tests. +cp_cmd="cp -p" +if test x`get_testuid` != x0; then + case `cp --help 2>/dev/null` in + *--no-preserve=*) cp_cmd="cp -p --no-preserve=ownership" ;; + esac +fi +cp_p() { + $cp_cmd "${@}" || test_fail "$cp_cmd failed" +} + check_perms() { perms=`"$TOOLDIR/tls" "$1" | sed 's/^[-d]\(.........\).*/\1/'` if test $perms = $2; then |