#6077: on Windows, fix truncation of a tempfile.TemporaryFile opened in "wt+" mode:
files opened with os.open() stop on the first \x1a (Ctrl-Z) unless os.O_BINARY is used.

Will backport to 3.1
diff --git a/Lib/test/test_tempfile.py b/Lib/test/test_tempfile.py
index a1bafc2..403dd93 100644
--- a/Lib/test/test_tempfile.py
+++ b/Lib/test/test_tempfile.py
@@ -309,8 +309,12 @@
         if not has_textmode:
             return            # ugh, can't use SkipTest.
 
-        self.do_create(bin=0).write(b"blat\n")
-        # XXX should test that the file really is a text file
+        # A text file is truncated at the first Ctrl+Z byte
+        f = self.do_create(bin=0)
+        f.write(b"blat\x1a")
+        f.write(b"extra\n")
+        os.lseek(f.fd, 0, os.SEEK_SET)
+        self.assertEquals(os.read(f.fd, 20), b"blat")
 
 test_classes.append(test__mkstemp_inner)
 
@@ -761,6 +765,10 @@
         f.write("xyzzy\n")
         f.seek(0)
         self.assertEqual(f.read(), "abc\ndef\nxyzzy\n")
+        # Check that Ctrl+Z doesn't truncate the file
+        f.write("foo\x1abar\n")
+        f.seek(0)
+        self.assertEqual(f.read(), "abc\ndef\nxyzzy\nfoo\x1abar\n")
 
     def test_text_newline_and_encoding(self):
         f = tempfile.SpooledTemporaryFile(mode='w+', max_size=10,