Skip to content

Test

Test #120

Workflow file for this run

name: Test
on:
push:
paths-ignore:
- 'README.md'
- '.gitignore'
- 'LICENSE'
- 'CHANGELOG.md'
- 'doc/**'
- 'tools/**'
jobs:
build:
runs-on: ${{ matrix.os }}
name: ${{ matrix.name }}
strategy:
fail-fast: false
matrix:
include:
- { os: macos-latest, name: 'macOS latest' }
- { os: windows-latest, module: true, name: 'Windows latest' }
- { os: ubuntu-latest, compiler: gcc, version: 11, name: 'GCC 11' }
- { os: ubuntu-latest, compiler: gcc, version: 12, name: 'GCC 12' }
- { os: ubuntu-latest, compiler: gcc, version: 13, name: 'GCC 13' }
- { os: ubuntu-24.04, compiler: gcc, version: 14, module: true, name: 'GCC 14' }
- { os: ubuntu-22.04, compiler: clang, version: 13, name: 'Clang 13' }
- { os: ubuntu-22.04, compiler: clang ,version: 14, name: 'Clang 14' }
- { os: ubuntu-22.04, compiler: clang, version: 15, name: 'Clang 15' }
- { os: ubuntu-22.04, compiler: clang, version: 16, name: 'Clang 16' }
- { os: ubuntu-latest, compiler: clang, version: 17, name: 'Clang 17' }
- { os: ubuntu-latest, compiler: clang, version: 18, module: true, name: 'Clang 13' }
- { os: ubuntu-latest, compiler: clang, version: 19, module: true, name: 'Clang 19' }
- { os: ubuntu-latest, compiler: clang, version: 20, module: true, name: 'Clang 20' }
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: System Setup
shell: bash
run: |
if [[ '${{ matrix.os }}' == ubuntu-* ]]; then
if [[ '${{ matrix.compiler }}' == 'clang' ]]; then
wget https://apt.llvm.org/llvm.sh
chmod u+x llvm.sh
sudo ./llvm.sh ${{ matrix.version }}
sudo apt-get install -y clang-tools-${{ matrix.version }}
echo "CC=clang-${{ matrix.version }}" >> $GITHUB_ENV
echo "CXX=clang++-${{ matrix.version }}" >> $GITHUB_ENV
fi
if [[ '${{ matrix.compiler }}' == 'gcc' ]]; then
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -y gcc-${{ matrix.version }} g++-${{ matrix.version }}
echo "CC=gcc-${{ matrix.version }}" >> $GITHUB_ENV
echo "CXX=g++-${{ matrix.version }}" >> $GITHUB_ENV
fi
mkdir bin
wget -qO- https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux.zip | \
gunzip > bin/ninja
chmod a+x bin/ninja
echo PATH=`pwd`/bin:$PATH >> $GITHUB_ENV
echo "CMAKE_GENERATOR=-GNinja" >> $GITHUB_ENV
fi
if [[ '${{ matrix.module}}' == 'true' ]]; then
echo "CMAKE_ARGS=-DISPTR_ENABLE_MODULE=ON" >> $GITHUB_ENV
fi
- name: Configure
shell: bash
run: |
cmake $CMAKE_GENERATOR -S . -B build $CMAKE_ARGS -DISPTR_ENABLE_PYTHON=ON -DCMAKE_BUILD_TYPE=Release
- name: Build and Test
shell: bash
run: |
cmake --build build --config Release --target run-test
container:
runs-on: ubuntu-latest
name: ${{ matrix.name }}
container: ${{ matrix.container }}
strategy:
fail-fast: false
matrix:
include:
- {container: gcc:15.1, module: true, name: 'GCC 15'}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: System Setup
shell: bash
run: |
apt-get update
apt-get install -y python3-dev
export CMAKE_VERSION=3.28.6
wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-Linux-x86_64.sh \
-q -O /tmp/cmake-install.sh \
&& chmod u+x /tmp/cmake-install.sh \
&& /tmp/cmake-install.sh --skip-license --prefix=/usr \
rm -f /tmp/cmake-install.sh
wget -qO- https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux.zip | \
gunzip > /usr/bin/ninja
chmod a+x /usr/bin/ninja
echo "CMAKE_GENERATOR=-GNinja" >> $GITHUB_ENV
if [[ '${{ matrix.module}}' == 'true' ]]; then
echo "CMAKE_ARGS=-DISPTR_ENABLE_MODULE=ON" >> $GITHUB_ENV
fi
- name: Configure
shell: bash
run: |
cmake $CMAKE_GENERATOR -S . -B build $CMAKE_ARGS -DISPTR_ENABLE_PYTHON=ON -DCMAKE_BUILD_TYPE=Release
- name: Build and Test
shell: bash
run: |
cmake --build build --config Release --target run-test