diff tests/bruterebase.py @ 47443:7a430116f639

ui: add a context manager for silencing the ui (pushbuffer+popbuffer) We often silence the ui by calling `ui.pushbuffer()` followed (a later in the code) by `ui.popbuffer()`. These places can be identified by the fact that they ignore the output returned from `ui.popbuffer()`. Let's create a context manager for these cases, to avoid repetition, and to avoid accidentally leaving the ui silent on exceptions. I deliberately called the new function `silent()` instead of `buffered()`, because it's just an implementation detail that it uses `pushbuffer()` and `popbuffer()`. We could later optimize it to not buffer the output. Differential Revision: https://phab.mercurial-scm.org/D10884
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 18 Jun 2021 15:48:51 -0700
parents d2e1dcd4490d
children 6000f5b25c9b
line wrap: on
line diff
--- a/tests/bruterebase.py	Fri Jun 18 14:17:43 2021 -0700
+++ b/tests/bruterebase.py	Fri Jun 18 15:48:51 2021 -0700
@@ -48,26 +48,25 @@
             tr = repo.transaction(b'rebase')
             tr._report = lambda x: 0  # hide "transaction abort"
 
-            ui.pushbuffer()
-            try:
-                rebase.rebase(ui, repo, dest=dest, rev=[spec])
-            except error.Abort as ex:
-                summary = b'ABORT: %s' % ex.message
-            except Exception as ex:
-                summary = b'CRASH: %s' % ex
-            else:
-                # short summary about new nodes
-                cl = repo.changelog
-                descs = []
-                for rev in xrange(repolen, len(repo)):
-                    desc = b'%s:' % getdesc(rev)
-                    for prev in cl.parentrevs(rev):
-                        if prev > -1:
-                            desc += getdesc(prev)
-                    descs.append(desc)
-                descs.sort()
-                summary = b' '.join(descs)
-            ui.popbuffer()
+            with ui.silent():
+                try:
+                    rebase.rebase(ui, repo, dest=dest, rev=[spec])
+                except error.Abort as ex:
+                    summary = b'ABORT: %s' % ex.message
+                except Exception as ex:
+                    summary = b'CRASH: %s' % ex
+                else:
+                    # short summary about new nodes
+                    cl = repo.changelog
+                    descs = []
+                    for rev in xrange(repolen, len(repo)):
+                        desc = b'%s:' % getdesc(rev)
+                        for prev in cl.parentrevs(rev):
+                            if prev > -1:
+                                desc += getdesc(prev)
+                        descs.append(desc)
+                    descs.sort()
+                    summary = b' '.join(descs)
             repo.vfs.tryunlink(b'rebasestate')
 
             subsetdesc = b''.join(getdesc(rev) for rev in subset)