mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 03:27:44 +00:00
tests: Use UChild in tests. Rename run_no_wait_child to run_no_wait and return UChild
tests/tail: * test_stdin_redirect_file:. Test fails now when assert_alive()! The follow test `tail -f < file` where file's content is `foo` fails with: Assertion failed. Expected 'tail' to be running but exited with status=exit status: 0 I also tried on the command line and can confirm that tail isn't runnning when following by descriptor. The test is deactivated until the implementation is fixed. * test_follow_stdin_descriptor * test_follow_stdin_explicit_indefinitely. * test_follow_single * test_follow_non_utf8_bytes * test_follow_multiple * test_follow_name_multiple * test_follow_invalid_pid * test_single_big_args * test_retry3 * test_retry4 * test_retry5 * test_retry7 * test_retry8 * test_retry9 * test_follow_descriptor_vs_rename1 * test_follow_descriptor_vs_rename2 * test_follow_name_retry_headers * test_follow_name_remove * test_follow_name_truncate1 * test_follow_name_truncate2 * test_follow_name_truncate3 * test_follow_name_truncate4 * test_follow_truncate_fast * test_follow_name_move_create1 * test_follow_name_move_create2 * test_follow_name_move1 * test_follow_name_move2 * test_follow_name_move_retry1 * test_follow_name_move_retry2 * test_follow_inotify_only_regular * test_fifo * test_illegal_seek tests/cat: * test_dev_full * test_dev_full_show_all * test_dev_random * test_fifo_symlink tests/dd: * test_random_73k_test_lazy_fullblock * test_sync_delayed_reader tests/factor: * test_parallel tests/rm: * test_rm_force_prompts_order * test_rm_descend_directory * test_rm_prompts tests/seq: * the helper run method tests/sort: * test_sigpipe_panic tests/tee: * the helper run_tee method tests/tty: * test_tty module tests/yes: * the helper run method
This commit is contained in:
parent
040a5e8301
commit
982fb682e9
11 changed files with 519 additions and 474 deletions
|
@ -1,12 +1,11 @@
|
|||
// spell-checker:ignore NOFILE
|
||||
|
||||
use crate::common::util::*;
|
||||
use std::fs::OpenOptions;
|
||||
#[cfg(unix)]
|
||||
use std::io::Read;
|
||||
|
||||
#[cfg(any(target_os = "linux", target_os = "android"))]
|
||||
use rlimit::Resource;
|
||||
use std::fs::OpenOptions;
|
||||
#[cfg(not(windows))]
|
||||
use std::process::Stdio;
|
||||
|
||||
#[test]
|
||||
fn test_output_simple() {
|
||||
|
@ -87,8 +86,7 @@ fn test_fifo_symlink() {
|
|||
pipe.write_all(&data).unwrap();
|
||||
});
|
||||
|
||||
let output = proc.wait_with_output().unwrap();
|
||||
assert_eq!(&output.stdout, &data2);
|
||||
proc.wait().unwrap().stdout_only_bytes(data2);
|
||||
thread.join().unwrap();
|
||||
}
|
||||
|
||||
|
@ -395,17 +393,19 @@ fn test_squeeze_blank_before_numbering() {
|
|||
#[test]
|
||||
#[cfg(unix)]
|
||||
fn test_dev_random() {
|
||||
let mut buf = [0; 2048];
|
||||
#[cfg(any(target_os = "linux", target_os = "android"))]
|
||||
const DEV_RANDOM: &str = "/dev/urandom";
|
||||
|
||||
#[cfg(not(any(target_os = "linux", target_os = "android")))]
|
||||
const DEV_RANDOM: &str = "/dev/random";
|
||||
|
||||
let mut proc = new_ucmd!().args(&[DEV_RANDOM]).run_no_wait();
|
||||
let mut proc_stdout = proc.stdout.take().unwrap();
|
||||
proc_stdout.read_exact(&mut buf).unwrap();
|
||||
let mut proc = new_ucmd!()
|
||||
.set_stdout(Stdio::piped())
|
||||
.args(&[DEV_RANDOM])
|
||||
.run_no_wait();
|
||||
|
||||
proc.make_assertion_with_delay(100).is_alive();
|
||||
let buf = proc.stdout_exact_bytes(2048);
|
||||
let num_zeroes = buf.iter().fold(0, |mut acc, &n| {
|
||||
if n == 0 {
|
||||
acc += 1;
|
||||
|
@ -415,7 +415,7 @@ fn test_dev_random() {
|
|||
// The probability of more than 512 zero bytes is essentially zero if the
|
||||
// output is truly random.
|
||||
assert!(num_zeroes < 512);
|
||||
proc.kill().unwrap();
|
||||
proc.kill();
|
||||
}
|
||||
|
||||
/// Reading from /dev/full should return an infinite amount of zero bytes.
|
||||
|
@ -423,29 +423,35 @@ fn test_dev_random() {
|
|||
#[test]
|
||||
#[cfg(any(target_os = "linux", target_os = "freebsd", target_os = "netbsd"))]
|
||||
fn test_dev_full() {
|
||||
let mut buf = [0; 2048];
|
||||
let mut proc = new_ucmd!().args(&["/dev/full"]).run_no_wait();
|
||||
let mut proc_stdout = proc.stdout.take().unwrap();
|
||||
let mut proc = new_ucmd!()
|
||||
.set_stdout(Stdio::piped())
|
||||
.args(&["/dev/full"])
|
||||
.run_no_wait();
|
||||
let expected = [0; 2048];
|
||||
proc_stdout.read_exact(&mut buf).unwrap();
|
||||
assert_eq!(&buf[..], &expected[..]);
|
||||
proc.kill().unwrap();
|
||||
proc.make_assertion_with_delay(100)
|
||||
.is_alive()
|
||||
.with_exact_output(2048, 0)
|
||||
.stdout_only_bytes(expected);
|
||||
proc.kill();
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(target_os = "linux", target_os = "freebsd", target_os = "netbsd"))]
|
||||
fn test_dev_full_show_all() {
|
||||
let mut buf = [0; 2048];
|
||||
let mut proc = new_ucmd!().args(&["-A", "/dev/full"]).run_no_wait();
|
||||
let mut proc_stdout = proc.stdout.take().unwrap();
|
||||
proc_stdout.read_exact(&mut buf).unwrap();
|
||||
|
||||
let expected: Vec<u8> = (0..buf.len())
|
||||
let buf_len = 2048;
|
||||
let mut proc = new_ucmd!()
|
||||
.set_stdout(Stdio::piped())
|
||||
.args(&["-A", "/dev/full"])
|
||||
.run_no_wait();
|
||||
let expected: Vec<u8> = (0..buf_len)
|
||||
.map(|n| if n & 1 == 0 { b'^' } else { b'@' })
|
||||
.collect();
|
||||
|
||||
assert_eq!(&buf[..], &expected[..]);
|
||||
proc.kill().unwrap();
|
||||
proc.make_assertion_with_delay(100)
|
||||
.is_alive()
|
||||
.with_exact_output(buf_len, 0)
|
||||
.stdout_only_bytes(expected);
|
||||
proc.kill();
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue