check possible recursive _as_parameter_ to prevent segfault (closes #1838)
diff --git a/Lib/lib2to3/refactor.py b/Lib/lib2to3/refactor.py
index 7d00d12..30aea63 100644
--- a/Lib/lib2to3/refactor.py
+++ b/Lib/lib2to3/refactor.py
@@ -500,7 +500,7 @@
node = new
def processed_file(self, new_text, filename, old_text=None, write=False,
- encoding=None):
+ encoding=None, newlines=None):
"""
Called when a file has been refactored, and there are changes.
"""
diff --git a/Lib/lib2to3/tests/test_refactor.py b/Lib/lib2to3/tests/test_refactor.py
index 3eecde8..ed75955 100644
--- a/Lib/lib2to3/tests/test_refactor.py
+++ b/Lib/lib2to3/tests/test_refactor.py
@@ -231,6 +231,23 @@
os.path.join("a_dir", "stuff.py")]
check(tree, tree)
+ def test_preserve_file_newlines(self):
+ rt = self.rt(fixers=_2TO3_FIXERS)
+ for nl in ("\r\n", "\n"):
+ data = "print y%s%syes%sok%s" % ((nl,) * 4)
+ handle, tmp = tempfile.mkstemp()
+ os.close(handle)
+ try:
+ with open(tmp, "w") as fp:
+ fp.write(data)
+ rt.refactor_file(tmp)
+ with open(tmp, "r") as fp:
+ contents = fp.read()
+ finally:
+ os.unlink(tmp)
+ for line in contents.splitlines(True):
+ self.assertTrue(line.endswith(nl))
+
def test_file_encoding(self):
fn = os.path.join(TEST_DATA_DIR, "different_encoding.py")
self.check_file_refactoring(fn)