Skip to content

refactor: install clang tools on demand #579

refactor: install clang tools on demand

refactor: install clang tools on demand #579

Workflow file for this run

name: "Test CI"
on:
push:
branches: [main]
paths:
- cpp-linter/**
- Cargo.toml
- Cargo.lock
- .github/workflows/run-dev-tests.yml
pull_request:
branches: [main]
paths:
- cpp-linter/**
- Cargo.toml
- Cargo.lock
- .github/workflows/run-dev-tests.yml
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
permissions: {}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
test:
strategy:
fail-fast: false
matrix:
os: ["windows-latest", ubuntu-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- name: Setup Rust
run: |-
rustup update --no-self-update
rustup component add llvm-tools-preview
# https://docs.rs/openssl/latest/openssl/#automatic
# - name: Install OpenSSL (Linux)
# if: runner.os == 'Linux'
# run: sudo apt-get install -y pkg-config libssl-dev
# - name: Install OpenSSL (MacOS)
# if: runner.os == 'macOS'
# run: brew install openssl@3
# - name: Install OpenSSL (Windows)
# if: runner.os == 'Windows'
# run: vcpkg install openssl
- uses: cargo-bins/cargo-binstall@ea60fcf749c6a52a729e0eaabb5eb33391d44823 # v1.16.4
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Install third-party binaries
run: >-
cargo binstall -y --locked cargo-nextest cargo-llvm-cov nur nu
env:
GITHUB_TOKEN: ${{ github.token }}
- uses: actions/setup-python@v6
with:
python-version: 3.x
- name: Install uv
uses: astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098 # v7.3.1
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
# # https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages
- name: Install ninja (Linux)
if: runner.os == 'Linux'
run: sudo apt-get install ninja-build
- name: Install ninja (Windows)
if: runner.os == 'Windows'
run: choco install ninja
- name: Cache .cargo locked resources
uses: actions/cache@v5
with:
path: ~/.cargo
key: ${{ runner.os }}-tests-cargo-${{ hashFiles('Cargo.lock') }}
- name: Fetch .cargo locked resources
run: cargo fetch
- if: runner.os == 'Linux'
run: sudo apt-get update
- name: Install nushell
uses: hustcer/setup-nu@920172d92eb04671776f3ba69d605d3b09351c30 # v3.22
- name: Run test suite
env:
MIN_CLANG_VERSION: "11"
MAX_CLANG_VERSION: "22"
run: |-
let max_ver = $env.MAX_CLANG_VERSION | into int
let min_ver = $env.MIN_CLANG_VERSION | into int
for $ver in ($min_ver..$max_ver) {
print $"::group::Testing with clang v($ver)"
with-env { CLANG_VERSION: $"($ver)" } {
let test_profile = (
if ($ver == $max_ver) { "all" } else { "ci" }
)
nur test --profile $test_profile
}
print "::endgroup::"
}
- name: Generate Coverage HTML report
run: nur test llvm-cov
- name: Upload coverage data
uses: actions/upload-artifact@v7
with:
name: HTML_report-${{ runner.os }}
path: target/llvm-cov/html
- name: Generate Coverage lcov report
run: nur test lcov
- uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
with:
token: ${{secrets.CODECOV_TOKEN}}
files: lcov.info
fail_ci_if_error: true # optional (default = false)