diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/__init__.py | 52 | ||||
-rwxr-xr-x | test/all_benchmarks.py | 53 | ||||
-rwxr-xr-x | test/all_tests.py | 33 | ||||
-rw-r--r-- | test/bm_loader.py | 2 | ||||
l--------- | test/ranger | 1 | ||||
-rw-r--r-- | test/tc_bookmarks.py | 2 | ||||
-rw-r--r-- | test/tc_colorscheme.py | 2 | ||||
-rw-r--r-- | test/tc_direction.py | 2 | ||||
-rw-r--r-- | test/tc_directory.py | 2 | ||||
-rw-r--r-- | test/tc_displayable.py | 4 | ||||
-rw-r--r-- | test/tc_ext.py | 1 | ||||
-rw-r--r-- | test/tc_history.py | 2 | ||||
-rw-r--r-- | test/tc_keyapi.py | 2 | ||||
-rw-r--r-- | test/tc_loader.py | 4 | ||||
-rw-r--r-- | test/tc_newkeys.py | 3 | ||||
-rw-r--r-- | test/tc_signal.py | 1 | ||||
-rw-r--r-- | test/tc_ui.py | 6 | ||||
-rw-r--r-- | test/tc_utfwidth.py | 2 | ||||
-rw-r--r-- | test/testlib.py (renamed from test/test.py) | 33 |
19 files changed, 121 insertions, 86 deletions
diff --git a/test/__init__.py b/test/__init__.py index d87d1fc2..e69de29b 100644 --- a/test/__init__.py +++ b/test/__init__.py @@ -1,52 +0,0 @@ -# Copyright (C) 2009, 2010 Roman Zimbelmann <romanz@lavabit.com> -# -# 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 <http://www.gnu.org/licenses/>. - -import os, sys - -__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], '..'))) - -class Fake(object): - def __getattr__(self, attrname): - val = Fake() - self.__dict__[attrname] = val - return val - - def __call__(self, *_, **__): - return Fake() - - def __clear__(self): - self.__dict__.clear() - - def __iter__(self): - return iter(()) - -class OK(Exception): - pass - -def raise_ok(*_, **__): - raise OK() diff --git a/test/all_benchmarks.py b/test/all_benchmarks.py new file mode 100755 index 00000000..e1b47142 --- /dev/null +++ b/test/all_benchmarks.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python +# Copyright (C) 2009, 2010 Roman Zimbelmann <romanz@lavabit.com> +# +# 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 <http://www.gnu.org/licenses/>. + +""" +Run all the benchmarks inside this directory. +Usage: ./all_benchmarks.py [count] [regexp-filters...] +""" + +import os +import re +import sys +import time + +if __name__ == '__main__': + count = int(sys.argv[1]) if len(sys.argv) > 1 else 10 + regexes = [re.compile(fltr) for fltr in sys.argv[2:]] + modules = (fname[:-3] for fname in os.listdir(sys.path[0]) \ + if fname[:3] == 'bm_' and fname[-3:] == '.py') + + benchmarks = [] # find all benchmark (class, methodname) pairs + for val in [__import__(module) for module in modules]: + for cls in vars(val).values(): + if type(cls) == type: + for methodname in vars(cls): + if methodname.startswith('bm_'): + benchmarks.append((cls, methodname)) + + for cls, methodname in benchmarks: + full_method_name = "{0}.{1}".format(cls.__name__, methodname) + if all(re.search(full_method_name) for re in regexes): + method = getattr(cls(), methodname) + t1 = time.time() + try: + method(count) + except: + print("{0} failed!".format(full_method_name)) + raise + else: + t2 = time.time() + print("{0:60}: {1:10}s".format(full_method_name, t2 - t1)) diff --git a/test/all_tests.py b/test/all_tests.py new file mode 100755 index 00000000..7cfc855f --- /dev/null +++ b/test/all_tests.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python +# Copyright (C) 2009, 2010 Roman Zimbelmann <romanz@lavabit.com> +# +# 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 <http://www.gnu.org/licenses/>. + +""" +Run all the tests inside this directory as a test suite. +Usage: ./all_tests.py [verbosity] +""" + +import os +import sys +import unittest + +if __name__ == '__main__': + verbosity = int(sys.argv[1]) if len(sys.argv) > 1 else 1 + tests = (fname[:-3] for fname in os.listdir(sys.path[0]) \ + if fname[:3] == 'tc_' and fname[-3:] == '.py') + suite = unittest.TestLoader().loadTestsFromNames(tests) + result = unittest.TextTestRunner(verbosity=verbosity).run(suite) + if len(result.errors + result.failures) > 0: + sys.exit(1) diff --git a/test/bm_loader.py b/test/bm_loader.py index 745e6f3b..968640a5 100644 --- a/test/bm_loader.py +++ b/test/bm_loader.py @@ -18,7 +18,7 @@ from ranger.fsobject import Directory, File from ranger.ext.openstruct import OpenStruct import os.path from ranger.shared import FileManagerAware, SettingsAware -from test import Fake +from testlib import Fake from os.path import realpath, join, dirname from subprocess import Popen, PIPE TESTDIR = realpath(join(dirname(__file__), '/usr/include')) diff --git a/test/ranger b/test/ranger new file mode 120000 index 00000000..5459458c --- /dev/null +++ b/test/ranger @@ -0,0 +1 @@ +../ranger \ No newline at end of file diff --git a/test/tc_bookmarks.py b/test/tc_bookmarks.py index f45ba061..9b41f1c6 100644 --- a/test/tc_bookmarks.py +++ b/test/tc_bookmarks.py @@ -13,8 +13,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -if __name__ == '__main__': from __init__ import init; init() - from os.path import realpath, join, dirname import unittest import os diff --git a/test/tc_colorscheme.py b/test/tc_colorscheme.py index dbaac1f9..8d6adee6 100644 --- a/test/tc_colorscheme.py +++ b/test/tc_colorscheme.py @@ -13,8 +13,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -if __name__ == '__main__': from __init__ import init; init() - from unittest import TestCase, main import random import ranger.colorschemes diff --git a/test/tc_direction.py b/test/tc_direction.py index f45b4b36..5c1776cf 100644 --- a/test/tc_direction.py +++ b/test/tc_direction.py @@ -13,8 +13,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -if __name__ == '__main__': from __init__ import init; init() - import unittest from ranger.ext.direction import Direction from ranger.ext.openstruct import OpenStruct diff --git a/test/tc_directory.py b/test/tc_directory.py index 024ebc9d..a702c4db 100644 --- a/test/tc_directory.py +++ b/test/tc_directory.py @@ -13,8 +13,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -if __name__ == '__main__': from __init__ import init; init() - import sys from os.path import realpath, join, dirname diff --git a/test/tc_displayable.py b/test/tc_displayable.py index 50f37845..1c66a40e 100644 --- a/test/tc_displayable.py +++ b/test/tc_displayable.py @@ -13,14 +13,12 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -if __name__ == '__main__': from __init__ import init; init() - import unittest import curses from random import randint from ranger.gui.displayable import Displayable, DisplayableContainer -from test import Fake, OK, raise_ok, TODO +from testlib import Fake, OK, raise_ok, TODO class TestWithFakeCurses(unittest.TestCase): def setUp(self): diff --git a/test/tc_ext.py b/test/tc_ext.py index b8094233..919f35a2 100644 --- a/test/tc_ext.py +++ b/test/tc_ext.py @@ -13,7 +13,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -if __name__ == '__main__': from __init__ import init; init() import unittest from collections import deque diff --git a/test/tc_history.py b/test/tc_history.py index d027231a..33784e14 100644 --- a/test/tc_history.py +++ b/test/tc_history.py @@ -13,8 +13,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -if __name__ == '__main__': from __init__ import init; init() - from ranger.container import History from unittest import TestCase, main import unittest diff --git a/test/tc_keyapi.py b/test/tc_keyapi.py index 2f522173..48282a7d 100644 --- a/test/tc_keyapi.py +++ b/test/tc_keyapi.py @@ -13,8 +13,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -if __name__ == '__main__': from __init__ import init; init() - from unittest import TestCase, main class Test(TestCase): diff --git a/test/tc_loader.py b/test/tc_loader.py index 53ac5617..9f7f7322 100644 --- a/test/tc_loader.py +++ b/test/tc_loader.py @@ -13,13 +13,11 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -if __name__ == '__main__': from __init__ import init; init() - import unittest import os from os.path import realpath, join, dirname -from test import Fake +from testlib import Fake from ranger.shared import FileManagerAware, SettingsAware from ranger.core.loader import Loader from ranger.fsobject import Directory, File diff --git a/test/tc_newkeys.py b/test/tc_newkeys.py index c7a33025..fd856f17 100644 --- a/test/tc_newkeys.py +++ b/test/tc_newkeys.py @@ -14,10 +14,9 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -if __name__ == '__main__': from __init__ import init; init() from unittest import TestCase, main -from test import TODO +from testlib import TODO from ranger.ext.tree import Tree from ranger.container.keymap import * from ranger.container.keybuffer import KeyBuffer diff --git a/test/tc_signal.py b/test/tc_signal.py index 35b4eebe..f31681f4 100644 --- a/test/tc_signal.py +++ b/test/tc_signal.py @@ -13,7 +13,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -if __name__ == '__main__': from __init__ import init; init() import unittest import gc from ranger.ext.signal_dispatcher import * diff --git a/test/tc_ui.py b/test/tc_ui.py index 3c659459..dc8d669d 100644 --- a/test/tc_ui.py +++ b/test/tc_ui.py @@ -13,14 +13,12 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -if __name__ == '__main__': from __init__ import init; init() - import unittest import curses from ranger.gui import ui -from test import Fake, OK, raise_ok +from testlib import Fake, OK, raise_ok ui.curses = Fake() @@ -39,7 +37,7 @@ class Test(unittest.TestCase): def tearDown(self): self.ui.destroy() - + def test_passing(self): # Test whether certain method calls are passed to widgets widget = self.ui.widget diff --git a/test/tc_utfwidth.py b/test/tc_utfwidth.py index d8ffbe1d..2aa5fa6d 100644 --- a/test/tc_utfwidth.py +++ b/test/tc_utfwidth.py @@ -14,8 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -if __name__ == '__main__': from __init__ import init; init() - from unittest import TestCase, main from ranger.ext.utfwidth import * diff --git a/test/test.py b/test/testlib.py index d0a69e5a..29dd9e07 100644 --- a/test/test.py +++ b/test/testlib.py @@ -13,8 +13,31 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -"""Workaround to allow running single test cases directly""" -try: - from __init__ import init, Fake, OK, raise_ok, TODO -except: - from test import init, Fake, OK, raise_ok, TODO +def TODO(fnc): + def result(*arg, **kw): + try: + fnc(*arg, **kw) + except: + pass # failure expected + return result + +class Fake(object): + def __getattr__(self, attrname): + val = Fake() + self.__dict__[attrname] = val + return val + + def __call__(self, *_, **__): + return Fake() + + def __clear__(self): + self.__dict__.clear() + + def __iter__(self): + return iter(()) + +class OK(Exception): + pass + +def raise_ok(*_, **__): + raise OK() |