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

join: print unsorted line in error message

This expands the error message that is printed if either input file has
an unsorted line. Both the program name (join) and the offending line
are printed out with the message to match the behaviour of the GNU
utility.
This commit is contained in:
Cecylia Bocovich 2022-01-20 21:44:30 -05:00
parent 55a47f6fc0
commit 67878de379
No known key found for this signature in database
GPG key ID: 009DE379FD9B7B90
2 changed files with 13 additions and 5 deletions

View file

@ -235,6 +235,7 @@ impl Spec {
struct Line { struct Line {
fields: Vec<Vec<u8>>, fields: Vec<Vec<u8>>,
string: Vec<u8>,
} }
impl Line { impl Line {
@ -247,10 +248,10 @@ impl Line {
.map(Vec::from) .map(Vec::from)
.collect(), .collect(),
Sep::Char(sep) => string.split(|c| *c == sep).map(Vec::from).collect(), Sep::Char(sep) => string.split(|c| *c == sep).map(Vec::from).collect(),
Sep::Line => vec![string], Sep::Line => vec![string.clone()],
}; };
Line { fields } Line { fields, string }
} }
/// Get field at index. /// Get field at index.
@ -444,9 +445,11 @@ impl<'a> State<'a> {
if diff == Ordering::Greater { if diff == Ordering::Greater {
eprintln!( eprintln!(
"{}:{}: is not sorted", "{}: {}:{}: is not sorted: {}",
uucore::execution_phrase(),
self.file_name.maybe_quote(), self.file_name.maybe_quote(),
self.line_num self.line_num,
String::from_utf8_lossy(&line.string)
); );
// This is fatal if the check is enabled. // This is fatal if the check is enabled.

View file

@ -283,11 +283,16 @@ fn missing_format_fields() {
#[test] #[test]
fn wrong_line_order() { fn wrong_line_order() {
let ts = TestScenario::new(util_name!());
new_ucmd!() new_ucmd!()
.arg("fields_2.txt") .arg("fields_2.txt")
.arg("fields_4.txt") .arg("fields_4.txt")
.fails() .fails()
.stderr_is("fields_4.txt:5: is not sorted"); .stderr_is(&format!(
"{} {}: fields_4.txt:5: is not sorted: 11 g 5 gh",
ts.bin_path.to_string_lossy(),
ts.util_name
));
} }
#[test] #[test]