Skip to content

Commit 0f1f559

Browse files
msimacekilyass-elmazidi
authored andcommitted
Use CRLF by default on win32 in TextIOWrapper
(cherry picked from commit c5131fd)
1 parent 6a2e806 commit 0f1f559

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

graalpython/com.oracle.graal.python.test/src/tests/test_io.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,11 @@
3636
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
3737
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
3838
# SOFTWARE.
39-
40-
import unittest
4139
import _io
40+
import os
41+
import sys
42+
import tempfile
43+
import unittest
4244

4345

4446
class IOBaseTests(unittest.TestCase):
@@ -312,6 +314,17 @@ def read(self, n=None):
312314
t = _io.TextIOWrapper(MockRawIO(), newline="\r\n")
313315
self.assertEqual(["ab\r\n", "cd"], t.readlines())
314316

317+
@unittest.skipIf(sys.platform != "win32", "Windows-only test")
318+
def test_crlf_default_on_win32(self):
319+
with tempfile.TemporaryDirectory() as d:
320+
path = os.path.join(d, "tmp")
321+
with open(path, 'w') as f:
322+
f.write("hello\nworld\n")
323+
with open(path, 'rb') as f:
324+
self.assertEqual(f.read(), b"hello\r\nworld\r\n")
325+
with open(path, 'r') as f:
326+
self.assertEqual(f.read(), "hello\nworld\n")
327+
315328

316329
if __name__ == '__main__':
317330
unittest.main()

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/io/TextIOWrapperNodes.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
import static com.oracle.graal.python.nodes.ErrorMessages.S_SHOULD_HAVE_RETURNED_A_BYTES_LIKE_OBJECT_NOT_P;
6868
import static com.oracle.graal.python.nodes.PGuards.isPNone;
6969
import static com.oracle.graal.python.nodes.SpecialMethodNames.T_DECODE;
70+
import static com.oracle.graal.python.nodes.StringLiterals.T_CRLF;
7071
import static com.oracle.graal.python.nodes.StringLiterals.T_EMPTY_STRING;
7172
import static com.oracle.graal.python.nodes.StringLiterals.T_NEWLINE;
7273
import static com.oracle.graal.python.nodes.StringLiterals.T_STRICT;
@@ -77,6 +78,7 @@
7778
import static com.oracle.graal.python.util.PythonUtils.tsLiteral;
7879

7980
import com.oracle.graal.python.PythonLanguage;
81+
import com.oracle.graal.python.builtins.PythonOS;
8082
import com.oracle.graal.python.builtins.modules.CodecsTruffleModuleBuiltins;
8183
import com.oracle.graal.python.builtins.modules.CodecsTruffleModuleBuiltins.MakeIncrementalcodecNode;
8284
import com.oracle.graal.python.builtins.modules.WarningsModuleBuiltins;
@@ -153,7 +155,11 @@ protected static void setNewline(PTextIO self, TruffleString newline, TruffleStr
153155
self.setWriteNewline(self.getReadNewline());
154156
}
155157
} else {
156-
self.setWriteNewline(null);
158+
if (PythonOS.getPythonOS() == PythonOS.PLATFORM_WIN32) {
159+
self.setWriteNewline(T_CRLF);
160+
} else {
161+
self.setWriteNewline(null);
162+
}
157163
}
158164
}
159165

0 commit comments

Comments
 (0)