1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-28 11:37:44 +00:00

Merge pull request #5806 from cakebaker/nl_is_a_directory

nl: don't exit if input is directory
This commit is contained in:
Sylvestre Ledru 2024-01-14 23:29:05 +01:00 committed by GitHub
commit ef03a4625f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 5 deletions

View file

@ -7,8 +7,8 @@ use clap::{crate_version, Arg, ArgAction, Command};
use std::fs::File;
use std::io::{stdin, BufRead, BufReader, Read};
use std::path::Path;
use uucore::error::{FromIo, UResult, USimpleError};
use uucore::{format_usage, help_about, help_section, help_usage};
use uucore::error::{set_exit_code, FromIo, UResult, USimpleError};
use uucore::{format_usage, help_about, help_section, help_usage, show_error};
mod helper;
@ -205,9 +205,15 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
nl(&mut buffer, &mut stats, &settings)?;
} else {
let path = Path::new(file);
let reader = File::open(path).map_err_context(|| file.to_string())?;
let mut buffer = BufReader::new(reader);
nl(&mut buffer, &mut stats, &settings)?;
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 mut buffer = BufReader::new(reader);
nl(&mut buffer, &mut stats, &settings)?;
}
}
}

View file

@ -634,3 +634,20 @@ fn test_empty_section_delimiter() {
.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);
}