1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-28 11:37:44 +00:00

cat: make tests stable (#2100)

This commit is contained in:
rethab 2021-04-22 08:42:56 +02:00 committed by GitHub
parent fb2ae04b8f
commit b756b987a4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -400,22 +400,29 @@ fn test_domain_socket() {
use std::thread; use std::thread;
use tempdir::TempDir; use tempdir::TempDir;
use unix_socket::UnixListener; use unix_socket::UnixListener;
use std::sync::{Barrier, Arc};
let dir = TempDir::new("unix_socket").expect("failed to create dir"); let dir = TempDir::new("unix_socket").expect("failed to create dir");
let socket_path = dir.path().join("sock"); let socket_path = dir.path().join("sock");
let listener = UnixListener::bind(&socket_path).expect("failed to create socket"); let listener = UnixListener::bind(&socket_path).expect("failed to create socket");
// use a barrier to ensure we don't run cat before the listener is setup
let barrier = Arc::new(Barrier::new(2));
let barrier2 = Arc::clone(&barrier);
let thread = thread::spawn(move || { let thread = thread::spawn(move || {
let mut stream = listener.accept().expect("failed to accept connection").0; let mut stream = listener.accept().expect("failed to accept connection").0;
barrier2.wait();
stream stream
.write_all(b"a\tb") .write_all(b"a\tb")
.expect("failed to write test data"); .expect("failed to write test data");
}); });
new_ucmd!() let child = new_ucmd!().args(&[socket_path]).run_no_wait();
.args(&[socket_path]) barrier.wait();
.succeeds() let stdout = &child.wait_with_output().unwrap().stdout.clone();
.stdout_only("a\tb"); let output = String::from_utf8_lossy(&stdout);
assert_eq!("a\tb", output);
thread.join().unwrap(); thread.join().unwrap();
} }