From 6a042a9b3a4708ab6da883f0de3e21b157ab7c8f Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Sat, 7 Aug 2021 11:06:42 +0200 Subject: [PATCH] Cleanup CI (#141) * Feature-gate test that depends on non-default features Makes `cargo check` work without extra flags. * Don't set doc(html_root_url) It is no longer recommended: https://github.com/rust-lang/api-guidelines/pull/230 * Remove documentation URL from Cargo.toml crates.io will link to the right version on docs.rs automatically. * Ensure toolchains installed by actions-rs/toolchain are actually used * Fix missing rustup component in check job * Raise MSRV to 1.51 Older versions weren't actually working before. * Only run clippy & rustfmt on stable toolchain MSRV is checked in test-versions. * Allow cargo doc to succeed without headers and multipart features CI will still ensure that intra-doc links that rely on these are not broken. --- .github/workflows/CI.yml | 14 +++++++++----- Cargo.toml | 1 - src/lib.rs | 3 +-- src/tests.rs | 7 ++++--- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 17d57711..301edfe1 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -10,15 +10,14 @@ jobs: check: # Run `cargo check` first to ensure that the pushed code at least compiles. runs-on: ubuntu-latest - strategy: - matrix: - rust: [stable, 1.40.0] steps: - uses: actions/checkout@master - uses: actions-rs/toolchain@v1 with: - toolchain: ${{ matrix.rust }} + toolchain: stable + override: true profile: minimal + components: clippy - name: Check uses: actions-rs/cargo@v1 with: @@ -37,9 +36,12 @@ jobs: - uses: actions-rs/toolchain@v1 with: toolchain: stable + override: true profile: minimal - name: cargo doc working-directory: ${{ matrix.subcrate }} + env: + RUSTDOCFLAGS: "-D broken-intra-doc-links" run: cargo doc --all-features --no-deps cargo-hack: @@ -49,6 +51,7 @@ jobs: - uses: actions-rs/toolchain@v1 with: toolchain: stable + override: true profile: minimal - name: Install cargo-hack run: | @@ -63,12 +66,13 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - rust: [stable, beta, nightly, 1.40.0] + rust: [stable, beta, nightly, 1.51] steps: - uses: actions/checkout@master - uses: actions-rs/toolchain@v1 with: toolchain: ${{ matrix.rust }} + override: true profile: minimal - name: Run tests uses: actions-rs/cargo@v1 diff --git a/Cargo.toml b/Cargo.toml index 8f3b3728..1501c178 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,6 @@ authors = ["David Pedersen "] categories = ["asynchronous", "network-programming", "web-programming"] description = "Web framework that focuses on ergonomics and modularity" -documentation = "https://docs.rs/axum/0.1.3" edition = "2018" homepage = "https://github.com/tokio-rs/axum" keywords = ["http", "web", "framework"] diff --git a/src/lib.rs b/src/lib.rs index 7f3ec511..ed32eb90 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -664,7 +664,6 @@ //! [examples]: https://github.com/tokio-rs/axum/tree/main/examples //! [`axum::Server`]: hyper::server::Server -#![doc(html_root_url = "https://docs.rs/axum/0.1.3")] #![warn( clippy::all, clippy::dbg_macro, @@ -699,7 +698,7 @@ missing_debug_implementations, missing_docs )] -#![deny(unreachable_pub, broken_intra_doc_links, private_in_public)] +#![deny(unreachable_pub, private_in_public)] #![allow(elided_lifetimes_in_paths, clippy::type_complexity)] #![forbid(unsafe_code)] #![cfg_attr(docsrs, feature(doc_cfg))] diff --git a/src/tests.rs b/src/tests.rs index 183de768..7f984376 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -1,6 +1,5 @@ use crate::{ - extract::RequestParts, handler::on, prelude::*, response::IntoResponse, routing::nest, - routing::MethodFilter, service, + extract::RequestParts, handler::on, prelude::*, routing::nest, routing::MethodFilter, service, }; use bytes::Bytes; use futures_util::future::Ready; @@ -514,8 +513,10 @@ async fn layer_on_whole_router() { } #[tokio::test] +#[cfg(feature = "header")] async fn typed_header() { - use extract::TypedHeader; + use crate::{extract::TypedHeader, response::IntoResponse}; + async fn handle(TypedHeader(user_agent): TypedHeader) -> impl IntoResponse { user_agent.to_string() }