Python 3 failures in trunk

Bug #816709 reported by Jonathan Lange
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
testtools
Fix Released
Critical
Jonathan Lange

Bug Description

Depends on having lp:~jml/python-fixtures/misc-fixes (for fixtures Python 3 compat), latest lp:subunit (for subunit Python 3 compat) and lp:~jml/testtools/reraise merged into lp:~jml/testtools/build-scripts (reraise for fixtures compat, build-scripts for best cross-Python support).

$ PYTHONPATH=~/src/subunit/trunk/python/:~/src/python-fixtures/misc-fixes/lib:$PYTHONPATH python scripts/all-pythons |testr load
======================================================================
ERROR: testtools.tests.test_distutilscmd.TestCommandTest.test_test_module
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jml/src/testtools/build-scripts/testtools/runtest.py", line 169, in _run_user
    return fn(*args, **kwargs)
  File "/home/jml/src/testtools/build-scripts/testtools/testcase.py", line 569, in _run_test_method
    return self._get_test_method()()
  File "/home/jml/src/testtools/build-scripts/testtools/tests/test_distutilscmd.py", line 50, in test_test_module
    self.useFixture(SampleTestFixture())
  File "/home/jml/src/testtools/build-scripts/testtools/testcase.py", line 581, in useFixture
    fixture.setUp()
  File "/home/jml/src/testtools/build-scripts/testtools/tests/test_distutilscmd.py", line 37, in setUp
    self.useFixture(self.package)
  File "/home/jml/src/python-fixtures/misc-fixes/lib/fixtures/fixture.py", line 198, in useFixture
    fixture.setUp()
  File "/home/jml/src/python-fixtures/misc-fixes/lib/fixtures/_fixtures/pythonpackage.py", line 60, in setUp
    stream.write(contents)
TypeError: 'str' does not support the buffer interface
======================================================================
ERROR: testtools.tests.test_distutilscmd.TestCommandTest.test_test_suite
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jml/src/testtools/build-scripts/testtools/runtest.py", line 169, in _run_user
    return fn(*args, **kwargs)
  File "/home/jml/src/testtools/build-scripts/testtools/testcase.py", line 569, in _run_test_method
    return self._get_test_method()()
  File "/home/jml/src/testtools/build-scripts/testtools/tests/test_distutilscmd.py", line 68, in test_test_suite
    self.useFixture(SampleTestFixture())
  File "/home/jml/src/testtools/build-scripts/testtools/testcase.py", line 581, in useFixture
    fixture.setUp()
  File "/home/jml/src/testtools/build-scripts/testtools/tests/test_distutilscmd.py", line 37, in setUp
    self.useFixture(self.package)
  File "/home/jml/src/python-fixtures/misc-fixes/lib/fixtures/fixture.py", line 198, in useFixture
    fixture.setUp()
  File "/home/jml/src/python-fixtures/misc-fixes/lib/fixtures/_fixtures/pythonpackage.py", line 60, in setUp
    stream.write(contents)
TypeError: 'str' does not support the buffer interface
======================================================================
ERROR: testtools.tests.test_fixturesupport.TestFixtureSupport.test_useFixture_details_captured
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jml/src/testtools/build-scripts/testtools/runtest.py", line 169, in _run_user
    return fn(*args, **kwargs)
  File "/home/jml/src/testtools/build-scripts/testtools/testcase.py", line 569, in _run_test_method
    return self._get_test_method()()
  File "/home/jml/src/testtools/build-scripts/testtools/tests/test_fixturesupport.py", line 72, in test_useFixture_details_captured
    self.assertEqual('foo', ''.join(details['content'].iter_text()))
  File "/home/jml/src/testtools/build-scripts/testtools/content.py", line 90, in _iter_text
    yield decoder.decode(bytes)
  File "/usr/lib/python3.2/codecs.py", line 299, in decode
    data = self.buffer + input
TypeError: can't concat bytes to str
======================================================================
FAIL: testtools.tests.test_matchers.TestMatchesExceptionTypeReInterface.test_describe_difference
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jml/src/testtools/build-scripts/testtools/runtest.py", line 169, in _run_user
    return fn(*args, **kwargs)
  File "/home/jml/src/testtools/build-scripts/testtools/testcase.py", line 569, in _run_test_method
    return self._get_test_method()()
  File "/home/jml/src/testtools/build-scripts/testtools/tests/test_matchers.py", line 88, in test_describe_difference
    self.assertEqual(difference, mismatch.describe())
  File "/home/jml/src/testtools/build-scripts/testtools/testcase.py", line 308, in assertEqual
    self.assertThat(observed, matcher)
  File "/home/jml/src/testtools/build-scripts/testtools/testcase.py", line 415, in assertThat
    self.fail(message)
