Rev 5372: (jameinel) Handle [:digit:] globbing tests better for python2.7 (Martin [gz]) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Sat Aug 7 17:42:15 BST 2010
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 5372 [merge]
revision-id: pqm at pqm.ubuntu.com-20100807164209-65oitxejsx27if31
parent: pqm at pqm.ubuntu.com-20100806221134-i0gwvzn5qyyxftno
parent: gzlist at googlemail.com-20100806160236-hez2domtkhiwawe8
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Sat 2010-08-07 17:42:09 +0100
message:
(jameinel) Handle [:digit:] globbing tests better for python2.7 (Martin [gz])
modified:
bzrlib/tests/TestUtil.py TestUtil.py-20050824080200-5f70140a2d938694
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/test_globbing.py test_glob.py-20061113075651-q63o2v35fm2ydk9x-2
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
=== modified file 'bzrlib/tests/TestUtil.py'
--- a/bzrlib/tests/TestUtil.py 2010-02-17 17:11:16 +0000
+++ b/bzrlib/tests/TestUtil.py 2010-08-05 18:13:23 +0000
@@ -135,7 +135,13 @@
>>> result.addTests([test, test])
>>> return result
"""
- basic_tests = super(TestLoader, self).loadTestsFromModule(module)
+ if sys.version_info < (2, 7):
+ basic_tests = super(TestLoader, self).loadTestsFromModule(module)
+ else:
+ # GZ 2010-07-19: Python 2.7 unittest also uses load_tests but with
+ # a different and incompatible signature
+ basic_tests = super(TestLoader, self).loadTestsFromModule(module,
+ use_load_tests=False)
load_tests = getattr(module, "load_tests", None)
if load_tests is not None:
return load_tests(basic_tests, module, self)
=== modified file 'bzrlib/tests/__init__.py'
--- a/bzrlib/tests/__init__.py 2010-08-05 05:41:34 +0000
+++ b/bzrlib/tests/__init__.py 2010-08-07 16:42:09 +0000
@@ -141,7 +141,7 @@
SUBUNIT_SEEK_CUR = 1
-class ExtendedTestResult(unittest._TextTestResult):
+class ExtendedTestResult(testtools.TextTestResult):
"""Accepts, reports and accumulates the results of running tests.
Compared to the unittest version this class adds support for
@@ -168,7 +168,7 @@
:param bench_history: Optionally, a writable file object to accumulate
benchmark results.
"""
- unittest._TextTestResult.__init__(self, stream, descriptions, verbosity)
+ testtools.TextTestResult.__init__(self, stream)
if bench_history is not None:
from bzrlib.version import _get_bzr_source_tree
src_tree = _get_bzr_source_tree()
@@ -201,11 +201,13 @@
actionTaken = "Ran"
stopTime = time.time()
timeTaken = stopTime - self.startTime
- self.printErrors()
- self.stream.writeln(self.separator2)
- self.stream.writeln("%s %d test%s in %.3fs" % (actionTaken,
+ # GZ 2010-07-19: Seems testtools has no printErrors method, and though
+ # the parent class method is similar have to duplicate
+ self._show_list('ERROR', self.errors)
+ self._show_list('FAIL', self.failures)
+ self.stream.write(self.sep2)
+ self.stream.write("%s %d test%s in %.3fs\n\n" % (actionTaken,
run, run != 1 and "s" or "", timeTaken))
- self.stream.writeln()
if not self.wasSuccessful():
self.stream.write("FAILED (")
failed, errored = map(len, (self.failures, self.errors))
@@ -218,20 +220,20 @@
if failed or errored: self.stream.write(", ")
self.stream.write("known_failure_count=%d" %
self.known_failure_count)
- self.stream.writeln(")")
+ self.stream.write(")\n")
else:
if self.known_failure_count:
- self.stream.writeln("OK (known_failures=%d)" %
+ self.stream.write("OK (known_failures=%d)\n" %
self.known_failure_count)
else:
- self.stream.writeln("OK")
+ self.stream.write("OK\n")
if self.skip_count > 0:
skipped = self.skip_count
- self.stream.writeln('%d test%s skipped' %
+ self.stream.write('%d test%s skipped\n' %
(skipped, skipped != 1 and "s" or ""))
if self.unsupported:
for feature, count in sorted(self.unsupported.items()):
- self.stream.writeln("Missing feature '%s' skipped %d tests." %
+ self.stream.write("Missing feature '%s' skipped %d tests.\n" %
(feature, count))
if self._strict:
ok = self.wasStrictlySuccessful()
@@ -279,7 +281,7 @@
return what
def startTest(self, test):
- unittest.TestResult.startTest(self, test)
+ super(ExtendedTestResult, self).startTest(test)
if self.count == 0:
self.startTests()
self.report_test_start(test)
@@ -323,7 +325,7 @@
fails with an unexpected error.
"""
self._post_mortem()
- unittest.TestResult.addError(self, test, err)
+ super(ExtendedTestResult, self).addError(test, err)
self.error_count += 1
self.report_error(test, err)
if self.stop_early:
@@ -337,7 +339,7 @@
fails because e.g. an assert() method failed.
"""
self._post_mortem()
- unittest.TestResult.addFailure(self, test, err)
+ super(ExtendedTestResult, self).addFailure(test, err)
self.failure_count += 1
self.report_failure(test, err)
if self.stop_early:
@@ -357,7 +359,7 @@
test.id()))
self.report_success(test)
self._cleanupLogFile(test)
- unittest.TestResult.addSuccess(self, test)
+ super(ExtendedTestResult, self).addSuccess(test)
test._log_contents = ''
def addExpectedFailure(self, test, err):
@@ -551,40 +553,40 @@
return '%s%s' % (indent, err[1])
def report_error(self, test, err):
- self.stream.writeln('ERROR %s\n%s'
+ self.stream.write('ERROR %s\n%s\n'
% (self._testTimeString(test),
self._error_summary(err)))
def report_failure(self, test, err):
- self.stream.writeln(' FAIL %s\n%s'
+ self.stream.write(' FAIL %s\n%s\n'
% (self._testTimeString(test),
self._error_summary(err)))
def report_known_failure(self, test, err):
- self.stream.writeln('XFAIL %s\n%s'
+ self.stream.write('XFAIL %s\n%s\n'
% (self._testTimeString(test),
self._error_summary(err)))
def report_success(self, test):
- self.stream.writeln(' OK %s' % self._testTimeString(test))
+ self.stream.write(' OK %s\n' % self._testTimeString(test))
for bench_called, stats in getattr(test, '_benchcalls', []):
- self.stream.writeln('LSProf output for %s(%s, %s)' % bench_called)
+ self.stream.write('LSProf output for %s(%s, %s)\n' % bench_called)
stats.pprint(file=self.stream)
# flush the stream so that we get smooth output. This verbose mode is
# used to show the output in PQM.
self.stream.flush()
def report_skip(self, test, reason):
- self.stream.writeln(' SKIP %s\n%s'
+ self.stream.write(' SKIP %s\n%s\n'
% (self._testTimeString(test), reason))
def report_not_applicable(self, test, reason):
- self.stream.writeln(' N/A %s\n %s'
+ self.stream.write(' N/A %s\n %s\n'
% (self._testTimeString(test), reason))
def report_unsupported(self, test, feature):
"""test cannot be run because feature is missing."""
- self.stream.writeln("NODEP %s\n The feature '%s' is not available."
+ self.stream.write("NODEP %s\n The feature '%s' is not available.\n"
%(self._testTimeString(test), feature))
@@ -619,7 +621,7 @@
encode = codec.encode
stream = osutils.UnicodeOrBytesToBytesWriter(encode, stream)
stream.encoding = new_encoding
- self.stream = unittest._WritelnDecorator(stream)
+ self.stream = stream
self.descriptions = descriptions
self.verbosity = verbosity
self._bench_history = bench_history
=== modified file 'bzrlib/tests/test_globbing.py'
--- a/bzrlib/tests/test_globbing.py 2010-07-19 14:25:37 +0000
+++ b/bzrlib/tests/test_globbing.py 2010-08-07 16:42:09 +0000
@@ -55,14 +55,16 @@
def test_char_group_digit(self):
self.assertMatchBasenameAndFullpath([
# The definition of digit this uses includes arabic digits from
- # non-latin scripts (arabic, indic, etc.) and subscript/superscript
- # digits, but neither roman numerals nor vulgar fractions.
+ # non-latin scripts (arabic, indic, etc.) but neither roman
+ # numerals nor vulgar fractions. Some characters such as
+ # subscript/superscript digits may or may not match depending on
+ # the Python version used, see: <http://bugs.python.org/issue6561>
(u'[[:digit:]]',
- [u'0', u'5', u'\u0663', u'\u06f9', u'\u0f21', u'\xb9'],
+ [u'0', u'5', u'\u0663', u'\u06f9', u'\u0f21'],
[u'T', u'q', u' ', u'\u8336', u'.']),
(u'[^[:digit:]]',
[u'T', u'q', u' ', u'\u8336', u'.'],
- [u'0', u'5', u'\u0663', u'\u06f9', u'\u0f21', u'\xb9']),
+ [u'0', u'5', u'\u0663', u'\u06f9', u'\u0f21']),
])
def test_char_group_space(self):
=== modified file 'bzrlib/tests/test_selftest.py'
--- a/bzrlib/tests/test_selftest.py 2010-07-23 18:45:31 +0000
+++ b/bzrlib/tests/test_selftest.py 2010-08-07 16:42:09 +0000
@@ -801,7 +801,7 @@
self.requireFeature(test_lsprof.LSProfFeature)
result_stream = StringIO()
result = bzrlib.tests.VerboseTestResult(
- unittest._WritelnDecorator(result_stream),
+ result_stream,
descriptions=0,
verbosity=2,
)
@@ -862,7 +862,7 @@
# verbose test output formatting
result_stream = StringIO()
result = bzrlib.tests.VerboseTestResult(
- unittest._WritelnDecorator(result_stream),
+ result_stream,
descriptions=0,
verbosity=2,
)
@@ -878,6 +878,9 @@
output = result_stream.getvalue()[prefix:]
lines = output.splitlines()
self.assertContainsRe(lines[0], r'XFAIL *\d+ms$')
+ if sys.version_info > (2, 7):
+ self.expectFailure("_ExpectedFailure on 2.7 loses the message",
+ self.assertNotEqual, lines[1], ' ')
self.assertEqual(lines[1], ' foo')
self.assertEqual(2, len(lines))
@@ -917,7 +920,7 @@
# verbose test output formatting
result_stream = StringIO()
result = bzrlib.tests.VerboseTestResult(
- unittest._WritelnDecorator(result_stream),
+ result_stream,
descriptions=0,
verbosity=2,
)
@@ -1419,7 +1422,7 @@
sample_test = TestTestCase("method_that_times_a_bit_twice")
output_stream = StringIO()
result = bzrlib.tests.VerboseTestResult(
- unittest._WritelnDecorator(output_stream),
+ output_stream,
descriptions=0,
verbosity=2)
sample_test.run(result)
More information about the bazaar-commits
mailing list