awips2/pythonPackages/nose/unit_tests/test_cases.py
root 377dcd10b9 Initial revision of AWIPS2 11.9.0-7p5
Former-commit-id: 9f19e3f712 [formerly 9f19e3f712 [formerly 64fa9254b946eae7e61bbc3f513b7c3696c4f54f]]
Former-commit-id: 06a8b51d6d
Former-commit-id: 3360eb6c5f
2012-01-06 08:55:05 -06:00

251 lines
7.5 KiB
Python
Executable file

import unittest
import pdb
import sys
import nose.case
import nose.failure
from nose.config import Config
from mock import ResultProxyFactory, ResultProxy
class TestNoseCases(unittest.TestCase):
def test_function_test_case(self):
res = unittest.TestResult()
a = []
def func(a=a):
a.append(1)
case = nose.case.FunctionTestCase(func)
case(res)
assert a[0] == 1
def test_method_test_case(self):
res = unittest.TestResult()
a = []
class TestClass(object):
def test_func(self, a=a):
a.append(1)
case = nose.case.MethodTestCase(TestClass.test_func)
case(res)
assert a[0] == 1
def test_method_test_case_with_metaclass(self):
res = unittest.TestResult()
class TestType(type):
def __new__(cls, name, bases, dct):
return type.__new__(cls, name, bases, dct)
a = []
class TestClass(object):
__metaclass__ = TestType
def test_func(self, a=a):
a.append(1)
case = nose.case.MethodTestCase(TestClass.test_func)
case(res)
assert a[0] == 1
def test_method_test_case_fixtures(self):
res = unittest.TestResult()
called = []
class TestClass(object):
def setup(self):
called.append('setup')
def teardown(self):
called.append('teardown')
def test_func(self):
called.append('test')
case = nose.case.MethodTestCase(TestClass.test_func)
case(res)
self.assertEqual(called, ['setup', 'test', 'teardown'])
class TestClassFailingSetup(TestClass):
def setup(self):
called.append('setup')
raise Exception("failed")
called[:] = []
case = nose.case.MethodTestCase(TestClassFailingSetup.test_func)
case(res)
self.assertEqual(called, ['setup'])
class TestClassFailingTest(TestClass):
def test_func(self):
called.append('test')
raise Exception("failed")
called[:] = []
case = nose.case.MethodTestCase(TestClassFailingTest.test_func)
case(res)
self.assertEqual(called, ['setup', 'test', 'teardown'])
def test_function_test_case_fixtures(self):
from nose.tools import with_setup
res = unittest.TestResult()
called = {}
def st():
called['st'] = True
def td():
called['td'] = True
def func_exc():
called['func'] = True
raise TypeError("An exception")
func_exc = with_setup(st, td)(func_exc)
case = nose.case.FunctionTestCase(func_exc)
case(res)
assert 'st' in called
assert 'func' in called
assert 'td' in called
def test_failure_case(self):
res = unittest.TestResult()
f = nose.failure.Failure(ValueError, "No such test spam")
f(res)
assert res.errors
class TestNoseTestWrapper(unittest.TestCase):
def test_case_fixtures_called(self):
"""Instance fixtures are properly called for wrapped tests"""
res = unittest.TestResult()
called = []
class TC(unittest.TestCase):
def setUp(self):
print "TC setUp %s" % self
called.append('setUp')
def runTest(self):
print "TC runTest %s" % self
called.append('runTest')
def tearDown(self):
print "TC tearDown %s" % self
called.append('tearDown')
case = nose.case.Test(TC())
case(res)
assert not res.errors, res.errors
assert not res.failures, res.failures
self.assertEqual(called, ['setUp', 'runTest', 'tearDown'])
def test_result_proxy_used(self):
"""A result proxy is used to wrap the result for all tests"""
class TC(unittest.TestCase):
def runTest(self):
raise Exception("error")
ResultProxy.called[:] = []
res = unittest.TestResult()
config = Config()
case = nose.case.Test(TC(), config=config,
resultProxy=ResultProxyFactory())
case(res)
assert not res.errors, res.errors
assert not res.failures, res.failures
calls = [ c[0] for c in ResultProxy.called ]
self.assertEqual(calls, ['beforeTest', 'startTest', 'addError',
'stopTest', 'afterTest'])
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(Test.test))
self.assertEqual(case.address(), (fl, __name__, 'Test.test'))
case = nose.case.Test(
nose.case.MethodTestCase(Test.try_something, arg=(1,2,),
descriptor=Test.test_gen))
self.assertEqual(case.address(),
(fl, __name__, 'Test.test_gen'))
case = nose.case.Test(
nose.case.MethodTestCase(Test.test_gen, test=dummy, arg=(1,)))
self.assertEqual(case.address(),
(fl, __name__, 'Test.test_gen'))
def test_context(self):
class TC(unittest.TestCase):
def runTest(self):
pass
def test():
pass
class Test:
def test(self):
pass
case = nose.case.Test(TC())
self.assertEqual(case.context, TC)
case = nose.case.Test(nose.case.FunctionTestCase(test))
self.assertEqual(case.context, sys.modules[__name__])
case = nose.case.Test(nose.case.MethodTestCase(Test.test))
self.assertEqual(case.context, Test)
def test_short_description(self):
class TC(unittest.TestCase):
def test_a(self):
"""
This is the description
"""
pass
def test_b(self):
"""This is the description
"""
pass
def test_c(self):
pass
case_a = nose.case.Test(TC('test_a'))
case_b = nose.case.Test(TC('test_b'))
case_c = nose.case.Test(TC('test_c'))
self.assertEqual(case_a.shortDescription(), "This is the description")
self.assertEqual(case_b.shortDescription(), "This is the description")
self.assertEqual(case_c.shortDescription(), None)
if __name__ == '__main__':
unittest.main()