diff --git a/README.md b/README.md index 3c09334..e0d8f12 100644 --- a/README.md +++ b/README.md @@ -88,5 +88,5 @@ or using gradle: ```groovy // https://mvnrepository.com/artifact/io.github.java-diff-utils/java-diff-utils -compile group: 'io.github.java-diff-utils', name: 'java-diff-utils', version: '4.0' +implementation "io.github.java-diff-utils:java-diff-utils:4.0" ``` diff --git a/src/main/java/com/github/difflib/text/DiffRowGenerator.java b/src/main/java/com/github/difflib/text/DiffRowGenerator.java index 90babc7..4f963cd 100644 --- a/src/main/java/com/github/difflib/text/DiffRowGenerator.java +++ b/src/main/java/com/github/difflib/text/DiffRowGenerator.java @@ -267,9 +267,11 @@ public final class DiffRowGenerator { } List normalizeLines(List list) { - return list.stream() - .map(lineNormalizer::apply) - .collect(toList()); + return reportLinesUnchanged + ? list + : list.stream() + .map(lineNormalizer::apply) + .collect(toList()); } /** diff --git a/src/main/java/com/github/difflib/unifieddiff/UnifiedDiffReader.java b/src/main/java/com/github/difflib/unifieddiff/UnifiedDiffReader.java index db14116..c208786 100644 --- a/src/main/java/com/github/difflib/unifieddiff/UnifiedDiffReader.java +++ b/src/main/java/com/github/difflib/unifieddiff/UnifiedDiffReader.java @@ -78,7 +78,9 @@ public final class UnifiedDiffReader { headerTxt += line + "\n"; } } - data.setHeader(headerTxt); + if (!"".equals(headerTxt)) { + data.setHeader(headerTxt); + } while (line != null) { if (!CHUNK.validLine(line)) { diff --git a/src/test/java/com/github/difflib/text/DiffRowGeneratorTest.java b/src/test/java/com/github/difflib/text/DiffRowGeneratorTest.java index 752560b..c667b25 100644 --- a/src/test/java/com/github/difflib/text/DiffRowGeneratorTest.java +++ b/src/test/java/com/github/difflib/text/DiffRowGeneratorTest.java @@ -405,4 +405,16 @@ public class DiffRowGeneratorTest { rows = generator.generateDiffRows(Arrays.asList("\t<"), Arrays.asList("<")); assertEquals("[[CHANGE, <,<]]", rows.toString()); } + + @Test + public void testGenerationIssue44reportLinesUnchangedProblem() throws DiffException { + DiffRowGenerator generator = DiffRowGenerator.create() + .showInlineDiffs(true) + .reportLinesUnchanged(true) + .oldTag(f -> "~~") + .newTag(f -> "**") + .build(); + List rows = generator.generateDiffRows(Arrays.asList("
To do
"), Arrays.asList("
Done
")); + assertEquals("[[CHANGE,
~~T~~o~~ do~~
,
**D**o**ne**
]]", rows.toString()); + } } diff --git a/src/test/java/com/github/difflib/unifieddiff/UnifiedDiffReaderTest.java b/src/test/java/com/github/difflib/unifieddiff/UnifiedDiffReaderTest.java index 905cb24..eb0280d 100644 --- a/src/test/java/com/github/difflib/unifieddiff/UnifiedDiffReaderTest.java +++ b/src/test/java/com/github/difflib/unifieddiff/UnifiedDiffReaderTest.java @@ -126,4 +126,19 @@ public class UnifiedDiffReaderTest { assertThat(diff.getTail()).isNull(); } + + @Test + public void testParseIssue33() throws IOException { + UnifiedDiff diff = UnifiedDiffReader.parseUnifiedDiff( + UnifiedDiffReaderTest.class.getResourceAsStream("problem_diff_issue33.diff")); + + assertThat(diff.getFiles().size()).isEqualTo(1); + + UnifiedDiffFile file1 = diff.getFiles().get(0); + assertThat(file1.getFromFile()).isEqualTo("Main.java"); + assertThat(file1.getPatch().getDeltas().size()).isEqualTo(1); + + assertThat(diff.getTail()).isNull(); + assertThat(diff.getHeader()).isNull(); + } } diff --git a/src/test/resources/com/github/difflib/unifieddiff/problem_diff_issue33.diff b/src/test/resources/com/github/difflib/unifieddiff/problem_diff_issue33.diff new file mode 100644 index 0000000..a78344d --- /dev/null +++ b/src/test/resources/com/github/difflib/unifieddiff/problem_diff_issue33.diff @@ -0,0 +1,6 @@ +--- a/Main.java ++++ b/Main.java +@@ -2,2 +2,3 @@ public class Main { + public static void main(String[] args) { ++ System.out.println("Hello, world!"); + } \ No newline at end of file