progress: Make end() idempotent
This fixes the double "done" text on successful interleaved sync.
Bug: 421935613
Change-Id: I4f01418cb0340129a8f0a2a5835f7e3fa6a6b119
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/487081
Reviewed-by: Scott Lee <ddoman@google.com>
Tested-by: Gavin Mak <gavinmak@google.com>
Commit-Queue: Gavin Mak <gavinmak@google.com>
diff --git a/progress.py b/progress.py
index a386f42..31a4890 100644
--- a/progress.py
+++ b/progress.py
@@ -101,6 +101,7 @@
self._units = units
self._elide = elide and _TTY
self._quiet = quiet
+ self._ended = False
# Only show the active jobs section if we run more than one in parallel.
self._show_jobs = False
@@ -211,6 +212,10 @@
self.update(inc=0)
def end(self):
+ if self._ended:
+ return
+ self._ended = True
+
self._update_event.set()
if not _TTY or IsTraceToStderr() or self._quiet:
return