def test_address(self): from nose.util import absfile, src class TC(unittest.TestCase): def runTest(self): raise Exception("error") def dummy(i): pass def test(): pass class Test: def test(self): pass def test_gen(self): def tryit(i): pass for i in range (0, 2): yield tryit, i def try_something(self, a, b): pass fl = src(absfile(__file__)) case = nose.case.Test(TC()) self.assertEqual(case.address(), (fl, __name__, 'TC.runTest')) case = nose.case.Test(nose.case.FunctionTestCase(test)) self.assertEqual(case.address(), (fl, __name__, 'test')) case = nose.case.Test(nose.case.FunctionTestCase( dummy, arg=(1,), descriptor=test)) self.assertEqual(case.address(), (fl, __name__, 'test')) case = nose.case.Test(nose.case.MethodTestCase( unbound_method(Test, Test.test))) self.assertEqual(case.address(), (fl, __name__, 'Test.test')) case = nose.case.Test( nose.case.MethodTestCase(unbound_method(Test, Test.try_something), arg=(1,2,), descriptor=unbound_method(Test, Test.test_gen))) self.assertEqual(case.address(), (fl, __name__, 'Test.test_gen')) case = nose.case.Test( nose.case.MethodTestCase(unbound_method(Test, Test.test_gen), test=dummy, arg=(1,))) self.assertEqual(case.address(), (fl, __name__, 'Test.test_gen'))
def address(self, case): if hasattr(case, 'address'): file, mod, call = case.address() elif hasattr(case, 'context'): file, mod, call = test_address(case.context) else: raise Exception("Unable to convert %s to address" % case) parts = [] if file is None: if mod is None: raise Exception("Unaddressable case %s" % case) else: parts.append(mod) else: parts.append(file) if call is not None: parts.append(call) return ':'.join(map(str, parts))
def address(case): if hasattr(case, "address"): file, mod, call = case.address() elif hasattr(case, "context"): file, mod, call = test_address(case.context) else: raise Exception("Unable to convert %s to address" % case) parts = [] if file is None: if mod is None: raise Exception("Unaddressable case %s" % case) else: parts.append(mod) else: # strip __init__.py(c) from end of file part # if present, having it there confuses loader dirname, basename = os.path.split(file) if basename.startswith("__init__"): file = dirname parts.append(file) if call is not None: parts.append(call) return ":".join(map(str, parts))
def get_test_case_address(case): """ Derives a string "address" of the case from its module/file name and function name :param case: test case object :return: String describing the location of the test :rtype: str """ if hasattr(case, 'address'): file, mod, call = case.address() elif hasattr(case, 'context'): file, mod, call = native_get_test_address(case.context) else: raise Exception("Unable to convert %s to address" % case) parts = [] if file is None: if mod is None: raise Exception("Unaddressable case %s" % case) else: parts.append(mod) else: # strip __init__.py(c) from end of file part # if present, having it there confuses loader dirname, basename = os.path.split(file) if basename.startswith('__init__'): file = dirname parts.append(file) if call is not None: parts.append(call) # do we hate unicode names? TODO: investigate return ':'.join(map(str, parts))