summaryrefslogtreecommitdiff
path: root/tests/test_helpers.py
diff options
context:
space:
mode:
authorBryan Bishop <kanzure@gmail.com>2013-08-04 12:54:33 -0500
committerBryan Bishop <kanzure@gmail.com>2013-08-04 12:54:33 -0500
commit8d179bb81bba6de73669dd1643a9e7336d93c0a1 (patch)
tree9eaf4d76fb22b250f6fa3fef0bb7331c440dbee2 /tests/test_helpers.py
parentfac185b7814d5a47a33fef25d64e4ae94586670d (diff)
split meta-testing into separate files
Diffstat (limited to 'tests/test_helpers.py')
-rw-r--r--tests/test_helpers.py84
1 files changed, 84 insertions, 0 deletions
diff --git a/tests/test_helpers.py b/tests/test_helpers.py
new file mode 100644
index 0000000..a6ef0a1
--- /dev/null
+++ b/tests/test_helpers.py
@@ -0,0 +1,84 @@
+import sys
+import inspect
+
+import unittest
+
+from helpers import (
+ load_tests,
+ check_has_test,
+ assemble_test_cases,
+ find_untested_methods,
+ report_untested,
+)
+
+class TestMetaTesting(unittest.TestCase):
+ """test whether or not i am finding at least
+ some of the tests in this file"""
+ tests = None
+
+ def setUp(self):
+ if self.tests == None:
+ self.__class__.tests = assemble_test_cases()
+
+ def test_assemble_test_cases_count(self):
+ "does assemble_test_cases find some tests?"
+ self.failUnless(len(self.tests) > 0)
+
+ def test_assemble_test_cases_inclusion(self):
+ "is this class found by assemble_test_cases?"
+ # i guess it would have to be for this to be running?
+ self.failUnless(self.__class__ in self.tests)
+
+ def test_assemble_test_cases_others(self):
+ "test other inclusions for assemble_test_cases"
+ self.failUnless(TestRomStr in self.tests)
+ self.failUnless(TestCram in self.tests)
+
+ def test_check_has_test(self):
+ self.failUnless(check_has_test("beaver", ["test_beaver"]))
+ self.failUnless(check_has_test("beaver", ["test_beaver_2"]))
+ self.failIf(check_has_test("beaver_1", ["test_beaver"]))
+
+ def test_find_untested_methods(self):
+ untested = find_untested_methods()
+ # the return type must be an iterable
+ self.failUnless(hasattr(untested, "__iter__"))
+ #.. basically, a list
+ self.failUnless(isinstance(untested, list))
+
+ def test_find_untested_methods_method(self):
+ """create a function and see if it is found"""
+ # setup a function in the global namespace
+ global some_random_test_method
+ # define the method
+ def some_random_test_method(): pass
+ # first make sure it is in the global scope
+ members = inspect.getmembers(sys.modules[__name__], inspect.isfunction)
+ func_names = [functuple[0] for functuple in members]
+ self.assertIn("some_random_test_method", func_names)
+ # test whether or not it is found by find_untested_methods
+ untested = find_untested_methods()
+ self.assertIn("some_random_test_method", untested)
+ # remove the test method from the global namespace
+ del some_random_test_method
+
+ def test_load_tests(self):
+ loader = unittest.TestLoader()
+ suite = load_tests(loader, None, None)
+ suite._tests[0]._testMethodName
+ membership_test = lambda member: \
+ inspect.isclass(member) and issubclass(member, unittest.TestCase)
+ tests = inspect.getmembers(sys.modules[__name__], membership_test)
+ classes = [x[1] for x in tests]
+ for test in suite._tests:
+ self.assertIn(test.__class__, classes)
+
+ def test_report_untested(self):
+ untested = find_untested_methods()
+ output = report_untested()
+ if len(untested) > 0:
+ self.assertIn("NOT TESTED", output)
+ for name in untested:
+ self.assertIn(name, output)
+ elif len(untested) == 0:
+ self.assertNotIn("NOT TESTED", output)