[Jython-checkins] jython (merge default -> default): Merge to trunk

jeff.allen jython-checkins at python.org
Sat Jan 25 23:56:26 CET 2014


http://hg.python.org/jython/rev/709791a0cea2
changeset:   7180:709791a0cea2
parent:      7175:b4ae9e2893c8
parent:      7179:57232db660c9
user:        Jeff Allen <ja.py at farowl.co.uk>
date:        Sat Jan 25 20:31:35 2014 +0000
summary:
  Merge to trunk

files:
  Lib/test/test_httplib.py               |    2 +-
  Lib/test/test_httpservers.py           |   15 ++--
  Lib/test/test_strptime_jy.py           |    2 +-
  lib-python/2.7/test/test_bz2.py        |   44 +++++-------
  lib-python/2.7/test/testbz2_bigmem.bz2 |  Bin 
  src/org/python/modules/time/Time.java  |    2 +-
  6 files changed, 31 insertions(+), 34 deletions(-)


diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py
--- a/Lib/test/test_httplib.py
+++ b/Lib/test/test_httplib.py
@@ -201,7 +201,7 @@
         if resp.read() != "":
             self.fail("Did not expect response from HEAD request")
 
-    @unittest.skipIf(test_support.is_jython, "FIME: not working on Jython")
+    @unittest.skipIf(test_support.is_jython, "FIXME: not working on Jython")
     def test_send_file(self):
         expected = 'GET /foo HTTP/1.1\r\nHost: example.com\r\n' \
                    'Accept-Encoding: identity\r\nContent-Length:'
diff --git a/Lib/test/test_httpservers.py b/Lib/test/test_httpservers.py
--- a/Lib/test/test_httpservers.py
+++ b/Lib/test/test_httpservers.py
@@ -189,7 +189,7 @@
 
     def test_request_line_trimming(self):
         self.con._http_vsn_str = 'HTTP/1.1\n'
-        self.con.putrequest('GET', '/')
+        self.con.putrequest('XYZBOGUS', '/')
         self.con.endheaders()
         res = self.con.getresponse()
         self.assertEqual(res.status, 501)
@@ -216,8 +216,9 @@
         self.assertEqual(res.status, 501)
 
     def test_version_none(self):
+        # Test that a valid method is rejected when not HTTP/1.x
         self.con._http_vsn_str = ''
-        self.con.putrequest('PUT', '/')
+        self.con.putrequest('CUSTOM', '/')
         self.con.endheaders()
         res = self.con.getresponse()
         self.assertEqual(res.status, 400)
@@ -460,13 +461,13 @@
                                  msg='path = %r\nGot:    %r\nWanted: %r' %
                                  (path, actual, expected))
 
-    @unittest.skipIf(test_support.is_jython, "FIME: not working on Jython")
+    @unittest.skipIf(test_support.is_jython, "FIXME: not working on Jython")
     def test_headers_and_content(self):
         res = self.request('/cgi-bin/file1.py')
         self.assertEqual(('Hello World\n', 'text/html', 200),
             (res.read(), res.getheader('Content-type'), res.status))
 
-    @unittest.skipIf(test_support.is_jython, "FIME: not working on Jython")
+    @unittest.skipIf(test_support.is_jython, "FIXME: not working on Jython")
     def test_post(self):
         params = urllib.urlencode({'spam' : 1, 'eggs' : 'python', 'bacon' : 123456})
         headers = {'Content-type' : 'application/x-www-form-urlencoded'}
@@ -479,7 +480,7 @@
         res.read()
         self.assertEqual(res.status, 404)
 
-    @unittest.skipIf(test_support.is_jython, "FIME: not working on Jython")
+    @unittest.skipIf(test_support.is_jython, "FIXME: not working on Jython")
     def test_authorization(self):
         headers = {'Authorization' : 'Basic %s' %
                    base64.b64encode('username:pass')}
@@ -487,14 +488,14 @@
         self.assertEqual(('Hello World\n', 'text/html', 200),
                 (res.read(), res.getheader('Content-type'), res.status))
 
