19
19
20
20
package com .github .checkstyle .patchfilter ;
21
21
22
- import static org .junit .jupiter .api .Assertions .assertFalse ;
22
+ import static org .junit .Assert .assertEquals ;
23
+ import static org .junit .Assert .assertNull ;
23
24
import static org .junit .jupiter .api .Assertions .assertTrue ;
24
25
25
- import org .junit .jupiter .api .Test ;
26
+ import java .io .FileInputStream ;
27
+
28
+ import org .junit .Ignore ;
29
+ import org .junit .Test ;
26
30
27
31
import com .github .checkstyle .AbstractModuleTestSupport ;
32
+ import com .github .difflib .unifieddiff .UnifiedDiff ;
33
+ import com .github .difflib .unifieddiff .UnifiedDiffFile ;
34
+ import com .github .difflib .unifieddiff .UnifiedDiffReader ;
28
35
import com .puppycrawl .tools .checkstyle .api .AuditEvent ;
29
36
import com .puppycrawl .tools .checkstyle .api .LocalizedMessage ;
30
37
import com .puppycrawl .tools .checkstyle .api .SeverityLevel ;
@@ -51,33 +58,166 @@ public void testAccept() throws Exception {
51
58
@ Test
52
59
public void testMultiChangesOnOneFileOne () throws Exception {
53
60
final String fileName = getPath ("MultiChangesOnOneFilePatch.txt" );
54
- final SuppressionPatchFilter filter = createSuppressionPatchFilter (fileName );
55
- final LocalizedMessage message = new LocalizedMessage (4 , 1 , null , "msg" , null ,
56
- SeverityLevel .ERROR , null , getClass (), null );
57
- final AuditEvent ev = new AuditEvent (this , "Update.java" , message );
58
- assertTrue (filter .accept (ev ),
59
- "Audit event should be rejected when there are no matching patch filters" );
61
+ final FileInputStream ins = new FileInputStream (fileName );
62
+ final UnifiedDiff diff = UnifiedDiffReader .parseUnifiedDiff (ins );
63
+ assertEquals (1 , diff .getFiles ().size ());
64
+ final UnifiedDiffFile file1 = diff .getFiles ().get (0 );
65
+ assertNull (file1 .getDiffCommand ());
66
+ assertEquals ("Origin.java" , file1 .getFromFile ());
67
+ assertEquals ("Update.java" , file1 .getToFile ());
68
+ assertEquals (2 , file1 .getPatch ().getDeltas ().size ());
69
+ assertNull (diff .getTail ());
60
70
}
61
71
62
72
@ Test
63
- public void testMultiChangedFilesOnOnePatch () throws Exception {
73
+ @ Ignore ("https://github.com/java-diff-utils/java-diff-utils/issues/83" )
74
+ public void testMultiChangedFilesOnOnePatchOne () throws Exception {
75
+ final String fileName = getPath ("problem_diff_issue51.diff" );
76
+ final FileInputStream ins = new FileInputStream (fileName );
77
+ final UnifiedDiff diff = UnifiedDiffReader .parseUnifiedDiff (ins );
78
+ assertEquals (2 , diff .getFiles ().size ());
79
+ final UnifiedDiffFile file1 = diff .getFiles ().get (0 );
80
+ assertEquals ("diff -U0 old/f1 new/f1" , file1 .getDiffCommand ());
81
+ // here is f1 not old/f1 and new/f1
82
+ assertEquals ("f1" , file1 .getFromFile ());
83
+ assertEquals ("f1" , file1 .getToFile ());
84
+ assertEquals (1 , file1 .getPatch ().getDeltas ().size ());
85
+ final UnifiedDiffFile file2 = diff .getFiles ().get (1 );
86
+ assertEquals ("diff -U0 old/f2 new/f2" , file2 .getDiffCommand ());
87
+ // same issue here is f2 not old/f2 and new/f2
88
+ assertEquals ("f2" , file2 .getFromFile ());
89
+ assertEquals ("f2" , file2 .getToFile ());
90
+ assertEquals (1 , file2 .getPatch ().getDeltas ().size ());
91
+ assertNull (diff .getTail ());
92
+ }
93
+
94
+ @ Test
95
+ public void testMultiChangedFilesOnOnePatchTwo () throws Exception {
64
96
final String fileName = getPath ("MultiChangedFilesOnOnePatch.txt" );
65
- final SuppressionPatchFilter filter = createSuppressionPatchFilter (fileName );
66
- final LocalizedMessage message1 = new LocalizedMessage (7 , 1 , null , "msg" , null ,
67
- SeverityLevel .ERROR , null , getClass (), null );
68
- final AuditEvent ev1 = new AuditEvent (this , "Test2.java" , message1 );
69
- assertTrue (filter .accept (ev1 ),
70
- "Audit event should be rejected when there are no matching patch filters" );
71
- final LocalizedMessage message2 = new LocalizedMessage (77 , 1 , null , "msg" , null ,
72
- SeverityLevel .ERROR , null , getClass (), null );
73
- final AuditEvent ev2 = new AuditEvent (this , "Test1.java" , message2 );
74
- assertFalse (filter .accept (ev2 ),
75
- "Audit event should be rejected when there are no matching patch filters" );
76
- final LocalizedMessage message3 = new LocalizedMessage (7 , 1 , null , "msg" , null ,
77
- SeverityLevel .ERROR , null , getClass (), null );
78
- final AuditEvent ev3 = new AuditEvent (this , "Test1.java" , message1 );
79
- assertTrue (filter .accept (ev1 ),
80
- "Audit event should be rejected when there are no matching patch filters" );
97
+ final FileInputStream ins = new FileInputStream (fileName );
98
+ final UnifiedDiff diff = UnifiedDiffReader .parseUnifiedDiff (ins );
99
+ assertEquals (2 , diff .getFiles ().size ());
100
+ final UnifiedDiffFile file1 = diff .getFiles ().get (0 );
101
+ assertEquals ("diff -u Origin/Test1.java Update/Test1.java" ,
102
+ file1 .getDiffCommand ());
103
+ assertEquals ("Origin/Test1.java" , file1 .getFromFile ());
104
+ assertEquals ("Update/Test1.java" , file1 .getToFile ());
105
+ assertEquals (1 , file1 .getPatch ().getDeltas ().size ());
106
+ final UnifiedDiffFile file2 = diff .getFiles ().get (1 );
107
+ assertEquals ("diff -u Origin/Test2.java Update/Test2.java" ,
108
+ file2 .getDiffCommand ());
109
+ assertEquals ("Origin/Test2.java" , file2 .getFromFile ());
110
+ assertEquals ("Update/Test2.java" , file2 .getToFile ());
111
+ assertEquals (1 , file2 .getPatch ().getDeltas ().size ());
112
+ assertNull (diff .getTail ());
113
+ }
114
+
115
+ @ Test
116
+ public void testGitDiffPatch () throws Exception {
117
+ final String fileName = getPath ("PatchFileFromDiffTools/GitDiffPatch.txt" );
118
+ final FileInputStream ins = new FileInputStream (fileName );
119
+ final UnifiedDiff diff = UnifiedDiffReader .parseUnifiedDiff (ins );
120
+ assertEquals (1 , diff .getFiles ().size ());
121
+ final UnifiedDiffFile file1 = diff .getFiles ().get (0 );
122
+ assertEquals ("diff --git a/pom.xml b/pom.xml" , file1 .getDiffCommand ());
123
+ assertEquals ("pom.xml" , file1 .getFromFile ());
124
+ assertEquals ("pom.xml" , file1 .getToFile ());
125
+ assertEquals (1 , file1 .getPatch ().getDeltas ().size ());
126
+ assertNull (diff .getTail ());
127
+ }
128
+
129
+ @ Test
130
+ public void testGitFormatPatchLinuxOne () throws Exception {
131
+ final String fileName = getPath ("PatchFileFromDiffTools/GitFormatPatchLinuxOne.txt" );
132
+ final FileInputStream ins = new FileInputStream (fileName );
133
+ final UnifiedDiff diff = UnifiedDiffReader .parseUnifiedDiff (ins );
134
+ assertEquals (1 , diff .getFiles ().size ());
135
+ final UnifiedDiffFile file1 = diff .getFiles ().get (0 );
136
+ assertEquals ("diff --git a/pom.xml b/pom.xml" , file1 .getDiffCommand ());
137
+ assertEquals ("pom.xml" , file1 .getFromFile ());
138
+ assertEquals ("pom.xml" , file1 .getToFile ());
139
+ assertEquals (1 , file1 .getPatch ().getDeltas ().size ());
140
+ assertEquals ("2.7.4\n \n " , diff .getTail ());
141
+ }
142
+
143
+ @ Test
144
+ @ Ignore ("error: com.github.difflib.unifieddiff.UnifiedDiffParserException: "
145
+ + "expected file start line not found" )
146
+ public void testGitFormatPatchLinuxTwo () throws Exception {
147
+ final String fileName = getPath ("PatchFileFromDiffTools/GitFormatPatchLinuxTwo.txt" );
148
+ final FileInputStream ins = new FileInputStream (fileName );
149
+ final UnifiedDiff diff = UnifiedDiffReader .parseUnifiedDiff (ins );
150
+ assertEquals (2 , diff .getFiles ().size ());
151
+ final UnifiedDiffFile file1 = diff .getFiles ().get (0 );
152
+ assertEquals ("diff --git a/config/ant-phase-verify.xml b/config/ant-phase-verify.xml" ,
153
+ file1 .getDiffCommand ());
154
+ assertEquals ("ant-phase-verify.xml" , file1 .getFromFile ());
155
+ assertEquals ("ant-phase-verify.xml" , file1 .getToFile ());
156
+ assertEquals (1 , file1 .getPatch ().getDeltas ().size ());
157
+ final UnifiedDiffFile file2 = diff .getFiles ().get (1 );
158
+ assertEquals ("diff --git a/src/test/resources-noncompilable/com/"
159
+ + "puppycrawl/tools/checkstyle/grammar/"
160
+ + "java14/InputJava14InstanceofWithPatternMatching.java "
161
+ + "b/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammar/"
162
+ + "java14/InputJava14InstanceofWithPatternMatching.java" , file2 .getDiffCommand ());
163
+ assertEquals ("InputJava14InstanceofWithPatternMatching.java" , file2 .getFromFile ());
164
+ assertEquals ("InputJava14InstanceofWithPatternMatching.java" , file2 .getToFile ());
165
+ assertEquals (1 , file2 .getPatch ().getDeltas ().size ());
166
+ assertNull (diff .getTail ());
167
+ }
168
+
169
+ @ Test
170
+ public void testGitFormatPatchLinuxThree () throws Exception {
171
+ final String fileName = getPath ("PatchFileFromDiffTools/GitFormatPatchLinuxThree.txt" );
172
+ final FileInputStream ins = new FileInputStream (fileName );
173
+ final UnifiedDiff diff = UnifiedDiffReader .parseUnifiedDiff (ins );
174
+ assertEquals (1 , diff .getFiles ().size ());
175
+ final UnifiedDiffFile file1 = diff .getFiles ().get (0 );
176
+ assertEquals ("diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/"
177
+ + "JavadocMethodCheck.java"
178
+ + " b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/"
179
+ + "JavadocMethodCheck.java" , file1 .getDiffCommand ());
180
+ assertEquals ("src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/"
181
+ + "JavadocMethodCheck.java" , file1 .getFromFile ());
182
+ assertEquals ("src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/"
183
+ + "JavadocMethodCheck.java" , file1 .getToFile ());
184
+ assertEquals (1 , file1 .getPatch ().getDeltas ().size ());
185
+ assertNull (diff .getTail ());
186
+ }
187
+
188
+ @ Test
189
+ public void testGitFormatPatchWindows () throws Exception {
190
+ final String fileName = getPath ("PatchFileFromDiffTools/GitFormatPatchWindows.txt" );
191
+ final FileInputStream ins = new FileInputStream (fileName );
192
+ final UnifiedDiff diff = UnifiedDiffReader .parseUnifiedDiff (ins );
193
+ assertEquals (1 , diff .getFiles ().size ());
194
+ final UnifiedDiffFile file1 = diff .getFiles ().get (0 );
195
+ assertEquals ("diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/Checker.java "
196
+ + "b/src/main/java/com/puppycrawl/tools/checkstyle/Checker.java" ,
197
+ file1 .getDiffCommand ());
198
+ assertEquals ("src/main/java/com/puppycrawl/tools/checkstyle/Checker.java" ,
199
+ file1 .getFromFile ());
200
+ assertEquals ("src/main/java/com/puppycrawl/tools/checkstyle/Checker.java" ,
201
+ file1 .getToFile ());
202
+ assertEquals (1 , file1 .getPatch ().getDeltas ().size ());
203
+ assertEquals ("2.25.1.windows.1\n \n " , diff .getTail ());
204
+ }
205
+
206
+ @ Test
207
+ @ Ignore ("filename parsed error, Expected :<tests/test-check-pyflakes.t>, "
208
+ + "Actual :<tests/test-check-pyflakes.t\t Tue Jun 09 17:13:26 2020 -0400>\n " )
209
+ public void testHgDiffPatch () throws Exception {
210
+ final String fileName = getPath ("PatchFileFromDiffTools/HGDiffPatch.txt" );
211
+ final FileInputStream ins = new FileInputStream (fileName );
212
+ final UnifiedDiff diff = UnifiedDiffReader .parseUnifiedDiff (ins );
213
+ assertEquals (1 , diff .getFiles ().size ());
214
+ final UnifiedDiffFile file1 = diff .getFiles ().get (0 );
215
+ assertEquals ("diff -r 83e41b73d115 -r a4438263b228 tests/test-check-pyflakes.t" ,
216
+ file1 .getDiffCommand ());
217
+ assertEquals ("tests/test-check-pyflakes.t" , file1 .getFromFile ());
218
+ assertEquals ("tests/test-check-pyflakes.t" , file1 .getToFile ());
219
+ assertEquals (1 , file1 .getPatch ().getDeltas ().size ());
220
+ assertNull (diff .getTail ());
81
221
}
82
222
83
223
private static SuppressionPatchFilter
0 commit comments