forked from loafle/openapi-generator-original
* Add rust-server-deprecated generator in preparation for hyper1 upgrade to rust-server generator * [Rust Server] Fix spacing in `Cargo.mustache` (#17876) * [Rust Server] Update dependency versions in `Cargo.mustache` (#17876) * [Rust Server] Update templates so generated client and server compile (#17876) * [Rust Server] Get `server` example to compile (#17876) * [Rust Server] Update `client` example to compile (#17876) * [Rust Server] Update `bin/cli.rs` to compile (#17876) * Revert changes to use typed auth in rust-server. Run sample generation. * Hyper1 fixup compilation errors in all examples * Add tests to all examples, clippy, tests, cli-bin, run examples * Use headers Auth structs * Fixup various clippy lints * Move more Service impl to use BoxBody * Reduce generic restriction on some Service impl where possible * Appease clippy lints in rust 1.88 --------- Co-authored-by: Azriel Hoh <azriel@healthpoint.co.nz>
80 lines
2.6 KiB
YAML
80 lines
2.6 KiB
YAML
name: Samples Rust
|
|
|
|
on:
|
|
push:
|
|
paths:
|
|
- "samples/client/others/rust/**"
|
|
- "samples/server/petstore/rust-server/**"
|
|
- "samples/client/petstore/rust-server/**"
|
|
- "samples/server/petstore/rust-axum/**"
|
|
pull_request:
|
|
paths:
|
|
- "samples/client/others/rust/**"
|
|
- "samples/client/petstore/rust/**"
|
|
- "samples/server/petstore/rust-server/**"
|
|
- "samples/server/petstore/rust-axum/**"
|
|
|
|
jobs:
|
|
build:
|
|
name: Build Rust
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
sample:
|
|
# these folders contain sub-projects of rust clients, servers
|
|
- samples/client/others/rust/
|
|
- samples/client/petstore/rust/
|
|
- samples/server/petstore/rust-server/
|
|
- samples/server/petstore/rust-server-deprecated/
|
|
- samples/server/petstore/rust-axum/
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
|
|
- name: Rust cache
|
|
uses: Swatinem/rust-cache@v2
|
|
with:
|
|
cache-targets: false # Don't cache workspace target directories as they don't exist
|
|
cache-directories:
|
|
${{ matrix.sample }}/target
|
|
workspaces: |
|
|
${{ matrix.sample }}/output/*
|
|
|
|
- name: Build
|
|
working-directory: ${{ matrix.sample }}
|
|
run: cargo build --all-targets --all-features
|
|
- name: Tests
|
|
working-directory: ${{ matrix.sample }}
|
|
run: |
|
|
set -e
|
|
# Skip samples/client/petstore/rust/ as it's tests are failing.
|
|
if [[ "${{ matrix.sample }}" == "samples/client/petstore/rust/" ]]; then
|
|
echo "Skipping tests for samples/client/petstore/rust/"
|
|
exit 0
|
|
fi
|
|
|
|
# Iterate through each example and test various features
|
|
for package in $(find . -maxdepth 1 -mindepth 1 -type d)
|
|
do
|
|
# Not all versions have a client example
|
|
if test -f examples/client/main.rs; then
|
|
cargo build --example client --features="client"
|
|
fi
|
|
# Not all versions have a server example
|
|
if test -f examples/server/main.rs; then
|
|
cargo build --example server --features="server"
|
|
fi
|
|
# Test the CLI works if present
|
|
if test -f bin/cli.rs; then
|
|
cargo build --bin ${package##*/} --features cli
|
|
target/debug/${package##*/} --help
|
|
fi
|
|
cargo fmt
|
|
cargo test
|
|
cargo clippy
|
|
cargo doc
|
|
done
|