mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 02:09:05 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
#![warn(rust_2018_idioms)]
 | 
						|
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support bind
 | 
						|
 | 
						|
use tokio::net::TcpListener;
 | 
						|
use tokio::runtime;
 | 
						|
use tokio_test::{assert_err, assert_pending, assert_ready, task};
 | 
						|
 | 
						|
#[test]
 | 
						|
fn tcp_doesnt_block() {
 | 
						|
    let rt = rt();
 | 
						|
 | 
						|
    let listener = {
 | 
						|
        let _enter = rt.enter();
 | 
						|
        let listener = std::net::TcpListener::bind("127.0.0.1:0").unwrap();
 | 
						|
        TcpListener::from_std(listener).unwrap()
 | 
						|
    };
 | 
						|
 | 
						|
    drop(rt);
 | 
						|
 | 
						|
    let mut task = task::spawn(async move {
 | 
						|
        assert_err!(listener.accept().await);
 | 
						|
    });
 | 
						|
 | 
						|
    assert_ready!(task.poll());
 | 
						|
}
 | 
						|
 | 
						|
#[test]
 | 
						|
fn drop_wakes() {
 | 
						|
    let rt = rt();
 | 
						|
 | 
						|
    let listener = {
 | 
						|
        let _enter = rt.enter();
 | 
						|
        let listener = std::net::TcpListener::bind("127.0.0.1:0").unwrap();
 | 
						|
        TcpListener::from_std(listener).unwrap()
 | 
						|
    };
 | 
						|
 | 
						|
    let mut task = task::spawn(async move {
 | 
						|
        assert_err!(listener.accept().await);
 | 
						|
    });
 | 
						|
 | 
						|
    assert_pending!(task.poll());
 | 
						|
 | 
						|
    drop(rt);
 | 
						|
 | 
						|
    assert!(task.is_woken());
 | 
						|
    assert_ready!(task.poll());
 | 
						|
}
 | 
						|
 | 
						|
fn rt() -> runtime::Runtime {
 | 
						|
    runtime::Builder::new_current_thread()
 | 
						|
        .enable_all()
 | 
						|
        .build()
 | 
						|
        .unwrap()
 | 
						|
}
 |