Hello community,

here is the log from the commit of package python3-testtools for 
openSUSE:Factory checked in at 2015-11-17 14:23:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-testtools (Old)
 and      /work/SRC/openSUSE:Factory/.python3-testtools.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python3-testtools"

Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-testtools/python3-testtools.changes      
2015-10-28 17:30:40.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-testtools.new/python3-testtools.changes 
2015-11-17 14:23:01.000000000 +0100
@@ -1,0 +2,9 @@
+Sat Nov 14 20:37:13 UTC 2015 - [email protected]
+
+- update to version 1.8.1:
+  * Documented more explicitly how to build and install testtools in
+    the hacking documentation. (Thomi Richards)
+  * "deferredruntest" now works with Twisted 15.1.0 and later.  (Colin
+    Watson, #1488710)
+
+-------------------------------------------------------------------

Old:
----
  testtools-1.8.0.tar.gz

New:
----
  testtools-1.8.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python3-testtools.spec ++++++
--- /var/tmp/diff_new_pack.Dii5X3/_old  2015-11-17 14:23:02.000000000 +0100
+++ /var/tmp/diff_new_pack.Dii5X3/_new  2015-11-17 14:23:02.000000000 +0100
@@ -20,7 +20,7 @@
 # enable testing with a build conditional (off by default):
 
 Name:           python3-testtools
-Version:        1.8.0
+Version:        1.8.1
 Release:        0
 Summary:        Extensions to the Python Standard Library Unit Testing 
Framework
 License:        MIT

++++++ testtools-1.8.0.tar.gz -> testtools-1.8.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/testtools-1.8.0/.travis.yml 
new/testtools-1.8.1/.travis.yml
--- old/testtools-1.8.0/.travis.yml     2015-03-11 02:13:24.000000000 +0100
+++ new/testtools-1.8.1/.travis.yml     2015-11-13 11:33:14.000000000 +0100
@@ -9,21 +9,35 @@
 
 # We have to pin Jinja2 < 2.7  for Python 3.2 because 2.7 drops/breaks support:
 # http://jinja.pocoo.org/docs/changelog/#version-2-7
-# And Spinx to < 1.3 for pypy3 and python 3.2 similarly.
+# And Sphinx to < 1.3 for pypy3 and python 3.2 similarly.
 #
 # See also:
 # http://stackoverflow.com/questions/18252804/syntax-error-in-jinja-2-library
+#
+# Twisted tests currently only work on Python 2.
 matrix:
   include:
+    - python: "2.6"
+      env: TWISTED_REQ="Twisted==13.0.0"
+    - python: "2.6"
+      env: TWISTED_REQ="Twisted"
+    - python: "2.7"
+      env: TWISTED_REQ="Twisted==13.0.0"
+    - python: "2.7"
+      env: TWISTED_REQ="Twisted"
     - python: "3.2"
       env:
         - JINJA_REQ="jinja2<2.7, Pygments<2.0"
         - SPHINX="<1.3"
+    - python: "pypy"
+      env: TWISTED_REQ="Twisted==13.0.0"
+    - python: "pypy"
+      env: TWISTED_REQ="Twisted"
     - python: "pypy3"
       env: SPHINX="<1.3"
 
 install:
-  - pip install fixtures $JINJA_REQ sphinx$SPHINX
+  - pip install fixtures $JINJA_REQ sphinx$SPHINX $TWISTED_REQ
   - python setup.py install
 
 script:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/testtools-1.8.0/AUTHORS new/testtools-1.8.1/AUTHORS
--- old/testtools-1.8.0/AUTHORS 2015-05-05 01:50:03.000000000 +0200
+++ new/testtools-1.8.1/AUTHORS 2015-11-13 17:17:18.000000000 +0100
@@ -24,6 +24,7 @@
 Jonathan Lange <[email protected]>
 Jonathan Lange <[email protected]>
 Kui Shi <[email protected]>
+Leo Arias <[email protected]>
 Martin <[email protected]>
 Martin Packman <[email protected]>
 Martin Pool <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/testtools-1.8.0/ChangeLog 
new/testtools-1.8.1/ChangeLog
--- old/testtools-1.8.0/ChangeLog       2015-05-05 01:50:03.000000000 +0200
+++ new/testtools-1.8.1/ChangeLog       2015-11-13 17:17:18.000000000 +0100
@@ -1,6 +1,30 @@
 CHANGES
 =======
 
+1.8.1
+-----
+
+* Update NEWS for 1.8.1
+* Remove VWS
+* Update PlaceHolder indentation
+* Restore & deprecate domap
+* Spell out `f` and `xs`
+* Drop `__metaclass__` declaration
+* Document confusing `domap`
+* Remove duplicate implementation of method
+* Allow event_log to be passed to result doubles
+* Fix lint in testresult.real
+* Lint clear-up
+* Uncap test matrix entries for modern Twisted
+* Fix Travis matrix.include
+* Only run Twisted tests on Python 2
+* Test with Twisted 13.0.0/15.2.0
+* Port twisted.deferredruntest to Twisted >= 15.1.0
+* Update hacking documentation
+* Fix tests with unittest2 1.1.0 and higher
+* Programmatically declare test dependencies
+* Fix the call to the parent setup
+
 1.8.0
 -----
 
@@ -253,7 +277,7 @@
 * Adds a CopyStreamResult which copies StreamResult events to multiple outputs
 * Adds a recording StreamResult for writing tests with
 * This defines a new sort of TestResult, StreamResult
-* Add a helper for decorating the result object given to ``case.(__call__/run
+* Add a helper for decorating the result object given to 
``case.(__call__/run)`` - DecorateTestCaseResult
 * Add support for timestamp events to Placeholder objects
 * Placeholder couldn't hold tags, which limits its use
 * The error message for setUp and tearDown upcall errors was broken on Python 
3.4. (Monty Taylor, Robert Collins, #1140688)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/testtools-1.8.0/NEWS new/testtools-1.8.1/NEWS
--- old/testtools-1.8.0/NEWS    2015-05-05 01:49:16.000000000 +0200
+++ new/testtools-1.8.1/NEWS    2015-11-13 15:48:57.000000000 +0100
@@ -4,8 +4,17 @@
 Changes and improvements to testtools_, grouped by release.
 
 
-NEXT
-~~~~
+1.8.1
+~~~~~
+
+Improvements
+------------
+
+* Documented more explicitly how to build and install testtools in the hacking
+  documentation. (Thomi Richards)
+
+* ``deferredruntest`` now works with Twisted 15.1.0 and later.
+  (Colin Watson, #1488710)
 
 1.8.0
 ~~~~~
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/testtools-1.8.0/PKG-INFO new/testtools-1.8.1/PKG-INFO
--- old/testtools-1.8.0/PKG-INFO        2015-05-05 01:50:03.000000000 +0200
+++ new/testtools-1.8.1/PKG-INFO        2015-11-13 17:17:18.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: testtools
-Version: 1.8.0
+Version: 1.8.1
 Summary: Extensions to the Python standard library unit testing framework
 Home-page: https://github.com/testing-cabal/testtools
 Author: Jonathan M. Lange
@@ -27,7 +27,7 @@
           class TestSillySquareServer(TestCase):
         
               def setUp(self):
-                  super(TestSillySquare, self).setUp()
+                  super(TestSillySquareServer, self).setUp()
                   self.server = self.useFixture(SillySquareServer())
                   self.addCleanup(self.attach_log_file)
         
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/testtools-1.8.0/doc/hacking.rst 
new/testtools-1.8.1/doc/hacking.rst
--- old/testtools-1.8.0/doc/hacking.rst 2015-05-05 00:34:09.000000000 +0200
+++ new/testtools-1.8.1/doc/hacking.rst 2015-11-02 22:17:32.000000000 +0100
@@ -39,6 +39,20 @@
 uses, so that testtools can ship it.
 
 
+Building
+--------
+
+Building and installing testtools requires a reasonably recent version of pip.
+At the time of writing, pip version 7.1.0 (which is bundled with virtualenv
+13.1.0) is a good choice. To install testtools from source and all its test
+dependencies, install the ``test`` extra::
+
+  pip install -e .[test]
+
+Installing via ``python setup.py install`` may not work, due to issues with
+easy_install.
+
+
 Testing
 -------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/testtools-1.8.0/doc/overview.rst 
new/testtools-1.8.1/doc/overview.rst
--- old/testtools-1.8.0/doc/overview.rst        2014-08-21 19:20:07.000000000 
+0200
+++ new/testtools-1.8.1/doc/overview.rst        2015-11-02 22:17:32.000000000 
+0100
@@ -19,7 +19,7 @@
   class TestSillySquareServer(TestCase):
 
       def setUp(self):
-          super(TestSillySquare, self).setUp()
+          super(TestSillySquareServer, self).setUp()
           self.server = self.useFixture(SillySquareServer())
           self.addCleanup(self.attach_log_file)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/testtools-1.8.0/setup.cfg 
new/testtools-1.8.1/setup.cfg
--- old/testtools-1.8.0/setup.cfg       2015-05-05 01:50:03.000000000 +0200
+++ new/testtools-1.8.1/setup.cfg       2015-11-13 17:17:18.000000000 +0100
@@ -9,6 +9,11 @@
        License :: OSI Approved :: MIT License
        Programming Language :: Python :: 3
 
+[extras]
+test = 
+       fixtures
+       unittest2>=1.1.0
+
 [files]
 packages = testtools
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/testtools-1.8.0/testtools/deferredruntest.py 
new/testtools-1.8.1/testtools/deferredruntest.py
--- old/testtools-1.8.0/testtools/deferredruntest.py    2015-05-05 
00:25:07.000000000 +0200
+++ new/testtools-1.8.1/testtools/deferredruntest.py    2015-11-02 
22:17:32.000000000 +0100
@@ -27,8 +27,15 @@
     )
 
 from twisted.internet import defer
+try:
+    from twisted.logger import globalLogPublisher
+except ImportError:
+    globalLogPublisher = None
 from twisted.python import log
-from twisted.trial.unittest import _LogObserver
+try:
+    from twisted.trial.unittest import _LogObserver
+except ImportError:
+    from twisted.trial._synctest import _LogObserver
 
 
 class _DeferredRunTest(RunTest):
@@ -53,9 +60,21 @@
 
 def run_with_log_observers(observers, function, *args, **kwargs):
     """Run 'function' with the given Twisted log observers."""
-    real_observers = list(log.theLogPublisher.observers)
+    if globalLogPublisher is not None:
+        # Twisted >= 15.2.0, with the new twisted.logger framework.
+        # log.theLogPublisher.observers will only contain legacy observers;
+        # we need to look at globalLogPublisher._observers, which contains
+        # both legacy and modern observers, and add and remove them via
+        # globalLogPublisher.  However, we must still add and remove the
+        # observers we want to run with via log.theLogPublisher, because
+        # _LogObserver may consider old keys and require them to be mapped.
+        publisher = globalLogPublisher
+        real_observers = list(publisher._observers)
+    else:
+        publisher = log.theLogPublisher
+        real_observers = list(publisher.observers)
     for observer in real_observers:
-        log.theLogPublisher.removeObserver(observer)
+        publisher.removeObserver(observer)
     for observer in observers:
         log.theLogPublisher.addObserver(observer)
     try:
@@ -64,7 +83,7 @@
         for observer in observers:
             log.theLogPublisher.removeObserver(observer)
         for observer in real_observers:
-            log.theLogPublisher.addObserver(observer)
+            publisher.addObserver(observer)
 
 
 # Observer of the Twisted log that we install during tests.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/testtools-1.8.0/testtools/testresult/doubles.py 
new/testtools-1.8.1/testtools/testresult/doubles.py
--- old/testtools-1.8.0/testtools/testresult/doubles.py 2013-03-08 
13:12:34.000000000 +0100
+++ new/testtools-1.8.1/testtools/testresult/doubles.py 2015-11-09 
14:23:54.000000000 +0100
@@ -1,4 +1,4 @@
-# Copyright (c) 2009-2010 testtools developers. See LICENSE for details.
+# Copyright (c) 2009-2015 testtools developers. See LICENSE for details.
 
 """Doubles of test result objects, useful for testing unittest code."""
 
@@ -16,8 +16,10 @@
 class LoggingBase(object):
     """Basic support for logging of results."""
 
-    def __init__(self):
-        self._events = []
+    def __init__(self, event_log=None):
+        if event_log is None:
+            event_log = []
+        self._events = event_log
         self.shouldStop = False
         self._was_successful = True
         self.testsRun = 0
@@ -54,8 +56,8 @@
 class Python27TestResult(Python26TestResult):
     """A precisely python 2.7 like test result, that logs."""
 
-    def __init__(self):
-        super(Python27TestResult, self).__init__()
+    def __init__(self, event_log=None):
+        super(Python27TestResult, self).__init__(event_log)
         self.failfast = False
 
     def addError(self, test, err):
@@ -89,8 +91,8 @@
 class ExtendedTestResult(Python27TestResult):
     """A test result like the proposed extended unittest result API."""
 
-    def __init__(self):
-        super(ExtendedTestResult, self).__init__()
+    def __init__(self, event_log=None):
+        super(ExtendedTestResult, self).__init__(event_log)
         self._tags = TagContext()
 
     def addError(self, test, err=None, details=None):
@@ -157,8 +159,10 @@
     All events are logged to _events.
     """
 
-    def __init__(self):
-        self._events = []
+    def __init__(self, event_log=None):
+        if event_log is None:
+            event_log = []
+        self._events = event_log
 
     def startTestRun(self):
         self._events.append(('startTestRun',))
@@ -167,8 +171,9 @@
         self._events.append(('stopTestRun',))
 
     def status(self, test_id=None, test_status=None, test_tags=None,
-        runnable=True, file_name=None, file_bytes=None, eof=False,
-        mime_type=None, route_code=None, timestamp=None):
-        self._events.append(('status', test_id, test_status, test_tags,
-            runnable, file_name, file_bytes, eof, mime_type, route_code,
-            timestamp))
+               runnable=True, file_name=None, file_bytes=None, eof=False,
+               mime_type=None, route_code=None, timestamp=None):
+        self._events.append(
+            ('status', test_id, test_status, test_tags,
+             runnable, file_name, file_bytes, eof, mime_type, route_code,
+             timestamp))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/testtools-1.8.0/testtools/testresult/real.py 
new/testtools-1.8.1/testtools/testresult/real.py
--- old/testtools-1.8.0/testtools/testresult/real.py    2015-03-11 
01:03:38.000000000 +0100
+++ new/testtools-1.8.1/testtools/testresult/real.py    2015-11-13 
11:33:14.000000000 +0100
@@ -1,8 +1,7 @@
-# Copyright (c) 2008-2012 testtools developers. See LICENSE for details.
+# Copyright (c) 2008-2015 testtools developers. See LICENSE for details.
 
 """Test results and related things."""
 
-__metaclass__ = type
 __all__ = [
     'ExtendedToOriginalDecorator',
     'ExtendedToStreamDecorator',
@@ -27,6 +26,7 @@
 from operator import methodcaller
 import sys
 import unittest
+import warnings
 
 from extras import safe_hasattr, try_import, try_imports
 parse_mime_type = try_import('mimeparse.parse_mime_type')
@@ -47,7 +47,6 @@
 # From http://docs.python.org/library/datetime.html
 _ZERO = datetime.timedelta(0)
 
-# A UTC class.
 
 class UTC(datetime.tzinfo):
     """UTC"""
@@ -110,8 +109,8 @@
         :param details: Alternative way to supply details about the outcome.
             see the class docstring for more information.
         """
-        self.errors.append((test,
-            self._err_details_to_string(test, err, details)))
+        self.errors.append(
+            (test, self._err_details_to_string(test, err, details)))
         if self.failfast:
             self.stop()
 
@@ -122,8 +121,8 @@
         :param details: Alternative way to supply details about the outcome.
             see the class docstring for more information.
         """
-        self.failures.append((test,
-            self._err_details_to_string(test, err, details)))
+        self.failures.append(
+            (test, self._err_details_to_string(test, err, details)))
         if self.failfast:
             self.stop()
 
@@ -325,8 +324,8 @@
         """
 
     def status(self, test_id=None, test_status=None, test_tags=None,
-        runnable=True, file_name=None, file_bytes=None, eof=False,
-        mime_type=None, route_code=None, timestamp=None):
+               runnable=True, file_name=None, file_bytes=None, eof=False,
+               mime_type=None, route_code=None, timestamp=None):
         """Inform the result about a test status.
 
         :param test_id: The test whose status is being reported. None to
@@ -342,24 +341,24 @@
               * None - no particular status is being reported, or status being
                 reported is not associated with a test (e.g. when reporting on
                 stdout / stderr chatter).
-              * inprogress - the test is currently running. Emitted by tests 
when
-                they start running and at any intermediary point they might
-                choose to indicate their continual operation.
+              * inprogress - the test is currently running. Emitted by tests
+                when they start running and at any intermediary point they
+                might choose to indicate their continual operation.
 
             Final states:
               * exists - the test exists. This is used when a test is not being
-                executed. Typically this is when querying what tests could be 
run
-                in a test run (which is useful for selecting tests to run).
+                executed. Typically this is when querying what tests could be
+                run in a test run (which is useful for selecting tests to run).
               * xfail - the test failed but that was expected. This is purely
                 informative - the test is not considered to be a failure.
               * uxsuccess - the test passed but was expected to fail. The test
                 will be considered a failure.
               * success - the test has finished without error.
-              * fail - the test failed (or errored). The test will be 
considered
-                a failure.
-              * skip - the test was selected to run but chose to be skipped. 
E.g.
-                a test dependency was missing. This is purely informative - the
-                test is not considered to be a failure.
+              * fail - the test failed (or errored). The test will be
+                considered a failure.
+              * skip - the test was selected to run but chose to be skipped.
+                e.g. a test dependency was missing. This is purely informative-
+                the test is not considered to be a failure.
 
         :param test_tags: Optional set of tags to apply to the test. Tags
             have no intrinsic meaning - that is up to the test author.
@@ -386,8 +385,21 @@
         """
 
 
-def domap(*args, **kwargs):
-    return list(map(*args, **kwargs))
+def domap(function, *sequences):
+    """A strict version of 'map' that's guaranteed to run on all inputs.
+
+    DEPRECATED since testtools 1.8.1: Internal code should use _strict_map.
+    External code should look for other solutions for their strict mapping
+    needs.
+    """
+    warnings.warn(
+        "domap deprecated since 1.8.1. Please implement your own strict map.",
+        DeprecationWarning, stacklevel=2)
+    return _strict_map(function, *sequences)
+
+
+def _strict_map(function, *sequences):
+    return list(map(function, *sequences))
 
 
 class CopyStreamResult(StreamResult):
@@ -404,15 +416,15 @@
 
     def startTestRun(self):
         super(CopyStreamResult, self).startTestRun()
-        domap(methodcaller('startTestRun'), self.targets)
+        _strict_map(methodcaller('startTestRun'), self.targets)
 
     def stopTestRun(self):
         super(CopyStreamResult, self).stopTestRun()
-        domap(methodcaller('stopTestRun'), self.targets)
+        _strict_map(methodcaller('stopTestRun'), self.targets)
 
     def status(self, *args, **kwargs):
         super(CopyStreamResult, self).status(*args, **kwargs)
-        domap(methodcaller('status', *args, **kwargs), self.targets)
+        _strict_map(methodcaller('status', *args, **kwargs), self.targets)
 
 
 class StreamFailFast(StreamResult):
@@ -428,8 +440,8 @@
         self.on_error = on_error
 
     def status(self, test_id=None, test_status=None, test_tags=None,
-        runnable=True, file_name=None, file_bytes=None, eof=False,
-        mime_type=None, route_code=None, timestamp=None):
+               runnable=True, file_name=None, file_bytes=None, eof=False,
+               mime_type=None, route_code=None, timestamp=None):
         if test_status in ('uxsuccess', 'fail'):
             self.on_error()
 
@@ -449,7 +461,8 @@
       >>> sink = doubles.StreamResult()
       >>> router.add_rule(sink, 'route_code_prefix', route_prefix='0',
       ...     consume_route=True)
-      >>> router.status(test_id='foo', route_code='0/1', 
test_status='uxsuccess')
+      >>> router.status(
+      ...     test_id='foo', route_code='0/1', test_status='uxsuccess')
 
     StreamResultRouter has no buffering.
 
@@ -617,9 +630,10 @@
         self._inprogress = {}
 
     def status(self, test_id=None, test_status=None, test_tags=None,
-        runnable=True, file_name=None, file_bytes=None, eof=False,
-        mime_type=None, route_code=None, timestamp=None):
-        super(StreamToDict, self).status(test_id, test_status,
+               runnable=True, file_name=None, file_bytes=None, eof=False,
+               mime_type=None, route_code=None, timestamp=None):
+        super(StreamToDict, self).status(
+            test_id, test_status,
             test_tags=test_tags, runnable=runnable, file_name=file_name,
             file_bytes=file_bytes, eof=eof, mime_type=mime_type,
             route_code=route_code, timestamp=timestamp)
@@ -646,7 +660,7 @@
                 content_type = ContentType(primary, sub, parameters)
                 content_bytes = []
                 case['details'][file_name] = Content(
-                    content_type, lambda:content_bytes)
+                    content_type, lambda: content_bytes)
             case['details'][file_name].iter_bytes().append(file_bytes)
         if test_tags is not None:
             self._inprogress[key]['tags'] = test_tags
