From e058d232e7b3ecc4770665f6869bc0924a774da9 Mon Sep 17 00:00:00 2001 From: Paul Lange Date: Tue, 28 Feb 2023 23:47:39 +0100 Subject: [PATCH] feat(CI): check external types This adds CI job that runs `cargo-check-external-types` against a whitelist of exported types. --- .github/workflows/CI.yml | 26 ++++++++++++++++++++++++++ .github/workflows/external-types.toml | 17 +++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 .github/workflows/external-types.toml diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index f08af14d75..1336103c8b 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -235,3 +235,29 @@ jobs: with: command: rustdoc args: --features full,ffi -- --cfg docsrs --cfg hyper_unstable_ffi -D broken-intra-doc-links + + check-external-types: + name: Check exposed types + needs: [style, test] + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Install Rust + uses: dtolnay/rust-toolchain@master + with: + toolchain: nightly-2022-11-16 # Compatible version for cargo-check-external-types + + - name: Install cargo-check-external-types + uses: actions-rs/install@v0.1 + with: + crate: cargo-check-external-types + version: 0.1.6 + use-tool-cache: true + + - name: check-external-types + uses: actions-rs/cargo@v1 + with: + command: check-external-types + args: --config .github/workflows/external-types.toml diff --git a/.github/workflows/external-types.toml b/.github/workflows/external-types.toml new file mode 100644 index 0000000000..3f3936a946 --- /dev/null +++ b/.github/workflows/external-types.toml @@ -0,0 +1,17 @@ +allowed_external_types = [ + "bytes::buf::buf_impl::Buf", + "bytes::bytes::Bytes", + "http::header", + "http::header::map::HeaderMap", + "http::method::Method", + "http::request::Request", + "http::response::Response", + "http::status::StatusCode", + "http::uri::Uri", + "http::version::Version", + "http_body::Body", + "http_body::frame::Frame", + "http_body::size_hint::SizeHint", + "tokio::io::async_read::AsyncRead", + "tokio::io::async_write::AsyncWrite" +]