summary refs log tree commit diff stats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/__init__.py52
-rwxr-xr-xtest/all_benchmarks.py58
-rwxr-xr-xtest/all_tests.py33
-rw-r--r--test/bm_loader.py2
l---------test/ranger1
-rw-r--r--test/tc_bookmarks.py2
-rw-r--r--test/tc_colorscheme.py2
-rw-r--r--test/tc_direction.py2
-rw-r--r--test/tc_directory.py2
-rw-r--r--test/tc_displayable.py4
-rw-r--r--test/tc_ext.py1
-rw-r--r--test/tc_history.py2
-rw-r--r--test/tc_keyapi.py2
-rw-r--r--test/tc_loader.py4
-rw-r--r--test/tc_newkeys.py3
-rw-r--r--test/tc_signal.py1
-rw-r--r--test/tc_ui.py6
-rw-r--r--test/tc_utfwidth.py2
-rw-r--r--test/testlib.py (renamed from test/test.py)33
19 files changed, 126 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..73316658
--- /dev/null
+++ b/test/all_benchmarks.py
@@ -0,0 +1,58 @@
+#!/usr/bin/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 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
+	from sys import argv
+	bms = []
+	try:
+		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)
+	for bmclass in bms:
+		for attrname in vars(bmclass):
+			if not attrname.startswith('bm_'):
+				continue
+			bmobj = bmclass()
+			t1 = time()
+			method = getattr(bmobj, attrname)
+			methodname = "{0}.{1}".format(bmobj.__class__.__name__, method.__name__)
+			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/all_tests.py b/test/all_tests.py
new file mode 100755
index 00000000..dff49b60
--- /dev/null
+++ b/test/all_tests.py
@@ -0,0 +1,33 @@
+#!/usr/bin/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 the test/ directory as a test suite."""
+if __name__ == '__main__':
+	import unittest
+	import sys
+	import os
+
+	try:
+		verbosity = int(sys.argv[1])
+	except IndexError:
+		verbosity = 2
+
+	ls = os.listdir(sys.path[0])
+	paths = [p[:-3] for p in ls if p[:3] == 'tc_' and p[-3:] == '.py']
+	suite = unittest.TestLoader().loadTestsFromNames(paths)
+	result = unittest.TextTestRunner(verbosity=verbosity).run(suite)
+	if len(result.errors) + len(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()