IGN:Tag release

This commit is contained in:
Kovid Goyal 2012-08-24 11:21:26 +05:30
parent b16ca1e038
commit 19b196f782
4 changed files with 306 additions and 235 deletions

View File

@ -9,6 +9,7 @@ __docformat__ = 'restructuredtext en'
import unittest import unittest
from calibre.constants import iswindows, islinux
from calibre.utils.icu import lower from calibre.utils.icu import lower
from calibre.devices.mtp.driver import MTP_DEVICE from calibre.devices.mtp.driver import MTP_DEVICE
from calibre.devices.scanner import DeviceScanner from calibre.devices.scanner import DeviceScanner
@ -77,6 +78,11 @@ class TestDeviceInteraction(unittest.TestCase):
with self.assertRaises(ValueError): with self.assertRaises(ValueError):
self.dev.create_folder(root_file[0], 'sub-folder') self.dev.create_folder(root_file[0], 'sub-folder')
def test_memory_leaks(self):
if not (iswindows or islinux):
self.skipTest('Can only test for leaks on windows and linux')
from calibre.utils.mem import memory
def tests(): def tests():
return unittest.TestLoader().loadTestsFromTestCase(TestDeviceInteraction) return unittest.TestLoader().loadTestsFromTestCase(TestDeviceInteraction)

View File

@ -53,7 +53,7 @@ class MTP_DEVICE(MTPDeviceBase):
self.progress_reporter(p) self.progress_reporter(p)
@synchronous @synchronous
def detect_managed_devices(self, devices_on_system): def detect_managed_devices(self, devices_on_system, force_refresh=False):
if self.libmtp is None: return None if self.libmtp is None: return None
# First remove blacklisted devices. # First remove blacklisted devices.
devs = set() devs = set()
@ -74,6 +74,8 @@ class MTP_DEVICE(MTPDeviceBase):
devs = devs - self.ejected_devices devs = devs - self.ejected_devices
# Now check for MTP devices # Now check for MTP devices
if force_refresh:
self.detect_cache = {}
cache = self.detect_cache cache = self.detect_cache
for d in devs: for d in devs:
ans = cache.get(d, None) ans = cache.get(d, None)

View File

@ -73,12 +73,13 @@ class MTP_DEVICE(MTPDeviceBase):
self.wpd.uninit() self.wpd.uninit()
@same_thread @same_thread
def detect_managed_devices(self, devices_on_system): def detect_managed_devices(self, devices_on_system, force_refresh=False):
if self.wpd is None: return None if self.wpd is None: return None
devices_on_system = frozenset(devices_on_system) devices_on_system = frozenset(devices_on_system)
if (devices_on_system != self.previous_devices_on_system or time.time() if (force_refresh or
- self.last_refresh_devices_time > 10): devices_on_system != self.previous_devices_on_system or
time.time() - self.last_refresh_devices_time > 10):
self.previous_devices_on_system = devices_on_system self.previous_devices_on_system = devices_on_system
self.last_refresh_devices_time = time.time() self.last_refresh_devices_time = time.time()
try: try:

File diff suppressed because it is too large Load Diff