diff options
author | Julien Jehannet <julien.jehannet@logilab.fr> | 2010-09-22 11:00:57 +0200 |
---|---|---|
committer | Julien Jehannet <julien.jehannet@logilab.fr> | 2010-09-22 11:00:57 +0200 |
commit | 1ca37b55f874d3df6f97a006c8690b985a86c00b (patch) | |
tree | 6ffb2167d25f13accb8ddb95df379e052b7fe13b | |
parent | 80be77a74f1431354188e2de71e1ef878f110a7f (diff) | |
download | logilab-common-1ca37b55f874d3df6f97a006c8690b985a86c00b.tar.gz |
[unittest2] make standard import under py3.x (skip unittest2 support from here)
-rw-r--r-- | __pkginfo__.py | 3 | ||||
-rw-r--r-- | debian/control | 4 | ||||
-rw-r--r-- | pytest.py | 2 | ||||
-rw-r--r-- | test/unittest_cache.py | 26 | ||||
-rw-r--r-- | test/unittest_compat.py | 94 | ||||
-rw-r--r-- | test/unittest_configuration.py | 115 | ||||
-rw-r--r-- | test/unittest_date.py | 28 | ||||
-rw-r--r-- | test/unittest_decorators.py | 14 | ||||
-rw-r--r-- | test/unittest_graph.py | 8 | ||||
-rw-r--r-- | test/unittest_html.py | 2 | ||||
-rw-r--r-- | test/unittest_interface.py | 26 | ||||
-rw-r--r-- | test/unittest_modutils.py | 10 | ||||
-rw-r--r-- | test/unittest_shellutils.py | 44 | ||||
-rw-r--r-- | test/unittest_table.py | 168 | ||||
-rw-r--r-- | test/unittest_taskqueue.py | 32 | ||||
-rw-r--r-- | test/unittest_testlib.py | 244 | ||||
-rw-r--r-- | test/unittest_textutils.py | 62 | ||||
-rw-r--r-- | test/unittest_umessage.py | 14 | ||||
-rw-r--r-- | test/unittest_xmlutils.py | 10 | ||||
-rw-r--r-- | test/utils.py | 2 | ||||
-rw-r--r-- | testlib.py | 145 |
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 @@ -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 @@ -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 |