Use nightly formatting features #542
This file contains hidden or 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: Rust | |
| on: | |
| push: | |
| branches: [ master, dev ] | |
| pull_request: | |
| branches: [ master, dev ] | |
| jobs: | |
| fmt: | |
| runs-on: ubuntu-latest | |
| name: check rustfmt formatting | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - uses: dtolnay/rust-toolchain@nightly | |
| - name: Install rustfmt component | |
| run: rustup component add --toolchain nightly rustfmt | |
| - name: Verify formatting | |
| run: cargo +nightly fmt --all -- --check | |
| ubuntu: | |
| runs-on: ubuntu-latest | |
| name: test on ubuntu | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Cargo Dependencies | |
| uses: Swatinem/[email protected] | |
| - name: Build without default features | |
| run: cargo +stable build --no-default-features --verbose | |
| - name: Run tests without default features | |
| run: cargo +stable test --no-default-features --verbose | |
| - name: Build with rayon feature | |
| run: cargo +stable build --features rayon --verbose | |
| - name: Run tests with rayon feature | |
| run: cargo +stable test --features rayon --verbose | |
| macos: | |
| runs-on: macos-latest | |
| name: test on mac os | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Cargo Dependencies | |
| uses: Swatinem/[email protected] | |
| - name: Build without default features | |
| run: cargo +stable build --no-default-features --verbose | |
| - name: Run tests without default features | |
| run: cargo +stable test --no-default-features --verbose | |
| - name: Build with rayon feature | |
| run: cargo +stable build --features rayon --verbose | |
| - name: Run tests with rayon feature | |
| run: cargo +stable test --features rayon --verbose | |
| verify-msrv: | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| runs-on: ${{ matrix.os }} | |
| name: verify minimum supported rust version without cache (takes longer, but caching produces unexpected behaviour) | |
| timeout-minutes: 30 | |
| # we are using the `cargo-msrv` app | |
| # https://github.com/foresterre/cargo-msrv | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Install foresterre/cargo-msrv | |
| run: cargo +stable install cargo-msrv | |
| - uses: dtolnay/rust-toolchain@nightly | |
| - name: Generate Cargo.lock with minimal-version dependencies | |
| run: cargo +stable -Zminimal-versions generate-lockfile | |
| - name: Verify the Rustc version declared in `Cargo.toml` with `minimal-versions` | |
| run: cargo-msrv verify | |
| # github actions does not support big endian systems directly, but it does support QEMU. | |
| # so we use cross-rs, which uses QEMU internally. | |
| big-endian: | |
| runs-on: ubuntu-latest | |
| name: test on emulated big endian system | |
| timeout-minutes: 90 # todo just make tests faster wtf | |
| # we are using the cross project for cross compilation: | |
| # https://github.com/cross-rs/cross | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Install or use cached cross-rs/cross | |
| uses: baptiste0928/cargo-install@v1 | |
| with: | |
| crate: cross | |
| - name: Cache Cargo Dependencies | |
| uses: Swatinem/[email protected] | |
| - name: Start Docker | |
| run: sudo systemctl start docker | |
| # https://github.com/cross-rs/cross#supported-targets | |
| - name: Cross-Compile project to powerpc-unknown-linux-gnu without rayon feature | |
| run: cross build --target powerpc-unknown-linux-gnu --no-default-features --verbose | |
| - name: Cross-Run Tests in powerpc-unknown-linux-gnu without rayon feature | |
| run: cross test --target powerpc-unknown-linux-gnu --no-default-features --verbose | |
| - name: Cross-Compile project to powerpc-unknown-linux-gnu with rayon feature | |
| run: cross build --target powerpc-unknown-linux-gnu --features rayon --verbose | |
| - name: Cross-Run Tests in powerpc-unknown-linux-gnu with rayon feature | |
| run: cross test --target powerpc-unknown-linux-gnu --features rayon --verbose | |
| wasm32: | |
| runs-on: ubuntu-latest | |
| name: test on wasm32 | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Cargo Dependencies | |
| uses: Swatinem/[email protected] | |
| - name: Add wasm32 Target | |
| run: rustup target add wasm32-unknown-unknown | |
| - name: Build without default features | |
| run: cargo +stable build --verbose --no-default-features --target wasm32-unknown-unknown | |
| - name: Run tests without default features | |
| run: cargo +stable test --verbose --no-default-features | |
| js: | |
| runs-on: ubuntu-latest | |
| name: test on wasm32 via javascript api | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| registry-url: 'https://registry.npmjs.org' | |
| - name: Cache Cargo Dependencies | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: exrs-wasm | |
| - name: Install wasm-pack | |
| run: cargo +stable install wasm-pack | |
| # todo: cache? | |
| - name: Install | |
| run: npm ci | |
| working-directory: exrs-wasm/js | |
| - name: Build and test wasm package | |
| run: npm run test | |
| working-directory: exrs-wasm/js | |