Add a couple of special cases which fix the zero-context diff case.

This commit is contained in:
Chris Emerson 2017-10-19 23:14:20 +01:00
parent 6c1c81bbce
commit f9bcb58eb3

View file

@ -47,7 +47,7 @@ pub fn make_diff(expected: &str, actual: &str, context_size: usize) -> Vec<Misma
for result in diff::lines(expected, actual) { for result in diff::lines(expected, actual) {
match result { match result {
diff::Result::Left(str) => { diff::Result::Left(str) => {
if lines_since_mismatch >= context_size { if lines_since_mismatch >= context_size && lines_since_mismatch > 0 {
results.push(mismatch); results.push(mismatch);
mismatch = Mismatch::new(line_number - context_queue.len() as u32); mismatch = Mismatch::new(line_number - context_queue.len() as u32);
} }
@ -60,7 +60,7 @@ pub fn make_diff(expected: &str, actual: &str, context_size: usize) -> Vec<Misma
lines_since_mismatch = 0; lines_since_mismatch = 0;
} }
diff::Result::Right(str) => { diff::Result::Right(str) => {
if lines_since_mismatch >= context_size { if lines_since_mismatch >= context_size && lines_since_mismatch > 0 {
results.push(mismatch); results.push(mismatch);
mismatch = Mismatch::new(line_number - context_queue.len() as u32); mismatch = Mismatch::new(line_number - context_queue.len() as u32);
} }
@ -80,7 +80,7 @@ pub fn make_diff(expected: &str, actual: &str, context_size: usize) -> Vec<Misma
if lines_since_mismatch < context_size { if lines_since_mismatch < context_size {
mismatch.lines.push(DiffLine::Context(str.to_owned())); mismatch.lines.push(DiffLine::Context(str.to_owned()));
} else { } else if context_size > 0 {
context_queue.push_back(str); context_queue.push_back(str);
} }