From d76fd5b7666cd1e7b9ff4eb51a822e1ab41fac28 Mon Sep 17 00:00:00 2001 From: hut Date: Thu, 29 Apr 2010 16:14:50 +0200 Subject: Separated benchmark from testcase --- test/__init__.py | 2 +- test/bm_loader.py | 119 ++++++++++++++++++++++++++++++++++++++++++++++ test/tc_loader.py | 138 ++++++------------------------------------------------ 3 files changed, 134 insertions(+), 125 deletions(-) create mode 100644 test/bm_loader.py (limited to 'test') diff --git a/test/__init__.py b/test/__init__.py index c2f9bde2..e5f8a300 100644 --- a/test/__init__.py +++ b/test/__init__.py @@ -17,7 +17,7 @@ import os, sys __all__ = [ x[0:x.index('.')] \ for x in os.listdir(os.path.dirname(__file__)) \ - if x.startswith('tc_') ] + if x.startswith('tc_') or x.startswith('bm_')] def init(): sys.path.append(os.path.abspath(os.path.join(sys.path[0], '..'))) diff --git a/test/bm_loader.py b/test/bm_loader.py new file mode 100644 index 00000000..bdef3768 --- /dev/null +++ b/test/bm_loader.py @@ -0,0 +1,119 @@ +from ranger.core.loader import Loader +from ranger.fsobject import Directory, File +from ranger.ext.openstruct import OpenStruct +import os +from ranger.shared import FileManagerAware, SettingsAware +from test import Fake +from os.path import realpath, join, dirname +TESTDIR = realpath(join(dirname(__file__), 'testdir')) + +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: + self.mount_path = ranger.ext.mount_path.mount_path(self.path) + + 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] + + 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) + + 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 + + +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() + + +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 bm_loader(n): + """Do some random calculation""" + tloader = benchmark_load(N) + traw = benchmark_raw_load(N) diff --git a/test/tc_loader.py b/test/tc_loader.py index 22f866ec..53ac5617 100644 --- a/test/tc_loader.py +++ b/test/tc_loader.py @@ -18,7 +18,6 @@ if __name__ == '__main__': from __init__ import init; init() import unittest import os from os.path import realpath, join, dirname -from time import time from test import Fake from ranger.shared import FileManagerAware, SettingsAware @@ -29,115 +28,6 @@ from ranger.ext.openstruct import OpenStruct TESTDIR = realpath(join(dirname(__file__), 'testdir')) #TESTDIR = "/usr/sbin" -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: - self.mount_path = ranger.ext.mount_path.mount_path(self.path) - - 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] - - 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) - - 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.last_update_time = time() - self.correct_pointer() - - finally: - self.loading = False - - -def benchmark_load(n): - loader = Loader() - fm = OpenStruct(loader=loader) - SettingsAware.settings = Fake() - FileManagerAware.fm = fm - dir = Directory(TESTDIR) - - t1 = time() - for _ in range(n): - dir.load_content(schedule=True) - while loader.has_work(): - loader.work() - t2 = time() - return t2 - t1 - - -def benchmark_raw_load(n): - SettingsAware.settings = Fake() - dir = Directory(TESTDIR) - generator = dir.load_bit_by_bit() - t1 = time() - for _ in range(n): - raw_load_content(dir) - t2 = time() - return t2 - t1 - - class Test1(unittest.TestCase): def test_loader(self): loader = Loader() @@ -165,20 +55,20 @@ class Test1(unittest.TestCase): #print(iterations) self.assertNotEqual(None, dir.files) self.assertFalse(loader.has_work()) - - def test_get_overhead_of_loader(self): - N = 5 - tloader = benchmark_load(N) - traw = benchmark_raw_load(N) - #traw1k = 250.0 - #traw = traw1k * N / 1000.0 - #print("Loader: {0}s".format(tloader)) - #print("Raw: {0}s".format(traw)) - self.assertTrue(tloader > traw) - overhead = tloader * 100 / traw - 100 - self.assertTrue(overhead < 2, "overhead of loader too high: {0}" \ - .format(overhead)) - #print("Overhead: {0:.5}%".format(overhead)) +# +# def test_get_overhead_of_loader(self): +# N = 5 +# tloader = benchmark_load(N) +# traw = benchmark_raw_load(N) +# #traw1k = 250.0 +# #traw = traw1k * N / 1000.0 +# #print("Loader: {0}s".format(tloader)) +# #print("Raw: {0}s".format(traw)) +# self.assertTrue(tloader > traw) +# overhead = tloader * 100 / traw - 100 +# self.assertTrue(overhead < 2, "overhead of loader too high: {0}" \ +# .format(overhead)) +# #print("Overhead: {0:.5}%".format(overhead)) if __name__ == '__main__': -- cgit 1.4.1-2-gfad0 From 5fab6bc0c6f26d01571dc38f1a6da07c9b7d93dc Mon Sep 17 00:00:00 2001 From: hut Date: Thu, 29 Apr 2010 19:23:16 +0200 Subject: changed testdir to /usr/include --- test/bm_loader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test') diff --git a/test/bm_loader.py b/test/bm_loader.py index bdef3768..9ee61801 100644 --- a/test/bm_loader.py +++ b/test/bm_loader.py @@ -5,7 +5,7 @@ import os from ranger.shared import FileManagerAware, SettingsAware from test import Fake from os.path import realpath, join, dirname -TESTDIR = realpath(join(dirname(__file__), 'testdir')) +TESTDIR = realpath(join(dirname(__file__), '/usr/include')) def raw_load_content(self): """ -- cgit 1.4.1-2-gfad0 From 9594738888c6676e46ffc0a9d5b8dde808cd88eb Mon Sep 17 00:00:00 2001 From: hut Date: Mon, 3 May 2010 14:03:55 +0200 Subject: test: added TODO, skip broken tests --- test/__init__.py | 8 ++++++++ test/tc_displayable.py | 3 ++- test/tc_newkeys.py | 15 +++++++++++++-- test/test.py | 4 ++-- 4 files changed, 25 insertions(+), 5 deletions(-) (limited to 'test') diff --git a/test/__init__.py b/test/__init__.py index e5f8a300..d87d1fc2 100644 --- a/test/__init__.py +++ b/test/__init__.py @@ -19,6 +19,14 @@ __all__ = [ x[0:x.index('.')] \ for x in os.listdir(os.path.dirname(__file__)) \ if x.startswith('tc_') or x.startswith('bm_')] +def TODO(fnc): + def result(*arg, **kw): + try: + fnc(*arg, **kw) + except: + pass # failure expected + return result + def init(): sys.path.append(os.path.abspath(os.path.join(sys.path[0], '..'))) diff --git a/test/tc_displayable.py b/test/tc_displayable.py index 558a20ff..50f37845 100644 --- a/test/tc_displayable.py +++ b/test/tc_displayable.py @@ -20,7 +20,7 @@ import curses from random import randint from ranger.gui.displayable import Displayable, DisplayableContainer -from test import Fake, OK, raise_ok +from test import Fake, OK, raise_ok, TODO class TestWithFakeCurses(unittest.TestCase): def setUp(self): @@ -104,6 +104,7 @@ class TestDisplayableWithCurses(unittest.TestCase): curses.echo() curses.endwin() + @TODO def test_boundaries(self): disp = self.disp hei, wid = self.env.termsize diff --git a/test/tc_newkeys.py b/test/tc_newkeys.py index 8efb707d..2a44e0e8 100644 --- a/test/tc_newkeys.py +++ b/test/tc_newkeys.py @@ -17,6 +17,7 @@ if __name__ == '__main__': from __init__ import init; init() from unittest import TestCase, main +from test import TODO from ranger.ext.tree import Tree from ranger.container.keymap import * from ranger.container.keybuffer import KeyBuffer @@ -587,8 +588,18 @@ class Test(PressTestCase): self.assertEqual(5, press('gh')) self.assertEqual(5, press('agh')) # self.assertPressFails(kb, 'agh') - # TODO: Make the next line work! For now, skip it. - # self.assertEqual(1, press('agg')) + + @TODO + def test_map_collision2(self): + directions = KeyMap() + directions.map('gg', dir=Direction(down=1)) + km = KeyMap() + km.map('agh', lambda _: 1) + km.map('a', lambda _: 2) + kb = KeyBuffer(km, directions) + press = self._mkpress(kb, km) + self.assertEqual(1, press('agh')) + self.assertEqual(2, press('agg')) def test_keymap_with_dir(self): def func(arg): diff --git a/test/test.py b/test/test.py index 5e8a9b9e..d0a69e5a 100644 --- a/test/test.py +++ b/test/test.py @@ -15,6 +15,6 @@ """Workaround to allow running single test cases directly""" try: - from __init__ import init, Fake, OK, raise_ok + from __init__ import init, Fake, OK, raise_ok, TODO except: - from test import init, Fake, OK, raise_ok + from test import init, Fake, OK, raise_ok, TODO -- cgit 1.4.1-2-gfad0 From bff429683a42eb1124ec8137fe52ae9d5a63ad06 Mon Sep 17 00:00:00 2001 From: hut Date: Mon, 3 May 2010 23:56:15 +0200 Subject: bm_loader: stuff --- test/bm_loader.py | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/bm_loader.py b/test/bm_loader.py index 9ee61801..33011108 100644 --- a/test/bm_loader.py +++ b/test/bm_loader.py @@ -1,12 +1,16 @@ from ranger.core.loader import Loader from ranger.fsobject import Directory, File from ranger.ext.openstruct import OpenStruct -import os +import os.path from ranger.shared import FileManagerAware, SettingsAware from test import Fake from os.path import realpath, join, dirname +from subprocess import Popen, PIPE TESTDIR = realpath(join(dirname(__file__), '/usr/include')) +def skip(x): + return + def raw_load_content(self): """ The method which is used in a Directory object to load stuff. @@ -22,8 +26,10 @@ def raw_load_content(self): 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: @@ -38,11 +44,13 @@ def raw_load_content(self): 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): @@ -55,6 +63,7 @@ def raw_load_content(self): 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 @@ -88,6 +97,7 @@ def raw_load_content(self): self.loading = False +@skip class benchmark_load(object): def __init__(self): self.loader = Loader() @@ -117,3 +127,27 @@ def bm_loader(n): """Do some random calculation""" tloader = benchmark_load(N) traw = benchmark_raw_load(N) + +class benchmark_load_varieties(object): + def bm_ls(self, n): + for _ in range(n): + Popen(["ls", '-l', TESTDIR], stdout=open(os.devnull, 'w')).wait() + + def bm_os_listdir_stat(self, n): + for _ in range(n): + for f in os.listdir(TESTDIR): + path = os.path.join(TESTDIR, f) + os.stat(path) + + def bm_os_listdir(self, n): + for _ in range(n): + for f in os.listdir(TESTDIR): + path = os.path.join(TESTDIR, f) + + def bm_os_listdir_stat_listdir(self, n): + for _ in range(n): + for f in os.listdir(TESTDIR): + path = os.path.join(TESTDIR, f) + os.stat(path) + if os.path.isdir(path): + os.listdir(path) -- cgit 1.4.1-2-gfad0 From da440d3a10b7ab05e9b55968344fff2cbc45da09 Mon Sep 17 00:00:00 2001 From: hut Date: Tue, 4 May 2010 00:06:25 +0200 Subject: Added license header to a few files --- Makefile | 15 +++++++++++++++ all_benchmarks.py | 15 +++++++++++++++ all_tests.py | 15 +++++++++++++++ test/bm_loader.py | 15 +++++++++++++++ 4 files changed, 60 insertions(+) (limited to 'test') diff --git a/Makefile b/Makefile index ffa81797..3b429367 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,18 @@ +# Copyright (C) 2009, 2010 Roman Zimbelmann +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + NAME = ranger VERSION = 1.0.4 PYTHON ?= python diff --git a/all_benchmarks.py b/all_benchmarks.py index c03d0d92..abcd051e 100755 --- a/all_benchmarks.py +++ b/all_benchmarks.py @@ -1,4 +1,19 @@ #!/usr/bin/python +# Copyright (C) 2009, 2010 Roman Zimbelmann +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + """Run all the tests inside the test/ directory as a test suite.""" if __name__ == '__main__': from test import * diff --git a/all_tests.py b/all_tests.py index 6693b870..90926918 100755 --- a/all_tests.py +++ b/all_tests.py @@ -1,4 +1,19 @@ #!/usr/bin/python +# Copyright (C) 2009, 2010 Roman Zimbelmann +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + """Run all the tests inside the test/ directory as a test suite.""" if __name__ == '__main__': import unittest diff --git a/test/bm_loader.py b/test/bm_loader.py index 33011108..0604d5ad 100644 --- a/test/bm_loader.py +++ b/test/bm_loader.py @@ -1,3 +1,18 @@ +# Copyright (C) 2009, 2010 Roman Zimbelmann +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + from ranger.core.loader import Loader from ranger.fsobject import Directory, File from ranger.ext.openstruct import OpenStruct -- cgit 1.4.1-2-gfad0 From c6953a55e46aee37a854dff3be5d965b19a7341a Mon Sep 17 00:00:00 2001 From: hut Date: Wed, 5 May 2010 22:45:22 +0200 Subject: cleanups --- ranger/__main__.py | 2 +- ranger/core/environment.py | 8 ++------ ranger/core/fm.py | 2 +- ranger/defaults/commands.py | 2 +- ranger/fsobject/__init__.py | 6 ++---- ranger/fsobject/directory.py | 14 ++++---------- ranger/fsobject/file.py | 8 ++++---- test/tc_directory.py | 7 +++++-- test/tc_newkeys.py | 2 +- 9 files changed, 21 insertions(+), 30 deletions(-) (limited to 'test') diff --git a/ranger/__main__.py b/ranger/__main__.py index 8bb0bfa1..d63ec63b 100644 --- a/ranger/__main__.py +++ b/ranger/__main__.py @@ -35,7 +35,7 @@ from ranger.core.environment import Environment from ranger.shared import (EnvironmentAware, FileManagerAware, SettingsAware) from ranger.gui.defaultui import DefaultUI as UI -from ranger.fsobject.file import File +from ranger.fsobject import File def parse_arguments(): """Parse the program arguments""" diff --git a/ranger/core/environment.py b/ranger/core/environment.py index a485e277..296ba108 100644 --- a/ranger/core/environment.py +++ b/ranger/core/environment.py @@ -19,7 +19,7 @@ import pwd import socket from os.path import abspath, normpath, join, expanduser, isdir -from ranger.fsobject.directory import Directory, NoDirectoryGiven +from ranger.fsobject import Directory from ranger.container import KeyBuffer, KeyManager, History from ranger.ext.signal_dispatcher import SignalDispatcher from ranger.shared import SettingsAware @@ -179,12 +179,8 @@ class Environment(SettingsAware, SignalDispatcher): path = normpath(join(self.path, expanduser(path))) if not isdir(path): - return - - try: - new_cwd = self.get_directory(path) - except NoDirectoryGiven: return False + new_cwd = self.get_directory(path) try: os.chdir(path) diff --git a/ranger/core/fm.py b/ranger/core/fm.py index 0702e472..dfad3425 100644 --- a/ranger/core/fm.py +++ b/ranger/core/fm.py @@ -30,7 +30,7 @@ from ranger.container import Bookmarks from ranger.core.runner import Runner from ranger import relpath_conf from ranger.ext.get_executables import get_executables -from ranger.fsobject.directory import Directory +from ranger.fsobject import Directory from ranger.ext.signal_dispatcher import SignalDispatcher from ranger import __version__ from ranger.core.loader import Loader diff --git a/ranger/defaults/commands.py b/ranger/defaults/commands.py index 3fdf4ade..278fb8d5 100644 --- a/ranger/defaults/commands.py +++ b/ranger/defaults/commands.py @@ -412,7 +412,7 @@ class rename(Command): """ def execute(self): - from ranger.fsobject.file import File + from ranger.fsobject import File line = parse(self.line) if not line.rest(1): return self.fm.notify('Syntax: rename ', bad=True) diff --git a/ranger/fsobject/__init__.py b/ranger/fsobject/__init__.py index cd3944c3..5fb4b877 100644 --- a/ranger/fsobject/__init__.py +++ b/ranger/fsobject/__init__.py @@ -18,9 +18,7 @@ with fast access to their properties through caching""" BAD_INFO = '?' -class NotLoadedYet(Exception): - pass - +# So they can be imported from other files more easily: from .fsobject import FileSystemObject from .file import File -from .directory import Directory, NoDirectoryGiven +from .directory import Directory diff --git a/ranger/fsobject/directory.py b/ranger/fsobject/directory.py index 43af772a..ca071510 100644 --- a/ranger/fsobject/directory.py +++ b/ranger/fsobject/directory.py @@ -13,7 +13,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -import os +import os.path from collections import deque from time import time @@ -34,9 +34,6 @@ def sort_by_directory(path): """returns 0 if path is a directory, otherwise 1 (for sorting)""" return 1 - path.is_directory -class NoDirectoryGiven(Exception): - pass - class Directory(FileSystemObject, Accumulator, SettingsAware): is_directory = True enterable = False @@ -69,10 +66,7 @@ class Directory(FileSystemObject, Accumulator, SettingsAware): } def __init__(self, path): - from os.path import isfile - - if isfile(path): - raise NoDirectoryGiven() + assert not os.path.isfile(path), "No directory given!" Accumulator.__init__(self) FileSystemObject.__init__(self, path) @@ -402,8 +396,8 @@ class Directory(FileSystemObject, Accumulator, SettingsAware): def __len__(self): """The number of containing files""" - if not self.accessible or not self.content_loaded: - raise ranger.fsobject.NotLoadedYet() + assert self.accessible + assert self.content_loaded assert self.files is not None return len(self.files) diff --git a/ranger/fsobject/file.py b/ranger/fsobject/file.py index aa44016e..4618df33 100644 --- a/ranger/fsobject/file.py +++ b/ranger/fsobject/file.py @@ -13,11 +13,12 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -control_characters = set(chr(n) for n in set(range(0, 9)) | set(range(14,32))) N_FIRST_BYTES = 20 +control_characters = set(chr(n) for n in + set(range(0, 9)) | set(range(14, 32))) -from .fsobject import FileSystemObject as SuperClass -class File(SuperClass): +from ranger.fsobject import FileSystemObject +class File(FileSystemObject): is_file = True @property @@ -37,4 +38,3 @@ class File(SuperClass): if self.firstbytes and control_characters & set(self.firstbytes): return True return False - diff --git a/test/tc_directory.py b/test/tc_directory.py index f1b204c3..024ebc9d 100644 --- a/test/tc_directory.py +++ b/test/tc_directory.py @@ -15,6 +15,7 @@ if __name__ == '__main__': from __init__ import init; init() +import sys from os.path import realpath, join, dirname from ranger import fsobject @@ -38,7 +39,8 @@ class Test1(unittest.TestCase): self.assertFalse(dir.content_loaded) self.assertEqual(dir.filenames, None) self.assertEqual(dir.files, None) - self.assertRaises(fsobject.NotLoadedYet, len, dir) + if not sys.flags.optimize: # asserts are ignored with python -O + self.assertRaises(AssertionError, len, dir) def test_after_content_loaded(self): import os @@ -79,7 +81,8 @@ class Test1(unittest.TestCase): self.assertFalse(dir.exists) self.assertFalse(dir.accessible) self.assertEqual(dir.filenames, None) - self.assertRaises(fsobject.NotLoadedYet, len, dir) + if not sys.flags.optimize: # asserts are ignored with python -O + self.assertRaises(AssertionError, len, dir) def test_load_if_outdated(self): import os diff --git a/test/tc_newkeys.py b/test/tc_newkeys.py index 2a44e0e8..c7a33025 100644 --- a/test/tc_newkeys.py +++ b/test/tc_newkeys.py @@ -424,7 +424,7 @@ class Test(PressTestCase): self.assertPressFails(kb, 'xzy') self.assertPressIncomplete(kb, 'xx') self.assertPressIncomplete(kb, 'x') - if not sys.flags.optimize: + if not sys.flags.optimize: # asserts are ignored with python -O self.assertRaises(AssertionError, simulate_press, kb, 'xxx') kb.clear() -- cgit 1.4.1-2-gfad0 From 83f08a2c6fb92269031af2991eed3c26ec816d3d Mon Sep 17 00:00:00 2001 From: hut Date: Thu, 6 May 2010 02:00:19 +0200 Subject: fsobject: don't unnecessarily use abspath() in __init__ --- ranger/fsobject/directory.py | 9 +++++---- ranger/fsobject/fsobject.py | 9 +++++---- test/bm_loader.py | 3 ++- 3 files changed, 12 insertions(+), 9 deletions(-) (limited to 'test') diff --git a/ranger/fsobject/directory.py b/ranger/fsobject/directory.py index 9d12af28..5acf6ca7 100644 --- a/ranger/fsobject/directory.py +++ b/ranger/fsobject/directory.py @@ -81,11 +81,11 @@ class Directory(FileSystemObject, Accumulator, SettingsAware): 'type': lambda path: path.mimetype, } - def __init__(self, path, preload=None): + def __init__(self, path, **kw): assert not os.path.isfile(path), "No directory given!" Accumulator.__init__(self) - FileSystemObject.__init__(self, path, preload=preload) + FileSystemObject.__init__(self, path, **kw) self.marked_items = list() @@ -196,9 +196,10 @@ class Directory(FileSystemObject, Accumulator, SettingsAware): try: item = self.fm.env.get_directory(name) except: - item = Directory(name, preload=stats) + item = Directory(name, preload=stats, + path_is_abs=True) else: - item = File(name, preload=stats) + item = File(name, preload=stats, path_is_abs=True) item.load_if_outdated() files.append(item) yield diff --git a/ranger/fsobject/fsobject.py b/ranger/fsobject/fsobject.py index ef52eb88..28e32055 100644 --- a/ranger/fsobject/fsobject.py +++ b/ranger/fsobject/fsobject.py @@ -71,10 +71,11 @@ class FileSystemObject(MimeTypeAware, FileManagerAware): container = False mimetype_tuple = () - def __init__(self, path, preload=None): + def __init__(self, path, preload=None, path_is_abs=False): MimeTypeAware.__init__(self) - path = abspath(path) + if not path_is_abs: + path = abspath(path) self.path = path self.basename = basename(path) self.basename_lower = self.basename.lower() @@ -183,12 +184,12 @@ class FileSystemObject(MimeTypeAware, FileManagerAware): self.infostring = 'sock' elif self.is_directory: try: - self.size = len(os.listdir(self.path)) + self.size = len(os.listdir(self.path)) # bite me except OSError: self.infostring = BAD_INFO self.accessible = False else: - self.infostring = " %d" % self.size + self.infostring = ' %d' % self.size self.accessible = True self.runnable = True elif self.is_file: diff --git a/test/bm_loader.py b/test/bm_loader.py index 0604d5ad..154fea3d 100644 --- a/test/bm_loader.py +++ b/test/bm_loader.py @@ -112,7 +112,6 @@ def raw_load_content(self): self.loading = False -@skip class benchmark_load(object): def __init__(self): self.loader = Loader() @@ -128,6 +127,7 @@ class benchmark_load(object): self.loader.work() +@skip class benchmark_raw_load(object): def __init__(self): SettingsAware.settings = Fake() @@ -143,6 +143,7 @@ def bm_loader(n): tloader = benchmark_load(N) traw = benchmark_raw_load(N) +@skip class benchmark_load_varieties(object): def bm_ls(self, n): for _ in range(n): -- cgit 1.4.1-2-gfad0 From a0e543f8b2adb7afb2822122d786f25b41f08ba2 Mon Sep 17 00:00:00 2001 From: hut Date: Mon, 10 May 2010 10:34:48 +0200 Subject: all_benchmarks: improved --- all_benchmarks.py | 28 ++++++++++++++++++++-------- test/bm_loader.py | 2 -- 2 files changed, 20 insertions(+), 10 deletions(-) (limited to 'test') diff --git a/all_benchmarks.py b/all_benchmarks.py index abcd051e..73316658 100755 --- a/all_benchmarks.py +++ b/all_benchmarks.py @@ -16,6 +16,7 @@ """Run all the tests inside the test/ directory as a test suite.""" if __name__ == '__main__': + from re import compile from test import * from time import time from types import FunctionType as function @@ -25,6 +26,16 @@ if __name__ == '__main__': n = int(argv[1]) except IndexError: n = 10 + if len(argv) > 2: + args = [compile(re) for re in argv[2:]] + def allow(name): + for re in args: + if re.search(name): + return True + else: + return False + else: + allow = lambda name: True for key, val in vars().copy().items(): if key.startswith('bm_'): bms.extend(v for k,v in vars(val).items() if type(v) == type) @@ -36,11 +47,12 @@ if __name__ == '__main__': t1 = time() method = getattr(bmobj, attrname) methodname = "{0}.{1}".format(bmobj.__class__.__name__, method.__name__) - try: - method(n) - except: - print("{0} failed!".format(methodname)) - raise - else: - t2 = time() - print("{0:60}: {1:10}s".format(methodname, t2 - t1)) + if allow(methodname): + try: + method(n) + except: + print("{0} failed!".format(methodname)) + raise + else: + t2 = time() + print("{0:60}: {1:10}s".format(methodname, t2 - t1)) diff --git a/test/bm_loader.py b/test/bm_loader.py index 154fea3d..4bfc2db9 100644 --- a/test/bm_loader.py +++ b/test/bm_loader.py @@ -127,7 +127,6 @@ class benchmark_load(object): self.loader.work() -@skip class benchmark_raw_load(object): def __init__(self): SettingsAware.settings = Fake() @@ -143,7 +142,6 @@ def bm_loader(n): tloader = benchmark_load(N) traw = benchmark_raw_load(N) -@skip class benchmark_load_varieties(object): def bm_ls(self, n): for _ in range(n): -- cgit 1.4.1-2-gfad0