From 227533d456fe32e48ffcd3796f1e6c8f9318b230 Mon Sep 17 00:00:00 2001 From: Carl Lerche Date: Fri, 25 Oct 2019 12:50:15 -0700 Subject: net: move into tokio crate (#1683) A step towards collapsing Tokio sub crates into a single `tokio` crate (#1318). The `net` implementation is now provided by the main `tokio` crate. Functionality can be opted out of by using the various net related feature flags. --- tests-build/Cargo.toml | 26 +++++++++ tests-build/README.md | 2 + tests-build/src/lib.rs | 8 +++ .../tests/fail/executor_without_current_thread.rs | 3 ++ .../fail/executor_without_current_thread.stderr | 7 +++ tests-build/tests/fail/macros_invalid_input.rs | 25 +++++++++ tests-build/tests/fail/macros_invalid_input.stderr | 41 ++++++++++++++ .../tests/fail/net_without_tcp_missing_tcp.rs | 4 ++ .../tests/fail/net_without_tcp_missing_tcp.stderr | 7 +++ .../tests/fail/net_without_udp_missing_udp.rs | 4 ++ .../tests/fail/net_without_udp_missing_udp.stderr | 7 +++ .../tests/fail/net_without_uds_missing_uds.rs | 4 ++ .../tests/fail/net_without_uds_missing_uds.stderr | 7 +++ .../tests/fail/tokio_without_net_missing_net.rs | 3 ++ .../fail/tokio_without_net_missing_net.stderr | 7 +++ tests-build/tests/features.rs | 62 ++++++++++++++++++++++ 16 files changed, 217 insertions(+) create mode 100644 tests-build/Cargo.toml create mode 100644 tests-build/README.md create mode 100644 tests-build/src/lib.rs create mode 100644 tests-build/tests/fail/executor_without_current_thread.rs create mode 100644 tests-build/tests/fail/executor_without_current_thread.stderr create mode 100644 tests-build/tests/fail/macros_invalid_input.rs create mode 100644 tests-build/tests/fail/macros_invalid_input.stderr create mode 100644 tests-build/tests/fail/net_without_tcp_missing_tcp.rs create mode 100644 tests-build/tests/fail/net_without_tcp_missing_tcp.stderr create mode 100644 tests-build/tests/fail/net_without_udp_missing_udp.rs create mode 100644 tests-build/tests/fail/net_without_udp_missing_udp.stderr create mode 100644 tests-build/tests/fail/net_without_uds_missing_uds.rs create mode 100644 tests-build/tests/fail/net_without_uds_missing_uds.stderr create mode 100644 tests-build/tests/fail/tokio_without_net_missing_net.rs create mode 100644 tests-build/tests/fail/tokio_without_net_missing_net.stderr create mode 100644 tests-build/tests/features.rs (limited to 'tests-build') diff --git a/tests-build/Cargo.toml b/tests-build/Cargo.toml new file mode 100644 index 00000000..fb837d03 --- /dev/null +++ b/tests-build/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "tests-build" +version = "0.1.0" +authors = ["Tokio Contributors "] +edition = "2018" +publish = false + +[features] +executor-without-current-thread = ["tokio-executor"] +# macros-invalid-input = ["tokio/rt-full"] +# net-no-features = ["tokio-net"] +# net-with-tcp = ["tokio-net/tcp"] +# net-with-udp = ["tokio-net/udp"] +# net-with-uds = ["tokio-net/uds"] +# net-with-process = ["tokio-net/process"] +# tokio-no-features = ["tokio"] +# tokio-with-net = ["tokio/net-full"] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +tokio-executor = { path = "../tokio-executor", optional = true } +# tokio = { path = "../tokio", optional = true, default-features = false } + +[dev-dependencies] +trybuild = "1.0" diff --git a/tests-build/README.md b/tests-build/README.md new file mode 100644 index 00000000..f491e2bc --- /dev/null +++ b/tests-build/README.md @@ -0,0 +1,2 @@ +Tests the various combination of feature flags. This is broken out to a separate +crate to work around limitations with cargo features. diff --git a/tests-build/src/lib.rs b/tests-build/src/lib.rs new file mode 100644 index 00000000..7f38a440 --- /dev/null +++ b/tests-build/src/lib.rs @@ -0,0 +1,8 @@ +#[cfg(feature = "tokio-executor")] +pub use tokio_executor; + +#[cfg(feature = "tokio-net")] +pub use tokio_net; + +#[cfg(feature = "tokio")] +pub use tokio; diff --git a/tests-build/tests/fail/executor_without_current_thread.rs b/tests-build/tests/fail/executor_without_current_thread.rs new file mode 100644 index 00000000..205ce7e4 --- /dev/null +++ b/tests-build/tests/fail/executor_without_current_thread.rs @@ -0,0 +1,3 @@ +use tests_build::tokio_executor::current_thread; + +fn main() {} diff --git a/tests-build/tests/fail/executor_without_current_thread.stderr b/tests-build/tests/fail/executor_without_current_thread.stderr new file mode 100644 index 00000000..f2287c3f --- /dev/null +++ b/tests-build/tests/fail/executor_without_current_thread.stderr @@ -0,0 +1,7 @@ +error[E0432]: unresolved import `tests_build::tokio_executor::current_thread` + --> $DIR/executor_without_current_thread.rs:1:5 + | +1 | use tests_build::tokio_executor::current_thread; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `current_thread` in `tokio_executor` + +For more information about this error, try `rustc --explain E0432`. diff --git a/tests-build/tests/fail/macros_invalid_input.rs b/tests-build/tests/fail/macros_invalid_input.rs new file mode 100644 index 00000000..5b1a8adc --- /dev/null +++ b/tests-build/tests/fail/macros_invalid_input.rs @@ -0,0 +1,25 @@ +use tests_build::tokio; + +#[tokio::main] +fn main_is_not_async() {} + +#[tokio::main(foo)] +async fn main_attr_has_unknown_args() {} + +#[tokio::main(threadpool::bar)] +async fn main_attr_has_path_args() {} + +#[tokio::test] +fn test_is_not_async() {} + +#[tokio::test] +async fn test_fn_has_args(_x: u8) {} + +#[tokio::test(foo)] +async fn test_attr_has_args() {} + +#[tokio::test] +#[test] +async fn test_has_second_test_attr() {} + +fn main() {} diff --git a/tests-build/tests/fail/macros_invalid_input.stderr b/tests-build/tests/fail/macros_invalid_input.stderr new file mode 100644 index 00000000..12373486 --- /dev/null +++ b/tests-build/tests/fail/macros_invalid_input.stderr @@ -0,0 +1,41 @@ +error: the async keyword is missing from the function declaration + --> $DIR/macros_invalid_input.rs:4:1 + | +4 | fn main_is_not_async() {} + | ^^ + +error: Unknown attribute foo is specified; expected `current_thread` or `threadpool` + --> $DIR/macros_invalid_input.rs:6:15 + | +6 | #[tokio::main(foo)] + | ^^^ + +error: Must have specified ident + --> $DIR/macros_invalid_input.rs:9:15 + | +9 | #[tokio::main(threadpool::bar)] + | ^^^^^^^^^^^^^^^ + +error: the async keyword is missing from the function declaration + --> $DIR/macros_invalid_input.rs:13:1 + | +13 | fn test_is_not_async() {} + | ^^ + +error: the test function cannot accept arguments + --> $DIR/macros_invalid_input.rs:16:27 + | +16 | async fn test_fn_has_args(_x: u8) {} + | ^^^^^^ + +error: Unknown attribute foo is specified; expected `current_thread` or `threadpool` + --> $DIR/macros_invalid_input.rs:18:15 + | +18 | #[tokio::test(foo)] + | ^^^ + +error: second test attribute is supplied + --> $DIR/macros_invalid_input.rs:22:1 + | +22 | #[test] + | ^^^^^^^ diff --git a/tests-build/tests/fail/net_without_tcp_missing_tcp.rs b/tests-build/tests/fail/net_without_tcp_missing_tcp.rs new file mode 100644 index 00000000..80010233 --- /dev/null +++ b/tests-build/tests/fail/net_without_tcp_missing_tcp.rs @@ -0,0 +1,4 @@ +use tests_build::tokio_net::tcp; + +fn main() {} + diff --git a/tests-build/tests/fail/net_without_tcp_missing_tcp.stderr b/tests-build/tests/fail/net_without_tcp_missing_tcp.stderr new file mode 100644 index 00000000..83ff59fb --- /dev/null +++ b/tests-build/tests/fail/net_without_tcp_missing_tcp.stderr @@ -0,0 +1,7 @@ +error[E0432]: unresolved import `tests_build::tokio_net::tcp` + --> $DIR/net_without_tcp_missing_tcp.rs:1:5 + | +1 | use tests_build::tokio_net::tcp; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `tcp` in `tokio_net` + +For more information about this error, try `rustc --explain E0432`. diff --git a/tests-build/tests/fail/net_without_udp_missing_udp.rs b/tests-build/tests/fail/net_without_udp_missing_udp.rs new file mode 100644 index 00000000..6731af93 --- /dev/null +++ b/tests-build/tests/fail/net_without_udp_missing_udp.rs @@ -0,0 +1,4 @@ +use tests_build::tokio_net::udp; + +fn main() {} + diff --git a/tests-build/tests/fail/net_without_udp_missing_udp.stderr b/tests-build/tests/fail/net_without_udp_missing_udp.stderr new file mode 100644 index 00000000..e3471a79 --- /dev/null +++ b/tests-build/tests/fail/net_without_udp_missing_udp.stderr @@ -0,0 +1,7 @@ +error[E0432]: unresolved import `tests_build::tokio_net::udp` + --> $DIR/net_without_udp_missing_udp.rs:1:5 + | +1 | use tests_build::tokio_net::udp; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `udp` in `tokio_net` + +For more information about this error, try `rustc --explain E0432`. diff --git a/tests-build/tests/fail/net_without_uds_missing_uds.rs b/tests-build/tests/fail/net_without_uds_missing_uds.rs new file mode 100644 index 00000000..d48a5eb4 --- /dev/null +++ b/tests-build/tests/fail/net_without_uds_missing_uds.rs @@ -0,0 +1,4 @@ +use tests_build::tokio_net::uds; + +fn main() {} + diff --git a/tests-build/tests/fail/net_without_uds_missing_uds.stderr b/tests-build/tests/fail/net_without_uds_missing_uds.stderr new file mode 100644 index 00000000..ad79fe18 --- /dev/null +++ b/tests-build/tests/fail/net_without_uds_missing_uds.stderr @@ -0,0 +1,7 @@ +error[E0432]: unresolved import `tests_build::tokio_net::uds` + --> $DIR/net_without_uds_missing_uds.rs:1:5 + | +1 | use tests_build::tokio_net::uds; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `uds` in `tokio_net` + +For more information about this error, try `rustc --explain E0432`. diff --git a/tests-build/tests/fail/tokio_without_net_missing_net.rs b/tests-build/tests/fail/tokio_without_net_missing_net.rs new file mode 100644 index 00000000..f2e27836 --- /dev/null +++ b/tests-build/tests/fail/tokio_without_net_missing_net.rs @@ -0,0 +1,3 @@ +use tests_build::tokio::net; + +fn main() {} diff --git a/tests-build/tests/fail/tokio_without_net_missing_net.stderr b/tests-build/tests/fail/tokio_without_net_missing_net.stderr new file mode 100644 index 00000000..4435b0a6 --- /dev/null +++ b/tests-build/tests/fail/tokio_without_net_missing_net.stderr @@ -0,0 +1,7 @@ +error[E0432]: unresolved import `tests_build::tokio::net` + --> $DIR/tokio_without_net_missing_net.rs:1:5 + | +1 | use tests_build::tokio::net; + | ^^^^^^^^^^^^^^^^^^^^^^^ no `net` in `tokio` + +For more information about this error, try `rustc --explain E0432`. diff --git a/tests-build/tests/features.rs b/tests-build/tests/features.rs new file mode 100644 index 00000000..b40e44ed --- /dev/null +++ b/tests-build/tests/features.rs @@ -0,0 +1,62 @@ +#![allow(unused_imports)] + +#[test] +#[cfg(feature = "tokio-net")] +fn net_default() { + use tests_build::tokio_net::driver::{set_default, Handle, Reactor, Registration}; + use tests_build::tokio_net::util::PollEvented; +} + +#[test] +#[cfg(feature = "net-with-tcp")] +fn net_with_tcp() { + use tests_build::tokio_net::tcp; +} + +#[test] +#[cfg(feature = "net-with-udp")] +fn net_with_udp() { + use tests_build::tokio_net::udp; +} + +#[test] +#[cfg(feature = "net-with-uds")] +fn net_with_uds() { + use tests_build::tokio_net::uds; +} + +#[test] +#[cfg(feature = "net-with-process")] +fn net_with_process() { + use tests_build::tokio_net::process; +} + +#[test] +#[cfg(feature = "tokio-with-net")] +fn tokio_with_net() { + // net is present + use tests_build::tokio::net; +} + +#[test] +fn compile_fail() { + let t = trybuild::TestCases::new(); + + #[cfg(feature = "executor-without-current-thread")] + t.compile_fail("tests/fail/executor_without_current_thread.rs"); + + #[cfg(feature = "macros-invalid-input")] + t.compile_fail("tests/fail/macros_invalid_input.rs"); + + #[cfg(feature = "net-no-features")] + { + t.compile_fail("tests/fail/net_without_tcp_missing_tcp.rs"); + t.compile_fail("tests/fail/net_without_udp_missing_udp.rs"); + t.compile_fail("tests/fail/net_without_uds_missing_uds.rs"); + } + + #[cfg(feature = "tokio-no-features")] + t.compile_fail("tests/fail/tokio_without_net_missing_net.rs"); + + drop(t); +} -- cgit v1.2.3