@@ -697,9 +711,9 @@
     if PlaceHolder is None:
         from testtools.testcase import PlaceHolder
     outcome = _status_map[test_dict['status']]
-    return PlaceHolder(test_dict['id'], outcome=outcome,
-        details=test_dict['details'], tags=test_dict['tags'],
-        timestamps=test_dict['timestamps'])
+    return PlaceHolder(
+        test_dict['id'], outcome=outcome, details=test_dict['details'],
+        tags=test_dict['tags'], timestamps=test_dict['timestamps'])
 
 
 class StreamSummary(StreamToDict):
@@ -812,12 +826,14 @@
 
     def _get_failfast(self):
         return getattr(self._results[0], 'failfast', False)
+
     def _set_failfast(self, value):
         self._dispatch('__setattr__', 'failfast', value)
     failfast = property(_get_failfast, _set_failfast)
 
     def _get_shouldStop(self):
         return any(self._dispatch('__getattr__', 'shouldStop'))
+
     def _set_shouldStop(self, value):
         # Called because we subclass TestResult. Probably should not do that.
         pass
@@ -895,8 +911,9 @@
         # to decide whether to round/floor/ceiling. This was added when we
         # had pyp3 test failures that suggest a floor was happening.
         shift = 10 ** precision
-        return math.ceil((a_timedelta.days * 86400.0 + a_timedelta.seconds +
-            a_timedelta.microseconds / 1000000.0) * shift) / shift
+        return math.ceil(
+            (a_timedelta.days * 86400.0 + a_timedelta.seconds +
+             a_timedelta.microseconds / 1000000.0) * shift) / shift
 
     def _show_list(self, label, error_list):
         for test, output in error_list:
