aboutsummaryrefslogtreecommitdiffstats
path: root/.github/workflows/tests.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/tests.yml')
-rw-r--r--.github/workflows/tests.yml70
1 files changed, 65 insertions, 5 deletions
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 94ae76a..a406be0 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -10,6 +10,10 @@ on:
- cron: '0 3 * * 5' # Every Friday at 3am
workflow_dispatch:
+# Minimum permissions for security
+permissions:
+ contents: read
+
jobs:
linux:
name: Build (${{ matrix.cc }} and ${{ matrix.fuse_package }} on ${{ matrix.runs-on }})
@@ -44,9 +48,23 @@ jobs:
clang_repo_suffix:
runs-on: ubuntu-22.04
fuse_package: libfuse3-dev
+ # fuse-t
+ - cc: gcc-13
+ cxx: g++-13
+ clang_major_version: null
+ clang_repo_suffix: null
+ runs-on: macos-12
+ fuse_package: fuse-t
+ # macFUSE
+ - cc: clang-15
+ cxx: clang++-15
+ clang_major_version: 15
+ clang_repo_suffix: null
+ runs-on: macos-12
+ fuse_package: macfuse
steps:
- name: Add Clang/LLVM repositories
- if: "${{ contains(matrix.cxx, 'clang') }}"
+ if: "${{ runner.os == 'Linux' && contains(matrix.cxx, 'clang') }}"
run: |-
set -x
source /etc/os-release
@@ -54,6 +72,7 @@ jobs:
sudo add-apt-repository "deb http://apt.llvm.org/${UBUNTU_CODENAME}/ llvm-toolchain-${UBUNTU_CODENAME}${{ matrix.clang_repo_suffix }} main"
- name: Install build dependencies
+ if: "${{ runner.os == 'Linux' }}"
run: |-
sudo apt-get update
sudo apt-get install --yes --no-install-recommends \
@@ -64,12 +83,39 @@ jobs:
pkg-config \
valgrind
+ - name: Install build dependencies
+ if: "${{ runner.os == 'macOS' }}"
+ run: |-
+ set -x
+
+ if [[ ${{ matrix.fuse_package }} = macfuse ]]; then
+ brew install --cask macfuse
+ elif [[ ${{ matrix.fuse_package }} = fuse-t ]]; then
+ brew tap macos-fuse-t/homebrew-cask
+ brew install fuse-t
+ else
+ false # should never get here
+ fi
+
+ brew install \
+ autoconf \
+ automake \
+ libtool \
+ pkg-config
+
- name: Install build dependency Clang ${{ matrix.clang_major_version }}
- if: "${{ contains(matrix.cxx, 'clang') }}"
+ if: "${{ runner.os == 'Linux' && contains(matrix.cxx, 'clang') }}"
run: |-
sudo apt-get install --yes --no-install-recommends -V \
clang-${{ matrix.clang_major_version }}
+ - name: Add versioned aliases for Clang ${{ matrix.clang_major_version }}
+ if: "${{ runner.os == 'macOS' && contains(matrix.cxx, 'clang') }}"
+ run: |-
+ set -x
+ sudo ln -s "$(brew --prefix llvm@${{ matrix.clang_major_version }})"/bin/clang /usr/local/bin/clang-${{ matrix.clang_major_version }}
+ sudo ln -s "$(brew --prefix llvm@${{ matrix.clang_major_version }})"/bin/clang++ /usr/local/bin/clang++-${{ matrix.clang_major_version }}
+
- name: Checkout Git branch
uses: actions/checkout@v4
@@ -79,6 +125,8 @@ jobs:
- name: 'Configure'
env:
+ CC: ${{ matrix.cc }}
+ CXX: ${{ matrix.cxx }}
CFLAGS: -Werror
run: |-
set -x
@@ -87,18 +135,30 @@ jobs:
- name: 'Build'
run: |-
set -x
- make -j$(nproc) VERBOSE=1
+ make -j$(nproc || sysctl -n hw.logicalcpu) VERBOSE=1
- name: 'Test as non-root'
run: |-
+ if [[ ${{ runner.os }} = macOS ]]; then
+ ignore_errors=true # while unfixed
+ else
+ ignore_errors=false
+ fi
+
set -x
whoami
- make check
+ make check || ${ignore_errors}
- name: 'Test as root'
run: |-
+ if [[ ${{ runner.os }} = macOS ]]; then
+ ignore_errors=true # while unfixed
+ else
+ ignore_errors=false
+ fi
+
set -x
- sudo make check
+ sudo make check || ${ignore_errors}
- name: 'Install'
run: |-