From a140793706a16f932f5ab9474f7cf9536221351b Mon Sep 17 00:00:00 2001 From: Rob Ede Date: Sun, 29 Oct 2023 01:25:53 +0000 Subject: [PATCH] ci: external types checking --- .../workflows/{clippy-fmt.yml => lint.yml} | 40 ++++++++++++++++--- actix-http/Cargo.toml | 21 ++++++++++ justfile | 7 ++++ scripts/bump | 4 +- 4 files changed, 65 insertions(+), 7 deletions(-) rename .github/workflows/{clippy-fmt.yml => lint.yml} (59%) diff --git a/.github/workflows/clippy-fmt.yml b/.github/workflows/lint.yml similarity index 59% rename from .github/workflows/clippy-fmt.yml rename to .github/workflows/lint.yml index 084b88b24..e71153c43 100644 --- a/.github/workflows/clippy-fmt.yml +++ b/.github/workflows/lint.yml @@ -17,7 +17,8 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions-rust-lang/setup-rust-toolchain@v1.5.0 + - name: Install Rust (nightly) + uses: actions-rust-lang/setup-rust-toolchain@v1.5.0 with: toolchain: nightly components: rustfmt @@ -32,7 +33,8 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions-rust-lang/setup-rust-toolchain@v1.5.0 + - name: Install Rust + uses: actions-rust-lang/setup-rust-toolchain@v1.5.0 with: components: clippy @@ -47,7 +49,8 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions-rust-lang/setup-rust-toolchain@v1.5.0 + - name: Install Rust (nightly) + uses: actions-rust-lang/setup-rust-toolchain@v1.5.0 with: toolchain: nightly components: rust-docs @@ -57,6 +60,29 @@ jobs: RUSTDOCFLAGS: -D warnings run: cargo +nightly doc --no-deps --workspace --all-features + check-external-types: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install Rust (nightly-2023-10-10) + uses: actions-rust-lang/setup-rust-toolchain@v1.5.0 + with: + toolchain: nightly-2023-10-10 + + - name: Install just + uses: taiki-e/install-action@v2.20.2 + with: + tool: just + + - name: Install cargo-check-external-types + uses: taiki-e/cache-cargo-install-action@v1.2.2 + with: + tool: cargo-check-external-types@0.1.10 + + - name: check external types + run: just check-external-types-all + public-api-diff: runs-on: ubuntu-latest steps: @@ -66,13 +92,15 @@ jobs: - uses: actions/checkout@v4 - - uses: actions-rust-lang/setup-rust-toolchain@v1.5.0 + - name: Install Rust (nightly-2023-08-25) + uses: actions-rust-lang/setup-rust-toolchain@v1.5.0 with: toolchain: nightly-2023-08-25 - - uses: taiki-e/cache-cargo-install-action@v1.2.2 + - name: Install cargo-public-api + uses: taiki-e/cache-cargo-install-action@v1.2.2 with: - tool: cargo-public-api + tool: cargo-public-api@0.32.0 - name: generate API diff run: | diff --git a/actix-http/Cargo.toml b/actix-http/Cargo.toml index c19ce0161..879b10d78 100644 --- a/actix-http/Cargo.toml +++ b/actix-http/Cargo.toml @@ -23,6 +23,27 @@ rust-version.workspace = true # features that docs.rs will build with features = ["http2", "ws", "openssl", "rustls-0_20", "rustls-0_21", "compress-brotli", "compress-gzip", "compress-zstd"] +[package.metadata.cargo_check_external_types] +allowed_external_types = [ + "actix_codec::*", + "actix_service::*", + "actix_tls::*", + "actix_utils::*", + "bytes::*", + "bytestring::*", + "encoding_rs::*", + "futures_core::*", + "h2::*", + "http::*", + "httparse::*", + "language_tags::*", + "mime::*", + "openssl::*", + "rustls::*", + "tokio_util::*", + "tokio::*", +] + [lib] name = "actix_http" path = "src/lib.rs" diff --git a/justfile b/justfile index f2e449d85..3506f3497 100644 --- a/justfile +++ b/justfile @@ -9,3 +9,10 @@ doc: doc-watch: RUSTDOCFLAGS="--cfg=docsrs" cargo +nightly doc --no-deps --workspace --features=rustls,openssl --open cargo watch -- RUSTDOCFLAGS="--cfg=docsrs" cargo +nightly doc --no-deps --workspace --features=rustls,openssl + +check-external-types-all: + #!/usr/bin/env bash + set -euxo pipefail + for f in $(find . -mindepth 2 -maxdepth 2 -name Cargo.toml); do + cargo +nightly check-external-types --manifest-path "$f" + done diff --git a/scripts/bump b/scripts/bump index baf3fb4d8..bd6f150c4 100755 --- a/scripts/bump +++ b/scripts/bump @@ -93,7 +93,9 @@ fi # done; remove backup files rm -f $CARGO_MANIFEST.bak -rm -f $CHANGELOG_FILE.bak +if [ -n "${CHANGELOG_FILE-}" ]; then + rm -f $CHANGELOG_FILE.bak +fi rm -f $README_FILE.bak echo "manifest, changelog, and readme updated"