Skip to content

Refactor command execution #3842

Refactor command execution

Refactor command execution #3842

Workflow file for this run

name: Linux
on:
push:
branches: [main]
pull_request:
env:
POAC_TERM_COLOR: always
permissions:
contents: read
jobs:
build-and-test:
name: "build & test (${{ matrix.compiler.cxx }}-${{ matrix.compiler.ver }})"
runs-on: ${{ matrix.compiler.os }}
strategy:
fail-fast: false
matrix:
compiler:
- cxx: clang++
ver: 15
os: ubuntu-22.04
- cxx: clang++
ver: 16
os: ubuntu-22.04
- cxx: clang++
ver: 17
os: ubuntu-24.04
- cxx: clang++
ver: 18
os: ubuntu-24.04
- cxx: g++
ver: 12
os: ubuntu-24.04
- cxx: g++
ver: 13
os: ubuntu-24.04
- cxx: g++
ver: 14
os: ubuntu-24.04
env:
CXX: ${{ matrix.compiler.cxx }}-${{ matrix.compiler.ver }}
steps:
- uses: actions/checkout@v4
- name: Setup Clang
if: startsWith(matrix.compiler.cxx, 'clang')
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x ./llvm.sh
sudo ./llvm.sh ${{ matrix.compiler.ver }}
- name: Setup GCC
if: matrix.compiler.cxx == 'g++' && matrix.compiler.ver == 14
run: sudo apt update && sudo apt install -y gcc-14
- name: Setup dependencies
uses: ./.github/actions/setup-ubuntu-deps
- name: Print versions
run: make versions
- name: First Generation Build
run: make -j4
- name: Test the first generation
run: make test -j4
- name: Second Generation Build
run: ./build-out/poac build --verbose
- name: Test the second generation
run: ./poac-out/debug/poac test --verbose
- name: Third Generation Build & Test
run: ./poac-out/debug/poac --verbose run --release test --verbose
- name: Print Poac version
run: ./poac-out/debug/poac version --verbose
- name: Create a new project with the third generation
run: ./poac-out/debug/poac new hello_world
- name: Run the new project
run: ../poac-out/debug/poac --verbose run
working-directory: hello_world
# - name: Print coverage
# if: success() && matrix.coverage == 'on'
# run: |
# lcov --directory . --capture --output-file coverage.info --gcov-tool "${CC_PATH/gcc/gcov}"
# lcov --remove coverage.info '/usr/*' "${HOME}"'/.cache/*' --output-file coverage.info
# lcov --list coverage.info
# env:
# CC_PATH: /usr/bin/${{ env.CC }}