@@ -922,9 +939,10 @@
             self.stream.write(
                 "%sUNEXPECTED SUCCESS: %s\n%s" % (
                     self.sep1, test.id(), self.sep2))
-        self.stream.write("\nRan %d test%s in %.3fs\n" %
-            (self.testsRun, plural,
-             self._delta_to_float(stop - self.__start, 3)))
+        self.stream.write(
+            "\nRan %d test%s in %.3fs\n" % (
+                self.testsRun, plural,
+                self._delta_to_float(stop - self.__start, 3)))
         if self.wasSuccessful():
             self.stream.write("OK\n")
         else:
@@ -1004,28 +1022,28 @@
         self._test_start = None
 
     def addError(self, test, err=None, details=None):
-        self._add_result_with_semaphore(self.result.addError,
-            test, err, details=details)
+        self._add_result_with_semaphore(
+            self.result.addError, test, err, details=details)
 
     def addExpectedFailure(self, test, err=None, details=None):
-        self._add_result_with_semaphore(self.result.addExpectedFailure,
-            test, err, details=details)
+        self._add_result_with_semaphore(
+            self.result.addExpectedFailure, test, err, details=details)
 
     def addFailure(self, test, err=None, details=None):
-        self._add_result_with_semaphore(self.result.addFailure,
-            test, err, details=details)
+        self._add_result_with_semaphore(
+            self.result.addFailure, test, err, details=details)
 
     def addSkip(self, test, reason=None, details=None):
