D9377: tests: make test-worker.t pass on py2

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Mon Nov 23 20:18:25 UTC 2020


martinvonz created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  I broke the py2 version in https://phab.mercurial-scm.org/D9287
  because the `WorkerError.__bytes__()` (or `.__str__()`?) output was
  different in py2 compared to py3. Part of the problem was that I
  didn't propagate the status code that was passed in to the superclass
  so it could get printed. This patch fixes that. I don't know how it
  worked on py3 before this patch...
  
  I also added the usual `__bytes__ = _tobytes` override for good
  measure. It doesn't seem to be needed for tests to pass, though.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D9377

AFFECTED FILES
  mercurial/error.py
  tests/test-worker.t

CHANGE DETAILS

diff --git a/tests/test-worker.t b/tests/test-worker.t
--- a/tests/test-worker.t
+++ b/tests/test-worker.t
@@ -90,7 +90,8 @@
   mercurial.error.Abort: known exception (py3 !)
   Abort: known exception (no-py3 !)
       raise error.WorkerError(status)
-  mercurial.error.WorkerError: 255
+  WorkerError: 255 (no-py3 !)
+  mercurial.error.WorkerError: 255 (py3 !)
 
 Traceback must be printed for unknown exceptions
 
diff --git a/mercurial/error.py b/mercurial/error.py
--- a/mercurial/error.py
+++ b/mercurial/error.py
@@ -137,6 +137,10 @@
 
     def __init__(self, status_code):
         self.status_code = status_code
+        # Pass status code to superclass just so it becomes part of __bytes__
+        super(WorkerError, self).__init__(status_code)
+
+    __bytes__ = _tobytes
 
 
 class InterventionRequired(Hint, Exception):



To: martinvonz, #hg-reviewers
Cc: mercurial-patches, mercurial-devel


More information about the Mercurial-devel mailing list