summaryrefslogtreecommitdiffstats
path: root/tokio/tests/signal_ctrl_c.rs
diff options
context:
space:
mode:
authorCarl Lerche <me@carllerche.com>2019-10-25 12:50:15 -0700
committerGitHub <noreply@github.com>2019-10-25 12:50:15 -0700
commit227533d456fe32e48ffcd3796f1e6c8f9318b230 (patch)
tree498029aaf42dd64eeb8ef0e7d7f29802b45d4e95 /tokio/tests/signal_ctrl_c.rs
parent03a9378297c73c2e56a6d6b55db22b92427b850a (diff)
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.
Diffstat (limited to 'tokio/tests/signal_ctrl_c.rs')
-rw-r--r--tokio/tests/signal_ctrl_c.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/tokio/tests/signal_ctrl_c.rs b/tokio/tests/signal_ctrl_c.rs
new file mode 100644
index 00000000..ea4efaa2
--- /dev/null
+++ b/tokio/tests/signal_ctrl_c.rs
@@ -0,0 +1,28 @@
+#![cfg(unix)]
+#![warn(rust_2018_idioms)]
+
+mod support {
+ pub mod signal;
+}
+use support::signal::send_signal;
+
+use tokio::prelude::*;
+use tokio::signal;
+use tokio::sync::oneshot;
+
+#[tokio::test]
+async fn ctrl_c() {
+ let ctrl_c = signal::ctrl_c().expect("failed to init ctrl_c");
+
+ let (fire, wait) = oneshot::channel();
+
+ // NB: simulate a signal coming in by exercising our signal handler
+ // to avoid complications with sending SIGINT to the test process
+ tokio::spawn(async {
+ wait.await.expect("wait failed");
+ send_signal(libc::SIGINT);
+ });
+
+ let _ = fire.send(());
+ let _ = ctrl_c.into_future().await;
+}