patchbomb: don't unintentionally duplicate headers
authorAugie Fackler <augie@google.com>
Thu, 09 Aug 2018 19:39:33 -0400
changeset 39035 cecb05c371f7
parent 39034 751caa6a2936
child 39036 598467614c15
patchbomb: don't unintentionally duplicate headers This dict-like of headers is only mostly dict-like: if you set a key that already exists, you it appends another value, rather than replacing the one that was already present. This fixes test-patchbomb-bookmark.t on Python 3. Differential Revision: https://phab.mercurial-scm.org/D4229
contrib/python3-whitelist
hgext/patchbomb.py
--- a/contrib/python3-whitelist	Thu Aug 09 19:37:57 2018 -0400
+++ b/contrib/python3-whitelist	Thu Aug 09 19:39:33 2018 -0400
@@ -363,6 +363,7 @@
 test-parseindex2.py
 test-patch-offset.t
 test-patch.t
+test-patchbomb-bookmark.t
 test-patchbomb-tls.t
 test-pathconflicts-merge.t
 test-pathconflicts-update.t
--- a/hgext/patchbomb.py	Thu Aug 09 19:37:57 2018 -0400
+++ b/hgext/patchbomb.py	Thu Aug 09 19:39:33 2018 -0400
@@ -789,12 +789,19 @@
         # TODO(durin42): this should probably be cleaned up above in the future.
         if pycompat.ispy3:
             for hdr, val in list(m.items()):
+                change = False
                 if isinstance(hdr, bytes):
                     del m[hdr]
                     hdr = pycompat.strurl(hdr)
+                    change = True
                 if isinstance(val, bytes):
                     val = pycompat.strurl(val)
-                m[hdr] = val
+                    if not change:
+                        # prevent duplicate headers
+                        del m[hdr]
+                    change = True
+                if change:
+                    m[hdr] = val
         if opts.get('test'):
             ui.status(_('displaying '), subj, ' ...\n')
             ui.pager('email')