mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 19:47:45 +00:00
df: show error when file argument does not exist
For example: $ df not-a-file df: not-a-file: No such file or directory Fixes #3373.
This commit is contained in:
parent
c5413167e2
commit
460bd67050
2 changed files with 32 additions and 6 deletions
|
@ -12,9 +12,9 @@ mod filesystem;
|
|||
mod table;
|
||||
|
||||
use uucore::display::Quotable;
|
||||
use uucore::error::{UError, UResult};
|
||||
use uucore::format_usage;
|
||||
use uucore::error::{UError, UResult, USimpleError};
|
||||
use uucore::fsext::{read_fs_list, MountInfo};
|
||||
use uucore::{format_usage, show};
|
||||
|
||||
use clap::{crate_version, Arg, ArgMatches, Command};
|
||||
|
||||
|
@ -311,10 +311,17 @@ where
|
|||
|
||||
// Convert each path into a `Filesystem`, which contains
|
||||
// both the mount information and usage information.
|
||||
paths
|
||||
.iter()
|
||||
.filter_map(|p| Filesystem::from_path(&mounts, p))
|
||||
.collect()
|
||||
let mut result = vec![];
|
||||
for path in paths {
|
||||
match Filesystem::from_path(&mounts, path) {
|
||||
Some(fs) => result.push(fs),
|
||||
None => show!(USimpleError::new(
|
||||
1,
|
||||
format!("{}: No such file or directory", path.as_ref().display())
|
||||
)),
|
||||
}
|
||||
}
|
||||
result
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
|
@ -361,6 +368,12 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
}
|
||||
};
|
||||
|
||||
// This can happen if paths are given as command-line arguments
|
||||
// but none of the paths exist.
|
||||
if filesystems.is_empty() {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
// The running total of filesystem sizes and usage.
|
||||
//
|
||||
// This accumulator is computed in case we need to display the
|
||||
|
|
|
@ -297,3 +297,16 @@ fn test_output_field_no_more_than_once() {
|
|||
.fails()
|
||||
.usage_error("option --output: field 'target' used more than once");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_nonexistent_file() {
|
||||
new_ucmd!()
|
||||
.arg("does-not-exist")
|
||||
.fails()
|
||||
.stderr_only("df: does-not-exist: No such file or directory");
|
||||
new_ucmd!()
|
||||
.args(&["--output=file", "does-not-exist", "."])
|
||||
.fails()
|
||||
.stderr_is("df: does-not-exist: No such file or directory\n")
|
||||
.stdout_is("File \n. \n");
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue