summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Jehannet <julien.jehannet@logilab.fr>2010-09-22 11:00:57 +0200
committerJulien Jehannet <julien.jehannet@logilab.fr>2010-09-22 11:00:57 +0200
commit1ca37b55f874d3df6f97a006c8690b985a86c00b (patch)
tree6ffb2167d25f13accb8ddb95df379e052b7fe13b
parent80be77a74f1431354188e2de71e1ef878f110a7f (diff)
downloadlogilab-common-1ca37b55f874d3df6f97a006c8690b985a86c00b.tar.gz
[unittest2] make standard import under py3.x (skip unittest2 support from here)
-rw-r--r--__pkginfo__.py3
-rw-r--r--debian/control4
-rw-r--r--pytest.py2
-rw-r--r--test/unittest_cache.py26
-rw-r--r--test/unittest_compat.py94
-rw-r--r--test/unittest_configuration.py115
-rw-r--r--test/unittest_date.py28
-rw-r--r--test/unittest_decorators.py14
-rw-r--r--test/unittest_graph.py8
-rw-r--r--test/unittest_html.py2
-rw-r--r--test/unittest_interface.py26
-rw-r--r--test/unittest_modutils.py10
-rw-r--r--test/unittest_shellutils.py44
-rw-r--r--test/unittest_table.py168
-rw-r--r--test/unittest_taskqueue.py32
-rw-r--r--test/unittest_testlib.py244
-rw-r--r--test/unittest_textutils.py62
-rw-r--r--test/unittest_umessage.py14
-rw-r--r--test/unittest_xmlutils.py10
-rw-r--r--test/utils.py2
-rw-r--r--testlib.py145
21 files changed, 532 insertions, 521 deletions
diff --git a/__pkginfo__.py b/__pkginfo__.py
index 1182ae4..9ffa938 100644
--- a/__pkginfo__.py
+++ b/__pkginfo__.py
@@ -39,3 +39,6 @@ from os.path import join
scripts = [join('bin', 'pytest')]
include_dirs = [join('test', 'data')]
pyversions = ['2.4', '2.5', '2.6']
+
+install_requires = ['unittest2 >= 0.5.1']
+
diff --git a/debian/control b/debian/control
index f3f34ff..d59ab79 100644
--- a/debian/control
+++ b/debian/control
@@ -9,7 +9,7 @@ Uploaders: David Douard <david.douard@logilab.fr>,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>,
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
Build-Depends: debhelper (>= 5.0.38), python (>= 2.4.6-2)
-Build-Depends-Indep: python-support, python-epydoc, graphviz, python-egenix-mxdatetime
+Build-Depends-Indep: python-support, python-epydoc, graphviz, python-egenix-mxdatetime, python-unittest2
XS-Python-Version: all
Standards-Version: 3.8.2
Homepage: http://www.logilab.org/project/logilab-common
@@ -19,7 +19,7 @@ Vcs-Browser: http://svn.debian.org/viewsvn/python-modules/packages/logilab-commo
Package: python-logilab-common
Architecture: all
Provides: ${python:Provides}
-Depends: ${python:Depends}, ${misc:Depends}
+Depends: ${python:Depends}, ${misc:Depends}, python-unittest2
Recommends: python-egenix-mxdatetime
Conflicts: python-constraint ( <= 0.3.0-4), python-logilab-astng ( <= 0.16.0-1), pylint ( << 0.11.0-1), devtools ( <= 0.9.0-1), logilab-doctools ( <= 0.1.6-4), python-logilab-aspects ( <= 0.1.4-2), python2.3-logilab-common, python2.4-logilab-common, cubicweb-server ( << 3.6.0-1)
Description: useful miscellaneous modules used by Logilab projects
diff --git a/pytest.py b/pytest.py
index 5868dfd..3bfbb75 100644
--- a/pytest.py
+++ b/pytest.py
@@ -436,7 +436,7 @@ succeeded test file :", osp.join(os.getcwd(),testlib.FILE_RESTART)
except SystemExit, exc:
self.errcode = exc.code
raise
- except testlib.TestSkipped:
+ except testlib.SkipTest:
print "Module skipped:", filename
self.report.skip_module(filename)
return None
diff --git a/test/unittest_cache.py b/test/unittest_cache.py
index 51e1575..c5dddcf 100644
--- a/test/unittest_cache.py
+++ b/test/unittest_cache.py
@@ -33,9 +33,9 @@ class CacheTestCase(TestCase):
self.assertEqual(len(self.cache._usage), 1)
self.assertEqual(self.cache._usage[-1], 1,
'1 is not the most recently used key')
- self.assertUnorderedIterableEquals(self.cache._usage,
- self.cache.keys(),
- "usage list and data keys are different")
+ self.assertItemsEqual(self.cache._usage,
+ self.cache.keys(),
+ "usage list and data keys are different")
def test_setitem2(self):
"""Checks that the setitem method works for multiple items"""
@@ -47,8 +47,8 @@ class CacheTestCase(TestCase):
"lenght of usage list is not 2")
self.assertEqual(self.cache._usage[-1], 2,
'1 is not the most recently used key')
- self.assertUnorderedIterableEquals(self.cache._usage,
- self.cache.keys())# usage list and data keys are different
+ self.assertItemsEqual(self.cache._usage,
+ self.cache.keys())# usage list and data keys are different
def test_setitem3(self):
"""Checks that the setitem method works when replacing an element in the cache"""
@@ -57,8 +57,8 @@ class CacheTestCase(TestCase):
self.assertEqual(self.cache[1], 'bar', "1 : 'bar' is not in cache.data")
self.assertEqual(len(self.cache._usage), 1, "lenght of usage list is not 1")
self.assertEqual(self.cache._usage[-1], 1, '1 is not the most recently used key')
- self.assertUnorderedIterableEquals(self.cache._usage,
- self.cache.keys())# usage list and data keys are different
+ self.assertItemsEqual(self.cache._usage,
+ self.cache.keys())# usage list and data keys are different
def test_recycling1(self):
"""Checks the removal of old elements"""
@@ -74,8 +74,8 @@ class CacheTestCase(TestCase):
'key 1 has not been suppressed from the cache LRU list')
self.assertEqual(len(self.cache._usage), 5, "lenght of usage list is not 5")
self.assertEqual(self.cache._usage[-1], 6, '6 is not the most recently used key')
- self.assertUnorderedIterableEquals(self.cache._usage,
- self.cache.keys())# usage list and data keys are different
+ self.assertItemsEqual(self.cache._usage,
+ self.cache.keys())# usage list and data keys are different
def test_recycling2(self):
"""Checks that accessed elements get in the front of the list"""
@@ -86,8 +86,8 @@ class CacheTestCase(TestCase):
a = self.cache[1]
self.assertEqual(a, 'foo')
self.assertEqual(self.cache._usage[-1], 1, '1 is not the most recently used key')
- self.assertUnorderedIterableEquals(self.cache._usage,
- self.cache.keys())# usage list and data keys are different
+ self.assertItemsEqual(self.cache._usage,
+ self.cache.keys())# usage list and data keys are different
def test_delitem(self):
"""Checks that elements are removed from both element dict and element
@@ -97,8 +97,8 @@ class CacheTestCase(TestCase):
del self.cache['foo']
self.assert_('foo' not in self.cache.keys(),"Element 'foo' was not removed cache dictionnary")
self.assert_('foo' not in self.cache._usage,"Element 'foo' was not removed usage list")
- self.assertUnorderedIterableEquals(self.cache._usage,
- self.cache.keys())# usage list and data keys are different
+ self.assertItemsEqual(self.cache._usage,
+ self.cache.keys())# usage list and data keys are different
def test_nullsize(self):
diff --git a/test/unittest_compat.py b/test/unittest_compat.py
index 83d7e81..899eece 100644
--- a/test/unittest_compat.py
+++ b/test/unittest_compat.py
@@ -21,7 +21,6 @@ from logilab.common.testlib import TestCase, unittest_main
import sys
import types
import __builtin__
-import pprint
class CompatTCMixIn:
MODNAMES = {}
@@ -92,37 +91,37 @@ class Py23CompatTC(CompatTCMixIn, TestCase):
def test_sum(self):
from logilab.common.compat import sum
- self.assertEquals(sum(range(5)), 10)
+ self.assertEqual(sum(range(5)), 10)
self.assertRaises(TypeError, sum, 'abc')
def test_enumerate(self):
from logilab.common.compat import enumerate
- self.assertEquals(list(enumerate([])), [])
- self.assertEquals(list(enumerate('abc')),
+ self.assertEqual(list(enumerate([])), [])
+ self.assertEqual(list(enumerate('abc')),
[(0, 'a'), (1, 'b'), (2, 'c')])
def test_basic_set(self):
from logilab.common.compat import set
s = set('abc')
- self.assertEquals(len(s), 3)
+ self.assertEqual(len(s), 3)
s.remove('a')
- self.assertEquals(len(s), 2)
+ self.assertEqual(len(s), 2)
s.add('a')
- self.assertEquals(len(s), 3)
+ self.assertEqual(len(s), 3)
s.add('a')
- self.assertEquals(len(s), 3)
+ self.assertEqual(len(s), 3)
self.assertRaises(KeyError, s.remove, 'd')
def test_basic_set(self):
from logilab.common.compat import set
s = set('abc')
- self.assertEquals(len(s), 3)
+ self.assertEqual(len(s), 3)
s.remove('a')
- self.assertEquals(len(s), 2)
+ self.assertEqual(len(s), 2)
s.add('a')
- self.assertEquals(len(s), 3)
+ self.assertEqual(len(s), 3)
s.add('a')
- self.assertEquals(len(s), 3)
+ self.assertEqual(len(s), 3)
self.assertRaises(KeyError, s.remove, 'd')
self.assertRaises(TypeError, dict, [(s, 'foo')])
@@ -130,13 +129,13 @@ class Py23CompatTC(CompatTCMixIn, TestCase):
def test_frozenset(self):
from logilab.common.compat import frozenset
s = frozenset('abc')
- self.assertEquals(len(s), 3)
+ self.assertEqual(len(s), 3)
self.assertRaises(AttributeError, getattr, s, 'remove')
self.assertRaises(AttributeError, getattr, s, 'add')
d = {s : 'foo'} # frozenset should be hashable
d[s] = 'bar'
- self.assertEquals(len(d), 1)
- self.assertEquals(d[s], 'bar')
+ self.assertEqual(len(d), 1)
+ self.assertEqual(d[s], 'bar')
class Py24CompatTC(CompatTCMixIn, TestCase):
@@ -146,30 +145,30 @@ class Py24CompatTC(CompatTCMixIn, TestCase):
from logilab.common.compat import sorted
l = [3, 1, 2, 5, 4]
s = sorted(l)
- self.assertEquals(s, [1, 2, 3, 4, 5])
- self.assertEquals(l, [3, 1, 2, 5, 4])
- self.assertEquals(sorted('FeCBaD'), list('BCDFae'))
- self.assertEquals(sorted('FeCBaD', key=str.lower), list('aBCDeF'))
- self.assertEquals(sorted('FeCBaD', key=str.lower, reverse=True), list('FeDCBa'))
+ self.assertEqual(s, [1, 2, 3, 4, 5])
+ self.assertEqual(l, [3, 1, 2, 5, 4])
+ self.assertEqual(sorted('FeCBaD'), list('BCDFae'))
+ self.assertEqual(sorted('FeCBaD', key=str.lower), list('aBCDeF'))
+ self.assertEqual(sorted('FeCBaD', key=str.lower, reverse=True), list('FeDCBa'))
def strcmp(s1, s2):
return cmp(s1.lower(), s2.lower())
- self.assertEquals(sorted('FeCBaD', cmp=strcmp), list('aBCDeF'))
+ self.assertEqual(sorted('FeCBaD', cmp=strcmp), list('aBCDeF'))
def test_reversed(self):
from logilab.common.compat import reversed
l = range(5)
r = reversed(l)
- self.assertEquals(r, [4, 3, 2, 1, 0])
- self.assertEquals(l, range(5))
+ self.assertEqual(r, [4, 3, 2, 1, 0])
+ self.assertEqual(l, range(5))
def test_set(self):
from logilab.common.compat import set
s1 = set(range(5))
s2 = set(range(2, 6))
- self.assertEquals(len(s1), 5)
- self.assertEquals(s1 & s2, set([2, 3, 4]))
- self.assertEquals(s1 | s2, set(range(6)))
+ self.assertEqual(len(s1), 5)
+ self.assertEqual(s1 & s2, set([2, 3, 4]))
+ self.assertEqual(s1 | s2, set(range(6)))
@@ -189,51 +188,52 @@ class Py25CompatTC(CompatTCMixIn, TestCase):
def test_any(self):
from logilab.common.compat import any
testdata = ([], (), '', 'abc', xrange(0, 10), xrange(0, -10, -1))
- self.assertEquals(any([]), False)
- self.assertEquals(any(()), False)
- self.assertEquals(any(''), False)
- self.assertEquals(any('abc'), True)
- self.assertEquals(any(xrange(10)), True)
- self.assertEquals(any(xrange(0, -10, -1)), True)
+ self.assertEqual(any([]), False)
+ self.assertEqual(any(()), False)
+ self.assertEqual(any(''), False)
+ self.assertEqual(any('abc'), True)
+ self.assertEqual(any(xrange(10)), True)
+ self.assertEqual(any(xrange(0, -10, -1)), True)
# python2.5's any consumes iterables
irange = iter(range(10))
- self.assertEquals(any(irange), True)
- self.assertEquals(irange.next(), 2)
+ self.assertEqual(any(irange), True)
+ self.assertEqual(irange.next(), 2)
def test_all(self):
from logilab.common.compat import all
testdata = ([], (), '', 'abc', xrange(0, 10), xrange(0, -10, -1))
- self.assertEquals(all([]), True)
- self.assertEquals(all(()), True)
- self.assertEquals(all(''), True)
- self.assertEquals(all('abc'), True)
- self.assertEquals(all(xrange(10)), False)
- self.assertEquals(all(xrange(0, -10, -1)), False)
+ self.assertEqual(all([]), True)
+ self.assertEqual(all(()), True)
+ self.assertEqual(all(''), True)
+ self.assertEqual(all('abc'), True)
+ self.assertEqual(all(xrange(10)), False)
+ self.assertEqual(all(xrange(0, -10, -1)), False)
# python2.5's all consumes iterables
irange = iter(range(10))
- self.assertEquals(all(irange), False)
- self.assertEquals(irange.next(), 1)
+ self.assertEqual(all(irange), False)
+ self.assertEqual(irange.next(), 1)
def test_max(self):
from logilab.common.compat import max
# old apy
- self.assertEquals(max("fdjkmhsgmdfhsg"),'s')
- self.assertEquals(max(1,43,12,45,1337,34,2), 1337)
+ self.assertEqual(max("fdjkmhsgmdfhsg"),'s')
+ self.assertEqual(max(1,43,12,45,1337,34,2), 1337)
self.assertRaises(TypeError,max)
self.assertRaises(TypeError,max,1)
self.assertRaises(ValueError,max,[])
self.assertRaises(TypeError,max,bob=None)
# new apy
- self.assertEquals(max("shorter","longer",key=len),"shorter")
- self.assertEquals(max(((1,1),(2,3,5),(8,13,21)),key=len),(2,3,5))
- self.assertEquals(max(((1,1),(42,),(2,3,5),(8,13,21)),key=max),(42,))
+ self.assertEqual(max("shorter","longer",key=len),"shorter")
+ self.assertEqual(max(((1,1),(2,3,5),(8,13,21)),key=len),(2,3,5))
+ self.assertEqual(max(((1,1),(42,),(2,3,5),(8,13,21)),key=max),(42,))
self.assertRaises(TypeError,max,key=None)
self.assertRaises(TypeError,max,1,key=len)
self.assertRaises(ValueError,max,[],key=max)
self.assertRaises(TypeError,max,"shorter","longer",key=len,kathy=None)
+
if __name__ == '__main__':
unittest_main()
diff --git a/test/unittest_configuration.py b/test/unittest_configuration.py
index 0210239..6667b3c 100644
--- a/test/unittest_configuration.py
+++ b/test/unittest_configuration.py
@@ -56,56 +56,56 @@ class ConfigurationTC(TestCase):
def test_default(self):
cfg = self.cfg
- self.assertEquals(cfg['dothis'], True)
- self.assertEquals(cfg['value'], None)
- self.assertEquals(cfg['multiple'], ('yop','yep'))
- self.assertEquals(cfg['number'], 2)
- self.assertEquals(cfg['choice'], 'yo')
- self.assertEquals(cfg['multiple-choice'], ('yo', 'ye'))
- self.assertEquals(cfg['named'], {'key': 'val'})
+ self.assertEqual(cfg['dothis'], True)
+ self.assertEqual(cfg['value'], None)
+ self.assertEqual(cfg['multiple'], ('yop','yep'))
+ self.assertEqual(cfg['number'], 2)
+ self.assertEqual(cfg['choice'], 'yo')
+ self.assertEqual(cfg['multiple-choice'], ('yo', 'ye'))
+ self.assertEqual(cfg['named'], {'key': 'val'})
def test_base(self):
cfg = self.cfg
cfg.set_option('number', '0')
- self.assertEquals(cfg['number'], 0)
+ self.assertEqual(cfg['number'], 0)
self.assertRaises(OptionValueError, cfg.set_option, 'number', 'youpi')
self.assertRaises(OptionValueError, cfg.set_option, 'choice', 'youpi')
self.assertRaises(OptionValueError, cfg.set_option, 'multiple-choice', ('yo', 'y', 'ya'))
cfg.set_option('multiple-choice', 'yo, ya')
- self.assertEquals(cfg['multiple-choice'], ['yo', 'ya'])
- self.assertEquals(cfg.get('multiple-choice'), ['yo', 'ya'])
- self.assertEquals(cfg.get('whatever'), None)
+ self.assertEqual(cfg['multiple-choice'], ['yo', 'ya'])
+ self.assertEqual(cfg.get('multiple-choice'), ['yo', 'ya'])
+ self.assertEqual(cfg.get('whatever'), None)
def test_load_command_line_configuration(self):
cfg = self.cfg
args = cfg.load_command_line_configuration(['--choice', 'ye', '--number', '4',
'--multiple=1,2,3', '--dothis=n',
'other', 'arguments'])
- self.assertEquals(args, ['other', 'arguments'])
- self.assertEquals(cfg['dothis'], False)
- self.assertEquals(cfg['multiple'], ['1', '2', '3'])
- self.assertEquals(cfg['number'], 4)
- self.assertEquals(cfg['choice'], 'ye')
- self.assertEquals(cfg['value'], None)
+ self.assertEqual(args, ['other', 'arguments'])
+ self.assertEqual(cfg['dothis'], False)
+ self.assertEqual(cfg['multiple'], ['1', '2', '3'])
+ self.assertEqual(cfg['number'], 4)
+ self.assertEqual(cfg['choice'], 'ye')
+ self.assertEqual(cfg['value'], None)
args = cfg.load_command_line_configuration(['-v', 'duh'])
- self.assertEquals(args, [])
- self.assertEquals(cfg['value'], 'duh')
- self.assertEquals(cfg['dothis'], False)
- self.assertEquals(cfg['multiple'], ['1', '2', '3'])
- self.assertEquals(cfg['number'], 4)
- self.assertEquals(cfg['choice'], 'ye')
+ self.assertEqual(args, [])
+ self.assertEqual(cfg['value'], 'duh')
+ self.assertEqual(cfg['dothis'], False)
+ self.assertEqual(cfg['multiple'], ['1', '2', '3'])
+ self.assertEqual(cfg['number'], 4)
+ self.assertEqual(cfg['choice'], 'ye')
def test_load_configuration(self):
cfg = self.cfg
args = cfg.load_configuration(choice='ye', number='4',
multiple='1,2,3', dothis='n',
multiple_choice=('yo', 'ya'))
- self.assertEquals(cfg['dothis'], False)
- self.assertEquals(cfg['multiple'], ['1', '2', '3'])
- self.assertEquals(cfg['number'], 4)
- self.assertEquals(cfg['choice'], 'ye')
- self.assertEquals(cfg['value'], None)
- self.assertEquals(cfg['multiple-choice'], ('yo', 'ya'))
+ self.assertEqual(cfg['dothis'], False)
+ self.assertEqual(cfg['multiple'], ['1', '2', '3'])
+ self.assertEqual(cfg['number'], 4)
+ self.assertEqual(cfg['choice'], 'ye')
+ self.assertEqual(cfg['value'], None)
+ self.assertEqual(cfg['multiple-choice'], ('yo', 'ya'))
def test_load_configuration_file_case_insensitive(self):
file = tempfile.mktemp()
@@ -136,17 +136,17 @@ diffgroup=zou
""")
stream.close()
self.cfg.load_file_configuration(file)
- self.assertEquals(self.cfg['dothis'], False)
- self.assertEquals(self.cfg['value'], None)
- self.assertEquals(self.cfg['multiple'], ['yop','yepii'])
- self.assertEquals(self.cfg['diffgroup'], 'zou')
+ self.assertEqual(self.cfg['dothis'], False)
+ self.assertEqual(self.cfg['value'], None)
+ self.assertEqual(self.cfg['multiple'], ['yop','yepii'])
+ self.assertEqual(self.cfg['diffgroup'], 'zou')
finally:
os.remove(file)
def test_generate_config(self):
stream = StringIO()
self.cfg.generate_config(stream)
- self.assertLinesEquals(stream.getvalue().strip(), """[TEST]
+ self.assertMultiLineEqual(stream.getvalue().strip(), """[TEST]
dothis=yes
@@ -167,14 +167,13 @@ named=key:val
[AGROUP]
-diffgroup=pouet
-""")
+diffgroup=pouet""")
def test_generate_config_with_space_string(self):
self.cfg['value'] = ' '
stream = StringIO()
self.cfg.generate_config(stream)
- self.assertLinesEquals(stream.getvalue().strip(), """[TEST]
+ self.assertMultiLineEqual(stream.getvalue().strip(), """[TEST]
dothis=yes
@@ -195,8 +194,7 @@ named=key:val
[AGROUP]
-diffgroup=pouet
-""")
+diffgroup=pouet""")
def test_loopback(self):
@@ -208,12 +206,12 @@ diffgroup=pouet
stream.close()
new_cfg = MyConfiguration(name='testloop', options=options)
new_cfg.load_file_configuration(f)
- self.assertEquals(cfg['dothis'], new_cfg['dothis'])
- self.assertEquals(cfg['multiple'], new_cfg['multiple'])
- self.assertEquals(cfg['number'], new_cfg['number'])
- self.assertEquals(cfg['choice'], new_cfg['choice'])
- self.assertEquals(cfg['value'], new_cfg['value'])
- self.assertEquals(cfg['multiple-choice'], new_cfg['multiple-choice'])
+ self.assertEqual(cfg['dothis'], new_cfg['dothis'])
+ self.assertEqual(cfg['multiple'], new_cfg['multiple'])
+ self.assertEqual(cfg['number'], new_cfg['number'])
+ self.assertEqual(cfg['choice'], new_cfg['choice'])
+ self.assertEqual(cfg['value'], new_cfg['value'])
+ self.assertEqual(cfg['multiple-choice'], new_cfg['multiple-choice'])
finally:
os.remove(f)
@@ -221,7 +219,7 @@ diffgroup=pouet
self.assertRaises(OptionValueError,
self.cfg.__setitem__, 'multiple-choice', ('a', 'b'))
self.cfg['multiple-choice'] = ('yi', 'ya')
- self.assertEquals(self.cfg['multiple-choice'], ('yi', 'ya'))
+ self.assertEqual(self.cfg['multiple-choice'], ('yi', 'ya'))
def test_help(self):
self.cfg.add_help_section('bonus', 'a nice additional help')
@@ -235,21 +233,20 @@ diffgroup=pouet
Options:
-h, --help show this help message and exit
- --dothis=<y or n>
+ --dothis=<y or n>
-v<string>, --value=<string>
--multiple=<comma separated values>
you can also document the option [current: yop,yep]
--number=<int> boom [current: 2]
- --choice=<yo|ye>
+ --choice=<yo|ye>
--multiple-choice=<yo|ye>
- --named=<key=val>
+ --named=<key=val>
-Agroup:
- --diffgroup=<key=val>
+ Agroup:
+ --diffgroup=<key=val>
-Bonus:
- a nice additional help
-"""
+ Bonus:
+ a nice additional help"""
if version_info < (2, 5):
# 'usage' header is not capitalized in this version
USAGE = USAGE.replace('Usage: ', 'usage: ')
@@ -270,8 +267,7 @@ options:
Bonus:
a nice additional help
"""
-
- self.assertLinesEquals(help, USAGE, striplines=True)
+ self.assertMultiLineEqual(help, USAGE)
def test_manpage(self):
@@ -285,7 +281,7 @@ options:
read_old_config(self.cfg, changes, 'data/test.ini')
stream = StringIO()
self.cfg.generate_config(stream)
- self.assertLinesEquals(stream.getvalue().strip(), """[TEST]
+ self.assertMultiLineEqual(stream.getvalue().strip(), """[TEST]
dothis=yes
@@ -306,8 +302,7 @@ named=key:val
[AGROUP]
-diffgroup=pouet
-""")
+diffgroup=pouet""")
class Linter(OptionsManagerMixIn, OptionsProviderMixIn):
options = (
@@ -328,7 +323,7 @@ class RegrTC(TestCase):
def test_load_defaults(self):
self.linter.load_command_line_configuration([])
- self.assertEquals(self.linter.config.profile, False)
+ self.assertEqual(self.linter.config.profile, False)
if __name__ == '__main__':
diff --git a/test/unittest_date.py b/test/unittest_date.py
index ec40a93..a37abfd 100644
--- a/test/unittest_date.py
+++ b/test/unittest_date.py
@@ -42,32 +42,32 @@ class DateTC(TestCase):
"""enumerate days"""
r = list(date_range(self.datecls(2000,1,1), self.datecls(2000,1,4)))
expected = [self.datecls(2000,1,1), self.datecls(2000,1,2), self.datecls(2000,1,3)]
- self.assertListEquals(r, expected)
+ self.assertListEqual(r, expected)
r = list(date_range(self.datecls(2000,1,31), self.datecls(2000,2,3)))
expected = [self.datecls(2000,1,31), self.datecls(2000,2,1), self.datecls(2000,2,2)]
- self.assertListEquals(r, expected)
+ self.assertListEqual(r, expected)
r = list(date_range(self.datecls(2000,1,1), self.datecls(2000,1,6), 2))
expected = [self.datecls(2000,1,1), self.datecls(2000,1,3), self.datecls(2000,1,5)]
- self.assertListEquals(r, expected)
+ self.assertListEqual(r, expected)
def test_add_days_worked(self):
add = add_days_worked
# normal
- self.assertEquals(add(self.datecls(2008, 1, 3), 1), self.datecls(2008, 1, 4))
+ self.assertEqual(add(self.datecls(2008, 1, 3), 1), self.datecls(2008, 1, 4))
# skip week-end
- self.assertEquals(add(self.datecls(2008, 1, 3), 2), self.datecls(2008, 1, 7))
+ self.assertEqual(add(self.datecls(2008, 1, 3), 2), self.datecls(2008, 1, 7))
# skip 2 week-ends
- self.assertEquals(add(self.datecls(2008, 1, 3), 8), self.datecls(2008, 1, 15))
+ self.assertEqual(add(self.datecls(2008, 1, 3), 8), self.datecls(2008, 1, 15))
# skip holiday + week-end
- self.assertEquals(add(self.datecls(2008, 4, 30), 2), self.datecls(2008, 5, 5))
+ self.assertEqual(add(self.datecls(2008, 4, 30), 2), self.datecls(2008, 5, 5))
def test_get_national_holidays(self):
holidays = get_national_holidays
- yield self.assertEquals, holidays(self.datecls(2008, 4, 29), self.datecls(2008, 5, 2)), \
+ yield self.assertEqual, holidays(self.datecls(2008, 4, 29), self.datecls(2008, 5, 2)), \
[self.datecls(2008, 5, 1)]
- yield self.assertEquals, holidays(self.datecls(2008, 5, 7), self.datecls(2008, 5, 8)), []
+ yield self.assertEqual, holidays(self.datecls(2008, 5, 7), self.datecls(2008, 5, 8)), []
x = self.datetimecls(2008, 5, 7, 12, 12, 12)
- yield self.assertEquals, holidays(x, x + self.timedeltacls(days=1)), []
+ yield self.assertEqual, holidays(x, x + self.timedeltacls(days=1)), []
def test_open_days_now_and_before(self):
nb = nb_open_days
@@ -77,7 +77,7 @@ class DateTC(TestCase):
def assertOpenDays(self, start, stop, expected):
got = nb_open_days(start, stop)
- self.assertEquals(got, expected)
+ self.assertEqual(got, expected)
def test_open_days_tuesday_friday(self):
self.assertOpenDays(self.datecls(2008, 3, 4), self.datecls(2008, 3, 7), 3)
@@ -129,7 +129,7 @@ class DateTC(TestCase):
def test_ustrftime_before_1900(self):
date = self.datetimecls(1328, 3, 12, 6, 30)
- self.assertEquals(ustrftime(date, '%Y-%m-%d %H:%M:%S'), u'1328-03-12 06:30:00')
+ self.assertEqual(ustrftime(date, '%Y-%m-%d %H:%M:%S'), u'1328-03-12 06:30:00')
class MxDateTC(DateTC):
@@ -149,10 +149,10 @@ class MxDateTC(DateTC):
"""enumerate months"""
r = list(date_range(self.datecls(2000,1,2), self.datecls(2000,4,4), endOfMonth))
expected = [self.datecls(2000,1,2), self.datecls(2000,2,29), self.datecls(2000,3,31)]
- self.assertListEquals(r, expected)
+ self.assertListEqual(r, expected)
r = list(date_range(self.datecls(2000,11,30), self.datecls(2001,2,3), endOfMonth))
expected = [self.datecls(2000,11,30), self.datecls(2000,12,31), self.datecls(2001,1,31)]
- self.assertListEquals(r, expected)
+ self.assertListEqual(r, expected)
if __name__ == '__main__':
unittest_main()
diff --git a/test/unittest_decorators.py b/test/unittest_decorators.py
index 104af6f..ce7213e 100644
--- a/test/unittest_decorators.py
+++ b/test/unittest_decorators.py
@@ -28,20 +28,20 @@ class DecoratorsTC(TestCase):
@monkeypatch(MyClass)
def meth1(self):
return 12
- self.assertEquals([attr for attr in dir(MyClass) if attr[:2] != '__'],
+ self.assertEqual([attr for attr in dir(MyClass) if attr[:2] != '__'],
['meth1'])
inst = MyClass()
- self.assertEquals(inst.meth1(), 12)
+ self.assertEqual(inst.meth1(), 12)
def test_monkeypatch_with_custom_name(self):
class MyClass: pass
@monkeypatch(MyClass, 'foo')
def meth2(self, param):
return param + 12
- self.assertEquals([attr for attr in dir(MyClass) if attr[:2] != '__'],
+ self.assertEqual([attr for attr in dir(MyClass) if attr[:2] != '__'],
['foo'])
inst = MyClass()
- self.assertEquals(inst.foo(4), 16)
+ self.assertEqual(inst.foo(4), 16)
def test_cached_preserves_docstrings(self):
class Foo(object):
@@ -54,9 +54,9 @@ class DecoratorsTC(TestCase):
@cached
def quux(self, zogzog):
""" what's up doc ? """
- self.assertEquals(Foo.foo.__doc__, """ what's up doc ? """)
- self.assertEquals(Foo.bar.__doc__, """ what's up doc ? """)
- self.assertEquals(Foo.quux.__doc__, """ what's up doc ? """)
+ self.assertEqual(Foo.foo.__doc__, """ what's up doc ? """)
+ self.assertEqual(Foo.bar.__doc__, """ what's up doc ? """)
+ self.assertEqual(Foo.quux.__doc__, """ what's up doc ? """)
if __name__ == '__main__':
unittest_main()
diff --git a/test/unittest_graph.py b/test/unittest_graph.py
index f870895..06e1046 100644
--- a/test/unittest_graph.py
+++ b/test/unittest_graph.py
@@ -35,16 +35,16 @@ class getCyclesTC(TestCase):
class hasPathTC(TestCase):
def test_direct_connection(self):
- self.assertEquals(has_path({'A': ['B'], 'B': ['A']}, 'A', 'B'), ['B'])
+ self.assertEqual(has_path({'A': ['B'], 'B': ['A']}, 'A', 'B'), ['B'])
def test_indirect_connection(self):
- self.assertEquals(has_path({'A': ['B'], 'B': ['A', 'C'], 'C': ['B']}, 'A', 'C'), ['B', 'C'])
+ self.assertEqual(has_path({'A': ['B'], 'B': ['A', 'C'], 'C': ['B']}, 'A', 'C'), ['B', 'C'])
def test_no_connection(self):
- self.assertEquals(has_path({'A': ['B'], 'B': ['A']}, 'A', 'C'), None)
+ self.assertEqual(has_path({'A': ['B'], 'B': ['A']}, 'A', 'C'), None)
def test_cycle(self):
- self.assertEquals(has_path({'A': ['A']}, 'A', 'B'), None)
+ self.assertEqual(has_path({'A': ['A']}, 'A', 'B'), None)
if __name__ == "__main__":
unittest_main()
diff --git a/test/unittest_html.py b/test/unittest_html.py
index 738a47c..a055517 100644
--- a/test/unittest_html.py
+++ b/test/unittest_html.py
@@ -69,7 +69,7 @@ class UIlibHTMLGenerationTC(TestCase):
def test_generated_html(self):
s = html.render_HTML_tree(self.o, selected_node="child_2_2")
- self.assertTextEqual(s, generated_html)
+ self.assertMultiLineEqual(s, generated_html)
if __name__ == '__main__':
diff --git a/test/unittest_interface.py b/test/unittest_interface.py
index 82657ea..33f871b 100644
--- a/test/unittest_interface.py
+++ b/test/unittest_interface.py
@@ -52,26 +52,26 @@ class ExtendTC(TestCase):
def test_base(self):
extend(A, IFace2)
- self.failUnlessEqual(A.__implements__, (IFace1, IFace2))
- self.failUnlessEqual(B.__implements__, (IFace1, IFace2))
- self.failUnless(B.__implements__ is A.__implements__)
- self.failUnlessEqual(C1.__implements__, [IFace1, IFace3, IFace2])
- self.failUnlessEqual(C2.__implements__, (IFace1, IFace2))
- self.failUnless(C2.__implements__ is c2impl)
- self.failUnlessEqual(D.__implements__, (IFace2,))
+ self.assertEqual(A.__implements__, (IFace1, IFace2))
+ self.assertEqual(B.__implements__, (IFace1, IFace2))
+ self.assertTrue(B.__implements__ is A.__implements__)
+ self.assertEqual(C1.__implements__, [IFace1, IFace3, IFace2])
+ self.assertEqual(C2.__implements__, (IFace1, IFace2))
+ self.assertTrue(C2.__implements__ is c2impl)
+ self.assertEqual(D.__implements__, (IFace2,))
def test_already_impl(self):
extend(A, IFace1)
- self.failUnless(A.__implements__ is aimpl)
+ self.assertTrue(A.__implements__ is aimpl)
def test_no_impl(self):
extend(Z, IFace1)
- self.failUnlessEqual(Z.__implements__, (IFace1,))
+ self.assertEqual(Z.__implements__, (IFace1,))
def test_notimpl_explicit(self):
extend(C1, IFace3)
- self.failUnless(C1.__implements__ is c1impl)
- self.failUnless(D.__implements__ is dimpl)
+ self.assertTrue(C1.__implements__ is c1impl)
+ self.assertTrue(D.__implements__ is dimpl)
def test_nonregr_implements_baseinterface(self):
@@ -79,8 +79,8 @@ class ExtendTC(TestCase):
class X(object):
__implements__ = (SubIFace,)
- self.failUnless(SubIFace.is_implemented_by(X))
- self.failUnless(IFace1.is_implemented_by(X))
+ self.assertTrue(SubIFace.is_implemented_by(X))
+ self.assertTrue(IFace1.is_implemented_by(X))
if __name__ == '__main__':
diff --git a/test/unittest_modutils.py b/test/unittest_modutils.py
index 0c14017..92b55de 100644
--- a/test/unittest_modutils.py
+++ b/test/unittest_modutils.py
@@ -52,13 +52,13 @@ class TestCase(TLTestCase):
class _module_file_tc(TestCase):
def test_find_zipped_module(self):
mtype, mfile = _module_file('mypypa', [path.join(DATADIR, 'MyPyPa-0.1.0-py2.5.zip')])
- self.assertEquals(mtype, modutils.ZIPFILE)
- self.assertEquals(mfile, '')
+ self.assertEqual(mtype, modutils.ZIPFILE)
+ self.assertEqual(mfile, '')
def test_find_egg_module(self):
mtype, mfile = _module_file('mypypa', [path.join(DATADIR, 'MyPyPa-0.1.0-py2.5.egg')])
- self.assertEquals(mtype, modutils.ZIPFILE)
- self.assertEquals(mfile, '')
+ self.assertEqual(mtype, modutils.ZIPFILE)
+ self.assertEqual(mfile, '')
@@ -206,7 +206,7 @@ class get_modules_tc(TestCase):
mod_path = ("data", 'find_test')
modules = modutils.get_modules(path.join(*mod_path), data.__path__[0])
modules.sort()
- self.assertSetEquals(set(modules),
+ self.assertSetEqual(set(modules),
set([ '.'.join(mod_path + (mod, )) for mod in 'module', 'module2',
'noendingnewline', 'nonregr']))
diff --git a/test/unittest_shellutils.py b/test/unittest_shellutils.py
index d919205..ff9e4fa 100644
--- a/test/unittest_shellutils.py
+++ b/test/unittest_shellutils.py
@@ -79,10 +79,10 @@ class ProgressBarTC(TestCase):
pgb_stream = StringIO()
expected_stream = StringIO()
pgb = ProgressBar(20,stream=pgb_stream)
- self.assertEquals(pgb_stream.getvalue(), expected_stream.getvalue()) # nothing print before refresh
+ self.assertEqual(pgb_stream.getvalue(), expected_stream.getvalue()) # nothing print before refresh
pgb.refresh()
expected_stream.write("\r["+' '*20+"]")
- self.assertEquals(pgb_stream.getvalue(), expected_stream.getvalue())
+ self.assertEqual(pgb_stream.getvalue(), expected_stream.getvalue())
def test_refresh_g_size(self):
pgb_stream = StringIO()
@@ -90,7 +90,7 @@ class ProgressBarTC(TestCase):
pgb = ProgressBar(20,35,stream=pgb_stream)
pgb.refresh()
expected_stream.write("\r["+' '*35+"]")
- self.assertEquals(pgb_stream.getvalue(), expected_stream.getvalue())
+ self.assertEqual(pgb_stream.getvalue(), expected_stream.getvalue())
def test_refresh_l_size(self):
pgb_stream = StringIO()
@@ -98,7 +98,7 @@ class ProgressBarTC(TestCase):
pgb = ProgressBar(20,3,stream=pgb_stream)
pgb.refresh()
expected_stream.write("\r["+' '*3+"]")
- self.assertEquals(pgb_stream.getvalue(), expected_stream.getvalue())
+ self.assertEqual(pgb_stream.getvalue(), expected_stream.getvalue())
def _update_test(self, nbops, expected, size = None):
pgb_stream = StringIO()
@@ -118,7 +118,7 @@ class ProgressBarTC(TestCase):
if update or (update is None and dots != last):
last = dots
expected_stream.write("\r["+('.'*dots)+(' '*(size-dots))+"]")
- self.assertEquals(pgb_stream.getvalue(), expected_stream.getvalue())
+ self.assertEqual(pgb_stream.getvalue(), expected_stream.getvalue())
def test_default(self):
self._update_test(20, xrange(1,21))
@@ -196,38 +196,38 @@ class RawInputTC(TestCase):
def test_ask_default(self):
self.input_answer = ''
answer = self.qa.ask('text', ('yes','no'), 'yes')
- self.assertEquals(answer, 'yes')
+ self.assertEqual(answer, 'yes')
self.input_answer = ' '
answer = self.qa.ask('text', ('yes','no'), 'yes')
- self.assertEquals(answer, 'yes')
+ self.assertEqual(answer, 'yes')
def test_ask_case(self):
self.input_answer = 'no'
answer = self.qa.ask('text', ('yes','no'), 'yes')
- self.assertEquals(answer, 'no')
+ self.assertEqual(answer, 'no')
self.input_answer = 'No'
answer = self.qa.ask('text', ('yes','no'), 'yes')
- self.assertEquals(answer, 'no')
+ self.assertEqual(answer, 'no')
self.input_answer = 'NO'
answer = self.qa.ask('text', ('yes','no'), 'yes')
- self.assertEquals(answer, 'no')
+ self.assertEqual(answer, 'no')
self.input_answer = 'nO'
answer = self.qa.ask('text', ('yes','no'), 'yes')
- self.assertEquals(answer, 'no')
+ self.assertEqual(answer, 'no')
self.input_answer = 'YES'
answer = self.qa.ask('text', ('yes','no'), 'yes')
- self.assertEquals(answer, 'yes')
+ self.assertEqual(answer, 'yes')
def test_ask_prompt(self):
self.input_answer = ''
answer = self.qa.ask('text', ('yes','no'), 'yes')
- self.assertEquals(self.input_args[0], 'text [Y(es)/n(o)]: ')
+ self.assertEqual(self.input_args[0], 'text [Y(es)/n(o)]: ')
answer = self.qa.ask('text', ('y','n'), 'y')
- self.assertEquals(self.input_args[0], 'text [Y/n]: ')
+ self.assertEqual(self.input_args[0], 'text [Y/n]: ')
answer = self.qa.ask('text', ('n','y'), 'y')
- self.assertEquals(self.input_args[0], 'text [n/Y]: ')
+ self.assertEqual(self.input_args[0], 'text [n/Y]: ')
answer = self.qa.ask('text', ('yes','no','maybe','1'), 'yes')
- self.assertEquals(self.input_args[0], 'text [Y(es)/n(o)/m(aybe)/1]: ')
+ self.assertEqual(self.input_args[0], 'text [Y(es)/n(o)/m(aybe)/1]: ')
def test_ask_ambiguous(self):
self.input_answer = 'y'
@@ -235,14 +235,14 @@ class RawInputTC(TestCase):
def test_confirm(self):
self.input_answer = 'y'
- self.assertEquals(self.qa.confirm('Say yes'), True)
- self.assertEquals(self.qa.confirm('Say yes', default_is_yes=False), True)
+ self.assertEqual(self.qa.confirm('Say yes'), True)
+ self.assertEqual(self.qa.confirm('Say yes', default_is_yes=False), True)
self.input_answer = 'n'
- self.assertEquals(self.qa.confirm('Say yes'), False)
- self.assertEquals(self.qa.confirm('Say yes', default_is_yes=False), False)
+ self.assertEqual(self.qa.confirm('Say yes'), False)
+ self.assertEqual(self.qa.confirm('Say yes', default_is_yes=False), False)
self.input_answer = ''
- self.assertEquals(self.qa.confirm('Say default'), True)
- self.assertEquals(self.qa.confirm('Say default', default_is_yes=False), False)
+ self.assertEqual(self.qa.confirm('Say default'), True)
+ self.assertEqual(self.qa.confirm('Say default', default_is_yes=False), False)
if __name__ == '__main__':
unittest_main()
diff --git a/test/unittest_table.py b/test/unittest_table.py
index 86b868c..883686e 100644
--- a/test/unittest_table.py
+++ b/test/unittest_table.py
@@ -45,24 +45,24 @@ class TableTC(TestCase):
tab = Table()
tab.create_columns(['col1'])
tab.append_row([1])
- self.assertEquals(tab, [[1]])
+ self.assertEqual(tab, [[1]])
tab.append_row([2])
- self.assertEquals(tab[0,0], 1)
- self.assertEquals(tab[1,0], 2)
+ self.assertEqual(tab[0,0], 1)
+ self.assertEqual(tab[1,0], 2)
def test_valeur_ligne(self):
tab = Table()
tab.create_columns(['col1','col2'])
tab.append_row([1,2])
- self.assertEquals(tab, [[1,2]])
+ self.assertEqual(tab, [[1,2]])
def test_valeur_colonne(self):
tab = Table()
tab.create_columns(['col1'])
tab.append_row([1])
tab.append_row([2])
- self.assertEquals(tab, [[1],[2]])
- self.assertEquals(tab[:,0], [1,2])
+ self.assertEqual(tab, [[1],[2]])
+ self.assertEqual(tab[:,0], [1,2])
def test_indexation(self):
"""we should be able to use [] to access rows"""
@@ -77,66 +77,66 @@ class TableTC(TestCase):
def test_get_rows(self):
"""tests Table.get_rows()"""
- self.assertEquals(self.table, [[0, 0], [0, 0], [0, 0]])
- self.assertEquals(self.table[:], [[0, 0], [0, 0], [0, 0]])
+ self.assertEqual(self.table, [[0, 0], [0, 0], [0, 0]])
+ self.assertEqual(self.table[:], [[0, 0], [0, 0], [0, 0]])
self.table.insert_column(1, range(3), 'supp')
- self.assertEquals(self.table, [[0, 0, 0], [0, 1, 0], [0, 2, 0]])
- self.assertEquals(self.table[:], [[0, 0, 0], [0, 1, 0], [0, 2, 0]])
+ self.assertEqual(self.table, [[0, 0, 0], [0, 1, 0], [0, 2, 0]])
+ self.assertEqual(self.table[:], [[0, 0, 0], [0, 1, 0], [0, 2, 0]])
def test_get_cells(self):
self.table.insert_column(1, range(3), 'supp')
- self.assertEquals(self.table[0,1], 0)
- self.assertEquals(self.table[1,1], 1)
- self.assertEquals(self.table[2,1], 2)
- self.assertEquals(self.table['row1', 'supp'], 0)
- self.assertEquals(self.table['row2', 'supp'], 1)
- self.assertEquals(self.table['row3', 'supp'], 2)
+ self.assertEqual(self.table[0,1], 0)
+ self.assertEqual(self.table[1,1], 1)
+ self.assertEqual(self.table[2,1], 2)
+ self.assertEqual(self.table['row1', 'supp'], 0)
+ self.assertEqual(self.table['row2', 'supp'], 1)
+ self.assertEqual(self.table['row3', 'supp'], 2)
self.assertRaises(KeyError, self.table.__getitem__, ('row1', 'foo'))
self.assertRaises(KeyError, self.table.__getitem__, ('foo', 'bar'))
def test_shape(self):
"""tests table shape"""
- self.assertEquals(self.table.shape, (3, 2))
+ self.assertEqual(self.table.shape, (3, 2))
self.table.insert_column(1, range(3), 'supp')
- self.assertEquals(self.table.shape, (3, 3))
+ self.assertEqual(self.table.shape, (3, 3))
def test_set_column(self):
"""Tests that table.set_column() works fine.
"""
self.table.set_column(0, range(3))
- self.assertEquals(self.table[0,0], 0)
- self.assertEquals(self.table[1,0], 1)
- self.assertEquals(self.table[2,0], 2)
+ self.assertEqual(self.table[0,0], 0)
+ self.assertEqual(self.table[1,0], 1)
+ self.assertEqual(self.table[2,0], 2)
def test_set_column_by_id(self):
"""Tests that table.set_column_by_id() works fine.
"""
self.table.set_column_by_id('col1', range(3))
- self.assertEquals(self.table[0,0], 0)
- self.assertEquals(self.table[1,0], 1)
- self.assertEquals(self.table[2,0], 2)
+ self.assertEqual(self.table[0,0], 0)
+ self.assertEqual(self.table[1,0], 1)
+ self.assertEqual(self.table[2,0], 2)
self.assertRaises(KeyError, self.table.set_column_by_id, 'col123', range(3))
def test_cells_ids(self):
"""tests that we can access cells by giving row/col ids"""
self.assertRaises(KeyError, self.table.set_cell_by_ids, 'row12', 'col1', 12)
self.assertRaises(KeyError, self.table.set_cell_by_ids, 'row1', 'col12', 12)
- self.assertEquals(self.table[0,0], 0)
+ self.assertEqual(self.table[0,0], 0)
self.table.set_cell_by_ids('row1', 'col1', 'DATA')
- self.assertEquals(self.table[0,0], 'DATA')
+ self.assertEqual(self.table[0,0], 'DATA')
self.assertRaises(KeyError, self.table.set_row_by_id, 'row12', [])
self.table.set_row_by_id('row1', ['1.0', '1.1'])
- self.assertEquals(self.table[0,0], '1.0')
+ self.assertEqual(self.table[0,0], '1.0')
def test_insert_row(self):
"""tests a row insertion"""
tmp_data = ['tmp1', 'tmp2']
self.table.insert_row(1, tmp_data, 'tmprow')
- self.assertEquals(self.table[1], tmp_data)
- self.assertEquals(self.table['tmprow'], tmp_data)
+ self.assertEqual(self.table[1], tmp_data)
+ self.assertEqual(self.table['tmprow'], tmp_data)
self.table.delete_row_by_id('tmprow')
self.assertRaises(KeyError, self.table.delete_row_by_id, 'tmprow')
- self.assertEquals(self.table[1], [0, 0])
+ self.assertEqual(self.table[1], [0, 0])
self.assertRaises(KeyError, self.table.__getitem__, 'tmprow')
def test_get_column(self):
@@ -144,42 +144,42 @@ class TableTC(TestCase):
"""
self.table.set_cell(0, 1, 12)
self.table.set_cell(2, 1, 13)
- self.assertEquals(self.table[:,1], [12,0,13])
- self.assertEquals(self.table[:,'col2'], [12,0,13])
+ self.assertEqual(self.table[:,1], [12,0,13])
+ self.assertEqual(self.table[:,'col2'], [12,0,13])
def test_get_columns(self):
"""Tests if table.get_columns() works fine.
"""
self.table.set_cell(0, 1, 12)
self.table.set_cell(2, 1, 13)
- self.assertEquals(self.table.get_columns(), [[0,0,0], [12,0,13]])
+ self.assertEqual(self.table.get_columns(), [[0,0,0], [12,0,13]])
def test_insert_column(self):
"""Tests that table.insert_column() works fine.
"""
self.table.insert_column(1, range(3), "inserted_column")
- self.assertEquals(self.table[:,1], [0,1,2])
- self.assertEquals(self.table.col_names,
+ self.assertEqual(self.table[:,1], [0,1,2])
+ self.assertEqual(self.table.col_names,
['col1', 'inserted_column', 'col2'])
def test_delete_column(self):
"""Tests that table.delete_column() works fine.
"""
self.table.delete_column(1)
- self.assertEquals(self.table.col_names, ['col1'])
- self.assertEquals(self.table[:,0], [0,0,0])
+ self.assertEqual(self.table.col_names, ['col1'])
+ self.assertEqual(self.table[:,0], [0,0,0])
self.assertRaises(KeyError, self.table.delete_column_by_id, 'col2')
self.table.delete_column_by_id('col1')
- self.assertEquals(self.table.col_names, [])
+ self.assertEqual(self.table.col_names, [])
def test_transpose(self):
"""Tests that table.transpose() works fine.
"""
self.table.append_column(range(5,8), 'col3')
ttable = self.table.transpose()
- self.assertEquals(ttable.row_names, ['col1', 'col2', 'col3'])
- self.assertEquals(ttable.col_names, ['row1', 'row2', 'row3'])
- self.assertEquals(ttable.data, [[0,0,0], [0,0,0], [5,6,7]])
+ self.assertEqual(ttable.row_names, ['col1', 'col2', 'col3'])
+ self.assertEqual(ttable.col_names, ['row1', 'row2', 'row3'])
+ self.assertEqual(ttable.data, [[0,0,0], [0,0,0], [5,6,7]])
def test_sort_table(self):
"""Tests the table sort by column
@@ -187,11 +187,11 @@ class TableTC(TestCase):
self.table.set_column(0, [3, 1, 2])
self.table.set_column(1, [1, 2, 3])
self.table.sort_by_column_index(0)
- self.assertEquals(self.table.row_names, ['row2', 'row3', 'row1'])
- self.assertEquals(self.table.data, [[1, 2], [2, 3], [3, 1]])
+ self.assertEqual(self.table.row_names, ['row2', 'row3', 'row1'])
+ self.assertEqual(self.table.data, [[1, 2], [2, 3], [3, 1]])
self.table.sort_by_column_index(1, 'desc')
- self.assertEquals(self.table.row_names, ['row3', 'row2', 'row1'])
- self.assertEquals(self.table.data, [[2, 3], [1, 2], [3, 1]])
+ self.assertEqual(self.table.row_names, ['row3', 'row2', 'row1'])
+ self.assertEqual(self.table.data, [[2, 3], [1, 2], [3, 1]])
def test_sort_by_id(self):
"""tests sort_by_column_id()"""
@@ -199,11 +199,11 @@ class TableTC(TestCase):
self.table.set_column_by_id('col2', [1, 2, 3])
self.table.sort_by_column_id('col1')
self.assertRaises(KeyError, self.table.sort_by_column_id, 'col123')
- self.assertEquals(self.table.row_names, ['row2', 'row3', 'row1'])
- self.assertEquals(self.table.data, [[1, 2], [2, 3], [3, 1]])
+ self.assertEqual(self.table.row_names, ['row2', 'row3', 'row1'])
+ self.assertEqual(self.table.data, [[1, 2], [2, 3], [3, 1]])
self.table.sort_by_column_id('col2', 'desc')
- self.assertEquals(self.table.row_names, ['row3', 'row2', 'row1'])
- self.assertEquals(self.table.data, [[2, 3], [1, 2], [3, 1]])
+ self.assertEqual(self.table.row_names, ['row3', 'row2', 'row1'])
+ self.assertEqual(self.table.data, [[2, 3], [1, 2], [3, 1]])
def test_pprint(self):
"""only tests pprint doesn't raise an exception"""
@@ -227,17 +227,17 @@ class GroupByTC(TestCase):
def test_single_groupby(self):
"""tests groupby() on several columns"""
grouped = self.table.groupby('date')
- self.assertEquals(len(grouped), 3)
- self.assertEquals(len(grouped['date1']), 3)
- self.assertEquals(len(grouped['date2']), 1)
- self.assertEquals(len(grouped['date3']), 2)
- self.assertEquals(grouped['date1'], [
+ self.assertEqual(len(grouped), 3)
+ self.assertEqual(len(grouped['date1']), 3)
+ self.assertEqual(len(grouped['date2']), 1)
+ self.assertEqual(len(grouped['date3']), 2)
+ self.assertEqual(grouped['date1'], [
('date1', 'ing1', 'task1', 0.3),
('date1', 'ing2', 'task2', 0.3),
('date1', 'ing1', 'task3', 0.3),
])
- self.assertEquals(grouped['date2'], [('date2', 'ing3', 'task3', 0.3)])
- self.assertEquals(grouped['date3'], [
+ self.assertEqual(grouped['date2'], [('date2', 'ing3', 'task3', 0.3)])
+ self.assertEqual(grouped['date3'], [
('date3', 'ing4', 'task2', 0.3),
('date3', 'ing1', 'task3', 0.3),
])
@@ -245,13 +245,13 @@ class GroupByTC(TestCase):
def test_multiple_groupby(self):
"""tests groupby() on several columns"""
grouped = self.table.groupby('date', 'task')
- self.assertEquals(len(grouped), 3)
- self.assertEquals(len(grouped['date1']), 3)
- self.assertEquals(len(grouped['date2']), 1)
- self.assertEquals(len(grouped['date3']), 2)
- self.assertEquals(grouped['date1']['task1'], [('date1', 'ing1', 'task1', 0.3)])
- self.assertEquals(grouped['date2']['task3'], [('date2', 'ing3', 'task3', 0.3)])
- self.assertEquals(grouped['date3']['task2'], [('date3', 'ing4', 'task2', 0.3)])
+ self.assertEqual(len(grouped), 3)
+ self.assertEqual(len(grouped['date1']), 3)
+ self.assertEqual(len(grouped['date2']), 1)
+ self.assertEqual(len(grouped['date3']), 2)
+ self.assertEqual(grouped['date1']['task1'], [('date1', 'ing1', 'task1', 0.3)])
+ self.assertEqual(grouped['date2']['task3'], [('date2', 'ing3', 'task3', 0.3)])
+ self.assertEqual(grouped['date3']['task2'], [('date3', 'ing4', 'task2', 0.3)])
date3 = grouped['date3']
self.assertRaises(KeyError, date3.__getitem__, 'task1')
@@ -259,7 +259,7 @@ class GroupByTC(TestCase):
def test_select(self):
"""tests Table.select() method"""
rows = self.table.select('date', 'date1')
- self.assertEquals(rows, [
+ self.assertEqual(rows, [
('date1', 'ing1', 'task1', 0.3),
('date1', 'ing2', 'task2', 0.3),
('date1', 'ing1', 'task3', 0.3),
@@ -289,18 +289,18 @@ class TableStyleSheetTC(TestCase):
self.stylesheet.add_rule(rule)
self.table.set_row(0, [3,4,0])
self.table.apply_stylesheet(self.stylesheet)
- self.assertEquals(self.table[0], [3,4,5])
- self.assertEquals(len(self.stylesheet.rules), 1)
+ self.assertEqual(self.table[0], [3,4,5])
+ self.assertEqual(len(self.stylesheet.rules), 1)
self.stylesheet.add_rule('some bad rule with bad syntax')
- self.assertEquals(len(self.stylesheet.rules), 1, "Ill-formed rule mustn't be added")
- self.assertEquals(len(self.stylesheet.instructions), 1, "Ill-formed rule mustn't be added")
+ self.assertEqual(len(self.stylesheet.rules), 1, "Ill-formed rule mustn't be added")
+ self.assertEqual(len(self.stylesheet.instructions), 1, "Ill-formed rule mustn't be added")
def test_stylesheet_init(self):
"""tests Stylesheet.__init__"""
rule = '0_2 = 1'
sheet = TableStyleSheet([rule, 'bad rule'])
- self.assertEquals(len(sheet.rules), 1, "Ill-formed rule mustn't be added")
- self.assertEquals(len(sheet.instructions), 1, "Ill-formed rule mustn't be added")
+ self.assertEqual(len(sheet.rules), 1, "Ill-formed rule mustn't be added")
+ self.assertEqual(len(sheet.instructions), 1, "Ill-formed rule mustn't be added")
def test_rowavg_rule(self):
"""Tests that add_rowavg_rule works as expected
@@ -364,9 +364,9 @@ class TableStyleTC(TestCase):
getter = getattr(self.style, 'get_%s' % attrname)
setter = getattr(self.style, 'set_%s' % attrname)
self.assertRaises(KeyError, getter, 'badcol')
- self.assertEquals(getter('col1'), default_value)
+ self.assertEqual(getter('col1'), default_value)
setter('FOO', 'col1')
- self.assertEquals(getter('col1'), 'FOO')
+ self.assertEqual(getter('col1'), 'FOO')
def test_getset_index(self):
"""tests style's get and set by index methods"""
@@ -375,14 +375,14 @@ class TableStyleTC(TestCase):
setter = getattr(self.style, 'set_%s' % attrname)
igetter = getattr(self.style, 'get_%s_by_index' % attrname)
isetter = getattr(self.style, 'set_%s_by_index' % attrname)
- self.assertEquals(getter('__row_column__'), default_value)
+ self.assertEqual(getter('__row_column__'), default_value)
isetter('FOO', 0)
- self.assertEquals(getter('__row_column__'), 'FOO')
- self.assertEquals(igetter(0), 'FOO')
- self.assertEquals(getter('col1'), default_value)
+ self.assertEqual(getter('__row_column__'), 'FOO')
+ self.assertEqual(igetter(0), 'FOO')
+ self.assertEqual(getter('col1'), default_value)
isetter('FOO', 1)
- self.assertEquals(getter('col1'), 'FOO')
- self.assertEquals(igetter(1), 'FOO')
+ self.assertEqual(getter('col1'), 'FOO')
+ self.assertEqual(igetter(1), 'FOO')
class RendererTC(TestCase):
@@ -398,30 +398,30 @@ class RendererTC(TestCase):
def test_cell_content(self):
"""test how alignment is rendered"""
entry_xml = self.renderer._render_cell_content('data', self.style, 1)
- self.assertEquals(entry_xml, "<entry align='right'>data</entry>\n")
+ self.assertEqual(entry_xml, "<entry align='right'>data</entry>\n")
self.style.set_alignment_by_index('left', 1)
entry_xml = self.renderer._render_cell_content('data', self.style, 1)
- self.assertEquals(entry_xml, "<entry align='left'>data</entry>\n")
+ self.assertEqual(entry_xml, "<entry align='left'>data</entry>\n")
def test_default_content_rendering(self):
"""tests that default rendering just prints the cell's content"""
rendered_cell = self.base_renderer._render_cell_content('data', self.style, 1)
- self.assertEquals(rendered_cell, "data")
+ self.assertEqual(rendered_cell, "data")
def test_replacement_char(self):
"""tests that 0 is replaced when asked for"""
cell_content = self.base_renderer._make_cell_content(0, self.style, 1)
- self.assertEquals(cell_content, 0)
+ self.assertEqual(cell_content, 0)
self.base_renderer.properties['skip_zero'] = '---'
cell_content = self.base_renderer._make_cell_content(0, self.style, 1)
- self.assertEquals(cell_content, '---')
+ self.assertEqual(cell_content, '---')
def test_unit(self):
"""tests if units are added"""
self.base_renderer.properties['units'] = True
self.style.set_unit_by_index('EUR', 1)
cell_content = self.base_renderer._make_cell_content(12, self.style, 1)
- self.assertEquals(cell_content, '12 EUR')
+ self.assertEqual(cell_content, '12 EUR')
class DocbookTableWriterTC(TestCase):
diff --git a/test/unittest_taskqueue.py b/test/unittest_taskqueue.py
index 8ae3553..345908f 100644
--- a/test/unittest_taskqueue.py
+++ b/test/unittest_taskqueue.py
@@ -22,14 +22,14 @@ from logilab.common.tasksqueue import *
class TaskTC(TestCase):
def test_eq(self):
- self.failIf(Task('t1') == Task('t2'))
- self.failUnless(Task('t1') == Task('t1'))
+ self.assertFalse(Task('t1') == Task('t2'))
+ self.assertTrue(Task('t1') == Task('t1'))
def test_cmp(self):
- self.failUnless(Task('t1', LOW) < Task('t2', MEDIUM))
- self.failIf(Task('t1', LOW) > Task('t2', MEDIUM))
- self.failUnless(Task('t1', HIGH) > Task('t2', MEDIUM))
- self.failIf(Task('t1', HIGH) < Task('t2', MEDIUM))
+ self.assertTrue(Task('t1', LOW) < Task('t2', MEDIUM))
+ self.assertFalse(Task('t1', LOW) > Task('t2', MEDIUM))
+ self.assertTrue(Task('t1', HIGH) > Task('t2', MEDIUM))
+ self.assertFalse(Task('t1', HIGH) < Task('t2', MEDIUM))
class PrioritizedTasksQueueTC(TestCase):
@@ -40,10 +40,10 @@ class PrioritizedTasksQueueTC(TestCase):
queue.put(Task('t2', MEDIUM))
queue.put(Task('t3', HIGH))
queue.put(Task('t4', LOW))
- self.assertEquals(queue.get().id, 't3')
- self.assertEquals(queue.get().id, 't2')
- self.assertEquals(queue.get().id, 't1')
- self.assertEquals(queue.get().id, 't4')
+ self.assertEqual(queue.get().id, 't3')
+ self.assertEqual(queue.get().id, 't2')
+ self.assertEqual(queue.get().id, 't1')
+ self.assertEqual(queue.get().id, 't4')
def test_remove_equivalent(self):
queue = PrioritizedTasksQueue()
@@ -52,11 +52,11 @@ class PrioritizedTasksQueueTC(TestCase):
queue.put(Task('t1', HIGH))
queue.put(Task('t3', MEDIUM))
queue.put(Task('t2', MEDIUM))
- self.assertEquals(queue.qsize(), 3)
- self.assertEquals(queue.get().id, 't1')
- self.assertEquals(queue.get().id, 't2')
- self.assertEquals(queue.get().id, 't3')
- self.assertEquals(queue.qsize(), 0)
+ self.assertEqual(queue.qsize(), 3)
+ self.assertEqual(queue.get().id, 't1')
+ self.assertEqual(queue.get().id, 't2')
+ self.assertEqual(queue.get().id, 't3')
+ self.assertEqual(queue.qsize(), 0)
def test_remove(self):
queue = PrioritizedTasksQueue()
@@ -64,7 +64,7 @@ class PrioritizedTasksQueueTC(TestCase):
queue.put(Task('t2'))
queue.put(Task('t3'))
queue.remove('t2')
- self.assertEquals([t.id for t in queue], ['t3', 't1'])
+ self.assertEqual([t.id for t in queue], ['t3', 't1'])
self.assertRaises(ValueError, queue.remove, 't4')
if __name__ == '__main__':
diff --git a/test/unittest_testlib.py b/test/unittest_testlib.py
index fff864b..614dafd 100644
--- a/test/unittest_testlib.py
+++ b/test/unittest_testlib.py
@@ -32,8 +32,10 @@ try:
except NameError:
__file__ = sys.argv[0]
-
-from unittest import TestSuite
+if sys.version_info < (3, 2):
+ from unittest2 import TestSuite
+else:
+ from unittest import TestSuite
from logilab.common.testlib import TestCase, SkipAwareTextTestRunner, Tags
from logilab.common.testlib import mock_object, NonStrictTestLoader, create_files
@@ -41,6 +43,7 @@ from logilab.common.testlib import capture_stdout, unittest_main, InnerTest
from logilab.common.testlib import with_tempdir, tag
from logilab.common.testlib import require_version, require_module
+
class MockTestCase(TestCase):
def __init__(self):
# Do not call unittest.TestCase's __init__
@@ -53,8 +56,8 @@ class UtilTC(TestCase):
def test_mockobject(self):
obj = mock_object(foo='bar', baz='bam')
- self.assertEquals(obj.foo, 'bar')
- self.assertEquals(obj.baz, 'bam')
+ self.assertEqual(obj.foo, 'bar')
+ self.assertEqual(obj.baz, 'bam')
def test_create_files(self):
@@ -62,21 +65,21 @@ class UtilTC(TestCase):
path_to = lambda path: join(chroot, path)
dircontent = lambda path: sorted(os.listdir(join(chroot, path)))
try:
- self.failIf(isdir(path_to('a/')))
+ self.assertFalse(isdir(path_to('a/')))
create_files(['a/b/foo.py', 'a/b/c/', 'a/b/c/d/e.py'], chroot)
# make sure directories exist
- self.failUnless(isdir(path_to('a')))
- self.failUnless(isdir(path_to('a/b')))
- self.failUnless(isdir(path_to('a/b/c')))
- self.failUnless(isdir(path_to('a/b/c/d')))
+ self.assertTrue(isdir(path_to('a')))
+ self.assertTrue(isdir(path_to('a/b')))
+ self.assertTrue(isdir(path_to('a/b/c')))
+ self.assertTrue(isdir(path_to('a/b/c/d')))
# make sure files exist
- self.failUnless(isfile(path_to('a/b/foo.py')))
- self.failUnless(isfile(path_to('a/b/c/d/e.py')))
+ self.assertTrue(isfile(path_to('a/b/foo.py')))
+ self.assertTrue(isfile(path_to('a/b/c/d/e.py')))
# make sure only asked files were created
- self.assertEquals(dircontent('a'), ['b'])
- self.assertEquals(dircontent('a/b'), ['c', 'foo.py'])
- self.assertEquals(dircontent('a/b/c'), ['d'])
- self.assertEquals(dircontent('a/b/c/d'), ['e.py'])
+ self.assertEqual(dircontent('a'), ['b'])
+ self.assertEqual(dircontent('a/b'), ['c', 'foo.py'])
+ self.assertEqual(dircontent('a/b/c'), ['d'])
+ self.assertEqual(dircontent('a/b/c/d'), ['e.py'])
finally:
shutil.rmtree(chroot)
@@ -109,14 +112,14 @@ class TestlibTC(TestCase):
self.tc.assertDictEquals(d1, d1)
def test_list_equals(self):
- """tests TestCase.assertListEquals"""
+ """tests TestCase.assertListEqual"""
l1 = range(10)
l2 = range(5)
l3 = range(10)
- self.assertRaises(AssertionError, self.tc.assertListEquals, l1, l2)
- self.tc.assertListEquals(l1, l1)
- self.tc.assertListEquals(l1, l3)
- self.tc.assertListEquals(l3, l1)
+ self.assertRaises(AssertionError, self.tc.assertListEqual, l1, l2)
+ self.tc.assertListEqual(l1, l1)
+ self.tc.assertListEqual(l1, l3)
+ self.tc.assertListEqual(l3, l1)
def test_lines_equals(self):
"""tests assertLineEquals"""
@@ -129,9 +132,13 @@ class TestlibTC(TestCase):
t3 = """some
text"""
self.assertRaises(AssertionError, self.tc.assertLinesEquals, t1, t2)
+ self.assertRaises(AssertionError, self.tc.assertMultiLineEqual, t1, t2)
self.tc.assertLinesEquals(t1, t3)
+ self.tc.assertMultiLineEqual(t1, t3 + "\n")
self.tc.assertLinesEquals(t3, t1)
+ self.tc.assertMultiLineEqual(t3 + "\n", t1)
self.tc.assertLinesEquals(t1, t1)
+ self.tc.assertMultiLineEqual(t1, t1)
def test_xml_valid(self):
"""tests xml is valid"""
@@ -145,18 +152,21 @@ class TestlibTC(TestCase):
invalid = """<root><h2 </h2> </root>"""
self.assertRaises(AssertionError, self.tc.assertXMLStringWellFormed, invalid)
-
def test_unordered_equality_for_lists(self):
l1 = [0, 1, 2]
l2 = [1, 2, 3]
self.assertRaises(AssertionError, self.tc.assertUnorderedIterableEquals, l1, l2)
+ self.assertRaises(AssertionError, self.tc.assertItemsEqual, l1, l2)
self.tc.assertUnorderedIterableEquals(l1, l1)
+ self.tc.assertItemsEqual(l1, l1)
self.tc.assertUnorderedIterableEquals([], [])
+ self.tc.assertItemsEqual([], [])
l1 = [0, 1, 1]
l2 = [0, 1]
self.assertRaises(AssertionError, self.tc.assertUnorderedIterableEquals, l1, l2)
+ self.assertRaises(AssertionError, self.tc.assertItemsEqual, l1, l2)
self.tc.assertUnorderedIterableEquals(l1, l1)
-
+ self.tc.assertItemsEqual(l1, l1)
def test_unordered_equality_for_dicts(self):
d1 = {'a' : 1, 'b' : 2}
@@ -165,17 +175,20 @@ class TestlibTC(TestCase):
self.tc.assertUnorderedIterableEquals(d1, d1)
self.tc.assertUnorderedIterableEquals({}, {})
+ def test_equality_for_sets(self):
+ s1 = set('ab')
+ s2 = set('a')
+ self.assertRaises(AssertionError, self.tc.assertSetEqual, s1, s2)
+ self.tc.assertSetEqual(s1, s1)
+ self.tc.assertSetEqual(set(), set())
+
def test_unordered_equality_for_iterables(self):
self.assertRaises(AssertionError, self.tc.assertUnorderedIterableEquals, xrange(5), xrange(6))
+ self.assertRaises(AssertionError, self.tc.assertItemsEqual, xrange(5), xrange(6))
self.tc.assertUnorderedIterableEquals(xrange(5), range(5))
+ self.tc.assertItemsEqual(xrange(5), range(5))
self.tc.assertUnorderedIterableEquals([], ())
-
- def test_unordered_equality_for_dicts(self):
- s1 = set('ab')
- s2 = set('a')
- self.assertRaises(AssertionError, self.tc.assertSetEquals, s1, s2)
- self.tc.assertSetEquals(s1, s1)
- self.tc.assertSetEquals(set(), set())
+ self.tc.assertItemsEqual([], ())
def test_file_equality(self):
foo = join(dirname(__file__), 'data', 'foo.txt')
@@ -215,35 +228,41 @@ class TestlibTC(TestCase):
def test_text_equality(self):
self.assertRaises(AssertionError, self.tc.assertTextEqual, "toto", 12)
+ self.assertRaises(AssertionError, self.tc.assertMultiLineEqual, "toto", 12)
self.assertRaises(AssertionError, self.tc.assertTextEqual, "toto", None)
+ self.assertRaises(AssertionError, self.tc.assertMultiLineEqual, "toto", None)
self.assertRaises(AssertionError, self.tc.assertTextEqual, 3.12, u"toto")
+ self.assertRaises(AssertionError, self.tc.assertMultiLineEqual, 3.12, u"toto")
self.assertRaises(AssertionError, self.tc.assertTextEqual, None, u"toto")
+ self.assertRaises(AssertionError, self.tc.assertMultiLineEqual, None, u"toto")
self.tc.assertTextEqual('toto\ntiti', 'toto\ntiti')
+ self.tc.assertMultiLineEqual('toto\ntiti', 'toto\ntiti')
self.tc.assertTextEqual('toto\ntiti', 'toto\n titi\n', striplines=True)
self.assertRaises(AssertionError, self.tc.assertTextEqual, 'toto\ntiti', 'toto\n titi\n')
+ self.assertRaises(AssertionError, self.tc.assertMultiLineEqual, 'toto\ntiti', 'toto\n titi\n')
foo = join(dirname(__file__), 'data', 'foo.txt')
spam = join(dirname(__file__), 'data', 'spam.txt')
text1 = file(foo).read()
self.tc.assertTextEqual(text1, text1)
+ self.tc.assertMultiLineEqual(text1, text1)
text2 = file(spam).read()
self.assertRaises(AssertionError, self.tc.assertTextEqual, text1, text2)
-
+ self.assertRaises(AssertionError, self.tc.assertMultiLineEqual, text1, text2)
def test_assert_raises(self):
exc = self.tc.assertRaises(KeyError, {}.__getitem__, 'foo')
- self.failUnless(isinstance(exc, KeyError))
- self.assertEquals(exc.args, ('foo',))
-
+ self.assertTrue(isinstance(exc, KeyError))
+ self.assertEqual(exc.args, ('foo',))
def test_default_datadir(self):
expected_datadir = join(dirname(abspath(__file__)), 'data')
- self.assertEquals(self.datadir, expected_datadir)
- self.assertEquals(self.datapath('foo'), join(expected_datadir, 'foo'))
+ self.assertEqual(self.datadir, expected_datadir)
+ self.assertEqual(self.datapath('foo'), join(expected_datadir, 'foo'))
def test_multiple_args_datadir(self):
expected_datadir = join(dirname(abspath(__file__)), 'data')
- self.assertEquals(self.datadir, expected_datadir)
- self.assertEquals(self.datapath('foo', 'bar'), join(expected_datadir, 'foo', 'bar'))
+ self.assertEqual(self.datadir, expected_datadir)
+ self.assertEqual(self.datapath('foo', 'bar'), join(expected_datadir, 'foo', 'bar'))
def test_custom_datadir(self):
class MyTC(TestCase):
@@ -252,12 +271,11 @@ class TestlibTC(TestCase):
# class' custom datadir
tc = MyTC('test_1')
- self.assertEquals(tc.datapath('bar'), join('foo', 'bar'))
+ self.assertEqual(tc.datapath('bar'), join('foo', 'bar'))
# instance's custom datadir
- self.skip('should this really works?')
+ self.skipTest('should this really works?')
tc.datadir = 'spam'
- self.assertEquals(tc.datapath('bar'), join('spam', 'bar'))
-
+ self.assertEqual(tc.datapath('bar'), join('spam', 'bar'))
def test_cached_datadir(self):
"""test datadir is cached on the class"""
@@ -266,13 +284,13 @@ class TestlibTC(TestCase):
expected_datadir = join(dirname(abspath(__file__)), 'data')
tc = MyTC('test_1')
- self.assertEquals(tc.datadir, expected_datadir)
+ self.assertEqual(tc.datadir, expected_datadir)
# changing module should not change the datadir
MyTC.__module__ = 'os'
- self.assertEquals(tc.datadir, expected_datadir)
+ self.assertEqual(tc.datadir, expected_datadir)
# even on new instances
tc2 = MyTC('test_1')
- self.assertEquals(tc2.datadir, expected_datadir)
+ self.assertEqual(tc2.datadir, expected_datadir)
def test_is(self):
obj_1 = []
@@ -290,7 +308,7 @@ class TestlibTC(TestCase):
self.assertNone(None)
self.assertRaises(AssertionError, self.assertNone, object())
- def test_none(self):
+ def test_not_none(self):
self.assertNotNone(object())
self.assertRaises(AssertionError, self.assertNotNone, None)
@@ -314,22 +332,22 @@ class GenerativeTestsTC(TestCase):
class FooTC(TestCase):
def test_generative(self):
for i in xrange(10):
- yield self.assertEquals, i, i
+ yield self.assertEqual, i, i
result = self.runner.run(FooTC('test_generative'))
- self.assertEquals(result.testsRun, 10)
- self.assertEquals(len(result.failures), 0)
- self.assertEquals(len(result.errors), 0)
+ self.assertEqual(result.testsRun, 10)
+ self.assertEqual(len(result.failures), 0)
+ self.assertEqual(len(result.errors), 0)
def test_generative_half_bad(self):
class FooTC(TestCase):
def test_generative(self):
for i in xrange(10):
- yield self.assertEquals, i%2, 0
+ yield self.assertEqual, i%2, 0
result = self.runner.run(FooTC('test_generative'))
- self.assertEquals(result.testsRun, 10)
- self.assertEquals(len(result.failures), 5)
- self.assertEquals(len(result.errors), 0)
+ self.assertEqual(result.testsRun, 10)
+ self.assertEqual(len(result.failures), 5)
+ self.assertEqual(len(result.errors), 0)
def test_generative_error(self):
@@ -338,12 +356,12 @@ class GenerativeTestsTC(TestCase):
for i in xrange(10):
if i == 5:
raise ValueError('STOP !')
- yield self.assertEquals, i, i
+ yield self.assertEqual, i, i
result = self.runner.run(FooTC('test_generative'))
- self.assertEquals(result.testsRun, 5)
- self.assertEquals(len(result.failures), 0)
- self.assertEquals(len(result.errors), 1)
+ self.assertEqual(result.testsRun, 5)
+ self.assertEqual(len(result.failures), 0)
+ self.assertEqual(len(result.errors), 1)
def test_generative_error2(self):
class FooTC(TestCase):
@@ -351,12 +369,12 @@ class GenerativeTestsTC(TestCase):
for i in xrange(10):
if i == 5:
yield self.ouch
- yield self.assertEquals, i, i
+ yield self.assertEqual, i, i
def ouch(self): raise ValueError('stop !')
result = self.runner.run(FooTC('test_generative'))
- self.assertEquals(result.testsRun, 6)
- self.assertEquals(len(result.failures), 0)
- self.assertEquals(len(result.errors), 1)
+ self.assertEqual(result.testsRun, 6)
+ self.assertEqual(len(result.failures), 0)
+ self.assertEqual(len(result.errors), 1)
def test_generative_setup(self):
@@ -365,12 +383,12 @@ class GenerativeTestsTC(TestCase):
raise ValueError('STOP !')
def test_generative(self):
for i in xrange(10):
- yield self.assertEquals, i, i
+ yield self.assertEqual, i, i
result = self.runner.run(FooTC('test_generative'))
- self.assertEquals(result.testsRun, 1)
- self.assertEquals(len(result.failures), 0)
- self.assertEquals(len(result.errors), 1)
+ self.assertEqual(result.testsRun, 1)
+ self.assertEqual(len(result.failures), 0)
+ self.assertEqual(len(result.errors), 1)
def test_generative_inner_skip(self):
class FooTC(TestCase):
@@ -378,35 +396,35 @@ class GenerativeTestsTC(TestCase):
if val == 5:
self.innerSkip("no 5")
else:
- self.assertEquals(val, val)
+ self.assertEqual(val, val)
def test_generative(self):
for i in xrange(10):
yield InnerTest("check_%s"%i, self.check, i)
result = self.runner.run(FooTC('test_generative'))
- self.assertEquals(result.testsRun, 10)
- self.assertEquals(len(result.failures), 0)
- self.assertEquals(len(result.errors), 0)
- self.assertEquals(len(result.skipped), 1)
+ self.assertEqual(result.testsRun, 10)
+ self.assertEqual(len(result.failures), 0)
+ self.assertEqual(len(result.errors), 0)
+ self.assertEqual(len(result.skipped), 1)
def test_generative_skip(self):
class FooTC(TestCase):
def check(self, val):
if val == 5:
- self.skip("no 5")
+ self.skipTest("no 5")
else:
- self.assertEquals(val, val)
+ self.assertEqual(val, val)
def test_generative(self):
for i in xrange(10):
yield InnerTest("check_%s"%i, self.check, i)
result = self.runner.run(FooTC('test_generative'))
- self.assertEquals(result.testsRun, 6)
- self.assertEquals(len(result.failures), 0)
- self.assertEquals(len(result.errors), 0)
- self.assertEquals(len(result.skipped), 1)
+ self.assertEqual(result.testsRun, 6)
+ self.assertEqual(len(result.failures), 0)
+ self.assertEqual(len(result.errors), 0)
+ self.assertEqual(len(result.skipped), 1)
def test_generative_inner_error(self):
class FooTC(TestCase):
@@ -414,35 +432,35 @@ class GenerativeTestsTC(TestCase):
if val == 5:
raise ValueError("no 5")
else:
- self.assertEquals(val, val)
+ self.assertEqual(val, val)
def test_generative(self):
for i in xrange(10):
yield InnerTest("check_%s"%i, self.check, i)
result = self.runner.run(FooTC('test_generative'))
- self.assertEquals(result.testsRun, 6)
- self.assertEquals(len(result.failures), 0)
- self.assertEquals(len(result.errors), 1)
- self.assertEquals(len(result.skipped), 0)
+ self.assertEqual(result.testsRun, 6)
+ self.assertEqual(len(result.failures), 0)
+ self.assertEqual(len(result.errors), 1)
+ self.assertEqual(len(result.skipped), 0)
def test_generative_inner_failure(self):
class FooTC(TestCase):
def check(self, val):
if val == 5:
- self.assertEquals(val, val+1)
+ self.assertEqual(val, val+1)
else:
- self.assertEquals(val, val)
+ self.assertEqual(val, val)
def test_generative(self):
for i in xrange(10):
yield InnerTest("check_%s"%i, self.check, i)
result = self.runner.run(FooTC('test_generative'))
- self.assertEquals(result.testsRun, 10)
- self.assertEquals(len(result.failures), 1)
- self.assertEquals(len(result.errors), 0)
- self.assertEquals(len(result.skipped), 0)
+ self.assertEqual(result.testsRun, 10)
+ self.assertEqual(len(result.failures), 1)
+ self.assertEqual(len(result.errors), 0)
+ self.assertEqual(len(result.skipped), 0)
class ExitFirstTC(TestCase):
@@ -457,9 +475,9 @@ class ExitFirstTC(TestCase):
def test_3(self): pass
tests = [FooTC('test_1'), FooTC('test_2')]
result = self.runner.run(TestSuite(tests))
- self.assertEquals(result.testsRun, 2)
- self.assertEquals(len(result.failures), 1)
- self.assertEquals(len(result.errors), 0)
+ self.assertEqual(result.testsRun, 2)
+ self.assertEqual(len(result.failures), 1)
+ self.assertEqual(len(result.errors), 0)
def test_error_exit_first(self):
@@ -469,9 +487,9 @@ class ExitFirstTC(TestCase):
def test_3(self): pass
tests = [FooTC('test_1'), FooTC('test_2'), FooTC('test_3')]
result = self.runner.run(TestSuite(tests))
- self.assertEquals(result.testsRun, 2)
- self.assertEquals(len(result.failures), 0)
- self.assertEquals(len(result.errors), 1)
+ self.assertEqual(result.testsRun, 2)
+ self.assertEqual(len(result.failures), 0)
+ self.assertEqual(len(result.errors), 1)
def test_generative_exit_first(self):
class FooTC(TestCase):
@@ -479,9 +497,9 @@ class ExitFirstTC(TestCase):
for i in xrange(10):
yield self.assert_, False
result = self.runner.run(FooTC('test_generative'))
- self.assertEquals(result.testsRun, 1)
- self.assertEquals(len(result.failures), 1)
- self.assertEquals(len(result.errors), 0)
+ self.assertEqual(result.testsRun, 1)
+ self.assertEqual(len(result.failures), 1)
+ self.assertEqual(len(result.errors), 0)
class TestLoaderTC(TestCase):
@@ -511,16 +529,16 @@ class TestLoaderTC(TestCase):
result = self.runner.run(suite)
self.runner.test_pattern = None
self.runner.skipped_patterns = ()
- self.assertEquals(result.testsRun, expected_count)
+ self.assertEqual(result.testsRun, expected_count)
def test_collect_everything(self):
"""make sure we don't change the default behaviour
for loadTestsFromModule() and loadTestsFromTestCase
"""
testsuite = self.loader.loadTestsFromModule(self.module)
- self.assertEquals(len(testsuite._tests), 2)
+ self.assertEqual(len(testsuite._tests), 2)
suite1, suite2 = testsuite._tests
- self.assertEquals(len(suite1._tests) + len(suite2._tests), 4)
+ self.assertEqual(len(suite1._tests) + len(suite2._tests), 4)
def test_collect_with_classname(self):
self.assertRunCount('FooTC', self.module, 3)
@@ -697,10 +715,10 @@ class OutErrCaptureTC(TestCase):
def test_capture_core(self):
# output = capture_stdout()
# bootstrap_print("hello", output=sys.stdout)
- # self.assertEquals(output.restore(), "hello")
+ # self.assertEqual(output.restore(), "hello")
output = capture_stdout()
bootstrap_print("hello")
- self.assertEquals(output.restore(), "hello")
+ self.assertEqual(output.restore(), "hello")
def test_unicode_non_ascii_messages(self):
class FooTC(TestCase):
@@ -727,7 +745,7 @@ class DecoratorTC(TestCase):
tempdir = tempfile.gettempdir()
# assert temp directory is empty
- self.assertListEquals(list(os.walk(tempdir)),
+ self.assertListEqual(list(os.walk(tempdir)),
[(tempdir,[],[])])
witness = []
@@ -747,10 +765,10 @@ class DecoratorTC(TestCase):
createfile(witness)
self.assertTrue(witness)
- self.assertEquals(tempfile.gettempdir(), tempdir)
+ self.assertEqual(tempfile.gettempdir(), tempdir)
# assert temp directory is empty
- self.assertListEquals(list(os.walk(tempdir)),
+ self.assertListEqual(list(os.walk(tempdir)),
[(tempdir,[],[])])
@with_tempdir
@@ -758,7 +776,7 @@ class DecoratorTC(TestCase):
tempdir = tempfile.gettempdir()
# assert temp directory is empty
- self.assertListEquals(list(os.walk(tempfile.tempdir)),
+ self.assertListEqual(list(os.walk(tempfile.tempdir)),
[(tempfile.tempdir,[],[])])
@@ -780,10 +798,10 @@ class DecoratorTC(TestCase):
# assert tempdir didn't change
- self.assertEquals(tempfile.gettempdir(), tempdir)
+ self.assertEqual(tempfile.gettempdir(), tempdir)
# assert temp directory is empty
- self.assertListEquals(list(os.walk(tempdir)),
+ self.assertListEqual(list(os.walk(tempdir)),
[(tempdir,[],[])])
@@ -803,7 +821,7 @@ class DecoratorTC(TestCase):
compare = ('2.4', '2.5', '2.5.4', '2.5.5')
for version in compare:
decorator = require_version(version)
- self.assertEquals(func, decorator(func), '%s =< %s : function \
+ self.assertEqual(func, decorator(func), '%s =< %s : function \
return by the decorator should be the same.' % (version,
'.'.join([str(element) for element in current])))
@@ -817,7 +835,7 @@ class DecoratorTC(TestCase):
compare = ('2.5.6', '2.6', '2.6.5')
for version in compare:
decorator = require_version(version)
- self.assertNotEquals(func, decorator(func), '%s >= %s : function \
+ self.assertNotEqual(func, decorator(func), '%s >= %s : function \
return by the decorator should NOT be the same.'
% ('.'.join([str(element) for element in current]), version))
@@ -838,7 +856,7 @@ class DecoratorTC(TestCase):
pass
module = 'sys'
decorator = require_module(module)
- self.assertEquals(func, decorator(func), 'module %s exists : function \
+ self.assertEqual(func, decorator(func), 'module %s exists : function \
return by the decorator should be the same.' % module)
def test_require_module_bad(self):
@@ -853,7 +871,7 @@ class DecoratorTC(TestCase):
pass
except ImportError:
decorator = require_module(module)
- self.assertNotEquals(func, decorator(func), 'module %s does \
+ self.assertNotEqual(func, decorator(func), 'module %s does \
not exist : function return by the decorator should \
NOT be the same.' % module)
return
@@ -887,9 +905,9 @@ class TagTC(TestCase):
def test_tag_decorator(self):
bob = self.func
- self.assertEquals(bob(2, 3, 7), 35)
+ self.assertEqual(bob(2, 3, 7), 35)
self.assertTrue(hasattr(bob, 'tags'))
- self.assertSetEquals(bob.tags, set(['testing','bob']))
+ self.assertSetEqual(bob.tags, set(['testing','bob']))
def test_tags_class(self):
diff --git a/test/unittest_textutils.py b/test/unittest_textutils.py
index 07f0fa4..e4dd966 100644
--- a/test/unittest_textutils.py
+++ b/test/unittest_textutils.py
@@ -40,7 +40,7 @@ else:
class NormalizeTextTC(TestCase):
def test_known_values(self):
- self.assertEquals(ulines(tu.normalize_text('''some really malformated
+ self.assertEqual(ulines(tu.normalize_text('''some really malformated
text.
With some times some veeeeeeeeeeeeeeerrrrryyyyyyyyyyyyyyyyyyy loooooooooooooooooooooong linnnnnnnnnnnes
@@ -51,7 +51,7 @@ veeeeeeeeeeeeeeerrrrryyyyyyyyyyyyyyyyyyy loooooooooooooooooooooong
linnnnnnnnnnnes
and empty lines!''')
- self.assertTextEquals(ulines(tu.normalize_text('''\
+ self.assertMultiLineEqual(ulines(tu.normalize_text('''\
some ReST formated text
=======================
With some times some veeeeeeeeeeeeeeerrrrryyyyyyyyyyyyyyyyyyy loooooooooooooooooooooong linnnnnnnnnnnes
@@ -69,7 +69,7 @@ and normal lines!
another paragraph''')
def test_nonregr_unsplitable_word(self):
- self.assertEquals(ulines(tu.normalize_text('''petit complement :
+ self.assertEqual(ulines(tu.normalize_text('''petit complement :
http://www.plonefr.net/blog/archive/2005/10/30/tester-la-future-infrastructure-i18n
''', 80)),
@@ -79,16 +79,16 @@ http://www.plonefr.net/blog/archive/2005/10/30/tester-la-future-infrastructure-i
def test_nonregr_rest_normalize(self):
- self.assertEquals(ulines(tu.normalize_text("""... Il est donc evident que tout le monde doit lire le compte-rendu de RSH et aller discuter avec les autres si c'est utile ou necessaire.
+ self.assertEqual(ulines(tu.normalize_text("""... Il est donc evident que tout le monde doit lire le compte-rendu de RSH et aller discuter avec les autres si c'est utile ou necessaire.
""", rest=True)), """... Il est donc evident que tout le monde doit lire le compte-rendu de RSH et
aller discuter avec les autres si c'est utile ou necessaire.""")
def test_normalize_rest_paragraph(self):
- self.assertEquals(ulines(tu.normalize_rest_paragraph("""**nico**: toto""")),
+ self.assertEqual(ulines(tu.normalize_rest_paragraph("""**nico**: toto""")),
"""**nico**: toto""")
def test_normalize_rest_paragraph2(self):
- self.assertEquals(ulines(tu.normalize_rest_paragraph(""".. _tdm: http://www.editions-eni.fr/Livres/Python-Les-fondamentaux-du-langage---La-programmation-pour-les-scientifiques-Table-des-matieres/.20_adaa41fb-c125-4919-aece-049601e81c8e_0_0.pdf
+ self.assertEqual(ulines(tu.normalize_rest_paragraph(""".. _tdm: http://www.editions-eni.fr/Livres/Python-Les-fondamentaux-du-langage---La-programmation-pour-les-scientifiques-Table-des-matieres/.20_adaa41fb-c125-4919-aece-049601e81c8e_0_0.pdf
.. _extrait: http://www.editions-eni.fr/Livres/Python-Les-fondamentaux-du-langage---La-programmation-pour-les-scientifiques-Extrait-du-livre/.20_d6eed0be-0d36-4384-be59-2dd09e081012_0_0.pdf""", indent='> ')),
"""> .. _tdm:
> http://www.editions-eni.fr/Livres/Python-Les-fondamentaux-du-langage---La-programmation-pour-les-scientifiques-Table-des-matieres/.20_adaa41fb-c125-4919-aece-049601e81c8e_0_0.pdf
@@ -96,7 +96,7 @@ aller discuter avec les autres si c'est utile ou necessaire.""")
> http://www.editions-eni.fr/Livres/Python-Les-fondamentaux-du-langage---La-programmation-pour-les-scientifiques-Extrait-du-livre/.20_d6eed0be-0d36-4384-be59-2dd09e081012_0_0.pdf""")
def test_normalize_paragraph2(self):
- self.assertEquals(ulines(tu.normalize_paragraph(""".. _tdm: http://www.editions-eni.fr/Livres/Python-Les-fondamentaux-du-langage---La-programmation-pour-les-scientifiques-Table-des-matieres/.20_adaa41fb-c125-4919-aece-049601e81c8e_0_0.pdf
+ self.assertEqual(ulines(tu.normalize_paragraph(""".. _tdm: http://www.editions-eni.fr/Livres/Python-Les-fondamentaux-du-langage---La-programmation-pour-les-scientifiques-Table-des-matieres/.20_adaa41fb-c125-4919-aece-049601e81c8e_0_0.pdf
.. _extrait: http://www.editions-eni.fr/Livres/Python-Les-fondamentaux-du-langage---La-programmation-pour-les-scientifiques-Extrait-du-livre/.20_d6eed0be-0d36-4384-be59-2dd09e081012_0_0.pdf""", indent='> ')),
"""> .. _tdm:
> http://www.editions-eni.fr/Livres/Python-Les-fondamentaux-du-langage---La-programmation-pour-les-scientifiques-Table-des-matieres/.20_adaa41fb-c125-4919-aece-049601e81c8e_0_0.pdf
@@ -106,7 +106,7 @@ aller discuter avec les autres si c'est utile ou necessaire.""")
class NormalizeParagraphTC(TestCase):
def test_known_values(self):
- self.assertEquals(ulines(tu.normalize_text("""This package contains test files shared by the logilab-common package. It isn't
+ self.assertEqual(ulines(tu.normalize_text("""This package contains test files shared by the logilab-common package. It isn't
necessary to install this package unless you want to execute or look at
the tests.""", indent=' ', line_len=70)),
"""\
@@ -118,7 +118,7 @@ the tests.""", indent=' ', line_len=70)),
class GetCsvTC(TestCase):
def test_known(self):
- self.assertEquals(tu.splitstrip('a, b,c '), ['a', 'b', 'c'])
+ self.assertEqual(tu.splitstrip('a, b,c '), ['a', 'b', 'c'])
class UnitsTC(TestCase):
@@ -130,13 +130,13 @@ class UnitsTC(TestCase):
}
def test_empty_base(self):
- self.assertEquals(tu.apply_units('17', {}), 17)
+ self.assertEqual(tu.apply_units('17', {}), 17)
def test_empty_inter(self):
def inter(value):
return int(float(value)) * 2
result = tu.apply_units('12.4', {}, inter=inter)
- self.assertEquals(result, 12 * 2)
+ self.assertEqual(result, 12 * 2)
self.assertIsInstance(result, float)
def test_empty_final(self):
@@ -145,57 +145,57 @@ class UnitsTC(TestCase):
def test_empty_inter_final(self):
result = tu.apply_units('12.4', {}, inter=float,final=int)
- self.assertEquals(result, 12)
+ self.assertEqual(result, 12)
self.assertIsInstance(result, int)
def test_blank_base(self):
result = tu.apply_units(' 42 ', {}, final=int)
- self.assertEquals(result, 42)
+ self.assertEqual(result, 42)
def test_blank_space(self):
result = tu.apply_units(' 1 337 ', {}, final=int)
- self.assertEquals(result, 1337)
+ self.assertEqual(result, 1337)
def test_blank_coma(self):
result = tu.apply_units(' 4,298.42 ', {})
- self.assertEquals(result, 4298.42)
+ self.assertEqual(result, 4298.42)
def test_blank_mixed(self):
result = tu.apply_units('45, 317, 337', {},final=int)
- self.assertEquals(result, 45317337)
+ self.assertEqual(result, 45317337)
def test_unit_singleunit_singleletter(self):
result = tu.apply_units('15m', self.units)
- self.assertEquals(result, 15 * self.units['m'] )
+ self.assertEqual(result, 15 * self.units['m'] )
def test_unit_singleunit_multipleletter(self):
result = tu.apply_units('47KB', self.units)
- self.assertEquals(result, 47 * self.units['kb'] )
+ self.assertEqual(result, 47 * self.units['kb'] )
def test_unit_singleunit_caseinsensitive(self):
result = tu.apply_units('47kb', self.units)
- self.assertEquals(result, 47 * self.units['kb'] )
+ self.assertEqual(result, 47 * self.units['kb'] )
def test_unit_multipleunit(self):
result = tu.apply_units('47KB 1.5MB', self.units)
- self.assertEquals(result, 47 * self.units['kb'] + 1.5 * self.units['mb'])
+ self.assertEqual(result, 47 * self.units['kb'] + 1.5 * self.units['mb'])
def test_unit_with_blank(self):
result = tu.apply_units('1 000 KB', self.units)
- self.assertEquals(result, 1000 * self.units['kb'])
+ self.assertEqual(result, 1000 * self.units['kb'])
RGX = re.compile('abcd')
class PrettyMatchTC(TestCase):
def test_known(self):
string = 'hiuherabcdef'
- self.assertEquals(ulines(tu.pretty_match(RGX.search(string), string)),
+ self.assertEqual(ulines(tu.pretty_match(RGX.search(string), string)),
'hiuherabcdef\n ^^^^')
def test_known_values_1(self):
rgx = re.compile('(to*)')
string = 'toto'
match = rgx.search(string)
- self.assertEquals(ulines(tu.pretty_match(match, string)), '''toto
+ self.assertEqual(ulines(tu.pretty_match(match, string)), '''toto
^^''')
def test_known_values_2(self):
@@ -203,7 +203,7 @@ class PrettyMatchTC(TestCase):
string = ''' ... ... to to
... ... '''
match = rgx.search(string)
- self.assertEquals(ulines(tu.pretty_match(match, string)), ''' ... ... to to
+ self.assertEqual(ulines(tu.pretty_match(match, string)), ''' ... ... to to
^^
... ...''')
@@ -211,17 +211,17 @@ class PrettyMatchTC(TestCase):
class UnquoteTC(TestCase):
def test(self):
- self.assertEquals(tu.unquote('"toto"'), 'toto')
- self.assertEquals(tu.unquote("'l'inenarrable toto'"), "l'inenarrable toto")
- self.assertEquals(tu.unquote("no quote"), "no quote")
+ self.assertEqual(tu.unquote('"toto"'), 'toto')
+ self.assertEqual(tu.unquote("'l'inenarrable toto'"), "l'inenarrable toto")
+ self.assertEqual(tu.unquote("no quote"), "no quote")
class ColorizeAnsiTC(TestCase):
def test_known(self):
- self.assertEquals(tu.colorize_ansi('hello', 'blue', 'strike'), '\x1b[9;34mhello\x1b[0m')
- self.assertEquals(tu.colorize_ansi('hello', style='strike, inverse'), '\x1b[9;7mhello\x1b[0m')
- self.assertEquals(tu.colorize_ansi('hello', None, None), 'hello')
- self.assertEquals(tu.colorize_ansi('hello', '', ''), 'hello')
+ self.assertEqual(tu.colorize_ansi('hello', 'blue', 'strike'), '\x1b[9;34mhello\x1b[0m')
+ self.assertEqual(tu.colorize_ansi('hello', style='strike, inverse'), '\x1b[9;7mhello\x1b[0m')
+ self.assertEqual(tu.colorize_ansi('hello', None, None), 'hello')
+ self.assertEqual(tu.colorize_ansi('hello', '', ''), 'hello')
def test_raise(self):
self.assertRaises(KeyError, tu.colorize_ansi, 'hello', 'bleu', None)
self.assertRaises(KeyError, tu.colorize_ansi, 'hello', None, 'italique')
diff --git a/test/unittest_umessage.py b/test/unittest_umessage.py
index 941d2e5..9bf3439 100644
--- a/test/unittest_umessage.py
+++ b/test/unittest_umessage.py
@@ -32,23 +32,23 @@ class UMessageTC(TestCase):
def test_get_subject(self):
subj = self.umessage2.get('Subject')
- self.assertEquals(type(subj), unicode)
- self.assertEquals(subj, u'À LA MER')
+ self.assertEqual(type(subj), unicode)
+ self.assertEqual(subj, u'À LA MER')
def test_get_all(self):
to = self.umessage2.get_all('To')
- self.assertEquals(type(to[0]), unicode)
- self.assertEquals(to, [u'élément à accents <alf@logilab.fr>'])
+ self.assertEqual(type(to[0]), unicode)
+ self.assertEqual(to, [u'élément à accents <alf@logilab.fr>'])
def test_get_payload_no_multi(self):
payload = self.umessage1.get_payload()
- self.assertEquals(type(payload), unicode)
+ self.assertEqual(type(payload), unicode)
def test_decode_QP(self):
test_line = '=??b?UmFwaGHrbA==?= DUPONT<raphael.dupont@societe.fr>'
test = decode_QP(test_line)
- self.assertEquals(type(test), unicode)
- self.assertEquals(test, u'Raphaël DUPONT<raphael.dupont@societe.fr>')
+ self.assertEqual(type(test), unicode)
+ self.assertEqual(test, u'Raphaël DUPONT<raphael.dupont@societe.fr>')
if __name__ == '__main__':
diff --git a/test/unittest_xmlutils.py b/test/unittest_xmlutils.py
index d304fdf..0c25e2b 100644
--- a/test/unittest_xmlutils.py
+++ b/test/unittest_xmlutils.py
@@ -28,7 +28,7 @@ class ProcessingInstructionDataParsingTest(TestCase):
"""
pi_data = u" \t \n "
data = parse_pi_data(pi_data)
- self.assertEquals(data, {})
+ self.assertEqual(data, {})
def test_simple_pi_with_double_quotes(self):
"""
@@ -37,7 +37,7 @@ class ProcessingInstructionDataParsingTest(TestCase):
"""
pi_data = u""" \t att="value"\n """
data = parse_pi_data(pi_data)
- self.assertEquals(data, {u"att": u"value"})
+ self.assertEqual(data, {u"att": u"value"})
def test_simple_pi_with_simple_quotes(self):
"""
@@ -46,7 +46,7 @@ class ProcessingInstructionDataParsingTest(TestCase):
"""
pi_data = u""" \t att='value'\n """
data = parse_pi_data(pi_data)
- self.assertEquals(data, {u"att": u"value"})
+ self.assertEqual(data, {u"att": u"value"})
def test_complex_pi_with_different_quotes(self):
"""
@@ -55,7 +55,7 @@ class ProcessingInstructionDataParsingTest(TestCase):
"""
pi_data = u""" \t att='value'\n att2="value2" att3='value3'"""
data = parse_pi_data(pi_data)
- self.assertEquals(data, {u"att": u"value", u"att2": u"value2",
+ self.assertEqual(data, {u"att": u"value", u"att2": u"value2",
u"att3": u"value3"})
def test_pi_with_non_attribute_data(self):
@@ -65,7 +65,7 @@ class ProcessingInstructionDataParsingTest(TestCase):
"""
pi_data = u""" \t keyword att1="value1" """
data = parse_pi_data(pi_data)
- self.assertEquals(data, {u"keyword": None, u"att1": u"value1"})
+ self.assertEqual(data, {u"keyword": None, u"att1": u"value1"})
# definitions for automatic unit testing
diff --git a/test/utils.py b/test/utils.py
index 38c19df..598d386 100644
--- a/test/utils.py
+++ b/test/utils.py
@@ -30,7 +30,7 @@ class WriterTC:
got = buffer.getvalue()
expected = getattr(self, test_id)
try:
- self.assertLinesEquals(got, expected)
+ self.assertMultiLineEqual(got, expected)
except:
print '**** got for %s' % test_id
print got
diff --git a/testlib.py b/testlib.py
index 6cbba42..05b2794 100644
--- a/testlib.py
+++ b/testlib.py
@@ -46,10 +46,8 @@ import sys
import os, os.path as osp
import re
import time
-import getopt
import traceback
import inspect
-import unittest
import difflib
import types
import tempfile
@@ -59,7 +57,16 @@ from operator import itemgetter
import warnings
from compiler.consts import CO_GENERATOR
from ConfigParser import ConfigParser
+from logilab.common.deprecation import deprecated
from itertools import dropwhile
+
+if sys.version_info < (3, 2):
+ import unittest2 as unittest
+ from unittest2 import SkipTest
+else:
+ import unittest
+ from unittest import SkipTest
+
try:
from functools import wraps
except ImportError:
@@ -95,6 +102,8 @@ ENABLE_DBC = False
FILE_RESTART = ".pytest.restart"
+UNITTEST2 = getattr(unittest, "__package__", "") == 'unittest2'
+
# used by unittest to count the number of relevant levels in the traceback
__unittest = 1
@@ -353,7 +362,7 @@ class SkipAwareTestResult(unittest._TextTestResult):
def addError(self, test, err):
"""err == (exc_type, exc, tcbk)"""
exc_type, exc, _ = err #
- if exc_type == TestSkipped:
+ if exc_type == SkipTest:
self.addSkipped(test, exc)
else:
if self.exitfirst:
@@ -378,6 +387,7 @@ class SkipAwareTestResult(unittest._TextTestResult):
def printErrors(self):
super(SkipAwareTestResult, self).printErrors()
+ # FIXME format of skipped results not compatible with unittest2
self.printSkippedList()
def printSkippedList(self):
@@ -440,11 +450,6 @@ unittest.TestSuite.run = run
# backward compatibility: TestSuite might be imported from lgc.testlib
TestSuite = unittest.TestSuite
-# python2.3 compat
-def __call__(self, *args, **kwds):
- return self.run(*args, **kwds)
-unittest.TestSuite.__call__ = __call__
-
class SkipAwareTextTestRunner(unittest.TextTestRunner):
@@ -853,9 +858,10 @@ Examples:
except Exception, exc:
print 'teardown_module error:', exc
sys.exit(1)
- if result.debuggers and self.pdbmode:
+ if getattr(result, "debuggers", None) and \
+ getattr(self, "pdbmode", None):
start_interactive_mode(result)
- if not self.batchmode:
+ if not getattr(self, "batchmode", None):
sys.exit(not result.wasSuccessful())
self.result = result
@@ -954,11 +960,9 @@ def unittest_main(module='__main__', defaultTest=None,
return SkipAwareTestProgram(module, defaultTest, batchmode,
cvg, options, outstream)
-class TestSkipped(Exception):
- """raised when a test is skipped"""
-
-class InnerTestSkipped(TestSkipped):
+class InnerTestSkipped(SkipTest):
"""raised when a test is skipped"""
+ pass
def is_generator(function):
flags = function.func_code.co_flags
@@ -1013,6 +1017,7 @@ class Tags(InheritableSet): # 2.4 compat
def match(self, exp):
return eval(exp, {}, self)
+
class TestCase(unittest.TestCase):
"""A unittest.TestCase extension with some additional methods."""
@@ -1020,6 +1025,15 @@ class TestCase(unittest.TestCase):
pdbclass = Debugger
tags = Tags()
+ # duplicate definition from unittest2 of the _deprecate decorator
+ def _deprecate(original_func):
+ def deprecated_func(*args, **kwargs):
+ warnings.warn(
+ ('Please use %s instead.' % original_func.__name__),
+ PendingDeprecationWarning, 2)
+ return original_func(*args, **kwargs)
+ return deprecated_func
+
def __init__(self, methodName='runTest'):
super(TestCase, self).__init__(methodName)
# internal API changed in python2.5
@@ -1028,7 +1042,8 @@ class TestCase(unittest.TestCase):
self.__testMethodName = self._testMethodName
else:
# let's give easier access to _testMethodName to every subclasses
- self._testMethodName = self.__testMethodName
+ if hasattr(self, "__testMethodName"):
+ self._testMethodName = self.__testMethodName
self._captured_stdout = ""
self._captured_stderr = ""
self._out = []
@@ -1062,7 +1077,7 @@ class TestCase(unittest.TestCase):
# override default's unittest.py feature
def shortDescription(self):
- """override default unitest shortDescription to handle correctly
+ """override default unittest shortDescription to handle correctly
generative tests
"""
if self._current_test_descr is not None:
@@ -1128,8 +1143,7 @@ class TestCase(unittest.TestCase):
def _get_test_method(self):
"""return the test method"""
- return getattr(self, self.__testMethodName)
-
+ return getattr(self, self._testMethodName)
def optval(self, option, default=None):
"""return the option value or default if the option is not define"""
@@ -1189,8 +1203,6 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
# result.cvg.stop()
result.stopTest(self)
-
-
def _proceed_generative(self, result, testfunc, runcondition=None):
# cancel startTest()'s increment
result.testsRun -= 1
@@ -1259,34 +1271,18 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
"""return a new instance of the defaultTestResult"""
return SkipAwareTestResult()
- def skip(self, msg=None):
- """mark a test as skipped for the <msg> reason"""
- msg = msg or 'test was skipped'
- raise TestSkipped(msg)
+ skip = _deprecate(unittest.TestCase.skipTest)
+ assertEquals = _deprecate(unittest.TestCase.assertEqual)
+ assertNotEquals = _deprecate(unittest.TestCase.assertNotEqual)
+ assertAlmostEquals = _deprecate(unittest.TestCase.assertAlmostEqual)
+ assertNotAlmostEquals = _deprecate(unittest.TestCase.assertNotAlmostEqual)
def innerSkip(self, msg=None):
"""mark a generative test as skipped for the <msg> reason"""
msg = msg or 'test was skipped'
raise InnerTestSkipped(msg)
- def assertIn(self, object, set, msg=None):
- """assert <object> is in <set>
-
- :param object: a Python Object
- :param set: a Python Container
- :param msg: custom message (String) in case of failure
- """
- self.assert_(object in set, msg or "%s not in %s" % (object, set))
-
- def assertNotIn(self, object, set, msg=None):
- """assert <object> is not in <set>
-
- :param object: a Python Object
- :param set: the Python container to contain <object>
- :param msg: custom message (String) in case of failure
- """
- self.assert_(object not in set, msg or "%s in %s" % (object, set))
-
+ @deprecated('Please use assertDictEqual instead.')
def assertDictEquals(self, dict1, dict2, msg=None):
"""compares two dicts
@@ -1312,8 +1308,8 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
self.failureException(msg)
elif msgs:
self.fail('\n'.join(msgs))
- assertDictEqual = assertDictEquals
+ @deprecated('Please use assertItemsEqual instead.')
def assertUnorderedIterableEquals(self, got, expected, msg=None):
"""compares two iterable and shows difference between both
@@ -1334,7 +1330,7 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
for element in expected:
expected_count[element] = expected_count.get(element,0) + 1
# we know that got_count.key() == expected_count.key()
- # because of assertSetEquals
+ # because of assertSetEqual
for element, count in got_count.iteritems():
other_count = expected_count[element]
if other_count != count:
@@ -1345,6 +1341,7 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
assertUnorderedIterableEqual = assertUnorderedIterableEquals
assertUnordIterEquals = assertUnordIterEqual = assertUnorderedIterableEqual
+ @deprecated('Please use assertSetEqual instead.')
def assertSetEquals(self,got,expected, msg=None):
"""compares two sets and shows difference between both
@@ -1370,9 +1367,7 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
for key, values in items.iteritems() if values)
self.fail(msg)
-
- assertSetEqual = assertSetEquals
-
+ @deprecated('Please use assertListEqual instead.')
def assertListEquals(self, list_1, list_2, msg=None):
"""compares two lists
@@ -1401,8 +1396,8 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
if msg is None:
msg = 'list_2 is lacking %r' % _l1
self.fail(msg)
- assertListEqual = assertListEquals
+ @deprecated('Non-standard. Please use assertMultiLineEqual instead.')
def assertLinesEquals(self, string1, string2, msg=None, striplines=False):
"""compare two strings and assert that the text lines of the strings
are equal.
@@ -1417,9 +1412,10 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
if striplines:
lines1 = [l.strip() for l in lines1]
lines2 = [l.strip() for l in lines2]
- self.assertListEquals(lines1, lines2, msg)
+ self.assertListEqual(lines1, lines2, msg)
assertLineEqual = assertLinesEquals
+ @deprecated('Non-standard')
def assertXMLWellFormed(self, stream, msg=None, context=2):
"""asserts the XML stream is well-formed (no DTD conformance check)
@@ -1444,6 +1440,7 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
msg = 'XML stream not well formed: %s\n%s%s' % (ex, line, pointer)
self.fail(msg)
+ @deprecated('Non-standard')
def assertXMLStringWellFormed(self, xml_string, msg=None, context=2):
"""asserts the XML string is well-formed (no DTD conformance check)
@@ -1500,7 +1497,7 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
msg = 'XML stream not well formed: %s\n%s' % (ex, rich_context)
self.fail(msg)
-
+ @deprecated('Non-standard')
def assertXMLEqualsTuple(self, element, tup):
"""compare an ElementTree Element to a tuple formatted as follow:
(tagname, [attrib[, children[, text[, tail]]]])"""
@@ -1511,7 +1508,7 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
if len(tup)<=1:
self.fail( "tuple %s has no attributes (%s expected)"%(tup,
dict(element.attrib)))
- self.assertDictEquals(element.attrib, tup[1])
+ self.assertDictEqual(element.attrib, tup[1])
# check children
if len(element) or len(tup)>2:
if len(tup)<=2:
@@ -1547,6 +1544,7 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
if not line.startswith(' '):
self.fail('\n'.join(['%s\n'%msg_prefix]+read + list(result)))
+ @deprecated('Non-standard. Please use assertMultiLineEqual instead.')
def assertTextEquals(self, text1, text2, junk=None,
msg_prefix='Text differ', striplines=False):
"""compare two multiline strings (using difflib and splitlines())
@@ -1572,6 +1570,7 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
self._difftext(lines1, lines2, junk, msg_prefix)
assertTextEqual = assertTextEquals
+ @deprecated('Non-standard')
def assertStreamEquals(self, stream1, stream2, junk=None,
msg_prefix='Stream differ'):
"""compare two streams (using difflib and readlines())"""
@@ -1587,13 +1586,16 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
msg_prefix)
assertStreamEqual = assertStreamEquals
+
+ @deprecated('Non-standard')
def assertFileEquals(self, fname1, fname2, junk=(' ', '\t')):
"""compares two files using difflib"""
self.assertStreamEqual(file(fname1), file(fname2), junk,
msg_prefix='Files differs\n-:%s\n+:%s\n'%(fname1, fname2))
- assertFileEqual = assertFileEquals
+ assertFileEqual = assertFileEquals
+ @deprecated('Non-standard')
def assertDirEquals(self, path_a, path_b):
"""compares two files using difflib"""
assert osp.exists(path_a), "%s doesn't exists" % path_a
@@ -1655,10 +1657,8 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
except StopIteration:
break
-
assertDirEqual = assertDirEquals
-
def assertIsInstance(self, obj, klass, msg=None, strict=False):
"""check if an object is an instance of a class
@@ -1668,6 +1668,9 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
:param strict: if True, check that the class of <obj> is <klass>;
else check with 'isinstance'
"""
+ if strict:
+ warnings.warn('[API] Non-standard. Strict parameter has vanished',
+ DeprecationWarning, stacklevel=2)
if msg is None:
if strict:
msg = '%r is not of class %s but of %s'
@@ -1679,24 +1682,7 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
else:
self.assert_(isinstance(obj, klass), msg)
- def assertIs(self, obj, other, msg=None):
- """compares identity of two reference
-
- :param obj: a Python Object
- :param other: another Python Object
- :param msg: a String for a custom message
- """
- if msg is None:
- msg = "%r is not %r"%(obj, other)
- self.assert_(obj is other, msg)
-
-
- def assertIsNot(self, obj, other, msg=None):
- """compares identity of two reference"""
- if msg is None:
- msg = "%r is %r"%(obj, other)
- self.assert_(obj is not other, msg )
-
+ @deprecated('Please use assertIsNone instead.')
def assertNone(self, obj, msg=None):
"""assert obj is None
@@ -1706,12 +1692,14 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
msg = "reference to %r when None expected"%(obj,)
self.assert_( obj is None, msg )
+ @deprecated('Please use assertIsNotNone instead.')
def assertNotNone(self, obj, msg=None):
"""assert obj is not None"""
if msg is None:
msg = "unexpected reference to None"
self.assert_( obj is not None, msg )
+ @deprecated('Non-standard. Please use assertAlmostEqual instead.')
def assertFloatAlmostEquals(self, obj, other, prec=1e-5, msg=None):
"""compares if two floats have a distance smaller than expected
precision.
@@ -1725,8 +1713,9 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
msg = "%r != %r" % (obj, other)
self.assert_(math.fabs(obj - other) < prec, msg)
+ #@deprecated('[API] Non-standard. Please consider using a context here')
def failUnlessRaises(self, excClass, callableObj, *args, **kwargs):
- """override default failUnlessRaise method to return the raised
+ """override default failUnlessRaises method to return the raised
exception instance.
Fail unless an exception of class excClass is thrown
@@ -1736,6 +1725,11 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
deemed to have suffered an error, exactly as for an
unexpected exception.
+ CAUTION! There are subtle differences between Logilab and unittest2
+ - exc is not returned in standard version
+ - context capabilities in standard version
+ - try/except/else construction (minor)
+
:param excClass: the Exception to be raised
:param callableObj: a callable Object which should raise <excClass>
:param args: a List of arguments for <callableObj>
@@ -1754,6 +1748,7 @@ succeeded test into", osp.join(os.getcwd(),FILE_RESTART)
assertRaises = failUnlessRaises
+
import doctest
class SkippedSuite(unittest.TestSuite):
@@ -1985,7 +1980,7 @@ def require_version(version):
if current < compare:
#print 'version too old'
def new_f(self, *args, **kwargs):
- self.skip('Need at least %s version of python. Current version is %s.' % (version, '.'.join([str(element) for element in current])))
+ self.skipTest('Need at least %s version of python. Current version is %s.' % (version, '.'.join([str(element) for element in current])))
new_f.__name__ = f.__name__
return new_f
else:
@@ -2004,7 +1999,7 @@ def require_module(module):
except ImportError:
#print module, 'can not be imported'
def new_f(self, *args, **kwargs):
- self.skip('%s can not be imported.' % module)
+ self.skipTest('%s can not be imported.' % module)
new_f.__name__ = f.__name__
return new_f
return check_require_module