# Testing signals — actix/actix-web

> Canonical page: https://codevetter.com/unpack/actix-web/testing-signals

# Testing signals — actix/actix-web

Scanned commit 30c831fce5328ccf916bea77e59ce6419b457e39 (2026-10-02). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Tests and CI were inspected, not executed; no passing result or coverage percentage was established. The examined tests include synchronous Rust unit tests, Actix asynchronous tests, real HTTP integration servers, and trybuild compiler fixtures. They cover protocol framing, shutdown ownership, static traversal, uploads, and macro diagnostics. This is bounded evidence: service-only helpers omit wire encoding/decoding, and configured exclusions or gates limit what a given test run exercises.
- The test surface combines #[test], #[actix_rt::test], and #[actix_web::test]; actix_test::TestServer uses real HTTP networking, while its documentation explicitly says init_service skips HTTP encoding and decoding. — [actix-http/src/h1/decoder.rs#L1190-L1209](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-http/src/h1/decoder.rs#L1190-L1209) [actix-web/tests/test_server.rs#L95-L108](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/tests/test_server.rs#L95-L108) [actix-files/tests/guard.rs#L10-L25](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-files/tests/guard.rs#L10-L25) [actix-test/src/lib.rs#L1-L5](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-test/src/lib.rs#L1-L5)
- Decoder regression tests require rejection of duplicate Content-Length, simultaneous Content-Length/chunked Transfer-Encoding in either order, and missing or duplicate HTTP/1.1 Host headers. — [actix-http/src/h1/decoder.rs#L1190-L1209](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-http/src/h1/decoder.rs#L1190-L1209) [actix-http/src/h1/decoder.rs#L1251-L1270](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-http/src/h1/decoder.rs#L1251-L1270) [actix-http/src/h1/decoder.rs#L1348-L1370](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-http/src/h1/decoder.rs#L1348-L1370)
- test_body checks response bytes through a real client; test_slow_request expects 408 for idle and incomplete request heads. A separate shutdown regression drives a slow JSON upload, stops gracefully, and checks that application state loses all strong references. — [actix-web/tests/test_server.rs#L95-L108](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/tests/test_server.rs#L95-L108) [actix-web/tests/test_server.rs#L798-L817](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/tests/test_server.rs#L798-L817) [actix-web/tests/test_httpserver.rs#L112-L176](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web/tests/test_httpserver.rs#L112-L176)
- Static-file integration tests assert 404 for plain/encoded traversal and NUL-containing paths, and verify that Host guards select different file roots; these assertions do not establish every symlink or filesystem-race policy. — [actix-files/tests/traversal.rs#L8-L25](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-files/tests/traversal.rs#L8-L25) [actix-files/tests/guard.rs#L10-L33](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-files/tests/guard.rs#L10-L33)
- Multipart tests check that discarded unknown/duplicate fields still consume total limits, and that both memory-backed text and disk-backed uploads reject over-budget bodies. — [actix-multipart/src/form/mod.rs#L834-L856](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-multipart/src/form/mod.rs#L834-L856) [actix-multipart/src/form/mod.rs#L909-L937](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-multipart/src/form/mod.rs#L909-L937)
- Both macro trybuild harnesses are gated by rustversion_msrv::msrv; fixtures exercise accepted forms and compile failures for routing/scope syntax, duplicate methods, multipart attributes, and size-limit syntax. — [actix-web-codegen/tests/trybuild.rs#L1-L29](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-web-codegen/tests/trybuild.rs#L1-L29) [actix-multipart/tests/trybuild.rs#L1-L16](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/actix-multipart/tests/trybuild.rs#L1-L16)
- PR/main CI checks minimal/default features and just test across Linux, macOS, and Windows on MSRV/stable; post-merge adds nightly and eight partitions of feature-combination checks, whose just recipe limits powerset depth to four. — [.github/workflows/ci.yml#L25-L87](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/.github/workflows/ci.yml#L25-L87) [.github/workflows/ci-post-merge.yml#L17-L27](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/.github/workflows/ci-post-merge.yml#L17-L27) [.github/workflows/ci-post-merge.yml#L73-L103](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/.github/workflows/ci-post-merge.yml#L73-L103) [justfile#L112-L120](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/justfile#L112-L120)
- just test excludes test_reading_deflate_encoding_large_random_rustls and separates Cargo macro tests from nextest; coverage uses nightly llvm-cov for tests/doctests. Codecov thresholds are 100% allowances with tests/benches/examples ignored, and the benchmark workflow defines a run without supplying benchmark results here. — [justfile#L52-L82](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/justfile#L52-L82) [.github/workflows/coverage.yml#L28-L48](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/.github/workflows/coverage.yml#L28-L48) [.codecov.yml#L1-L15](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/.codecov.yml#L1-L15) [.github/workflows/bench.yml#L25-L32](https://github.com/actix/actix-web/blob/30c831fce5328ccf916bea77e59ce6419b457e39/.github/workflows/bench.yml#L25-L32)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
