]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
backport r67325: make FileIO.mode always contain 'b'
authorBenjamin Peterson <benjamin@python.org>
Sat, 22 Nov 2008 01:59:15 +0000 (01:59 +0000)
committerBenjamin Peterson <benjamin@python.org>
Sat, 22 Nov 2008 01:59:15 +0000 (01:59 +0000)
Lib/test/test_fileio.py
Lib/test/test_io.py
Misc/NEWS
Modules/_fileio.c

index cbc716570709e565afd6dc8a7ad834cdf9929060..c9787795e33aafd696e01c7e1d554d410789f07a 100644 (file)
@@ -50,7 +50,7 @@ class AutoFileTests(unittest.TestCase):
         # verify expected attributes exist
         f = self.f
 
-        self.assertEquals(f.mode, "w")
+        self.assertEquals(f.mode, "wb")
         self.assertEquals(f.closed, False)
 
         # verify the attributes are readonly
@@ -160,7 +160,7 @@ class OtherFileTests(unittest.TestCase):
 
     def testModeStrings(self):
         # check invalid mode strings
-        for mode in ("", "aU", "wU+", "rb", "rt"):
+        for mode in ("", "aU", "wU+", "rw", "rt"):
             try:
                 f = _fileio._FileIO(TESTFN, mode)
             except ValueError:
index c9bd38ddffbf44fcf85e5a5bbefaabbcfa7681d6..eb41d1ffa7bd1e5f05067525e65011b293291407 100644 (file)
@@ -1266,7 +1266,7 @@ class MiscIOTest(unittest.TestCase):
 
     def test_attributes(self):
         f = io.open(test_support.TESTFN, "wb", buffering=0)
-        self.assertEquals(f.mode, "w")
+        self.assertEquals(f.mode, "wb")
         f.close()
 
         f = io.open(test_support.TESTFN, "U")
@@ -1274,18 +1274,18 @@ class MiscIOTest(unittest.TestCase):
         self.assertEquals(f.buffer.name,     test_support.TESTFN)
         self.assertEquals(f.buffer.raw.name, test_support.TESTFN)
         self.assertEquals(f.mode,            "U")
-        self.assertEquals(f.buffer.mode,     "r")
-        self.assertEquals(f.buffer.raw.mode, "r")
+        self.assertEquals(f.buffer.mode,     "rb")
+        self.assertEquals(f.buffer.raw.mode, "rb")
         f.close()
 
         f = io.open(test_support.TESTFN, "w+")
         self.assertEquals(f.mode,            "w+")
-        self.assertEquals(f.buffer.mode,     "r+") # Does it really matter?
-        self.assertEquals(f.buffer.raw.mode, "r+")
+        self.assertEquals(f.buffer.mode,     "rb+") # Does it really matter?
+        self.assertEquals(f.buffer.raw.mode, "rb+")
 
         g = io.open(f.fileno(), "wb", closefd=False)
-        self.assertEquals(g.mode,     "w")
-        self.assertEquals(g.raw.mode, "w")
+        self.assertEquals(g.mode,     "wb")
+        self.assertEquals(g.raw.mode, "wb")
         self.assertEquals(g.name,     f.fileno())
         self.assertEquals(g.raw.name, f.fileno())
         f.close()
index d691d8cce22c7f29c2c2e4cc3457c3e950e1c78b..c3f0ec61e1b77268ce5fc6770bfc2b0527d9672b 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -56,6 +56,8 @@ Library
 - Issue #4363: The uuid.uuid1() and uuid.uuid4() functions now work even if
   the ctypes module is not present.
 
+- FileIO's mode attribute now always includes ``"b"``.
+
 - Issue #4116: Resolve member name conflict in ScrolledCanvas.__init__.
 
 - httplib.HTTPConnection.putheader() now accepts an arbitrary number of values
index b9310f380caf4635726d44d24a3bf1d819bdd10e..65cc99d45a8f3aedbb5f72153eb192b58b7042ab 100644 (file)
@@ -208,6 +208,8 @@ fileio_init(PyObject *oself, PyObject *args, PyObject *kwds)
                        flags |= O_CREAT;
                        append = 1;
                        break;
+               case 'b':
+                       break;
                case '+':
                        if (plus)
                                goto bad_mode;
@@ -682,12 +684,12 @@ mode_string(PyFileIOObject *self)
 {
        if (self->readable) {
                if (self->writable)
-                       return "r+";
+                       return "rb+";
                else
-                       return "r";
+                       return "rb";
        }
        else
-               return "w";
+               return "wb";
 }
 
 static PyObject *