Package cssutils :: Package tests :: Module basetest
[hide private]
[frames] | no frames]

Source Code for Module cssutils.tests.basetest

  1  """ 
  2  base class for all tests 
  3  """ 
  4  __author__ = '$LastChangedBy: cthedot $' 
  5  __date__ = '$LastChangedDate: 2007-11-01 22:39:10 +0100 (Do, 01 Nov 2007) $' 
  6  __version__ = '$LastChangedRevision: 619 $' 
  7   
  8  import logging 
  9  import unittest 
 10  import sys 
 11  import cssutils 
 12   
 13  cssutils.log.setloglevel(logging.FATAL) 
 14   
15 -class BaseTestCase(unittest.TestCase):
16
17 - def assertRaisesEx(self, exception, callable, *args, **kwargs):
18 """ 19 from 20 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/307970 21 """ 22 if "exc_args" in kwargs: 23 exc_args = kwargs["exc_args"] 24 del kwargs["exc_args"] 25 else: 26 exc_args = None 27 if "exc_pattern" in kwargs: 28 exc_pattern = kwargs["exc_pattern"] 29 del kwargs["exc_pattern"] 30 else: 31 exc_pattern = None 32 33 argv = [repr(a) for a in args]\ 34 + ["%s=%r" % (k,v) for k,v in kwargs.items()] 35 callsig = "%s(%s)" % (callable.__name__, ", ".join(argv)) 36 37 try: 38 callable(*args, **kwargs) 39 except exception, exc: 40 if exc_args is not None: 41 self.failIf(exc.args != exc_args, 42 "%s raised %s with unexpected args: "\ 43 "expected=%r, actual=%r"\ 44 % (callsig, exc.__class__, exc_args, exc.args)) 45 if exc_pattern is not None: 46 self.failUnless(exc_pattern.search(str(exc)), 47 "%s raised %s, but the exception "\ 48 "does not match '%s': %r"\ 49 % (callsig, exc.__class__, exc_pattern.pattern, 50 str(exc))) 51 except: 52 exc_info = sys.exc_info() 53 print exc_info 54 self.fail("%s raised an unexpected exception type: "\ 55 "expected=%s, actual=%s"\ 56 % (callsig, exception, exc_info[0])) 57 else: 58 self.fail("%s did not raise %s" % (callsig, exception))
59
60 - def assertRaisesMsg(self, excClass, msg, callableObj, *args, **kwargs):
61 """ 62 Just like unittest.TestCase.assertRaises, 63 but checks that the message is right too. 64 65 Usage:: 66 67 self.assertRaisesMsg( 68 MyException, "Exception message", 69 my_function, (arg1, arg2) 70 ) 71 72 from 73 http://www.nedbatchelder.com/blog/200609.html#e20060905T064418 74 """ 75 try: 76 callableObj(*args, **kwargs) 77 except excClass, exc: 78 excMsg = str(exc) 79 if not msg: 80 # No message provided: any message is fine. 81 return 82 elif excMsg == msg: 83 # Message provided, and we got the right message: passes. 84 return 85 else: 86 # Message provided, and it didn't match: fail! 87 raise self.failureException( 88 "Right exception, wrong message: got '%s' expected '%s'" % 89 (excMsg, msg) 90 ) 91 else: 92 if hasattr(excClass, '__name__'): 93 excName = excClass.__name__ 94 else: 95 excName = str(excClass) 96 raise self.failureException( 97 "Expected to raise %s, didn't get an exception at all" % 98 excName 99 )
100
101 - def setUp(self):
102 self.p = cssutils.CSSParser(raiseExceptions=True)
103
104 - def do_equal_p(self, tests, att='cssText', debug=False, raising=True):
105 """ 106 if raising self.p is used for parsing, else self.pf 107 """ 108 p = cssutils.CSSParser(raiseExceptions=raising) 109 # parses with self.p and checks att of result 110 for test, expected in tests.items(): 111 if debug: 112 print '"%s"' % test 113 s = p.parseString(test) 114 if expected is None: 115 expected = test 116 self.assertEqual(expected, unicode(s.__getattribute__(att), 'utf-8'))
117
118 - def do_raise_p(self, tests, debug=False, raising=True):
119 # parses with self.p and expects raise 120 p = cssutils.CSSParser(raiseExceptions=raising) 121 for test, expected in tests.items(): 122 if debug: 123 print '"%s"' % test 124 self.assertRaises(expected, p.parseString, test)
125 126
127 - def do_equal_r(self, tests, att='cssText', debug=False):
128 # sets attribute att of self.r and asserts Equal 129 for test, expected in tests.items(): 130 if debug: 131 print '"%s"' % test 132 self.r.__setattr__(att, test) 133 if expected is None: 134 expected = test 135 self.assertEqual(expected, self.r.__getattribute__(att))
136
137 - def do_raise_r(self, tests, att='_setCssText', debug=False):
138 # sets self.r and asserts raise 139 for test, expected in tests.items(): 140 if debug: 141 print '"%s"' % test 142 self.assertRaises(expected, self.r.__getattribute__(att), test)
143