Set YearMonth's day to 1 in calendar space when diffing #2011
Workflow file for this run
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 - Continuous integration | |
| on: | |
| push: | |
| branches: ["main"] | |
| pull_request: | |
| branches: ["main"] | |
| concurrency: | |
| # Allow one run at a time for PRs, but multiple for other invocations | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| env: | |
| FLAGS: ${{ (github.ref == 'refs/heads/main' || github.base_ref == 'main') && '-D warnings' || '' }} | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| lint: | |
| name: Lint | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Set environment | |
| # Setting `RUSTFLAGS` overrides any flags set on .cargo/config.toml, so we need to | |
| # set the target flags instead which are cumulative. | |
| # Track https://github.com/rust-lang/cargo/issues/5376 | |
| run: | | |
| target=$(rustc -vV | awk '/^host/ { print $2 }' | tr [:lower:] [:upper:] | tr '-' '_') | |
| echo "CARGO_TARGET_${target}_RUSTFLAGS=$FLAGS" >> $GITHUB_ENV | |
| - uses: actions/checkout@v5 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: clippy, rustfmt | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| key: lint | |
| - name: Install cargo-workspaces | |
| run: cargo install cargo-workspaces | |
| - name: Check rustfmt | |
| run: cargo fmt --all -- --check | |
| - name: Check clippy | |
| run: cargo ws exec cargo clippy --all-features --all-targets | |
| - name: Check clippy (No features) | |
| run: cargo ws exec cargo clippy --no-default-features --all-targets | |
| - name: Check dependencies | |
| run: cargo run -p depcheck | |
| msrv: | |
| name: MSRV | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - name: Set environment | |
| run: | | |
| target=$(rustc -vV | awk '/^host/ { print $2 }' | tr [:lower:] [:upper:] | tr '-' '_') | |
| echo "CARGO_TARGET_${target}_RUSTFLAGS=$FLAGS" >> $GITHUB_ENV | |
| - name: Checkout repository | |
| uses: actions/checkout@v5 | |
| # Get the rust_version from the Cargo.toml | |
| - name: Get rust_version | |
| id: rust_version | |
| run: echo "rust_version=$(grep '^rust-version' Cargo.toml -m 1 | cut -d' ' -f3 | tr -d '"')" >> $GITHUB_OUTPUT | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: ${{ steps.rust_version.outputs.rust_version }} | |
| - name: Check compilation | |
| run: cargo check --all-features --all-targets | |
| build-test: | |
| name: Test (${{ matrix.rust.name }}, ${{ matrix.os }}) | |
| env: | |
| RUSTUP_WINDOWS_PATH_ADD_BIN: 1 | |
| # NOTE: Boa comment mentions a small tool to handle this ... would be nice. | |
| CARGO_TARGET_X86_64_PC_WINDOWS_MSVC_RUSTFLAGS: ${{ (github.ref == 'refs/heads/main' || github.base_ref == 'main') && '-D warnings' || '' }} | |
| CARGO_TARGET_AARCH64_APPLE_DARWIN_RUSTFLAGS: ${{ (github.ref == 'refs/heads/main' || github.base_ref == 'main') && '-D warnings' || '' }} | |
| strategy: | |
| matrix: | |
| rust: | |
| # TODO: possibly add the MSRV here | |
| - { version: stable, name: stable } | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: ${{ matrix.rust.version }} | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| key: build-test | |
| - name: Cargo build --all-features | |
| run: cargo build --quiet --all-features | |
| - name: Test --all-features | |
| run: cargo test --all-features | |
| feature-test: | |
| name: Test feature matrix | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Set environment | |
| run: | | |
| target=$(rustc -vV | awk '/^host/ { print $2 }' | tr [:lower:] [:upper:] | tr '-' '_') | |
| echo "CARGO_TARGET_${target}_RUSTFLAGS=$FLAGS" >> $GITHUB_ENV | |
| - uses: actions/checkout@v5 | |
| - uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: stable | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| key: features-test | |
| - name: Install cargo-all-features | |
| uses: baptiste0928/[email protected] | |
| with: | |
| crate: cargo-all-features | |
| - name: Test all features | |
| run: cargo test-all-features | |
| ffi: | |
| name: Test FFI (${{ matrix.rust.name }}, ${{ matrix.os }}) | |
| strategy: | |
| matrix: | |
| rust: | |
| - { version: stable, name: stable } | |
| os: [ubuntu-latest] # Todo: potentially add more if we add cpp tests | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Set environment | |
| run: | | |
| target=$(rustc -vV | awk '/^host/ { print $2 }' | tr [:lower:] [:upper:] | tr '-' '_') | |
| echo "CARGO_TARGET_${target}_RUSTFLAGS=$FLAGS" >> $GITHUB_ENV | |
| - uses: actions/checkout@v5 | |
| - uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: ${{ matrix.rust.version }} | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| key: ffi | |
| - name: Cargo build | |
| run: cargo build -p temporal_capi | |
| - name: Regen | |
| run: cargo run -p diplomat-gen | |
| - name: Check diff | |
| run: git diff --exit-code | |
| # Todo: eventually we should check in bindings and test them | |
| - name: FFI tests | |
| run: | | |
| pushd temporal_capi/tests/c && make && popd | |
| pushd temporal_capi/tests/cpp && make && popd | |
| - name: temporal_capi tests | |
| run: cargo test -p temporal_capi --all-features | |
| # There's no guarantee that dependencies are no_std unless you test with a toolchain without `std` | |
| - name: Install no_std toolchain | |
| run: rustup target add thumbv7m-none-eabi | |
| - name: Run no_std tests | |
| run: cargo check -p temporal_capi --target thumbv7m-none-eabi | |
| docs: | |
| name: Documentation | |
| runs-on: ubuntu-latest | |
| env: | |
| RUSTDOCFLAGS: -D warnings | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| key: docs | |
| - name: Generate documentation | |
| run: cargo doc -v --document-private-items --all-features |