summaryrefslogtreecommitdiffstats
path: root/vendor/ctrlc/tests/main/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/ctrlc/tests/main/mod.rs')
-rw-r--r--vendor/ctrlc/tests/main/mod.rs46
1 files changed, 46 insertions, 0 deletions
diff --git a/vendor/ctrlc/tests/main/mod.rs b/vendor/ctrlc/tests/main/mod.rs
new file mode 100644
index 000000000..94914d45f
--- /dev/null
+++ b/vendor/ctrlc/tests/main/mod.rs
@@ -0,0 +1,46 @@
+// Copyright (c) 2023 CtrlC developers
+// Licensed under the Apache License, Version 2.0
+// <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT
+// license <LICENSE-MIT or http://opensource.org/licenses/MIT>,
+// at your option. All files in the project carrying such
+// notice may not be copied, modified, or distributed except
+// according to those terms.
+
+#[macro_use]
+mod harness;
+use harness::{platform, run_harness};
+
+use std::sync::{
+ atomic::{AtomicBool, Ordering},
+ Arc,
+};
+
+fn test_set_handler() {
+ let flag = Arc::new(AtomicBool::new(false));
+ let flag_handler = Arc::clone(&flag);
+ ctrlc::set_handler(move || {
+ flag_handler.store(true, Ordering::SeqCst);
+ })
+ .unwrap();
+
+ unsafe {
+ platform::raise_ctrl_c();
+ }
+
+ std::thread::sleep(std::time::Duration::from_millis(100));
+ assert!(flag.load(Ordering::SeqCst));
+
+ match ctrlc::set_handler(|| {}) {
+ Err(ctrlc::Error::MultipleHandlers) => {}
+ ret => panic!("{:?}", ret),
+ }
+}
+
+fn tests() {
+ run_tests!(test_set_handler);
+}
+
+fn main() {
+ run_harness(tests);
+}