From dd4f1395ca94eb89e83f84c6cada5e55b26c06a5 Mon Sep 17 00:00:00 2001 From: Andrew Gaul Date: Sun, 19 Jan 2025 10:26:40 +0900 Subject: [PATCH] Run passing tests from pjdfstest (#1882) This downloads a tarball by hash instead of using a submodule. References #1589. --- .github/workflows/linux-ci-helper.sh | 10 +++---- .gitignore | 3 ++ test/integration-test-common.sh | 14 ++++++++++ test/integration-test-main.sh | 41 ++++++++++++++++++++++++++++ 4 files changed, 63 insertions(+), 5 deletions(-) diff --git a/.github/workflows/linux-ci-helper.sh b/.github/workflows/linux-ci-helper.sh index de8faeb..2508151 100755 --- a/.github/workflows/linux-ci-helper.sh +++ b/.github/workflows/linux-ci-helper.sh @@ -136,28 +136,28 @@ elif [ "${CONTAINER_FULLNAME}" = "rockylinux:9" ]; then # PACKAGE_INSTALL_ADDITIONAL_OPTIONS="--allowerasing" - INSTALL_PACKAGES="clang-tools-extra curl-devel fuse fuse-devel gcc libstdc++-devel gcc-c++ glibc-langpack-en java-17-openjdk-headless jq libxml2-devel mailcap git automake make openssl openssl-devel attr diffutils curl python3 procps unzip xz https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm" + INSTALL_PACKAGES="clang-tools-extra curl-devel fuse fuse-devel gcc libstdc++-devel gcc-c++ glibc-langpack-en java-17-openjdk-headless jq libxml2-devel mailcap git automake make openssl openssl-devel perl-Test-Harness attr diffutils curl python3 procps unzip xz https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm" elif [ "${CONTAINER_FULLNAME}" = "rockylinux:8" ]; then PACKAGE_MANAGER_BIN="dnf" PACKAGE_UPDATE_OPTIONS="update -y -qq" PACKAGE_INSTALL_OPTIONS="install -y" - INSTALL_PACKAGES="clang-tools-extra curl-devel fuse fuse-devel gcc libstdc++-devel gcc-c++ glibc-langpack-en java-17-openjdk-headless jq libxml2-devel mailcap git automake make openssl openssl-devel attr diffutils curl python3 unzip" + INSTALL_PACKAGES="clang-tools-extra curl-devel fuse fuse-devel gcc libstdc++-devel gcc-c++ glibc-langpack-en java-17-openjdk-headless jq libxml2-devel mailcap git automake make openssl openssl-devel perl-Test-Harness attr diffutils curl python3 unzip" elif [ "${CONTAINER_FULLNAME}" = "fedora:41" ]; then PACKAGE_MANAGER_BIN="dnf" PACKAGE_UPDATE_OPTIONS="update -y -qq" PACKAGE_INSTALL_OPTIONS="install -y" - INSTALL_PACKAGES="clang clang-tools-extra cppcheck curl-devel fuse fuse-devel gcc libstdc++-devel gcc-c++ glibc-langpack-en java-latest-openjdk-headless jq libxml2-devel mailcap git automake make openssl openssl-devel curl attr diffutils procps python3-pip unzip libcxx libcxx-devel ShellCheck" + INSTALL_PACKAGES="clang clang-tools-extra cppcheck curl-devel fuse fuse-devel gcc libstdc++-devel gcc-c++ glibc-langpack-en java-latest-openjdk-headless jq libxml2-devel mailcap git automake make openssl openssl-devel perl-Test-Harness curl attr diffutils procps python3-pip unzip libcxx libcxx-devel ShellCheck" elif [ "${CONTAINER_FULLNAME}" = "fedora:40" ]; then PACKAGE_MANAGER_BIN="dnf" PACKAGE_UPDATE_OPTIONS="update -y -qq" PACKAGE_INSTALL_OPTIONS="install -y" - INSTALL_PACKAGES="clang clang-tools-extra cppcheck curl-devel fuse fuse-devel gcc libstdc++-devel gcc-c++ glibc-langpack-en java-latest-openjdk-headless jq libxml2-devel mailcap git automake make openssl openssl-devel curl attr diffutils procps python3-pip unzip libcxx libcxx-devel ShellCheck" + INSTALL_PACKAGES="clang clang-tools-extra cppcheck curl-devel fuse fuse-devel gcc libstdc++-devel gcc-c++ glibc-langpack-en java-latest-openjdk-headless jq libxml2-devel mailcap git automake make openssl perl-Test-Harness openssl-devel curl attr diffutils procps python3-pip unzip libcxx libcxx-devel ShellCheck" elif [ "${CONTAINER_FULLNAME}" = "opensuse/leap:15" ]; then PACKAGE_MANAGER_BIN="zypper" @@ -171,7 +171,7 @@ elif [ "${CONTAINER_FULLNAME}" = "alpine:3.21" ]; then PACKAGE_UPDATE_OPTIONS="update --no-progress" PACKAGE_INSTALL_OPTIONS="add --no-progress --no-cache" - INSTALL_PACKAGES="bash clang-extra-tools curl g++ make automake autoconf libtool git curl-dev fuse-dev jq libxml2-dev openssl coreutils procps attr sed mailcap openjdk17 aws-cli" + INSTALL_PACKAGES="bash clang-extra-tools curl g++ make automake autoconf libtool git curl-dev fuse-dev jq libxml2-dev openssl coreutils procps attr sed mailcap openjdk17 perl-test-harness-utils aws-cli" AWSCLI_DIRECT_INSTALL=0 diff --git a/.gitignore b/.gitignore index 2baaf73..5142c42 100644 --- a/.gitignore +++ b/.gitignore @@ -82,8 +82,11 @@ src/s3fs src/test_curl_util src/test_page_list src/test_string_util + test/chaos-http-proxy-* test/junk_data +test/pjdfstest +test/pjd-pjdfstest-* test/s3proxy-* test/write_multiblock test/mknod_test diff --git a/test/integration-test-common.sh b/test/integration-test-common.sh index 5138dae..cf15029 100644 --- a/test/integration-test-common.sh +++ b/test/integration-test-common.sh @@ -94,6 +94,8 @@ S3PROXY_BINARY="${S3PROXY_BINARY-"s3proxy-${S3PROXY_VERSION}"}" CHAOS_HTTP_PROXY_VERSION="1.1.0" CHAOS_HTTP_PROXY_BINARY="chaos-http-proxy-${CHAOS_HTTP_PROXY_VERSION}" +PJDFSTEST_HASH="c711b5f6b666579846afba399a998f74f60c488b" + if [ ! -f "$S3FS_CREDENTIALS_FILE" ] then echo "Missing credentials file: ${S3FS_CREDENTIALS_FILE}" @@ -194,6 +196,18 @@ function start_s3proxy { # wait for Chaos HTTP Proxy to start wait_for_port 1080 fi + + if [ ! -d "pjd-pjdfstest-${PJDFSTEST_HASH:0:7}" ]; then + curl "https://api.github.com/repos/pjd/pjdfstest/tarball/${PJDFSTEST_HASH}" \ + --fail --location --silent --output /tmp/pjdfstest.tar.gz + tar zxf /tmp/pjdfstest.tar.gz + rm -f /tmp/pjdfstest.tar.gz + + rm -f pjdfstest + ln -s "pjd-pjdfstest-${PJDFSTEST_HASH:0:7}" pjdfstest + + (cd pjdfstest && autoreconf -ifs && ./configure && make) + fi } function stop_s3proxy { diff --git a/test/integration-test-main.sh b/test/integration-test-main.sh index f6df6f7..2fc193a 100755 --- a/test/integration-test-main.sh +++ b/test/integration-test-main.sh @@ -2721,6 +2721,43 @@ function test_statvfs() { fi } +function test_pjdfstest() { + # TODO: explain exclusions + # fails with -o use_cache: ../../pjdfstest/tests/rmdir/01.t + prove -rv \ + ../../pjdfstest/tests/chflags/*.t \ + ../../pjdfstest/tests/chmod/0[4689].t \ + ../../pjdfstest/tests/chmod/10.t \ + ../../pjdfstest/tests/chown/0[4689].t \ + ../../pjdfstest/tests/chown/10.t \ + ../../pjdfstest/tests/ftruncate/0[147-9].t \ + ../../pjdfstest/tests/ftruncate/1[0134].t \ + ../../pjdfstest/tests/granular/*.t \ + ../../pjdfstest/tests/link/*.t \ + ../../pjdfstest/tests/mkdir/0[347-9].t \ + ../../pjdfstest/tests/mkdir/1[12]*.t \ + ../../pjdfstest/tests/mkfifo/0[3478].t \ + ../../pjdfstest/tests/mkfifo/1*.t \ + ../../pjdfstest/tests/mknod/0[479].t \ + ../../pjdfstest/tests/mknod/10.t \ + ../../pjdfstest/tests/open/0[49].t \ + ../../pjdfstest/tests/open/1*.t \ + ../../pjdfstest/tests/open/2[0-134].t \ + ../../pjdfstest/tests/posix_fallocate/*.t \ + ../../pjdfstest/tests/rename/0[2-36-8].t \ + ../../pjdfstest/tests/rename/1[15-9].t \ + ../../pjdfstest/tests/rename/22.t \ + ../../pjdfstest/tests/rmdir/0[3-59].t \ + ../../pjdfstest/tests/rmdir/1[02-5].t \ + ../../pjdfstest/tests/symlink/0[13479].t \ + ../../pjdfstest/tests/symlink/1*.t \ + ../../pjdfstest/tests/truncate/0[147-9].t \ + ../../pjdfstest/tests/truncate/1[0134].t \ + ../../pjdfstest/tests/unlink/0[47-8].t \ + ../../pjdfstest/tests/unlink/1[02-4].t \ + ../../pjdfstest/tests/utimensat/0[1-58-9].t +} + function add_all_tests { if s3fs_args | grep -q use_cache; then add_tests test_cache_file_stat @@ -2856,6 +2893,10 @@ function add_all_tests { # add_tests test_chown_mountpoint add_tests test_time_mountpoint add_tests test_statvfs + + if ! uname | grep -q Darwin; then + add_tests test_pjdfstest + fi } init_suite