Skip to content

Set YearMonth's day to 1 in calendar space when diffing #2011

Set YearMonth's day to 1 in calendar space when diffing

Set YearMonth's day to 1 in calendar space when diffing #2011

Workflow file for this run

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