fix: do not change directory to repo-root
#744
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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) |