mirror of
https://github.com/uutils/coreutils.git
synced 2026-06-10 15:48:22 -07:00
more: add error message if the argument is a directory (#1983)
This commit is contained in:
+10
-2
@@ -41,7 +41,7 @@ pub fn uumain(args: impl uucore::Args) -> i32 {
|
||||
|
||||
let matches = App::new(executable!())
|
||||
.version(VERSION)
|
||||
.usage(&usage[..])
|
||||
.usage(usage.as_str())
|
||||
.about(ABOUT)
|
||||
.arg(
|
||||
Arg::with_name(options::FILE)
|
||||
@@ -52,10 +52,18 @@ pub fn uumain(args: impl uucore::Args) -> i32 {
|
||||
|
||||
// FixME: fail without panic for now; but `more` should work with no arguments (ie, for piped input)
|
||||
if let None | Some("-") = matches.value_of(options::FILE) {
|
||||
println!("{}: incorrect usage", executable!());
|
||||
show_usage_error!("Reading from stdin isn't supported yet.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if let Some(x) = matches.value_of(options::FILE) {
|
||||
let path = std::path::Path::new(x);
|
||||
if path.is_dir() {
|
||||
show_usage_error!("'{}' is a directory.", x);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
more(matches);
|
||||
|
||||
0
|
||||
|
||||
@@ -6,3 +6,14 @@ fn test_more_no_arg() {
|
||||
let result = ucmd.run();
|
||||
assert!(!result.success);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_more_dir_arg() {
|
||||
let (_, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.arg(".");
|
||||
let result = ucmd.run();
|
||||
assert!(!result.success);
|
||||
const EXPECTED_ERROR_MESSAGE: &str =
|
||||
"more: '.' is a directory.\nTry 'more --help' for more information.";
|
||||
assert_eq!(result.stderr.trim(), EXPECTED_ERROR_MESSAGE);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user