AssertionError: !=:
reference = "'bar' does not match 'fo.': after <type 'str'> on ValueError('bar',)"
actual = "'bar' does not match 'fo.': after <class 'str'> on ValueError('bar',)"
======================================================================
ERROR: testtools.tests.test_run.TestRun.test_run_list
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jml/src/testtools/build-scripts/testtools/runtest.py", line 169, in _run_user
    return fn(*args, **kwargs)
  File "/home/jml/src/testtools/build-scripts/testtools/testcase.py", line 569, in _run_test_method
    return self._get_test_method()()
  File "/home/jml/src/testtools/build-scripts/testtools/tests/test_run.py", line 44, in test_run_list
    self.useFixture(SampleTestFixture())
  File "/home/jml/src/testtools/build-scripts/testtools/testcase.py", line 581, in useFixture
    fixture.setUp()
  File "/home/jml/src/testtools/build-scripts/testtools/tests/test_run.py", line 34, in setUp
    self.useFixture(self.package)
  File "/home/jml/src/python-fixtures/misc-fixes/lib/fixtures/fixture.py", line 198, in useFixture
    fixture.setUp()
  File "/home/jml/src/python-fixtures/misc-fixes/lib/fixtures/_fixtures/pythonpackage.py", line 60, in setUp
    stream.write(contents)
TypeError: 'str' does not support the buffer interface
======================================================================
ERROR: testtools.tests.test_run.TestRun.test_run_load_list
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jml/src/testtools/build-scripts/testtools/runtest.py", line 169, in _run_user
    return fn(*args, **kwargs)
  File "/home/jml/src/testtools/build-scripts/testtools/testcase.py", line 569, in _run_test_method
    return self._get_test_method()()
  File "/home/jml/src/testtools/build-scripts/testtools/tests/test_run.py", line 54, in test_run_load_list
    self.useFixture(SampleTestFixture())
  File "/home/jml/src/testtools/build-scripts/testtools/testcase.py", line 581, in useFixture
    fixture.setUp()
  File "/home/jml/src/testtools/build-scripts/testtools/tests/test_run.py", line 34, in setUp
    self.useFixture(self.package)
  File "/home/jml/src/python-fixtures/misc-fixes/lib/fixtures/fixture.py", line 198, in useFixture
    fixture.setUp()
  File "/home/jml/src/python-fixtures/misc-fixes/lib/fixtures/_fixtures/pythonpackage.py", line 60, in setUp
    stream.write(contents)
TypeError: 'str' does not support the buffer interface
======================================================================
ERROR: testtools.tests.test_testcase.TestDetailsProvided.test_addDetail
----------------------------------------------------------------------
_StringException: lost connection during success report of test 'testtools.tests.test_testcase.TestDetailsProvided.test_addDetail'

Related branches

Jonathan Lange (jml)
Changed in testtools:
status: Triaged → In Progress
Revision history for this message
Jonathan Lange (jml) wrote :

This error::

======================================================================
ERROR: testtools.tests.test_testcase.TestDetailsProvided.test_addDetail
----------------------------------------------------------------------
_StringException: lost connection during success report of test 'testtools.tests.test_testcase.TestDetailsProvided.test_addDetail'

was because the subunit stream was corrupted, which was in turn because a test was adding content with strings rather than bytes.

Fixed by this::

=== modified file 'testtools/tests/test_testcase.py'
--- a/testtools/tests/test_testcase.py 2011-07-21 09:39:52 +0000
+++ b/testtools/tests/test_testcase.py 2011-07-26 23:48:11 +0000
@@ -18,6 +18,7 @@
     skipUnless,
     testcase,
     )
+from testtools.compat import _b
 from testtools.matchers import (
     Equals,
     MatchesException,
@@ -714,7 +715,7 @@

     def get_content(self):
         return content.Content(
- content.ContentType("text", "foo"), lambda: ['foo'])
+ content.ContentType("text", "foo"), lambda: [_b('foo')])

 class TestExpectedFailure(TestWithDetails):

Note that when running the tests with testtools.run everything looked fine. I find that worrying.

Jonathan Lange (jml)
Changed in testtools:
status: In Progress → Fix Committed
Jonathan Lange (jml)
Changed in testtools:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.