@@ -117,6 +117,61 @@ def test_parse_malformed_diff(self):
117
117
with open (self .sample_bad_file ) as diff_file :
118
118
self .assertRaises (UnidiffParseError , PatchSet , diff_file )
119
119
120
+ def test_diff_lines_linenos (self ):
121
+ with open (self .sample_file , 'rb' ) as diff_file :
122
+ res = PatchSet (diff_file , encoding = 'utf-8' )
123
+
124
+ target_line_nos = []
125
+ source_line_nos = []
126
+ diff_line_nos = []
127
+ for diff_file in res :
128
+ for hunk in diff_file :
129
+ for line in hunk :
130
+ target_line_nos .append (line .target_line_no )
131
+ source_line_nos .append (line .source_line_no )
132
+ diff_line_nos .append (line .diff_line_no )
133
+
134
+ expected_target_line_nos = [
135
+ # File: 1, Hunk: 1
136
+ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ,
137
+ # File: 1, Hunk: 2
138
+ 11 , 12 , 13 , None , None , None , None , None , None , None , 14 , 15 , 16 , None , 17 , 18 , 19 , 20 ,
139
+ # File: 1, Hunk: 3
140
+ 22 , 23 , 24 , 25 , 26 , 27 , 28 ,
141
+ # File: 2, Hunk 1
142
+ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ,
143
+ # File: 3, Hunk 1
144
+ None , None , None , None , None , None , None , None , None ,
145
+ ]
146
+ expected_source_line_nos = [
147
+ # File: 1, Hunk: 1
148
+ None , None , None , None , None , None , 1 , 2 , 3 ,
149
+ # File: 1, Hunk: 2
150
+ 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , None , 15 , 16 , 17 , None , 18 , 19 , 20 ,
151
+ # File: 1, Hunk: 3
152
+ 22 , 23 , 24 , None , None , None , None ,
153
+ # File: 2, Hunk 1
154
+ None , None , None , None , None , None , None , None , None ,
155
+ # File: 3, Hunk 1
156
+ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ,
157
+ ]
158
+ expected_diff_line_nos = [
159
+ # File: 1, Hunk: 1
160
+ 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 ,
161
+ # File: 1, Hunk: 2
162
+ 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 ,
163
+ # File: 1, Hunk: 3
164
+ 33 , 34 , 35 , 36 , 37 , 38 , 39 ,
165
+ # File: 2, Hunk 1
166
+ 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 ,
167
+ # File: 3, Hunk 1
168
+ 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , 63 ,
169
+ ]
170
+
171
+ self .assertEqual (target_line_nos , expected_target_line_nos )
172
+ self .assertEqual (source_line_nos , expected_source_line_nos )
173
+ self .assertEqual (diff_line_nos , expected_diff_line_nos )
174
+
120
175
121
176
class TestVCSSamples (unittest .TestCase ):
122
177
"""Tests for real examples from VCS."""
0 commit comments