diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2014-11-15 11:23:40 -0800 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2014-11-15 11:23:40 -0800 |
| commit | 3e0368e621047892352d1ec02d9fa6124ca28e77 (patch) | |
| tree | 22b418e5cf7a4a5c6c4218b594b36a3836f1ee91 /src/libstd/io | |
| parent | 1e4e55aebc1a71b6674c00b8604efa6b1e2e52cd (diff) | |
| download | rust-3e0368e621047892352d1ec02d9fa6124ca28e77.tar.gz rust-3e0368e621047892352d1ec02d9fa6124ca28e77.zip | |
std: Fix a flaky test on OSX 10.10
This test was somewhat sketchy already with a `loop` around `write`, so this just adds some explicit synchronization to only call `write` once and guarantee that the error happens. Closes #18900
Diffstat (limited to 'src/libstd/io')
| -rw-r--r-- | src/libstd/io/net/tcp.rs | 46 |
1 files changed, 22 insertions, 24 deletions
diff --git a/src/libstd/io/net/tcp.rs b/src/libstd/io/net/tcp.rs index 2545e07cbb5..24fc2998ee6 100644 --- a/src/libstd/io/net/tcp.rs +++ b/src/libstd/io/net/tcp.rs @@ -661,23 +661,22 @@ mod test { let addr = next_test_ip4(); let mut acceptor = TcpListener::bind(addr).listen(); + let (tx, rx) = channel(); spawn(proc() { - let _stream = TcpStream::connect(addr); - // Close + drop(TcpStream::connect(addr)); + tx.send(()); }); let mut stream = acceptor.accept(); + rx.recv(); let buf = [0]; - loop { - match stream.write(buf) { - Ok(..) => {} - Err(e) => { - assert!(e.kind == ConnectionReset || - e.kind == BrokenPipe || - e.kind == ConnectionAborted, - "unknown error: {}", e); - break; - } + match stream.write(buf) { + Ok(..) => {} + Err(e) => { + assert!(e.kind == ConnectionReset || + e.kind == BrokenPipe || + e.kind == ConnectionAborted, + "unknown error: {}", e); } } } @@ -687,23 +686,22 @@ mod test { let addr = next_test_ip6(); let mut acceptor = TcpListener::bind(addr).listen(); + let (tx, rx) = channel(); spawn(proc() { - let _stream = TcpStream::connect(addr); - // Close + drop(TcpStream::connect(addr)); + tx.send(()); }); let mut stream = acceptor.accept(); + rx.recv(); let buf = [0]; - loop { - match stream.write(buf) { - Ok(..) => {} - Err(e) => { - assert!(e.kind == ConnectionReset || - e.kind == BrokenPipe || - e.kind == ConnectionAborted, - "unknown error: {}", e); - break; - } + match stream.write(buf) { + Ok(..) => {} + Err(e) => { + assert!(e.kind == ConnectionReset || + e.kind == BrokenPipe || + e.kind == ConnectionAborted, + "unknown error: {}", e); } } } |
