From 379d3ccce249d60a60eb02d31c381d2d2a4e2a3e Mon Sep 17 00:00:00 2001 From: Eric Soroos Date: Wed, 24 Jan 2018 14:02:33 +0000 Subject: [PATCH] Fixed up the webp leak check --- Tests/check_webp_leaks.py | 35 +++++++++++------------------------ 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/Tests/check_webp_leaks.py b/Tests/check_webp_leaks.py index 0f54f382d..82599bbbb 100644 --- a/Tests/check_webp_leaks.py +++ b/Tests/check_webp_leaks.py @@ -1,38 +1,25 @@ -from __future__ import division -from helper import unittest, PillowTestCase -import sys -from PIL import Image +from helper import unittest, PillowLeakTestCase +from PIL import Image, features from io import BytesIO -# Limits for testing the leak -mem_limit = 16 # max increase in MB -iterations = 5000 test_file = "Tests/images/hopper.webp" +@unittest.skipUnless(features.check('webp'), "WebP is not installed") +class TestWebPLeaks(PillowLeakTestCase): -@unittest.skipIf(sys.platform.startswith('win32'), "requires Unix or MacOS") -class TestWebPLeaks(PillowTestCase): - - def setUp(self): - try: - from PIL import _webp - except ImportError: - self.skipTest('WebP support not installed') - - def _get_mem_usage(self): - from resource import getpagesize, getrusage, RUSAGE_SELF - mem = getrusage(RUSAGE_SELF).ru_maxrss - return mem * getpagesize() / 1024 / 1024 + mem_limit = 3 * 1024 # kb + iterations = 100 def test_leak_load(self): with open(test_file, 'rb') as f: im_data = f.read() - start_mem = self._get_mem_usage() - for _ in range(iterations): + + def core(): with Image.open(BytesIO(im_data)) as im: im.load() - mem = (self._get_mem_usage() - start_mem) - self.assertLess(mem, mem_limit, msg='memory usage limit exceeded') + + self._test_leak(core) + if __name__ == '__main__': unittest.main()