Skip to content

fix: do not change directory to repo-root #744

fix: do not change directory to repo-root

fix: do not change directory to repo-root #744

Workflow file for this run

name: "Test CI"
on:
push:
branches: [main]
paths:
- cpp-linter/**
- clang-tools-manager/**
- Cargo.toml
- Cargo.lock
- .github/workflows/run-dev-tests.yml
pull_request:
branches: [main]
paths:
- cpp-linter/**
- clang-tools-manager/**
- 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:
seed-build-script:
runs-on: ubuntu-latest
name: Pre-seed static binaries' versions
steps:
- env:
GITHUB_TOKEN: ${{ github.token }}
run: >-
gh release download
-R cpp-linter/clang-tools-static-binaries
--pattern versions.json
--output versions.json
- name: Upload versions.json
uses: actions/upload-artifact@v7
with:
name: static-binary-versions
path: versions.json
if-no-files-found: error
test:
needs: [seed-build-script]
strategy:
fail-fast: false
matrix:
os: ["windows-latest", ubuntu-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6.0.2
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@aaa84a43aec4955a42c5ffc65d258961e39f276e # v1.19.1
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@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
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.0.5
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@92c296ba1ba2ba04cc948ab64ddefe192dc13f0c # v3.23
- name: Restore build script seed
uses: actions/download-artifact@v8
with:
name: static-binary-versions
path: clang-tools-manager
- name: Run test suite
shell: nu {0}
run: |-
let version_info = open "clang-tools-manager/versions.json"
mut max_ver = 0
mut min_ver = 99
for ver in ($version_info.llvm_versions | columns) {
let ver = $ver | into int
if ($ver < $min_ver) {
$min_ver = $ver
}
if ($ver > $max_ver) {
$max_ver = $ver
}
}
let min_ver = $min_ver # make immutable
for $ver in ($min_ver..$max_ver) {
print $"::group::Testing with clang v($ver)"
with-env { CLANG_VERSION: $"($ver)" } {
nur test --profile warmup
let test_profile = (
if ($ver == $min_ver) { "all" } else { "ci" }
)
nur test --profile $test_profile
}
print "::endgroup::"
}
- name: Generate Coverage HTML report
run: nur test html
- 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@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
with:
token: ${{secrets.CODECOV_TOKEN}}
files: lcov.info
fail_ci_if_error: true # optional (default = false)