irtt-client and irtt-server mutually dev-depended on each other for cross-crate integration tests. That cycle blocks `cargo publish` for either crate whenever the other doesn't already exist on the registry at the required version, which is exactly the situation for a crate's first-ever release (irtt-server has never been published before). Introduce a new `irtt-integration-tests` crate (publish = false, no library target) to own tests whose actual subject is the interaction between two or more irtt-* production crates: crate-local behavior -> crate's own tests/ cross-crate/system behavior -> irtt-integration-tests Move every test that imports both irtt_client and irtt_server there: the client-side support harness (hmac, large_packets, protocol_options, fill_negotiation) and the server-side real-socket tests that drive a real AsyncClient against a real Server (async_client, negotiation_policy, fill_wire_bytes, traffic_class, wildcard_source). server_set.rs stays in irtt-server/tests since it only uses irtt_proto as test machinery to drive irtt-server directly, which is a normal one-directional test dependency, not a peer relationship. irtt-server's dev-dependency on irtt-client is dropped entirely now that nothing under crates/irtt-server/tests needs it, which fully breaks the cycle from that side. irtt-client keeps a one-directional dev-dependency on irtt-server: a handful of white-box unit tests in src/async_client/tests.rs assert on private AsyncClient internals (socket, remote, test_hooks) while also needing a real in-tree server for blocking/async equivalence checks, so they can't move to an external crate without losing that access. Their InTreeServer helper is duplicated locally rather than shared, matching the existing precedent of irtt-cli's own tests/support/in_tree_server.rs.
37 lines
879 B
TOML
37 lines
879 B
TOML
[workspace]
|
|
members = [
|
|
"crates/irtt-proto",
|
|
"crates/irtt-client",
|
|
"crates/irtt-server",
|
|
"crates/irtt-stats",
|
|
"crates/irtt-cli",
|
|
"crates/irtt-integration-tests",
|
|
]
|
|
resolver = "2"
|
|
|
|
[workspace.package]
|
|
edition = "2021"
|
|
license = "Apache-2.0"
|
|
rust-version = "1.88"
|
|
repository = "https://github.com/Lochnair/irtt-rs"
|
|
homepage = "https://github.com/Lochnair/irtt-rs"
|
|
readme = "README.md"
|
|
|
|
[workspace.dependencies]
|
|
irtt-proto = { version = "0.5.0", path = "crates/irtt-proto" }
|
|
irtt-client = { version = "0.5.0", path = "crates/irtt-client" }
|
|
irtt-server = { version = "0.5.0", path = "crates/irtt-server" }
|
|
irtt-stats = { version = "0.5.0", path = "crates/irtt-stats" }
|
|
|
|
[profile.release]
|
|
opt-level = "z"
|
|
lto = true
|
|
codegen-units = 1
|
|
panic = "abort"
|
|
strip = "symbols"
|
|
|
|
# The profile that 'dist' will build with
|
|
[profile.dist]
|
|
inherits = "release"
|
|
lto = "thin"
|