--- on: [push] name: CI jobs: formatting: name: Formatting runs-on: docker steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Rust uses: https://github.com/dtolnay/rust-toolchain@stable with: components: rustfmt - name: Check Rust formatting run: cargo fmt --all -- --check clippy: name: Clippy runs-on: docker steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Rust uses: https://github.com/dtolnay/rust-toolchain@stable with: components: clippy - name: Run Clippy run: cargo clippy -- -D warnings build: name: Build (and test, for now) runs-on: docker steps: - name: Checkout uses: actions/checkout@v4 # TODO: Find some other method of managing this that doesn't require me to set stuff up myself - name: Set up Python toolchain uses: actions/setup-python@v5 with: cache: pip - name: Set up Python environment run: | curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py python3 -m pip install virtualenv python3 -m virtualenv venv source venv/bin/activate pip install -r requirements.txt - name: Set up Rust uses: https://github.com/dtolnay/rust-toolchain@stable - name: Build Rust code run: | source venv/bin/activate maturin develop # TODO: Moving tests to another job feels like better form # FIXME: The runner's Python version is 3.9, which breaks one some of the type syntax found in the tests # - name: Run Python tests # run: | # source venv/bin/activate # pytest tests/*.py - name: Run Rust tests run: | source venv/bin/activate cargo test