Skip to content

Created abi test workflow #408

Created abi test workflow

Created abi test workflow #408

Workflow file for this run

#
# Copyright 2021-2024 Ribose Inc. (https://www.ribose.com)
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of
# this software and associated documentation files (the "Software"), to deal in
# the Software without restriction, including without limitation the rights to
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
# the Software, and to permit persons to whom the Software is furnished to do so,
# subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
name: build-and-test
on:
push:
branches: [ main ]
pull_request:
workflow_dispatch:
concurrency:
group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
cancel-in-progress: true
env:
MAKEFLAGS: j4
jobs:
build-and-test:
runs-on: ${{ matrix.os }}
name: ${{ matrix.os }}-${{ matrix.env.CC }} shared lib ${{ matrix.shared }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-20.04, ubuntu-22.04, ubuntu-24.04, macos-11, macos-14, windows-2019, windows-2022 ]
env: [ { } ]
shared: [on, off]
# on macos gcc is an alias to clang by default, so there is no real value in macos clang run
include:
- { os: ubuntu-20.04, env: { CC: clang, CXX: clang++ }, shared: on }
- { os: ubuntu-20.04, env: { CC: clang, CXX: clang++ }, shared: off }
- { os: ubuntu-22.04, env: { CC: clang, CXX: clang++ }, shared: on }
- { os: ubuntu-22.04, env: { CC: clang, CXX: clang++ }, shared: off }
- { os: ubuntu-24.04, env: { CC: clang, CXX: clang++ }, shared: on }
- { os: ubuntu-24.04, env: { CC: clang, CXX: clang++ }, shared: off }
# Build of sexp dll with MSVC is not supported
exclude:
- { os: windows-2019, env: { }, shared: on }
env: ${{ matrix.env }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Adjust environment for Windows build
if: runner.os == 'Windows'
shell: bash
run: echo "OSTYPE=windows" >> $GITHUB_ENV
- name: Adjust environment
run: echo "SHARED_LIB=${{ matrix.shared }}" >> $GITHUB_ENV
- name: Configure
run: cmake -Bbuild -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=${{ matrix.shared }}
- name: Build
run: cmake --build build --config Release
- name: Run tests
run: ctest --test-dir build --output-on-failure
- name: Checkout shell test framework
uses: actions/checkout@v4
with:
repository: kward/shunit2
path: ${{github.workspace}}/tests/shunit2
fetch-depth: 1
- name: Install
run: cmake --install build
- name: Run additional tests
shell: bash
run: tests/scripts/tests.sh
offline-gtest:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install googletest
run: |
sudo apt-get -y install googletest
sudo cmake -B/usr/src/googletest/build /usr/src/googletest
sudo cmake --build /usr/src/googletest/build
sudo cmake --install /usr/src/googletest/build
- name: Configure
run: |
cmake -Bbuild \
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install \
-DCMAKE_BUILD_TYPE=Release \
-DDOWNLOAD_GTEST=OFF
- name: Build
run: cmake --build build
- name: Run tests
run: ctest --test-dir build --output-on-failure
sanitizers:
runs-on: ubuntu-latest
env:
CC: clang
CXX: clang++
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Configure
run: |
cmake -Bbuild \
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install \
-DWITH_SANITIZERS=ON
- name: Build
run: cmake --build build
- name: Run tests
run: ctest --test-dir build --output-on-failure