Test fixes, upgrade quickcheck #529
Workflow file for this run
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: CI | |
on: | |
pull_request: | |
push: | |
branches: [main, master] | |
env: | |
RUSTFLAGS: "-C debuginfo=0 -D warnings" | |
CARGO_TERM_COLOR: always | |
CARGO_INCREMENTAL: 0 | |
jobs: | |
tests: | |
name: Tests | |
runs-on: ${{ matrix.os }} | |
continue-on-error: ${{ matrix.toolchain == 'nightly' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-latest, windows-latest, ubuntu-latest] | |
toolchain: [stable, beta, nightly] | |
include: | |
- os: macos-latest | |
MACOS: true | |
- os: windows-latest | |
- os: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: install linux deps | |
run: | | |
sudo apt update | |
sudo apt install -y --no-install-recommends libasound2-dev pkg-config | |
if: contains(matrix.os, 'ubuntu') | |
- name: install ${{ matrix.toolchain }} toolchain | |
id: install_toolchain | |
run: rustup toolchain install ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }} | |
- run: cargo clippy -- -D warnings | |
if: matrix.toolchain == 'stable' && matrix.os == 'ubuntu-latest' | |
- run: | | |
rustup component add rustfmt | |
cargo fmt --all -- --check | |
if: matrix.toolchain == 'stable' && matrix.os == 'ubuntu-latest' | |
- run: cargo test --all-targets | |
- run: cargo test --lib --bins --tests --benches --features=experimental | |
- run: cargo test --all-targets --features=symphonia-all | |
# `cargo test` does not check benchmarks and `cargo test --all-targets` excludes | |
# documentation tests. Therefore, we need an additional docs test command here. | |
- run: cargo test --doc | |
cargo-publish: | |
if: github.event_name == 'push' && github.ref == 'refs/heads/master' | |
env: | |
CRATESIO_TOKEN: ${{ secrets.CRATESIO_TOKEN }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Update apt | |
run: sudo apt update | |
- name: Install alsa | |
run: sudo apt install -y --no-install-recommends libasound2-dev pkg-config | |
- name: Run cargo publish for rodio | |
continue-on-error: true | |
run: | | |
RODIO_TMP=$(mktemp /tmp/rodioXXX.txt) || echo "::error::mktemp error" | |
echo "RODIO_TMP=$RODIO_TMP" >> $GITHUB_ENV | |
cargo publish --token $CRATESIO_TOKEN 2> $RODIO_TMP | |
- name: Check if rodio is already published | |
run: | | |
empty=0 | |
RODIO_TMP="${{ env.RODIO_TMP }}" | |
grep -q '[^[:space:]]' < $RODIO_TMP || empty=1 | |
[ $empty -eq 0 ] && cat $RODIO_TMP | |
[ $empty -eq 1 ] || grep -q "is already uploaded" < $RODIO_TMP | |
create-git-tag: | |
if: github.event_name == 'push' && github.ref == 'refs/heads/master' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check if WORKFLOW_TOKEN is set | |
run: | | |
if [ -z "${{ secrets.WORKFLOW_TOKEN }}" ]; then | |
echo "Personal access token WORKFLOW_TOKEN is not set" | |
exit 1 | |
else | |
echo "Checked `WORKFLOW_TOKEN` is set" | |
fi | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Fetch all history to list all existing tags | |
token: ${{ secrets.WORKFLOW_TOKEN }} | |
- name: Extract version from Cargo.toml | |
id: extract_version | |
run: | | |
version=$(awk '/\[package\]/,/^version/ { if ($1 == "version") { gsub(/"/, "", $3); print $3 } }' Cargo.toml) | |
echo "Version value found: $version" | |
echo "version=$version" >> $GITHUB_OUTPUT | |
- name: Check if tag exists | |
id: check_tag | |
run: | | |
version=${{ steps.extract_version.outputs.version }} | |
version_name="v$version" | |
if git rev-parse "refs/tags/$version_name" >/dev/null 2>&1; then | |
echo "Tag $version_name already exists" | |
echo "tag_exists=true" >> $GITHUB_OUTPUT | |
else | |
echo "Tag $version_name does not exist" | |
echo "tag_exists=false" >> $GITHUB_OUTPUT | |
fi | |
- name: Create and push tag | |
if: steps.check_tag.outputs.tag_exists == 'false' | |
run: | | |
version=${{ steps.extract_version.outputs.version }} | |
git config --global user.name 'github-actions' | |
git config --global user.email 'github-actions@github.com' | |
version_name="v$version" | |
git tag -a "$version_name" -m "Release for $version_name" | |
git push origin $version_name |