def test_loader(self): loader = Loader() fm = OpenStruct(loader=loader) SettingsAware.settings = Fake() FileManagerAware.fm = fm # initially, the loader has nothing to do self.assertFalse(loader.has_work()) dir = Directory(TESTDIR) self.assertEqual(None, dir.files) self.assertFalse(loader.has_work()) # Calling load_content() will enqueue the loading operation. # dir is not loaded yet, but the loader has work dir.load_content(schedule=True) self.assertEqual(None, dir.files) self.assertTrue(loader.has_work()) iterations = 0 while loader.has_work(): iterations += 1 loader.work() #print(iterations) self.assertNotEqual(None, dir.files) self.assertFalse(loader.has_work())
class benchmark_load(object): def __init__(self): self.loader = Loader() fm = OpenStruct(loader=self.loader) SettingsAware.settings = Fake() FileManagerAware.fm = fm self.dir = Directory(TESTDIR) def bm_run(self, n): for _ in range(n): self.dir.load_content(schedule=True) while self.loader.has_work(): self.loader.work()
def get_directory(self, path): """Get the directory object at the given path""" path = abspath(path) try: return self.directories[path] except KeyError: obj = Directory(path) self.directories[path] = obj return obj
class benchmark_raw_load(object): def __init__(self): SettingsAware.settings = Fake() self.dir = Directory(TESTDIR) def bm_run(self, n): generator = self.dir.load_bit_by_bit() for _ in range(n): raw_load_content(self.dir)
def raw_load_content(self): """ The method which is used in a Directory object to load stuff. Keep this up to date! """ from os.path import join, isdir, basename from os import listdir import ranger.ext.mount_path self.loading = True self.load_if_outdated() try: if self.exists and self.runnable: # 0.003s: self.mount_path = ranger.ext.mount_path.mount_path(self.path) # 0.1s: filenames = [] for fname in listdir(self.path): if not self.settings.show_hidden: hfilter = self.settings.hidden_filter if hfilter: if isinstance(hfilter, str) and hfilter in fname: continue if hasattr(hfilter, 'search') and \ hfilter.search(fname): continue if isinstance(self.filter, str) and self.filter \ and self.filter not in fname: continue filenames.append(join(self.path, fname)) # --- self.load_content_mtime = os.stat(self.path).st_mtime marked_paths = [obj.path for obj in self.marked_items] # 2.85s: files = [] for name in filenames: if isdir(name): try: item = self.fm.env.get_directory(name) except: item = Directory(name) else: item = File(name) item.load_if_outdated() files.append(item) # 0.2s self.disk_usage = sum(f.size for f in files if f.is_file) self.scroll_offset = 0 self.filenames = filenames self.files = files self._clear_marked_items() for item in self.files: if item.path in marked_paths: self.mark_item(item, True) else: self.mark_item(item, False) self.sort() if len(self.files) > 0: if self.pointed_obj is not None: self.sync_index() else: self.move(to=0) else: self.filenames = None self.files = None self.cycle_list = None self.content_loaded = True self.determine_infostring() self.correct_pointer() finally: self.loading = False
def __init__(self): SettingsAware.settings = Fake() self.dir = Directory(TESTDIR)
def __init__(self): self.loader = Loader() fm = OpenStruct(loader=self.loader) SettingsAware.settings = Fake() FileManagerAware.fm = fm self.dir = Directory(TESTDIR)