-    @unittest.skipIf(test_support.is_jython, "FIME: not working on Jython")
+    @unittest.skipIf(test_support.is_jython, "FIXME: not working on Jython")
     def test_no_leading_slash(self):
         # http://bugs.python.org/issue2254
         res = self.request('cgi-bin/file1.py')
         self.assertEqual(('Hello World\n', 'text/html', 200),
              (res.read(), res.getheader('Content-type'), res.status))
 
-    @unittest.skipIf(test_support.is_jython, "FIME: not working on Jython")
+    @unittest.skipIf(test_support.is_jython, "FIXME: not working on Jython")
     def test_os_environ_is_not_altered(self):
         signature = "Test CGI Server"
         os.environ['SERVER_SOFTWARE'] = signature
diff --git a/Lib/test/test_strptime_jy.py b/Lib/test/test_strptime_jy.py
--- a/Lib/test/test_strptime_jy.py
+++ b/Lib/test/test_strptime_jy.py
@@ -20,7 +20,7 @@
 
     def test_issue1964(self):
         d = strptime('0', '%f')
-        self.assertEqual(0, d[1])
+        self.assertEqual(1900, d.tm_year)
 
 def test_main():
     test_support.run_unittest(
diff --git a/lib-python/2.7/test/test_bz2.py b/lib-python/2.7/test/test_bz2.py
--- a/lib-python/2.7/test/test_bz2.py
+++ b/lib-python/2.7/test/test_bz2.py
@@ -25,9 +25,6 @@
     DATA_CRLF = 'BZh91AY&SY\xaez\xbbN\x00\x01H\xdf\x80\x00\x12@\x02\xff\xf0\x01\x07n\x00?\xe7\xff\xe0@\x01\xbc\xc6`\x86*\x8d=M\xa9\x9a\x86\xd0L@\x0fI\xa6!\xa1\x13\xc8\x88jdi\x8d@\x03@\x1a\x1a\x0c\x0c\x83 \x00\xc4h2\x19\x01\x82D\x84e\t\xe8\x99\x89\x19\x1ah\x00\r\x1a\x11\xaf\x9b\x0fG\xf5(\x1b\x1f?\t\x12\xcf\xb5\xfc\x95E\x00ps\x89\x12^\xa4\xdd\xa2&\x05(\x87\x04\x98\x89u\xe40%\xb6\x19\'\x8c\xc4\x89\xca\x07\x0e\x1b!\x91UIFU%C\x994!DI\xd2\xfa\xf0\xf1N8W\xde\x13A\xf5\x9cr%?\x9f3;I45A\xd1\x8bT\xb1<l\xba\xcb_\xc00xY\x17r\x17\x88\x08\x08@\xa0\ry@\x10\x04$)`\xf2\xce\x89z\xb0s\xec\x9b.iW\x9d\x81\xb5-+t\x9f\x1a\'\x97dB\xf5x\xb5\xbe.[.\xd7\x0e\x81\xe7\x08\x1cN`\x88\x10\xca\x87\xc3!"\x80\x92R\xa1/\xd1\xc0\xe6mf\xac\xbd\x99\xcca\xb3\x8780>\xa4\xc7\x8d\x1a\\"\xad\xa1\xabyBg\x15\xb9l\x88\x88\x91k"\x94\xa4\xd4\x89\xae*\xa6\x0b\x10\x0c\xd6\xd4m\xe86\xec\xb5j\x8a\x86j\';\xca.\x01I\xf2\xaaJ\xe8\x88\x8cU+t3\xfb\x0c\n\xa33\x13r2\r\x16\xe0\xb3(\xbf\x1d\x83r\xe7M\xf0D\x1365\xd8\x88\xd3\xa4\x92\xcb2\x06\x04\\\xc1\xb0\xea//\xbek&\xd8\xe6+t\xe5\xa1\x13\xada\x16\xder5"w]\xa2i\xb7[\x97R \xe2IT\xcd;Z\x04dk4\xad\x8a\t\xd3\x81z\x10\xf1:^`\xab\x1f\xc5\xdc\x91N\x14$+\x9e\xae\xd3\x80'
     EMPTY_DATA = 'BZh9\x17rE8P\x90\x00\x00\x00\x00'
 
-    with open(findfile("testbz2_bigmem.bz2"), "rb") as f:
-        DATA_BIGMEM = f.read()
-
     if has_cmdline_bunzip2:
         def decompress(self, data):
             pop = subprocess.Popen("bunzip2", shell=True,
@@ -328,23 +325,20 @@
             self.assertRaises(ValueError, f.readline)
             self.assertRaises(ValueError, f.readlines)
 
-    def test_read_truncated(self):
-        # Drop the eos_magic field (6 bytes) and CRC (4 bytes).
-        truncated = self.DATA[:-10]
-        with open(self.filename, 'wb') as f:
-            f.write(truncated)
-        with BZ2File(self.filename) as f:
-            self.assertRaises(EOFError, f.read)
-        with BZ2File(self.filename) as f:
-            self.assertEqual(f.read(len(self.TEXT)), self.TEXT)
-            self.assertRaises(EOFError, f.read, 1)
-        # Incomplete 4-byte file header, and block header of at least 146 bits.
-        for i in range(22):
-            with open(self.filename, 'wb') as f:
-                f.write(truncated[:i])
-            with BZ2File(self.filename) as f:
-                self.assertRaises(EOFError, f.read, 1)
-
+    @unittest.skipIf(sys.platform == 'win32',
+                     'test depends on being able to delete a still-open file,'
+                     ' which is not possible on Windows')
+    def testInitNonExistentFile(self):
+        # Issue #19878: Should not segfault when __init__ with non-existent
+        # file for the second time.
+        self.createTempFile()
+        # Test close():
+        with BZ2File(self.filename, "wb") as f:
+            self.assertRaises(IOError, f.__init__, "non-existent-file")
+        # Test object deallocation without call to close():
+        f = bz2.BZ2File(self.filename)
+        self.assertRaises(IOError, f.__init__, "non-existent-file")
+        del f
 
 class BZ2CompressorTest(BaseTest):
     def testCompress(self):
@@ -431,9 +425,10 @@
         # Issue #14398: decompression fails when output data is >=2GB.
         if size < _4G:
             self.skipTest("Test needs 5GB of memory to run.")
-        text = bz2.BZ2Decompressor().decompress(self.DATA_BIGMEM)
+        compressed = bz2.compress("a" * _4G)
+        text = bz2.BZ2Decompressor().decompress(compressed)
         self.assertEqual(len(text), _4G)
-        self.assertEqual(text.strip("\0"), "")
+        self.assertEqual(text.strip("a"), "")
 
 
 class FuncTest(BaseTest):
@@ -482,9 +477,10 @@
         # Issue #14398: decompression fails when output data is >=2GB.
         if size < _4G:
             self.skipTest("Test needs 5GB of memory to run.")
-        text = bz2.decompress(self.DATA_BIGMEM)
+        compressed = bz2.compress("a" * _4G)
+        text = bz2.decompress(compressed)
         self.assertEqual(len(text), _4G)
-        self.assertEqual(text.strip("\0"), "")
+        self.assertEqual(text.strip("a"), "")
 
 def test_main():
     test_support.run_unittest(
diff --git a/lib-python/2.7/test/testbz2_bigmem.bz2 b/lib-python/2.7/test/testbz2_bigmem.bz2
deleted file mode 100644
index c9a4616c8053b1c92a45023635c8610c26299fc2..0000000000000000000000000000000000000000
GIT binary patch
[stripped]
diff --git a/src/org/python/modules/time/Time.java b/src/org/python/modules/time/Time.java
--- a/src/org/python/modules/time/Time.java
+++ b/src/org/python/modules/time/Time.java
@@ -688,7 +688,7 @@
      */
     private static PyTuple pystrptime(String data_string, String format) {
         return (PyTuple) __builtin__.__import__("_strptime")
-                                    .invoke("_strptime",
+                                    .invoke("_strptime_time",
                                             Py.newUnicode(data_string),
                                             Py.newUnicode(format));
     }

-- 
Repository URL: http://hg.python.org/jython


More information about the Jython-checkins mailing list