mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-10-31 16:07:30 +03:00 
			
		
		
		
	py3k: Backport Gohlke's tests to run on 2.6/2.7
Most of the differences are in tobytes/tostring naming and expected behavior of the bytes() constructor. The latter was usually easy to fix with the right bytes literal. This is a good preview of what will have to happen in the Python 3 code.
This commit is contained in:
		
							parent
							
								
									ad784eb808
								
							
						
					
					
						commit
						197885164b
					
				|  | @ -29,6 +29,7 @@ | |||
| 
 | ||||
| import Image | ||||
| import traceback, os | ||||
| import io | ||||
| 
 | ||||
| MAXBLOCK = 65536 | ||||
| 
 | ||||
|  | @ -475,7 +476,7 @@ def _save(im, fp, tile): | |||
|     try: | ||||
|         fh = fp.fileno() | ||||
|         fp.flush() | ||||
|     except AttributeError: | ||||
|     except (AttributeError, io.UnsupportedOperation): | ||||
|         # compress to Python file-compatible object | ||||
|         for e, b, o, a in tile: | ||||
|             e = Image._getencoder(im.mode, e, a, im.encoderconfig) | ||||
|  |  | |||
|  | @ -1,3 +1,5 @@ | |||
| from __future__ import print_function | ||||
| 
 | ||||
| # minimal test runner | ||||
| 
 | ||||
| import glob, os, sys | ||||
|  |  | |||
|  | @ -1,3 +1,6 @@ | |||
| from __future__ import print_function | ||||
| from tester import * | ||||
| 
 | ||||
| import PIL | ||||
| import PIL.Image | ||||
| 
 | ||||
|  | @ -9,7 +12,7 @@ assert PIL.Image.VERSION[:3] == '1.1' | |||
| # Create an image and do stuff with it. | ||||
| im = PIL.Image.new("1", (100, 100)) | ||||
| assert (im.mode, im.size) == ('1', (100, 100)) | ||||
| assert len(im.tobytes()) == 1300 | ||||
| assert len(im.tobytes() if py3 else im.tostring()) == 1300 | ||||
| 
 | ||||
| # Create images in all remaining major modes. | ||||
| im = PIL.Image.new("L", (100, 100)) | ||||
|  |  | |||
|  | @ -1,31 +0,0 @@ | |||
| from tester import * | ||||
| 
 | ||||
| import os, glob | ||||
| 
 | ||||
| contents = {} | ||||
| for file in open("CONTENTS"): | ||||
|     file = file.strip() | ||||
|     if file: | ||||
|         contents[os.path.normpath(file)] = None | ||||
| 
 | ||||
| patterns = [ | ||||
|     "PIL/*.py", | ||||
|     "*.c", | ||||
|     "libImaging/*.c", | ||||
|     "libImaging/*.h", | ||||
|     ] | ||||
| 
 | ||||
| def test_files(): | ||||
| 
 | ||||
|     for pattern in patterns: | ||||
|         for file in glob.glob(pattern): | ||||
|             file = os.path.normpath("Imaging/" + file) | ||||
|             assert_true(file in contents, "%r not in CONTENTS" % file) | ||||
| 
 | ||||
| def test_contents(): | ||||
| 
 | ||||
|     for file in contents: | ||||
|         root, file = file.split(os.sep, 1) | ||||
|         if file == "MANIFEST": | ||||
|             continue # generated by distribution scripts | ||||
|         assert_true(os.path.isfile(file), "%r not found" % file) | ||||
|  | @ -166,7 +166,7 @@ def test_truncated_jpeg(): | |||
|     def test(junk): | ||||
|         if junk: | ||||
|             # replace "junk" bytes at the end with junk | ||||
|             file = BytesIO(data[:-junk] + bytes(junk*[0])) | ||||
|             file = BytesIO(data[:-junk] + b'\0'*junk) | ||||
|         else: | ||||
|             file = BytesIO(data) | ||||
|         im = Image.open(file) | ||||
|  |  | |||
|  | @ -24,7 +24,7 @@ def chunk(cid, *data): | |||
| 
 | ||||
| o32 = PngImagePlugin.o32 | ||||
| 
 | ||||
| IHDR = chunk(b"IHDR", o32(1), o32(1), bytes((8,2)), bytes((0,0,0))) | ||||
| IHDR = chunk(b"IHDR", o32(1), o32(1), b'\x08\x02', b'\0\0\0') | ||||
| IDAT = chunk(b"IDAT") | ||||
| IEND = chunk(b"IEND") | ||||
| 
 | ||||
|  | @ -154,7 +154,13 @@ def test_scary(): | |||
| 
 | ||||
|     import base64 | ||||
|     file = "Tests/images/pngtest_bad.png.base64" | ||||
|     data = None | ||||
| 
 | ||||
|     if py3: | ||||
|         data = base64.decodebytes(open(file, 'rb').read()) | ||||
|     else: | ||||
|         data = base64.decodestring(open(file, 'rb').read()) | ||||
| 
 | ||||
|     file = BytesIO(data) | ||||
|     assert_exception(IOError, lambda: Image.open(file)) | ||||
| 
 | ||||
|  |  | |||
|  | @ -5,7 +5,12 @@ from PIL import Image | |||
| def test_sanity(): | ||||
| 
 | ||||
|     im1 = lena() | ||||
|     im2 = None | ||||
| 
 | ||||
|     if py3: | ||||
|         im2 = Image.frombytes(im1.mode, im1.size, im1.tobytes()) | ||||
|     else: | ||||
|         im2 = Image.fromstring(im1.mode, im1.size, im1.tostring()) | ||||
| 
 | ||||
|     assert_image_equal(im1, im2) | ||||
| 
 | ||||
|  |  | |||
|  | @ -5,8 +5,9 @@ from PIL import Image | |||
| def test_sanity(): | ||||
| 
 | ||||
|     im = lena() | ||||
| 
 | ||||
|     type_repr = repr(type(im.getim())) | ||||
| 
 | ||||
|     if py3: | ||||
|         assert_true("PyCapsule" in type_repr) | ||||
| 
 | ||||
|     assert_true(isinstance(im.im.id, int)) | ||||
|  |  | |||
|  | @ -3,6 +3,5 @@ from tester import * | |||
| from PIL import Image | ||||
| 
 | ||||
| def test_sanity(): | ||||
| 
 | ||||
|     data = lena().tobytes() | ||||
|     data = lena().tobytes() if py3 else lena().tostring() | ||||
|     assert_true(isinstance(data, bytes)) | ||||
|  |  | |||
|  | @ -12,7 +12,11 @@ def test_pack(): | |||
|             im = Image.new(mode, (1, 1), 1) | ||||
|         else: | ||||
|             im = Image.new(mode, (1, 1), (1, 2, 3, 4)[:len(mode)]) | ||||
| 
 | ||||
|         if py3: | ||||
|             return list(im.tobytes("raw", rawmode)) | ||||
|         else: | ||||
|             return [ord(c) for c in im.tostring("raw", rawmode)] | ||||
| 
 | ||||
|     assert_equal(pack("1", "1"), [128]) | ||||
|     assert_equal(pack("1", "1;I"), [0]) | ||||
|  | @ -45,13 +49,26 @@ def test_pack(): | |||
| def test_unpack(): | ||||
| 
 | ||||
|     def unpack(mode, rawmode, bytes_): | ||||
|         im = None | ||||
| 
 | ||||
|         if py3: | ||||
|             data = bytes(range(1,bytes_+1)) | ||||
|             im = Image.frombytes(mode, (1, 1), data, "raw", rawmode, 0, 1) | ||||
|         else: | ||||
|             data = ''.join(chr(i) for i in range(1,bytes_+1)) | ||||
|             im = Image.fromstring(mode, (1, 1), data, "raw", rawmode, 0, 1) | ||||
| 
 | ||||
|         return im.getpixel((0, 0)) | ||||
| 
 | ||||
|     def unpack_1(mode, rawmode, value): | ||||
|         assert mode == "1" | ||||
|         im = None | ||||
| 
 | ||||
|         if py3: | ||||
|             im = Image.frombytes(mode, (8, 1), bytes([value]), "raw", rawmode, 0, 1) | ||||
|         else: | ||||
|             im = Image.fromstring(mode, (8, 1), chr(value), "raw", rawmode, 0, 1) | ||||
| 
 | ||||
|         return tuple(im.getdata()) | ||||
| 
 | ||||
|     X = 255 | ||||
|  |  | |||
|  | @ -82,7 +82,10 @@ def test_basic(): | |||
| def test_tostring(): | ||||
| 
 | ||||
|     def tostring(mode): | ||||
|         if py3: | ||||
|             return Image.new(mode, (1, 1), 1).tobytes() | ||||
|         else: | ||||
|             return Image.new(mode, (1, 1), 1).tostring() | ||||
| 
 | ||||
|     assert_equal(tostring("L"), b"\x01") | ||||
|     assert_equal(tostring("I;16"), b"\x01\x00") | ||||
|  |  | |||
|  | @ -1,3 +1,8 @@ | |||
| from __future__ import print_function | ||||
| 
 | ||||
| import sys | ||||
| py3 = (sys.version_info >= (3,0)) | ||||
| 
 | ||||
| # some test helpers | ||||
| 
 | ||||
| _target = None | ||||
|  | @ -139,9 +144,12 @@ def assert_image_equal(a, b, msg=None): | |||
|         failure(msg or "got mode %r, expected %r" % (a.mode, b.mode)) | ||||
|     elif a.size != b.size: | ||||
|         failure(msg or "got size %r, expected %r" % (a.size, b.size)) | ||||
|     elif a.tobytes() != b.tobytes(): | ||||
|     elif py3 and a.tobytes() != b.tobytes(): | ||||
|         failure(msg or "got different content") | ||||
|         # generate better diff? | ||||
|     elif not py3 and a.tostring() != b.tostring(): | ||||
|         failure(msg or "got different content") | ||||
|         # same complaint? | ||||
|     else: | ||||
|         success() | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user