Thanks to visit codestin.com
Credit goes to github.com

Skip to content
69 changes: 69 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -256,13 +256,47 @@ jobs:
steps:
- uses: actions/[email protected]
- uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/install-action@cargo-llvm-cov
- uses: Swatinem/rust-cache@v2
- uses: actions/[email protected]
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Set up the Mac environment
run: brew install autoconf automake libtool openssl@3
if: runner.os == 'macOS'
- name: Set up coverage environment (Unix)
run: |
eval "$(cargo llvm-cov show-env --export-prefix)"
echo "RUSTFLAGS<<EOF" >> $GITHUB_ENV
echo "$RUSTFLAGS" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
echo "LLVM_PROFILE_FILE=$LLVM_PROFILE_FILE" >> $GITHUB_ENV
echo "CARGO_LLVM_COV=1" >> $GITHUB_ENV
echo "CARGO_LLVM_COV_TARGET_DIR=$CARGO_LLVM_COV_TARGET_DIR" >> $GITHUB_ENV
shell: bash
if: runner.os != 'Windows'
- name: Set up coverage environment (Windows)
run: |
$output = cargo llvm-cov show-env --export-prefix
foreach ($line in $output) {
$line = $line.Trim()
if ($line -match "^export\s+([A-Z_]+)='([^']*)'") {
$name = $Matches[1]
$value = $Matches[2]
Write-Host "Setting $name"
if ($name -eq "RUSTFLAGS") {
"$name<<EOF" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
$value | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
"EOF" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
} else {
"$name=$value" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
}
}
}
shell: pwsh
if: runner.os == 'Windows'
- name: Clean coverage data
run: cargo llvm-cov clean --workspace
- name: build rustpython
run: cargo build --release --verbose --features=threading ${{ env.CARGO_ARGS }}
if: runner.os == 'macOS'
Expand Down Expand Up @@ -316,6 +350,41 @@ jobs:
- name: Check whats_left is not broken
run: python -I whats_left.py

- name: Generate coverage report
run: cargo llvm-cov report --release --lcov --output-path=codecov.lcov
- name: Upload coverage artifact
uses: actions/upload-artifact@v4
with:
name: coverage-${{ matrix.os }}
path: ./codecov.lcov

coverage:
name: Upload coverage to Codecov
runs-on: ubuntu-latest
needs: snippets_cpython
if: always() && !contains(github.event.pull_request.labels.*.name, 'skip:ci')
steps:
- uses: actions/[email protected]
- name: Download all coverage artifacts
uses: actions/download-artifact@v4
with:
pattern: coverage-*
path: coverage
merge-multiple: false
- name: List coverage files
run: |
if [ -d coverage ]; then
find coverage -name "*.lcov" -type f
else
echo "No coverage directory found"
fi
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
if: hashFiles('coverage/**/*.lcov') != ''
with:
directory: ./coverage
fail_ci_if_error: false

lint:
name: Check Rust code with clippy
runs-on: ubuntu-latest
Expand Down
Loading