@@ -56,12 +56,19 @@ def textdocument(request, textdocument_factory):
5656 dict (string = "" , expect = "\n " ),
5757 dict (string = "\n " , expect = "\n " ),
5858 dict (string = "\r \n " , expect = "\r \n " ),
59+ dict (string = "\r " , expect = "\r " ),
5960 dict (string = "one line\n " , expect = "\n " ),
6061 dict (string = "one line\r \n " , expect = "\r \n " ),
62+ dict (string = "one line\r " , expect = "\r " ),
6163 dict (string = "first line\n second line\n " , expect = "\n " ),
6264 dict (string = "first line\r \n second line\r \n " , expect = "\r \n " ),
65+ dict (string = "first line\r second line\r " , expect = "\r " ),
6366 dict (string = "first unix\n then windows\r \n " , expect = "\n " ),
6467 dict (string = "first windows\r \n then unix\n " , expect = "\r \n " ),
68+ dict (string = "first unix\n then macos\r " , expect = "\n " ),
69+ dict (string = "first macos\r then unix\n " , expect = "\r " ),
70+ dict (string = "first macos\r then windows\r \n " , expect = "\r " ),
71+ dict (string = "first windows\r \n then macos\r " , expect = "\r \n " ),
6572)
6673def test_detect_newline (string , expect ):
6774 """``detect_newline()`` gives correct results"""
@@ -157,13 +164,14 @@ def test_textdocument_set_encoding(textdocument, expect):
157164 dict (
158165 doc = TextDocument (lines = ["zéro" , "un" ], newline = "\r \n " ), expect = "zéro\r \n un\r \n "
159166 ),
167+ dict (doc = TextDocument (lines = ["zéro" , "un" ], newline = "\r " ), expect = "zéro\r un\r " ),
160168)
161169def test_textdocument_string (doc , expect ):
162170 """TextDocument.string respects the newline setting"""
163171 assert doc .string == expect
164172
165173
166- @pytest .mark .parametrize ("newline" , ["\n " , "\r \n " ])
174+ @pytest .mark .parametrize ("newline" , ["\n " , "\r \n " , " \r " ])
167175@pytest .mark .kwparametrize (
168176 dict (textdocument = TextDocument (), expect = "" ),
169177 dict (textdocument = TextDocument (lines = ["zéro" , "un" ])),
@@ -172,6 +180,7 @@ def test_textdocument_string(doc, expect):
172180 dict (textdocument = TextDocument (string = "zéro\n un\n " , newline = "\n " )),
173181 dict (textdocument = TextDocument (lines = ["zéro" , "un" ], newline = "\r \n " )),
174182 dict (textdocument = TextDocument (string = "zéro\r \n un\r \n " , newline = "\r \n " )),
183+ dict (textdocument = TextDocument (string = "zéro\r un\r " , newline = "\r " )),
175184 expect = "zéro{newline}un{newline}" ,
176185)
177186def test_textdocument_string_with_newline (textdocument , newline , expect ):
@@ -187,6 +196,8 @@ def test_textdocument_string_with_newline(textdocument, newline, expect):
187196 dict (encoding = "iso-8859-1" , newline = "\n " , expect = b"z\xe9 ro\n un\n " ),
188197 dict (encoding = "utf-8" , newline = "\r \n " , expect = b"z\xc3 \xa9 ro\r \n un\r \n " ),
189198 dict (encoding = "iso-8859-1" , newline = "\r \n " , expect = b"z\xe9 ro\r \n un\r \n " ),
199+ dict (encoding = "utf-8" , newline = "\r " , expect = b"z\xc3 \xa9 ro\r un\r " ),
200+ dict (encoding = "iso-8859-1" , newline = "\r " , expect = b"z\xe9 ro\r un\r " ),
190201)
191202def test_textdocument_encoded_string (encoding , newline , expect ):
192203 """TextDocument.encoded_string uses correct encoding and newline"""
@@ -204,6 +215,7 @@ def test_textdocument_encoded_string(encoding, newline, expect):
204215 dict (
205216 doc = TextDocument (string = "zéro\r \n un\r \n " , newline = "\r \n " ), expect = ("zéro" , "un" )
206217 ),
218+ dict (doc = TextDocument (string = "zéro\r un\r " , newline = "\r " ), expect = ("zéro" , "un" )),
207219)
208220def test_textdocument_lines (doc , expect ):
209221 """TextDocument.lines is correct after parsing a string with different newlines"""
@@ -246,6 +258,13 @@ def test_textdocument_lines(doc, expect):
246258 expect_newline = "\r \n " ,
247259 expect_mtime = "" ,
248260 ),
261+ dict (
262+ textdocument = TextDocument .from_str ("a\r b\r " ),
263+ expect_lines = ("a" , "b" ),
264+ expect_encoding = "utf-8" ,
265+ expect_newline = "\r " ,
266+ expect_mtime = "" ,
267+ ),
249268 dict (
250269 textdocument = TextDocument .from_str ("" , mtime = "my mtime" ),
251270 expect_lines = (),
@@ -278,6 +297,7 @@ def test_textdocument_detect_encoding(textdocument, expect):
278297@pytest .mark .kwparametrize (
279298 dict (textdocument = b'print("unix")\n ' , expect = "\n " ),
280299 dict (textdocument = b'print("windows")\r \n ' , expect = "\r \n " ),
300+ dict (textdocument = b'print("macos")\r ' , expect = "\r " ),
281301 indirect = ["textdocument" ],
282302)
283303def test_textdocument_detect_newline (textdocument , expect ):
@@ -301,6 +321,11 @@ def test_textdocument_detect_newline(textdocument, expect):
301321 doc2 = TextDocument (lines = ["line1" , "line2" ]),
302322 expect = True ,
303323 ),
324+ dict (
325+ doc1 = TextDocument (lines = ["line1" , "line2" ], encoding = "utf-16" , newline = "\r " ),
326+ doc2 = TextDocument (lines = ["line1" , "line2" ]),
327+ expect = True ,
328+ ),
304329 dict (doc1 = TextDocument (lines = ["foo" ]), doc2 = TextDocument ("" ), expect = False ),
305330 dict (doc1 = TextDocument (lines = []), doc2 = TextDocument ("foo\n " ), expect = False ),
306331 dict (doc1 = TextDocument (lines = ["foo" ]), doc2 = TextDocument ("bar\n " ), expect = False ),
@@ -330,6 +355,16 @@ def test_textdocument_detect_newline(textdocument, expect):
330355 doc2 = TextDocument ("line1\n line2\n " ),
331356 expect = True ,
332357 ),
358+ dict (
359+ doc1 = TextDocument ("line1\r line2\r " ),
360+ doc2 = TextDocument ("line1\n line2\n " ),
361+ expect = True ,
362+ ),
363+ dict (
364+ doc1 = TextDocument ("line1\r \n line2\r \n " ),
365+ doc2 = TextDocument ("line1\r line2\r " ),
366+ expect = True ,
367+ ),
333368 dict (doc1 = TextDocument ("foo" ), doc2 = "line1\n line2\n " , expect = NotImplemented ),
334369)
335370def test_textdocument_eq (doc1 , doc2 , expect ):
0 commit comments