Pillow/Tests
etienne 416d8e340e Fixed issue #857.
When saving a JPEG and specifying 'keep' for quality or subsampling,
if the source JPEG image is in grayscale mode, don't try to find the
subsampling of the source, because grayscale images don't have any
subsampling (it's only for color components).

For the moment the fix also ignores subsampling of CMYK JPEG because
currently Pillow doesn't support encoding JPEG in YCCK mode (and
subsampling doesn't make sense in CMYK, but Pillow permits saving CMYK
JPEG with subsampling, that's a bug). This fix pass those errors
silently, i.e. it doesn't raise an error when 'keep' is used but it's
not possible to keep the subsampling (because the image is grayscale
or CMYK). I think it's the proper behavior but I'm not sure.
2014-09-02 14:52:25 -07:00
..
fonts Removing buffer from imagefont 2013-04-25 18:48:43 +02:00
icc py3k: Import Christoph Gohlke's test suite 2013-01-10 08:46:39 -06:00
images Fixed issue #857. 2014-09-02 14:52:25 -07:00
32bit_segfault_check.py Guard to prevent 64 bit machines from crashing 2014-07-07 11:22:11 -07:00
bench_cffi_access.py Convert bench_cffi_access.py to use unittest and helper.py 2014-06-25 12:19:27 +03:00
bench_get.py Remove last dependencies on tester.py and remove file 2014-06-25 12:46:52 +03:00
check_icns_dos.py Icns DOS fix -- CVE-2014-3589 2014-08-13 09:25:11 -07:00
check_j2k_dos.py J2k DOS fix -- CVE-2014-3598 2014-08-19 08:25:40 -07:00
crash_ttf_memory_error.py py3k: Import Christoph Gohlke's test suite 2013-01-10 08:46:39 -06:00
helper.py using skip known bad 2014-07-23 14:31:49 -07:00
import_all.py py3k: Import Christoph Gohlke's test suite 2013-01-10 08:46:39 -06:00
large_memory_numpy_test.py Don't import unittest because it's done in helper 2014-06-30 23:20:12 -07:00
large_memory_test.py Don't import unittest because it's done in helper 2014-06-30 23:20:39 -07:00
make_hash.py Storage, packing and access for HSV format images 2014-07-22 16:09:22 -07:00
README.rst Additional dependencies [ci skip] 2014-08-26 14:48:17 -07:00
show_icc.py py3k: Import Christoph Gohlke's test suite 2013-01-10 08:46:39 -06:00
show_mcidas.py py3k: Import Christoph Gohlke's test suite 2013-01-10 08:46:39 -06:00
test_000_sanity.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_bmp_reference.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_cffi.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_decompression_bomb.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_file_bmp.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_file_cur.py Check some pixel colors to ensure image is loaded properly 2014-07-17 10:42:43 +03:00
test_file_dcx.py Tests for DcxImagePlugin.dcx 2014-07-17 01:20:19 +03:00
test_file_eps.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_file_fli.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_file_gif.py Fixed test_optimize_full_l test case for python2. 2014-08-19 15:00:15 +03:00
test_file_gimpgradient.py Test GimpGradientFile.sine() 2014-08-26 12:21:08 +03:00
test_file_icns.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_file_ico.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_file_iptc.py Fi xffor Python 3 2014-08-01 12:11:03 +03:00
test_file_jpeg.py Fixed issue #857. 2014-09-02 14:52:25 -07:00
test_file_jpeg2k.py Need 'temp_' or 'temp.' in filename 2014-08-20 00:36:29 +03:00
test_file_libtiff_small.py Refactor inheritance tree of test_file_libtiff_small 2014-08-26 09:58:23 -07:00
test_file_libtiff.py Refactor inheritance tree of test_file_libtiff_small 2014-08-26 09:58:23 -07:00
test_file_mpo.py Better documented limited MPO save feature. 2014-07-30 09:17:36 -07:00
test_file_msp.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_file_palm.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_file_pcx.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_file_pdf.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_file_png.py Test unicode preservation in text chunks. 2014-07-23 08:17:11 -07:00
test_file_ppm.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_file_psd.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_file_sgi.py If we can't read a file due to unsupported compression, raise an error 2014-07-20 01:50:05 +03:00
test_file_spider.py More tests for SpiderImagePlugin.py 2014-07-15 12:23:02 +03:00
test_file_sun.py Sanity test for SunImagePlugin.py 2014-07-16 14:24:23 +03:00
test_file_tar.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_file_tga.py rename test 2014-08-20 10:39:11 +04:00
test_file_tiff_metadata.py Remove duplicate tag caused by typo in spec: http://www.asmail.be/msg0055321032.html 2014-08-26 15:51:37 +03:00
test_file_tiff.py More tests for TiffImagePlugin.py 2014-07-27 22:18:42 +03:00
test_file_webp_alpha.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_file_webp_lossless.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_file_webp_metadata.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_file_webp.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_file_xbm.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_file_xpm.py Fix scrambled XPM image, don't mmap when load_read/load_seek is defined. Fixes #806 2014-07-18 10:40:08 -07:00
test_font_bdf.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_font_pcf.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_format_hsv.py And now for something completely different. Py3 compatibility 2014-07-23 09:08:28 -07:00
test_format_lab.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_array.py Use unique class names to match filenames 2014-07-20 01:17:20 +03:00
test_image_convert.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_copy.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_crop.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_draft.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_filter.py Merge some similar tests to a single file 2014-07-20 01:17:32 +03:00
test_image_frombytes.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_getbands.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_getbbox.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_getcolors.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_getdata.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_getextrema.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_getim.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_getpalette.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_getpixel.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_getprojection.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_histogram.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_load.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_mode.py Merge some similar tests to a single file 2014-07-20 01:17:32 +03:00
test_image_offset.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_point.py Image.point tests for Float LUT 2014-07-28 21:49:11 -07:00
test_image_putalpha.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_putdata.py Mode F and I tests for Image.putdata 2014-07-28 22:09:52 -07:00
test_image_putpalette.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_putpixel.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_quantize.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_resize.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_rotate.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_split.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_thumbnail.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_tobitmap.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image_tobytes.py Run nose in verbose mode so we can see the tests being run/skipped. Override __str__ in PillowTestCase for nicer output, and make sure all tests are derived from PillowTestCase. 2014-07-20 01:16:51 +03:00
test_image_transform.py Merge some similar tests to a single file 2014-07-20 01:17:32 +03:00
test_image_transpose.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_image.py Test mandelbrot with bad arguments 2014-09-02 16:39:35 +03:00
test_imagechops.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_imagecms.py Added im.info['icc_profile'] to results for ImageCms.applyTransform 2014-07-29 21:20:11 -07:00
test_imagecolor.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_imagedraw.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_imageenhance.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_imagefile.py Use unique class names to match filenames 2014-07-20 01:17:20 +03:00
test_imagefileio.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_imagefont.py ucase(font_path,font_size) 2014-07-08 10:37:27 -07:00
test_imagegrab.py Use unique class names to match filenames 2014-07-20 01:17:20 +03:00
test_imagemath.py Merge pull request #773 from hugovk/ImageMath 2014-07-10 10:14:20 -07:00
test_imagemorph.py Make test runnable on its own 2014-06-24 10:01:43 +03:00
test_imageops_usm.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_imageops.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_imagepalette.py More ImagePalette.py tests and remove unused and uncallable new() 2014-07-21 23:18:46 +03:00
test_imagepath.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_imageqt.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_imagesequence.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_imageshow.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_imagestat.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_imagetk.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_imagewin.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_lib_image.py Use unique class names to match filenames 2014-07-20 01:17:20 +03:00
test_lib_pack.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_locale.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_mode_i16.py 2.8 million pyaccesses take a while, nomatter what 2014-07-23 17:02:57 -07:00
test_numpy.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_olefileio.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_pickle.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_pyroma.py Run nose in verbose mode so we can see the tests being run/skipped. Override __str__ in PillowTestCase for nicer output, and make sure all tests are derived from PillowTestCase. 2014-07-20 01:16:51 +03:00
test_shell_injection.py Remove unused tearDownModule 2014-07-07 20:03:50 +03:00
test_util.py Remove unused tearDownModule 2014-07-08 07:59:17 +03:00
threaded_save.py Update paths to Tests/images/ instead of Images/ 2014-06-23 09:19:29 +03:00
versions.py py3k: Import Christoph Gohlke's test suite 2013-01-10 08:46:39 -06: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``.

Depedencies
-----------

Install::

    pip install coverage nose

If you're using Python 2.6, there's one additional dependency::
  
    pip install unittest2

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