diff --git a/tests/by-util/test_tail.rs b/tests/by-util/test_tail.rs index fccc5971b..5c2faed3d 100644 --- a/tests/by-util/test_tail.rs +++ b/tests/by-util/test_tail.rs @@ -3,7 +3,7 @@ // * For the full copyright and license information, please view the LICENSE // * file that was distributed with this source code. -// spell-checker:ignore (ToDO) abcdefghijklmnopqrstuvwxyz efghijklmnopqrstuvwxyz vwxyz emptyfile logfile file siette ocho nueve diez +// spell-checker:ignore (ToDO) abcdefghijklmnopqrstuvwxyz efghijklmnopqrstuvwxyz vwxyz emptyfile file siette ocho nueve diez // spell-checker:ignore (libs) kqueue // spell-checker:ignore (jargon) tailable untailable @@ -22,8 +22,8 @@ use std::time::Duration; #[cfg(target_os = "linux")] pub static BACKEND: &str = "inotify"; -#[cfg(all(unix, not(target_os = "linux")))] -pub static BACKEND: &str = "kqueue"; +// #[cfg(all(unix, not(target_os = "linux")))] +// pub static BACKEND: &str = "kqueue"; static FOOBAR_TXT: &str = "foobar.txt"; static FOOBAR_2_TXT: &str = "foobar2.txt"; @@ -1709,6 +1709,37 @@ fn test_follow_name_truncate3() { assert!(buf_stderr.is_empty()); } +#[test] +fn test_follow_name_truncate4() { + // Truncating a file with the same content it already has should not trigger a truncate event + + let ts = TestScenario::new(util_name!()); + let at = &ts.fixtures; + + let mut args = vec!["-s.1", "--max-unchanged-stats=1", "-F", "file"]; + + let delay = 100; + for _ in 0..2 { + at.append("file", "foobar\n"); + + let mut p = ts.ucmd().set_stdin(Stdio::null()).args(&args).run_no_wait(); + sleep(Duration::from_millis(100)); + + at.truncate("file", "foobar\n"); + sleep(Duration::from_millis(delay)); + + p.kill().unwrap(); + sleep(Duration::from_millis(delay)); + + let (buf_stdout, buf_stderr) = take_stdout_stderr(&mut p); + assert!(buf_stderr.is_empty()); + assert_eq!(buf_stdout, "foobar\n"); + + at.remove("file"); + args.push("---disable-inotify"); + } +} + #[test] #[cfg(all(unix, not(any(target_os = "android", target_vendor = "apple"))))] // FIXME: make this work not just on Linux fn test_follow_name_move_create() {