From 5e6fa49ef5e231cb06e51220d736722f59c0d430 Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Fri, 22 Mar 2024 15:13:53 +0100 Subject: [PATCH] more: fix incorrect tests --- src/uu/more/src/more.rs | 11 +++++----- tests/by-util/test_more.rs | 44 +++++++++++++++++++++++--------------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/src/uu/more/src/more.rs b/src/uu/more/src/more.rs index cdf6c9e8b5e..0b8c838f29d 100644 --- a/src/uu/more/src/more.rs +++ b/src/uu/more/src/more.rs @@ -3,11 +3,9 @@ // For the full copyright and license information, please view the LICENSE // file that was distributed with this source code. -// spell-checker:ignore (methods) isnt - use std::{ fs::File, - io::{stdin, stdout, BufReader, IsTerminal, Read, Stdout, Write}, + io::{stdin, stdout, BufReader, Read, Stdout, Write}, panic::set_hook, path::Path, time::Duration, @@ -159,13 +157,14 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { buff.clear(); } reset_term(&mut stdout); - } else if !std::io::stdin().is_terminal() { + } else { stdin().read_to_string(&mut buff).unwrap(); + if buff.is_empty() { + return Err(UUsageError::new(1, "bad usage")); + } let mut stdout = setup_term(); more(&buff, &mut stdout, false, None, None, &mut options)?; reset_term(&mut stdout); - } else { - return Err(UUsageError::new(1, "bad usage")); } Ok(()) } diff --git a/tests/by-util/test_more.rs b/tests/by-util/test_more.rs index 3a5eb58b04a..3941dc1dad9 100644 --- a/tests/by-util/test_more.rs +++ b/tests/by-util/test_more.rs @@ -7,36 +7,46 @@ use std::io::IsTerminal; #[test] fn test_more_no_arg() { - // Reading from stdin is now supported, so this must succeed if std::io::stdout().is_terminal() { - new_ucmd!().succeeds(); + new_ucmd!().fails().stderr_contains("more: bad usage"); } } #[test] fn test_valid_arg() { if std::io::stdout().is_terminal() { - new_ucmd!().arg("-c").succeeds(); - new_ucmd!().arg("--print-over").succeeds(); + let scene = TestScenario::new(util_name!()); + let at = &scene.fixtures; + + let file = "test_file"; + at.touch(file); + + scene.ucmd().arg(file).arg("-c").succeeds(); + scene.ucmd().arg(file).arg("--print-over").succeeds(); - new_ucmd!().arg("-p").succeeds(); - new_ucmd!().arg("--clean-print").succeeds(); + scene.ucmd().arg(file).arg("-p").succeeds(); + scene.ucmd().arg(file).arg("--clean-print").succeeds(); - new_ucmd!().arg("-s").succeeds(); - new_ucmd!().arg("--squeeze").succeeds(); + scene.ucmd().arg(file).arg("-s").succeeds(); + scene.ucmd().arg(file).arg("--squeeze").succeeds(); - new_ucmd!().arg("-u").succeeds(); - new_ucmd!().arg("--plain").succeeds(); + scene.ucmd().arg(file).arg("-u").succeeds(); + scene.ucmd().arg(file).arg("--plain").succeeds(); - new_ucmd!().arg("-n").arg("10").succeeds(); - new_ucmd!().arg("--lines").arg("0").succeeds(); - new_ucmd!().arg("--number").arg("0").succeeds(); + scene.ucmd().arg(file).arg("-n").arg("10").succeeds(); + scene.ucmd().arg(file).arg("--lines").arg("0").succeeds(); + scene.ucmd().arg(file).arg("--number").arg("0").succeeds(); - new_ucmd!().arg("-F").arg("10").succeeds(); - new_ucmd!().arg("--from-line").arg("0").succeeds(); + scene.ucmd().arg(file).arg("-F").arg("10").succeeds(); + scene + .ucmd() + .arg(file) + .arg("--from-line") + .arg("0") + .succeeds(); - new_ucmd!().arg("-P").arg("something").succeeds(); - new_ucmd!().arg("--pattern").arg("-1").succeeds(); + scene.ucmd().arg(file).arg("-P").arg("something").succeeds(); + scene.ucmd().arg(file).arg("--pattern").arg("-1").succeeds(); } }