Testing and building your Rust project with GitHub Actions
Tests are not meant to be manually run each time you write code. It would be a bad usage of your precious time. Indeed, Rust takes (by design) a loooong time to compile. Running tests on your own machine more than a few times a day would break your focus.
Instead, tests should be run from CI (Continuous Integration). CI systems are pipelines you configure that will run your tests each time you push code. Nowadays practically all code platforms (GitHub, GitLab, sourcehut...) provide built-in CI. You can find examples of CI workflows for Rust projects here: https://github.com/skerkour/phaser/tree/main/.github/workflows.
This post is an excerpt from my book Black Hat Rust
name: CI # This workflow run tests and build for each push on: push: branches: - main - 'feature-**' jobs: test_phaser: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Update local toolchain run: | rustup update rustup component add clippy rustup install nightly - name: Toolchain info run: | cargo --version --verbose rustc --version cargo clippy --version - name: Lint run: | cd phaser cargo fmt -- --check cargo clippy -- -D warnings - name: Test run: | cd phaser cargo check cargo test --all - name: Build run: | cd phaser cargo build --release