Skip to content

Commit dac751b

Browse files
committed
fixes #98 - deleted file mode
1 parent f76abb5 commit dac751b

File tree

4 files changed

+88
-1
lines changed

4 files changed

+88
-1
lines changed

java-diff-utils/src/main/java/com/github/difflib/unifieddiff/UnifiedDiffFile.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public final class UnifiedDiffFile {
3030
private String toTimestamp;
3131
private String index;
3232
private String newFileMode;
33+
private String deletedFileMode;
3334
private Patch<String> patch = new Patch<>();
3435

3536
public String getDiffCommand() {
@@ -101,4 +102,12 @@ public void setNewFileMode(String newFileMode) {
101102
public String getNewFileMode() {
102103
return newFileMode;
103104
}
105+
106+
public String getDeletedFileMode() {
107+
return deletedFileMode;
108+
}
109+
110+
public void setDeletedFileMode(String deletedFileMode) {
111+
this.deletedFileMode = deletedFileMode;
112+
}
104113
}

java-diff-utils/src/main/java/com/github/difflib/unifieddiff/UnifiedDiffReader.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ public final class UnifiedDiffReader {
5050
private final UnifiedDiffLine TO_FILE = new UnifiedDiffLine(true, "^\\+\\+\\+\\s", this::processToFile);
5151

5252
private final UnifiedDiffLine NEW_FILE_MODE = new UnifiedDiffLine(true, "^new\\sfile\\smode\\s(\\d+)", this::processNewFileMode);
53+
54+
private final UnifiedDiffLine DELETED_FILE_MODE = new UnifiedDiffLine(true, "^deleted\\sfile\\smode\\s(\\d+)", this::processDeletedFileMode);
5355

5456
private final UnifiedDiffLine CHUNK = new UnifiedDiffLine(false, UNIFIED_DIFF_CHUNK_REGEXP, this::processChunk);
5557
private final UnifiedDiffLine LINE_NORMAL = new UnifiedDiffLine("^\\s", this::processNormalLine);
@@ -89,7 +91,7 @@ private UnifiedDiff parse() throws IOException, UnifiedDiffParserException {
8991
if (!CHUNK.validLine(line)) {
9092
initFileIfNecessary();
9193
while (line != null && !CHUNK.validLine(line)) {
92-
if (processLine(line, DIFF_COMMAND, INDEX, FROM_FILE, TO_FILE, NEW_FILE_MODE) == false) {
94+
if (processLine(line, DIFF_COMMAND, INDEX, FROM_FILE, TO_FILE, NEW_FILE_MODE, DELETED_FILE_MODE) == false) {
9395
throw new UnifiedDiffParserException("expected file start line not found");
9496
}
9597
line = READER.readLine();
@@ -254,6 +256,11 @@ private void processNewFileMode(MatchResult match, String line) {
254256
//initFileIfNecessary();
255257
actualFile.setNewFileMode(match.group(1));
256258
}
259+
260+
private void processDeletedFileMode(MatchResult match, String line) {
261+
//initFileIfNecessary();
262+
actualFile.setDeletedFileMode(match.group(1));
263+
}
257264

258265
private String extractFileName(String _line) {
259266
Matcher matcher = TIMESTAMP_REGEXP.matcher(_line);

java-diff-utils/src/test/java/com/github/difflib/unifieddiff/UnifiedDiffReaderTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,4 +220,20 @@ public void testParseIssue85() throws IOException {
220220
public void testTimeStampRegexp() {
221221
assertThat("2019-04-18 13:49:39.516149751 +0200").matches(UnifiedDiffReader.TIMESTAMP_REGEXP);
222222
}
223+
224+
@Test
225+
public void testParseIssue98() throws IOException {
226+
UnifiedDiff diff = UnifiedDiffReader.parseUnifiedDiff(
227+
UnifiedDiffReaderTest.class.getResourceAsStream("problem_diff_issue98.diff"));
228+
229+
assertThat(diff.getFiles().size()).isEqualTo(1);
230+
231+
assertEquals(1, diff.getFiles().size());
232+
233+
final UnifiedDiffFile file1 = diff.getFiles().get(0);
234+
assertEquals("100644",
235+
file1.getDeletedFileMode());
236+
assertEquals("src/test/java/se/bjurr/violations/lib/model/ViolationTest.java", file1.getFromFile());
237+
assertThat(diff.getTail()).isEqualTo("2.25.1");
238+
}
223239
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
From fd940c6f66126734e82c00889e7c987e11deea91 Mon Sep 17 00:00:00 2001
2+
From: Tomas Bjerre <tomas.bjerre85@gmail.com>
3+
Date: Sun, 6 Sep 2020 11:20:34 +0200
4+
Subject: [PATCH] removing file
5+
6+
---
7+
.../violations/lib/model/ViolationTest.java | 37 -------------------
8+
1 file changed, 37 deletions(-)
9+
delete mode 100644 src/test/java/se/bjurr/violations/lib/model/ViolationTest.java
10+
11+
diff --git a/src/test/java/se/bjurr/violations/lib/model/ViolationTest.java b/src/test/java/se/bjurr/violations/lib/model/ViolationTest.java
12+
deleted file mode 100644
13+
index 3e40b52..0000000
14+
--- a/src/test/java/se/bjurr/violations/lib/model/ViolationTest.java
15+
+++ /dev/null
16+
@@ -1,37 +0,0 @@
17+
-package se.bjurr.violations.lib.model;
18+
-
19+
-import static org.assertj.core.api.Assertions.assertThat;
20+
-import static se.bjurr.violations.lib.model.SEVERITY.ERROR;
21+
-import static se.bjurr.violations.lib.model.Violation.violationBuilder;
22+
-import static se.bjurr.violations.lib.reports.Parser.CHECKSTYLE;
23+
-
24+
-import org.junit.Test;
25+
-import se.bjurr.violations.lib.model.Violation.ViolationBuilder;
26+
-import uk.co.jemos.podam.api.PodamFactoryImpl;
27+
-
28+
-public class ViolationTest {
29+
-
30+
- @Test
31+
- public void testThatFilePathsAreAlwaysFronSlashes() {
32+
- final Violation violation =
33+
- violationBuilder() //
34+
- .setParser(CHECKSTYLE) //
35+
- .setFile("c:\\path\\to\\file.xml") //
36+
- .setMessage("message") //
37+
- .setSeverity(ERROR) //
38+
- .setStartLine(1) //
39+
- .build();
40+
- assertThat(violation.getFile()) //
41+
- .isEqualTo("c:/path/to/file.xml");
42+
- }
43+
-
44+
- @Test
45+
- public void testThatCopyConstructorWorks() {
46+
- final ViolationBuilder originalBuilder =
47+
- new PodamFactoryImpl().manufacturePojo(ViolationBuilder.class);
48+
- final Violation original = originalBuilder.build();
49+
- final Violation copied = new Violation(original);
50+
- assertThat(copied) //
51+
- .isEqualTo(original);
52+
- }
53+
-}
54+
--
55+
2.25.1

0 commit comments

Comments
 (0)