Apply CR suggestions #300
This file contains 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: Tests | |
on: | |
pull_request: | |
branches: [main] | |
push: | |
branches: [main] | |
jobs: | |
style: | |
name: Check the code style | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- uses: pre-commit/action@v3.0.0 | |
tests: | |
name: Run python tests | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ["3.10"] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Set up test environment | |
run: | | |
python -m pip install --upgrade pip | |
pip install -e .[test] | |
- name: Create matrix id | |
id: matrix-id | |
env: | |
MATRIX_CONTEXT: ${{ toJson(matrix) }} | |
run: | | |
echo $MATRIX_CONTEXT | |
export MATRIX_ID=`echo $MATRIX_CONTEXT | md5sum | cut -c 1-32` | |
echo $MATRIX_ID | |
echo "::set-output name=id::$MATRIX_ID" | |
- name: Run tests | |
run: | | |
pytest --cov=outlines_core -vv | |
env: | |
COVERAGE_FILE: .coverage.${{ steps.matrix-id.outputs.id }} | |
- name: Upload coverage data | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-data | |
path: .coverage.* | |
if-no-files-found: ignore | |
include-hidden-files: true | |
# TODO FIXME: This is only using the last run | |
overwrite: true | |
coverage: | |
name: Check combined coverage | |
needs: [tests, cargo-test] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@v4 | |
with: | |
cache: pip | |
python-version: "3.11" | |
- name: Set up environment | |
run: | | |
pip install --upgrade "coverage[toml]>=5.1" diff-cover | |
- name: Install lcov | |
run: sudo apt-get update && sudo apt-get install -yqq lcov | |
- name: Download python coverage data | |
uses: actions/download-artifact@v4 | |
with: | |
name: coverage-data | |
- name: Download rust coverage data | |
uses: actions/download-artifact@v4 | |
with: | |
name: rust-coverage-data | |
- name: Fetch main for coverage diff | |
run: | | |
git fetch --no-tags --prune origin main | |
- name: Combine coverage & fail if it's <100%. | |
run: | | |
python -m coverage combine | |
python -m coverage lcov | |
lcov -a coverage.lcov -a lcov.info -o combined_coverage | |
genhtml combined_coverage --output-directory htmlcov | |
diff-cover combined_coverage --markdown-report=coverage.md --fail-under=100 || (cat coverage.md >> $GITHUB_STEP_SUMMARY && exit 1) | |
- name: Upload HTML report if check failed. | |
uses: actions/upload-artifact@v4 | |
with: | |
name: html-report | |
path: htmlcov | |
# TODO FIXME: This is only using the last run | |
overwrite: true | |
if: ${{ failure() }} | |
build-wheel: | |
name: Build Wheel and Test SDist | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build SDist and Wheel | |
run: ./.github/scripts/build_sdist_and_wheel.sh | |
cargo-test: | |
name: Run Cargo tests | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
# toolchain choice needs to happen before cache: rustc version used as its cache key | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@v2 | |
- name: Install cargo tarpaulin if not cached | |
run: | | |
if ! command -v cargo-tarpaulin &> /dev/null; then | |
echo "cargo-tarpaulin is not found, installing..." | |
cargo install cargo-tarpaulin | |
else | |
echo "cargo-tarpaulin is cached" | |
fi | |
- name: Generate rust code coverage | |
run: > | |
cargo tarpaulin | |
--out=Lcov | |
--output-dir=rust-coverage | |
--engine=llvm | |
--exclude-files=src/python_bindings/* | |
--no-dead-code | |
--workspace | |
--verbose | |
env: | |
RUSTFLAGS: -C instrument-coverage | |
- name: Upload rust coverage data | |
uses: actions/upload-artifact@v4 | |
with: | |
name: rust-coverage-data | |
path: rust-coverage/ | |
if-no-files-found: ignore | |
include-hidden-files: true | |
overwrite: true | |
cargo-audit: | |
name: Run Cargo audit | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
# toolchain choice needs to happen before cache: rustc version used as its cache key | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@v2 | |
- name: Install cargo audit if not cached | |
run: | | |
if ! command -v cargo-audit &> /dev/null; then | |
echo "cargo-audit is not found, installing..." | |
cargo install cargo-audit | |
else | |
echo "cargo-audit is cached" | |
fi | |
- name: Run cargo audit | |
run: cargo audit |