test_ok1/py/tool/testing/test_utestconvert.py

413 lines
13 KiB
Python

from py.__.tool.utestconvert import rewrite_utest
class Test_UTestConvert:
def testall(self):
assert rewrite_utest("badger badger badger") == (
"badger badger badger")
assert rewrite_utest(
"self.assertRaises(excClass, callableObj, *args, **kwargs)"
) == (
"raises(excClass, callableObj, *args, **kwargs)"
)
assert rewrite_utest(
"""
self.failUnlessRaises(TypeError, func, 42, **{'arg1': 23})
"""
) == (
"""
raises(TypeError, func, 42, **{'arg1': 23})
"""
)
assert rewrite_utest(
"""
self.assertRaises(TypeError,
func,
mushroom)
"""
) == (
"""
raises(TypeError,
func,
mushroom)
"""
)
assert rewrite_utest("self.fail()") == "raise AssertionError"
assert rewrite_utest("self.fail('mushroom, mushroom')") == (
"raise AssertionError, 'mushroom, mushroom'")
assert rewrite_utest("self.assert_(x)") == "assert x"
assert rewrite_utest("self.failUnless(func(x)) # XXX") == (
"assert func(x) # XXX")
assert rewrite_utest(
"""
self.assert_(1 + f(y)
+ z) # multiline, keep parentheses
"""
) == (
"""
assert (1 + f(y)
+ z) # multiline, keep parentheses
"""
)
assert rewrite_utest("self.assert_(0, 'badger badger')") == (
"assert 0, 'badger badger'")
assert rewrite_utest("self.assert_(0, '''badger badger''')") == (
"assert 0, '''badger badger'''")
assert rewrite_utest(
r"""
self.assert_(0,
'Meet the badger.\n')
"""
) == (
r"""
assert 0, (
'Meet the badger.\n')
"""
)
assert rewrite_utest(
r"""
self.failIf(0 + 0
+ len('badger\n')
+ 0, '''badger badger badger badger
mushroom mushroom
Snake! Ooh a snake!
''') # multiline, must move the parens
"""
) == (
r"""
assert not (0 + 0
+ len('badger\n')
+ 0), '''badger badger badger badger
mushroom mushroom
Snake! Ooh a snake!
''' # multiline, must move the parens
"""
)
assert rewrite_utest("self.assertEquals(0, 0)") == (
"assert 0 == 0")
assert rewrite_utest(
r"""
self.assertEquals(0,
'Run away from the snake.\n')
"""
) == (
r"""
assert 0 == (
'Run away from the snake.\n')
"""
)
assert rewrite_utest(
"""
self.assertEquals(badger + 0
+ mushroom
+ snake, 0)
"""
) == (
"""
assert (badger + 0
+ mushroom
+ snake) == 0
"""
)
assert rewrite_utest(
"""
self.assertNotEquals(badger + 0
+ mushroom
+ snake,
mushroom
- badger)
"""
) == (
"""
assert (badger + 0
+ mushroom
+ snake) != (
mushroom
- badger)
"""
)
assert rewrite_utest(
"""
self.assertEquals(badger(),
mushroom()
+ snake(mushroom)
- badger())
"""
) == (
"""
assert badger() == (
mushroom()
+ snake(mushroom)
- badger())
"""
)
assert rewrite_utest("self.failIfEqual(0, 0)") == (
"assert not 0 == 0")
assert rewrite_utest("self.failUnlessEqual(0, 0)") == (
"assert 0 == 0")
assert rewrite_utest(
"""
self.failUnlessEqual(mushroom()
+ mushroom()
+ mushroom(), '''badger badger badger
badger badger badger badger
badger badger badger badger
''') # multiline, must move the parens
"""
) == (
"""
assert (mushroom()
+ mushroom()
+ mushroom()) == '''badger badger badger
badger badger badger badger
badger badger badger badger
''' # multiline, must move the parens
"""
)
assert rewrite_utest(
"""
self.assertEquals('''snake snake snake
snake snake snake''', mushroom)
"""
) == (
"""
assert '''snake snake snake
snake snake snake''' == mushroom
"""
)
assert rewrite_utest(
"""
self.assertEquals(badger(),
snake(), 'BAD BADGER')
"""
) == (
"""
assert badger() == (
snake()), 'BAD BADGER'
"""
)
assert rewrite_utest(
"""
self.assertNotEquals(badger(),
snake()+
snake(), 'POISONOUS MUSHROOM!\
Ai! I ate a POISONOUS MUSHROOM!!')
"""
) == (
"""
assert badger() != (
snake()+
snake()), 'POISONOUS MUSHROOM!\
Ai! I ate a POISONOUS MUSHROOM!!'
"""
)
assert rewrite_utest(
"""
self.assertEquals(badger(),
snake(), '''BAD BADGER
BAD BADGER
BAD BADGER'''
)
"""
) == (
"""
assert badger() == (
snake()), ( '''BAD BADGER
BAD BADGER
BAD BADGER'''
)
"""
)
assert rewrite_utest(
"""
self.assertEquals('''BAD BADGER
BAD BADGER
BAD BADGER''', '''BAD BADGER
BAD BADGER
BAD BADGER''')
"""
) == (
"""
assert '''BAD BADGER
BAD BADGER
BAD BADGER''' == '''BAD BADGER
BAD BADGER
BAD BADGER'''
"""
)
assert rewrite_utest(
"""
self.assertEquals('''GOOD MUSHROOM
GOOD MUSHROOM
GOOD MUSHROOM''',
'''GOOD MUSHROOM
GOOD MUSHROOM
GOOD MUSHROOM''',
''' FAILURE
FAILURE
FAILURE''')
"""
) == (
"""
assert '''GOOD MUSHROOM
GOOD MUSHROOM
GOOD MUSHROOM''' == (
'''GOOD MUSHROOM
GOOD MUSHROOM
GOOD MUSHROOM'''), (
''' FAILURE
FAILURE
FAILURE''')
"""
)
assert rewrite_utest(
"""
self.assertAlmostEquals(first, second, 5, 'A Snake!')
"""
) == (
"""
assert round(first - second, 5) == 0, 'A Snake!'
"""
)
assert rewrite_utest(
"""
self.assertAlmostEquals(first, second, 120)
"""
) == (
"""
assert round(first - second, 120) == 0
"""
)
assert rewrite_utest(
"""
self.assertAlmostEquals(first, second)
"""
) == (
"""
assert round(first - second, 7) == 0
"""
)
assert rewrite_utest(
"""
self.assertAlmostEqual(first, second, 5, '''A Snake!
Ohh A Snake! A Snake!!
''')
"""
) == (
"""
assert round(first - second, 5) == 0, '''A Snake!
Ohh A Snake! A Snake!!
'''
"""
)
assert rewrite_utest(
"""
self.assertNotAlmostEqual(first, second, 5, 'A Snake!')
"""
) == (
"""
assert round(first - second, 5) != 0, 'A Snake!'
"""
)
assert rewrite_utest(
"""
self.failIfAlmostEqual(first, second, 5, 'A Snake!')
"""
) == (
"""
assert not round(first - second, 5) == 0, 'A Snake!'
"""
)
assert rewrite_utest(
"""
self.failIfAlmostEqual(first, second, 5, 6, 7, 'Too Many Args')
"""
) == (
"""
self.failIfAlmostEqual(first, second, 5, 6, 7, 'Too Many Args')
"""
)
assert rewrite_utest(
"""
self.failUnlessAlmostEquals(first, second, 5, 'A Snake!')
"""
) == (
"""
assert round(first - second, 5) == 0, 'A Snake!'
"""
)
assert rewrite_utest(
"""
self.assertAlmostEquals(now do something reasonable ..()
oops, I am inside a comment as a ''' string, and the fname was
mentioned in passing, leaving us with something that isn't an
expression ... will this blow up?
"""
) == (
"""
self.assertAlmostEquals(now do something reasonable ..()
oops, I am inside a comment as a ''' string, and the fname was
mentioned in passing, leaving us with something that isn't an
expression ... will this blow up?
"""
)
assert rewrite_utest(
"""
self.failUnless('__builtin__' in modules, "An entry for __builtin__ "
"is not in sys.modules.")
"""
) == (
"""
assert '__builtin__' in modules, ( "An entry for __builtin__ "
"is not in sys.modules.")
"""
)
# two unittests on the same line separated by a semi-colon is
# only half-converted. Just so you know.
assert rewrite_utest(
"""
self.assertEquals(0, 0); self.assertEquals(1, 1) #not 2 per line!
"""
) == (
"""
assert 0 == 0; self.assertEquals(1, 1) #not 2 per line!
"""
)
if __name__ == '__main__':
unittest.main()