Bump the patch group with 3 updates (#227) #648
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: | |
push: | |
branches: | |
- main | |
env: | |
CARGO_TERM_COLOR: always | |
RUSTFLAGS: "-Dwarnings" | |
FORCE_COLOR: 3 | |
jobs: | |
test: | |
name: Test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
save-if: ${{ github.ref == 'refs/heads/main' }} | |
- name: Validate Cargo.lock is up-to-date | |
run: | | |
cargo check --workspace | |
git diff --exit-code | |
- name: Install cargo-llvm-cov | |
uses: taiki-e/install-action@cargo-llvm-cov | |
- name: Run tests with Coverage report enabled | |
run: cargo llvm-cov test --all-features --workspace --codecov --locked --output-path codecov_report.json | |
- name: Store PR number and commit SHA | |
run: | | |
echo "Storing PR number ${{ github.event.number }}" | |
echo "${{ github.event.number }}" > pr_number.txt | |
echo "Storing commit SHA ${{ github.event.pull_request.head.sha }}" | |
echo "${{ github.event.pull_request.head.sha }}" > commit_sha.txt | |
# Workaround for https://github.com/orgs/community/discussions/25220 | |
# Triggered sub-workflow is not able to detect the original commit/PR which is available | |
# in this workflow. | |
- name: Store PR number | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pr_number | |
path: pr_number.txt | |
- name: Store commit SHA | |
uses: actions/upload-artifact@v4 | |
with: | |
name: commit_sha | |
path: commit_sha.txt | |
# This stores the coverage report in artifacts. The actual upload to Codecov | |
# is executed by a different workflow `coverage-report.yml`. The reason for this | |
# split is because `on.pull_request` workflows don't have access to secrets. | |
- name: Store coverage report in artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: codecov_report | |
path: codecov_report.json | |
- run: | | |
echo "The coverage report was stored in Github artifacts." | |
echo "It will be uploaded to Codecov using [coverage-report.yml] workflow shortly." | |
test-other-books: | |
strategy: | |
matrix: | |
include: | |
# Update the refs below once in a while. | |
- repo: rust-lang/book | |
ref: 71352deb20727b4dda9ebfe8182709d5bf17dfea | |
- repo: google/comprehensive-rust | |
ref: 981676d811927f1b50b7654ceb4cc3c10d7fe97b | |
name: Test with ${{ matrix.repo }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
save-if: ${{ github.ref == 'refs/heads/main' }} | |
- name: Install tools | |
run: | | |
sudo apt install gettext | |
# Debug builds are fine and slightly faster. | |
cargo install --debug --path i18n-helpers | |
cargo install --debug --locked --version 0.4.35 mdbook | |
- name: Checkout ${{ matrix.repo }} | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ matrix.repo }} | |
ref: ${{ matrix.ref }} | |
path: example-book | |
- name: Test extracting text | |
working-directory: example-book | |
run: | | |
MDBOOK_OUTPUT='{"xgettext": {"pot-file": "messages.pot"}}' mdbook build -d po | |
msgfmt -o /dev/null --statistics po/messages.pot | |
fuzz: | |
name: Fuzz test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Install nightly Rust | |
run: rustup default nightly | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
# Default is "v0-rust" | |
# Use a separate key to prevent collision with main cache | |
prefix-key: "fuzz" | |
# Cache only on main build | |
save-if: ${{ github.ref == 'refs/heads/main' }} | |
cache-directories: | | |
fuzz/target | |
fuzz/corpus | |
- name: Install cargo-fuzz | |
run: cargo install cargo-fuzz | |
- name: Run group_events fuzzer and minimize corpus | |
run: | | |
cargo fuzz run group_events -- -only_ascii=1 -max_total_time=30 | |
cargo fuzz cmin group_events | |
- name: Run normalize fuzzer and minimize corpus | |
run: | | |
cargo fuzz run normalize -- -only_ascii=1 -max_total_time=30 | |
cargo fuzz cmin normalize | |
- name: Run gettext fuzzer and minimize corpus | |
run: | | |
cargo fuzz run gettext -- -only_ascii=1 -max_total_time=30 | |
cargo fuzz cmin gettext | |
- name: Run xgettext fuzzer and minimize corpus | |
run: | | |
cargo fuzz run xgettext -- -only_ascii=1 -max_total_time=30 | |
cargo fuzz cmin xgettext | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
- name: Clippy | |
run: cargo clippy --all-targets | |
format: | |
name: Format | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Rust nightly | |
run: rustup default stable | |
- name: Install rustfmt | |
run: rustup component add rustfmt | |
- name: Check Formatting | |
uses: dprint/check@v2.2 |