Skip to content

Commit 01f82f1

Browse files
committed
Avoid printing 1 lines skipped
1 parent 10541ef commit 01f82f1

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

src/diff.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,21 @@ use diff::{chars, lines, Result, Result::*};
44
#[derive(Default)]
55
struct DiffState<'a> {
66
skipped_lines: usize,
7+
/// When we skip a line, remember it, in case
8+
/// we end up only skipping one line. In that case we just
9+
/// print the line instead of `... skipped one line ...`
10+
last_skipped_line: Option<&'a str>,
711
/// When we see a removed line, we don't print it, we
812
/// keep it around to compare it with the next added line.
913
prev_left: Option<&'a str>,
1014
}
1115

1216
impl<'a> DiffState<'a> {
1317
fn print_skip(&mut self) {
14-
if self.skipped_lines != 0 {
15-
eprintln!("... {} lines skipped", self.skipped_lines);
18+
match self.skipped_lines {
19+
0 => {}
20+
1 => eprintln!(" {}", self.last_skipped_line.unwrap()),
21+
_ => eprintln!("... {} lines skipped", self.skipped_lines),
1622
}
1723
self.skipped_lines = 0;
1824
}
@@ -38,8 +44,9 @@ impl<'a> DiffState<'a> {
3844
self.print_prev();
3945
self.prev_left = Some(l);
4046
}
41-
Both(..) => {
47+
Both(l, _) => {
4248
self.print_prev();
49+
self.last_skipped_line = Some(l);
4350
self.skipped_lines += 1
4451
}
4552
Right(r) => {

tests/integrations/basic-fail/Cargo.stderr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ actual output differed from expected tests/actual_tests/foomp.stderr
4747
~ --> $DIR/$DIR/src/lib.rs:1:8
4848
... 2 lines skipped
4949
~ | ^^^ some expected text that isn't in the actual message
50-
... 1 lines skipped
50+
5151
-error: aborting doo to previous error
5252
+error: aborting due to previous error
5353
... 3 lines skipped ...

0 commit comments

Comments
 (0)