od: fix reading from file while supplying a format argument

The following test case read stdin instead of file:
```
echo abcdefg > file
cargo run -- od --format x1 file
```

This is because the -t/--format argument was able to absorb multiple
arguments after it. This has now been fixed, and a test case is added
to ensure it will not happen again.
This commit is contained in:
Jeremy Soller 2021-08-06 14:48:18 -06:00
parent 32d281bbcc
commit 6af3f774f1
No known key found for this signature in database
GPG key ID: E988B49EE78A7FB1
2 changed files with 12 additions and 0 deletions

View file

@ -435,6 +435,7 @@ pub fn uu_app() -> clap::App<'static, 'static> {
.long(options::FORMAT)
.help("select output format or formats")
.multiple(true)
.number_of_values(1)
.value_name("TYPE"),
)
.arg(

View file

@ -46,6 +46,17 @@ fn test_file() {
.succeeds()
.no_stderr()
.stdout_is(unindent(ALPHA_OUT));
// Ensure that default format matches `-t o2`, and that `-t` does not absorb file argument
new_ucmd!()
.arg("--endian=little")
.arg("-t")
.arg("o2")
.arg(file.as_os_str())
.succeeds()
.no_stderr()
.stdout_is(unindent(ALPHA_OUT));
let _ = remove_file(file);
}