mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 11:37:44 +00:00
nl: don't exit if input is directory
This commit is contained in:
parent
8e83b347c6
commit
1c6bf6991c
2 changed files with 28 additions and 5 deletions
|
@ -7,8 +7,8 @@ use clap::{crate_version, Arg, ArgAction, Command};
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::{stdin, BufRead, BufReader, Read};
|
use std::io::{stdin, BufRead, BufReader, Read};
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use uucore::error::{FromIo, UResult, USimpleError};
|
use uucore::error::{set_exit_code, FromIo, UResult, USimpleError};
|
||||||
use uucore::{format_usage, help_about, help_section, help_usage};
|
use uucore::{format_usage, help_about, help_section, help_usage, show_error};
|
||||||
|
|
||||||
mod helper;
|
mod helper;
|
||||||
|
|
||||||
|
@ -205,11 +205,17 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
||||||
nl(&mut buffer, &mut stats, &settings)?;
|
nl(&mut buffer, &mut stats, &settings)?;
|
||||||
} else {
|
} else {
|
||||||
let path = Path::new(file);
|
let path = Path::new(file);
|
||||||
|
|
||||||
|
if path.is_dir() {
|
||||||
|
show_error!("{}: Is a directory", path.display());
|
||||||
|
set_exit_code(1);
|
||||||
|
} else {
|
||||||
let reader = File::open(path).map_err_context(|| file.to_string())?;
|
let reader = File::open(path).map_err_context(|| file.to_string())?;
|
||||||
let mut buffer = BufReader::new(reader);
|
let mut buffer = BufReader::new(reader);
|
||||||
nl(&mut buffer, &mut stats, &settings)?;
|
nl(&mut buffer, &mut stats, &settings)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
@ -634,3 +634,20 @@ fn test_empty_section_delimiter() {
|
||||||
.stdout_is(" 1\ta\n \n 2\tb\n");
|
.stdout_is(" 1\ta\n \n 2\tb\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_directory_as_input() {
|
||||||
|
let (at, mut ucmd) = at_and_ucmd!();
|
||||||
|
let dir = "dir";
|
||||||
|
let file = "file";
|
||||||
|
let content = "aaa";
|
||||||
|
|
||||||
|
at.mkdir(dir);
|
||||||
|
at.write(file, content);
|
||||||
|
|
||||||
|
ucmd.arg(dir)
|
||||||
|
.arg(file)
|
||||||
|
.fails()
|
||||||
|
.stderr_is(format!("nl: {dir}: Is a directory\n"))
|
||||||
|
.stdout_contains(content);
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue