Pillow/Tests
Leonid Bloch 28b818974e Allow to save tiff stacks from separate images
This is a quick solution that will allow to save tiff stacks from
separate images, e.g. from Numpy arrays.
Previously, tiff stacks could be saved only from multiframe images.
This behavior is similar to what is possible now with GIFs.

Note however, that for correct results, all the appended images should
have the same encoder{info,config} properties.

Example:

import numpy as np
from PIL import Image
a = np.ones((100,100,100), dtype=np.uint8)
imlist = []
for m in a:
    imlist.append(Image.fromarray(m))

imlist[0].save("test.tif", compression="tiff_deflate", save_all=True,
               append_images=imlist[1:])

(Should result in a 100-frame, 100x100 tiff stack.)

Signed-off-by: Leonid Bloch <leonid.bloch@esrf.fr>
2017-02-17 00:57:00 +02:00
..
fonts Testcase added. 2015-01-07 21:38:35 -08:00
icc Corrected filename [ci skip] 2016-05-03 19:23:51 +10:00
images Merge pull request #2382 from hugovk/test-effects 2017-02-06 21:58:41 +00:00
32bit_segfault_check.py flake8 2014-08-28 14:44:19 +03:00
bench_cffi_access.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
bench_get.py Flake8 fixes 2015-08-25 22:27:18 +10:00
check_fli_overflow.py Health fixes 2016-04-01 21:49:30 +11:00
check_icns_dos.py flake8 2014-08-28 14:44:19 +03:00
check_imaging_leaks.py Various Flake8 fixes 2015-07-03 16:22:56 +10:00
check_j2k_dos.py flake8 2014-08-28 14:44:19 +03:00
check_j2k_leaks.py Removed or commented unused variables 2015-04-24 16:02:38 +10:00
check_j2k_overflow.py Replace try/except/fail pattern with TestCase.assertRaises() 2016-11-06 13:43:09 -08:00
check_jpeg_leaks.py Changed lines to be below 80 characters 2015-12-02 16:41:26 +11:00
check_large_memory_numpy.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
check_large_memory.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
check_libtiff_segfault.py Replace try/except/fail pattern with TestCase.assertRaises() 2016-11-06 13:43:09 -08:00
check_png_dos.py ignore large text blocks in PNG if LOAD_TRUNCATED_IMAGES is enabled 2016-06-20 17:33:10 +03:00
check_webp_leaks.py Removed or commented unused variables 2015-04-24 16:02:38 +10:00
helper.py Prevent nose -v printing docstrings (#2369) 2017-01-20 19:10:02 +00:00
import_all.py Flake8 fixes 2015-08-25 22:27:18 +10:00
make_hash.py Updated comments to use print as a function 2016-11-26 11:02:44 +11:00
README.rst Drop support for Python 2.6 2016-11-22 04:23:55 -08:00
test_000_sanity.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_binary.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_bmp_reference.py Added future print_function imports 2016-11-26 11:05:56 +11:00
test_box_blur.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_decompression_bomb.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_features.py Replace type() equality checks with isinstance 2016-10-31 06:41:43 -07:00
test_file_bmp.py flake8 2016-08-04 09:40:12 +03:00
test_file_bufrstub.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_cur.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_dcx.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_dds.py Add support for BC7 to DdsImagePlugin 2016-08-26 02:26:03 -05:00
test_file_eps.py Flake8 fixes 2016-09-03 12:17:22 +10:00
test_file_fitsstub.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_fli.py Remove unused, open files at top level of tests. 2016-11-01 06:34:17 -07:00
test_file_fpx.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_ftex.py Move DDS decoders to C 2016-08-25 19:27:48 -05:00
test_file_gbr.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_gif.py Added context managers 2016-12-28 09:54:10 +11:00
test_file_gimpgradient.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_gimppalette.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_gribstub.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_hdf5stub.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_icns.py Remove unused, open files at top level of tests. 2016-11-01 06:34:17 -07:00
test_file_ico.py Test case for #2266 2016-11-30 16:36:04 +02:00
test_file_im.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_iptc.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_jpeg.py Fix for issue 2272, CMYK images miss the heuristic for the maxblock buffer scaling 2016-12-03 14:45:45 +00:00
test_file_jpeg2k.py Replace try/except/fail pattern with TestCase.assertRaises() 2016-11-06 13:43:09 -08:00
test_file_libtiff_small.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_libtiff.py Merge pull request #2263 from wiredfool/tiff_bytesio 2016-12-09 11:04:41 +02:00
test_file_mcidas.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_mic.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_mpo.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_msp.py replace test "1"-mode image 2016-12-07 03:09:13 +03:00
test_file_palm.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_pcd.py Health fixes 2016-04-01 21:49:30 +11:00
test_file_pcx.py Revert "temporary disable PCX P mode test due to errors in codec" 2016-08-07 13:48:01 +03:00
test_file_pdf.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_png.py Restricted PNG encoderinfo chunks to valid values when saving 2017-01-21 16:57:03 +11:00
test_file_ppm.py Added context managers 2016-12-28 09:54:10 +11:00
test_file_psd.py Remove unused, open files at top level of tests. 2016-11-01 06:34:17 -07:00
test_file_sgi.py added tests for sgi writing 2016-12-31 12:29:10 +00:00
test_file_spider.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_sun.py Review comments 2016-11-23 05:33:02 -08:00
test_file_tar.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_tga.py Test TGA RLE file 2016-04-21 17:49:35 +03:00
test_file_tiff_metadata.py Drop support for Python 2.6 2016-11-22 04:23:55 -08:00
test_file_tiff.py Allow to save tiff stacks from separate images 2017-02-17 00:57:00 +02:00
test_file_webp_alpha.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_webp_lossless.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_webp_metadata.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_webp.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_wmf.py Test: Relax WMF test condition, fixes #2323 2016-12-31 17:38:35 +00:00
test_file_xbm.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_file_xpm.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_font_bdf.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_font_pcf.py Use generator expressions instead of list comprehension 2016-11-14 18:11:15 -08:00
test_format_hsv.py Updated comments to use print as a function 2016-11-26 11:02:44 +11:00
test_format_lab.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_access.py tests for basic operations on 0x0 images 2016-12-31 13:19:29 +00:00
test_image_array.py Fixed typos 2016-08-31 20:12:07 +10:00
test_image_convert.py tests for basic operations on 0x0 images 2016-12-31 13:19:29 +00:00
test_image_copy.py tests for basic operations on 0x0 images 2016-12-31 13:19:29 +00:00
test_image_crop.py Added test for crop operation with no argument 2017-01-03 13:30:09 +11:00
test_image_draft.py protect .draft() from second call 2016-11-22 04:28:04 +03:00
test_image_filter.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_frombytes.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_fromqimage.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_fromqpixmap.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_getbands.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_getbbox.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_getcolors.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_getdata.py Merge branch 'master' into rotation-pixel-center 2016-08-07 13:47:16 +03:00
test_image_getextrema.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_getim.py Drop support for Python 2.6 2016-11-22 04:23:55 -08:00
test_image_getpalette.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_getprojection.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_histogram.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_load.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_mode.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_paste.py Added test for abbreviated Image paste mask syntax 2017-01-28 13:50:44 +11:00
test_image_point.py Added test for point operation on F mode image 2017-01-28 14:02:22 +11:00
test_image_putalpha.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_putdata.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_putpalette.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_quantize.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_resample.py Added future print_function imports 2016-11-26 11:05:56 +11:00
test_image_resize.py Added test for unknown filter in Image resize 2017-01-28 14:09:28 +11:00
test_image_rotate.py Added output checked tests for rotate with center and translate 2017-01-01 11:09:06 +00:00
test_image_split.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_thumbnail.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_tobitmap.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_tobytes.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_image_toqimage.py Drop support for Python 2.6 2016-11-22 04:23:55 -08:00
test_image_toqpixmap.py Drop support for Python 2.6 2016-11-22 04:23:55 -08:00
test_image_transform.py Added test for missing method data in Image transform 2017-01-28 14:21:41 +11:00
test_image_transpose.py Further health fixes 2015-04-24 18:24:52 +10:00
test_image.py Merge pull request #2382 from hugovk/test-effects 2017-02-06 21:58:41 +00:00
test_imagechops.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_imagecms.py Add tests for CMS transform auxiliary channel preservation. See bug #1662. 2017-01-28 22:04:49 +02:00
test_imagecolor.py added more case insensitivity tests 2016-09-19 12:12:16 +03:00
test_imagedraw.py Test ImageDraw.Outline curve 2017-01-31 08:22:33 +02:00
test_imageenhance.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_imagefile.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_imagefont_bitmap.py Flake8 fixes 2015-12-31 07:27:27 +11:00
test_imagefont.py Increase epsilon for FreeType 2.7 2016-12-12 15:16:43 +02:00
test_imagegrab.py Renamed references to OS X to macOS 2016-09-23 21:12:03 +10:00
test_imagemath.py Replace type() equality checks with isinstance 2016-10-31 06:41:43 -07:00
test_imagemorph.py Use generator expressions instead of list comprehension 2016-11-14 18:11:15 -08:00
test_imageops_usm.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_imageops.py Removed whitespace from blank lines 2016-09-03 12:23:42 +10:00
test_imagepalette.py Py3 bytes 2016-12-03 14:49:44 +00:00
test_imagepath.py Replace try/except/fail pattern with TestCase.assertRaises() 2016-11-06 13:43:09 -08:00
test_imageqt.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_imagesequence.py Force reloading palette when using mmap in ImageFile. 2016-09-29 14:54:25 +02:00
test_imageshow.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_imagestat.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_imagetk.py added tests for functionality in ImageTk 2017-01-26 05:31:45 -08:00
test_imagewin_pointers.py Drop support for Python 2.6 2016-11-22 04:23:55 -08:00
test_imagewin.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_lib_image.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_lib_pack.py Merged BGRa test into Tests/test_lib_pack.py 2016-08-08 00:07:08 +02:00
test_locale.py Added future print_function imports 2016-11-26 11:05:56 +11:00
test_map.py Vulnerable map function is not called on windows 2016-10-03 07:42:48 -07:00
test_mode_i16.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_numpy.py disable tests broken on old system versions of numpy/scipy 2017-01-20 11:35:49 -08:00
test_pickle.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_psdraw.py Added context managers 2016-12-28 09:54:10 +11:00
test_pyroma.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_scipy.py disable tests broken on old system versions of numpy/scipy 2017-01-20 11:35:49 -08:00
test_shell_injection.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
test_tiff_ifdrational.py Fix bug in test_idf_rational_save 2016-12-01 11:10:03 -06:00
test_util.py remove end of file banner from all files 2016-07-10 14:11:28 +03:00
threaded_save.py Added missing future print imports and removed unnecessary imports 2015-05-23 20:28:41 +10:00
versions.py Added missing future print imports and removed unnecessary imports 2015-05-23 20:28:41 +10:00

Pillow Tests
============

Test scripts are named ``test_xxx.py`` and use the ``unittest`` module. A base class and helper functions can be found in ``helper.py``.

Dependencies
-----------

Install::

    pip install coverage nose

Execution
---------

**If Pillow has been built in-place**

To run an individual test::

    python Tests/test_image.py

Run all the tests from the root of the Pillow source distribution::

    nosetests -vx Tests/test_*.py

Or with coverage::

    coverage run --append --include=PIL/* -m nose -vx Tests/test_*.py
    coverage report
    coverage html
    open htmlcov/index.html

**If Pillow has been installed**

To run an individual test::

    ./test-installed.py Tests/test_image.py

Run all the tests from the root of the Pillow source distribution::

    ./test-installed.py