-        self._add_result_with_semaphore(self.result.addSkip,
-            test, reason, details=details)
+        self._add_result_with_semaphore(
+            self.result.addSkip, test, reason, details=details)
 
     def addSuccess(self, test, details=None):
-        self._add_result_with_semaphore(self.result.addSuccess,
-            test, details=details)
+        self._add_result_with_semaphore(
+            self.result.addSuccess, test, details=details)
 
     def addUnexpectedSuccess(self, test, details=None):
-        self._add_result_with_semaphore(self.result.addUnexpectedSuccess,
-            test, details=details)
+        self._add_result_with_semaphore(
+            self.result.addUnexpectedSuccess, test, details=details)
 
     def progress(self, offset, whence):
         pass
@@ -1044,6 +1062,7 @@
             return self.result.shouldStop
         finally:
             self.semaphore.release()
+
     def _set_shouldStop(self, value):
         # Another case where we should not subclass TestResult
         pass
@@ -1212,7 +1231,8 @@
         if details is not None:
             param_count += 1
         if param_count != 1:
-            raise ValueError("Must pass only one of err '%s' and details '%s"
+            raise ValueError(
+                "Must pass only one of err '%s' and details '%s"
                 % (err, details))
 
     def _details_to_exc_info(self, details):
@@ -1235,6 +1255,7 @@
 
     def _get_failfast(self):
         return getattr(self.decorated, 'failfast', self._failfast)
+
     def _set_failfast(self, value):
         if safe_hasattr(self.decorated, 'failfast'):
             self.decorated.failfast = value
@@ -1311,6 +1332,7 @@
 
     def _get_failfast(self):
         return len(self.targets) == 2
+
     def _set_failfast(self, value):
         if value:
             if len(self.targets) == 2:
@@ -1323,7 +1345,8 @@
     def startTest(self, test):
         if not self._started:
             self.startTestRun()
-        self.status(test_id=test.id(), test_status='inprogress', 
timestamp=self._now())
+        self.status(
+            test_id=test.id(), test_status='inprogress', timestamp=self._now())
         self._tags = TagContext(self._tags)
 
     def stopTest(self, test):
@@ -1349,18 +1372,23 @@
                 file_bytes = None
                 for next_bytes in content.iter_bytes():
                     if file_bytes is not None:
-                        self.status(file_name=name, file_bytes=file_bytes,
-                            mime_type=mime_type, test_id=test_id, 
timestamp=now)
+                        self.status(
+                            file_name=name, file_bytes=file_bytes,
+                            mime_type=mime_type, test_id=test_id,
+                            timestamp=now)
                     file_bytes = next_bytes
                 if file_bytes is None:
                     file_bytes = _b("")
-                self.status(file_name=name, file_bytes=file_bytes, eof=True,
+                self.status(
+                    file_name=name, file_bytes=file_bytes, eof=True,
                     mime_type=mime_type, test_id=test_id, timestamp=now)
         if reason is not None:
-            self.status(file_name='reason', file_bytes=reason.encode('utf8'),
+            self.status(
+                file_name='reason', file_bytes=reason.encode('utf8'),
                 eof=True, mime_type="text/plain; charset=utf8",
                 test_id=test_id, timestamp=now)
-        self.status(test_id=test_id, test_status=status,
+        self.status(
+            test_id=test_id, test_status=status,
             test_tags=self.current_tags, timestamp=now)
 
     def addExpectedFailure(self, test, err=None, details=None):
@@ -1383,7 +1411,8 @@
         if details is not None:
             param_count += 1
         if param_count != 1:
-            raise ValueError("Must pass only one of err '%s' and details '%s"
+            raise ValueError(
+                "Must pass only one of err '%s' and details '%s"
                 % (err, details))
 
     def startTestRun(self):
@@ -1393,9 +1422,6 @@
         self.__now = None
         self._started = True
 
-    def stopTest(self, test):
-        self._tags = self._tags.parent
-
     @property
     def current_tags(self):
         """The currently set tags."""
@@ -1512,9 +1538,10 @@
         self.queue.put(dict(event='startTestRun', result=self))
 
     def status(self, test_id=None, test_status=None, test_tags=None,
-        runnable=True, file_name=None, file_bytes=None, eof=False,
-        mime_type=None, route_code=None, timestamp=None):
-        self.queue.put(dict(event='status', test_id=test_id,
+               runnable=True, file_name=None, file_bytes=None, eof=False,
+               mime_type=None, route_code=None, timestamp=None):
+        self.queue.put(dict(
+            event='status', test_id=test_id,
             test_status=test_status, test_tags=test_tags, runnable=runnable,
             file_name=file_name, file_bytes=file_bytes, eof=eof,
             mime_type=mime_type, route_code=self.route_code(route_code),
@@ -1718,8 +1745,8 @@
     if not str_is_unicode:
         def __init__(self, string):
             if type(string) is not unicode:
-                raise TypeError("_StringException expects unicode, got %r" %
-                    (string,))
+                raise TypeError(
+                    "_StringException expects unicode, got %r" % (string,))
             Exception.__init__(self, string)
 
         def __str__(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/testtools-1.8.0/testtools/tests/test_run.py 
new/testtools-1.8.1/testtools/tests/test_run.py
--- old/testtools-1.8.0/testtools/tests/test_run.py     2015-03-10 
00:19:47.000000000 +0100
+++ new/testtools-1.8.1/testtools/tests/test_run.py     2015-11-02 
22:17:32.000000000 +0100
@@ -201,6 +201,7 @@
             run.main, ['prog', 'discover', '-l', broken.package.base, '*.py'], 
out)
         self.assertEqual(2, exc.args[0])
         self.assertThat(out.getvalue(), DocTestMatches("""\
+unittest2.loader._FailedTest.runexample
 Failed to import test module: runexample
 Traceback (most recent call last):
   File ".../loader.py", line ..., in _find_test_path
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/testtools-1.8.0/testtools/tests/test_testresult.py 
new/testtools-1.8.1/testtools/tests/test_testresult.py
--- old/testtools-1.8.0/testtools/tests/test_testresult.py      2015-03-11 
00:48:49.000000000 +0100
+++ new/testtools-1.8.1/testtools/tests/test_testresult.py      2015-11-09 
14:24:00.000000000 +0100
@@ -1,4 +1,4 @@
-# Copyright (c) 2008-2012 testtools developers. See LICENSE for details.
+# Copyright (c) 2008-2015 testtools developers. See LICENSE for details.
 
 """Test TestResults and related things."""
 
@@ -15,7 +15,6 @@
 import tempfile
 import threading
 from unittest import TestSuite
-import warnings
 
 from extras import safe_hasattr, try_imports
 
@@ -520,8 +519,15 @@
         result.startTestRun()
         self.addCleanup(result.stopTestRun)
         now = datetime.datetime.now(utc)
-        args = [[_u("foo"), s] for s in ['exists', 'inprogress', 'xfail',
-            'uxsuccess', 'success', 'fail', 'skip']]
+        args = [[_u("foo"), s] for s in [
+            'exists',
+            'inprogress',
+            'xfail',
+            'uxsuccess',
+            'success',
+            'fail',
+            'skip',
+        ]]
         inputs = list(dict(
             runnable=False,
             test_tags=set(['quux']),
@@ -537,7 +543,8 @@
         "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
         s = list(iterable)
         param_dicts = []
-        for ss in chain.from_iterable(combinations(s, r) for r in 
range(len(s)+1)):
+        combos = (combinations(s, r) for r in range(len(s) + 1))
+        for ss in chain.from_iterable(combos):
             param_dicts.append(dict(ss))
         return param_dicts
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/testtools-1.8.0/testtools.egg-info/PKG-INFO 
new/testtools-1.8.1/testtools.egg-info/PKG-INFO
--- old/testtools-1.8.0/testtools.egg-info/PKG-INFO     2015-05-05 
01:50:03.000000000 +0200
+++ new/testtools-1.8.1/testtools.egg-info/PKG-INFO     2015-11-13 
17:17:18.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: testtools
-Version: 1.8.0
+Version: 1.8.1
 Summary: Extensions to the Python standard library unit testing framework
 Home-page: https://github.com/testing-cabal/testtools
 Author: Jonathan M. Lange
@@ -27,7 +27,7 @@
           class TestSillySquareServer(TestCase):
         
               def setUp(self):
-                  super(TestSillySquare, self).setUp()
+                  super(TestSillySquareServer, self).setUp()
                   self.server = self.useFixture(SillySquareServer())
                   self.addCleanup(self.attach_log_file)
         
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/testtools-1.8.0/testtools.egg-info/pbr.json 
new/testtools-1.8.1/testtools.egg-info/pbr.json
--- old/testtools-1.8.0/testtools.egg-info/pbr.json     2015-05-05 
01:50:03.000000000 +0200
+++ new/testtools-1.8.1/testtools.egg-info/pbr.json     2015-11-13 
17:17:18.000000000 +0100
@@ -1 +1 @@
-{"is_release": true, "git_version": "a18c904"}
\ No newline at end of file
+{"is_release": true, "git_version": "e7b82f6"}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/testtools-1.8.0/testtools.egg-info/requires.txt 
new/testtools-1.8.1/testtools.egg-info/requires.txt
--- old/testtools-1.8.0/testtools.egg-info/requires.txt 2015-05-05 
01:50:03.000000000 +0200
+++ new/testtools-1.8.1/testtools.egg-info/requires.txt 2015-11-13 
17:17:18.000000000 +0100
@@ -2,4 +2,8 @@
 extras
 python-mimeparse
 unittest2>=1.0.0
-traceback2
\ No newline at end of file
+traceback2
+
+[test]
+fixtures
+unittest2>=1.1.0


Reply via email to