Submitter | phabricator |
---|---|
Date | Oct. 10, 2019, 9:53 p.m. |
Message ID | <differential-rev-PHID-DREV-ouyagtccb5qfvfyd6g5h-req@mercurial-scm.org> |
Download | mbox | patch |
Permalink | /patch/42211/ |
State | Superseded |
Headers | show |
Comments
Kwan added inline comments. INLINE COMMENTS > phabricator.py:155-156 > + if value.startswith(b'{') and value.endswith(b'}'): > + r1json = json.loads(value) > + r2json = json.loads(r2params[key][0]) > + if r1json != r2json: These will need converting to unicode first for py3.5 (I keep forgetting about loads only accepting bytes from 3.6 onwards). REPOSITORY rHG Mercurial CHANGES SINCE LAST ACTION https://phab.mercurial-scm.org/D7055/new/ REVISION DETAIL https://phab.mercurial-scm.org/D7055 To: Kwan, #hg-reviewers Cc: mercurial-devel
durin42 added inline comments. INLINE COMMENTS > Kwan wrote in phabricator.py:155-156 > These will need converting to unicode first for py3.5 (I keep forgetting about loads only accepting bytes from 3.6 onwards). That might be a nudge towards dropping 3.5 support. We've already got problems on 3.5. :( REPOSITORY rHG Mercurial CHANGES SINCE LAST ACTION https://phab.mercurial-scm.org/D7055/new/ REVISION DETAIL https://phab.mercurial-scm.org/D7055 To: Kwan, #hg-reviewers Cc: durin42, mercurial-devel
Patch
diff --git a/hgext/phabricator.py b/hgext/phabricator.py --- a/hgext/phabricator.py +++ b/hgext/phabricator.py @@ -144,9 +144,21 @@ def hgmatcher(r1, r2): if r1.uri != r2.uri or r1.method != r2.method: return False - r1params = r1.body.split(b'&') - r2params = r2.body.split(b'&') - return set(r1params) == set(r2params) + r1params = util.urlreq.parseqs(r1.body) + r2params = util.urlreq.parseqs(r2.body) + for key in r1params: + if key not in r2params: + return False + value = r1params[key][0] + # we want to compare json payloads without worrying about ordering + if value.startswith(b'{') and value.endswith(b'}'): + r1json = json.loads(value) + r2json = json.loads(r2params[key][0]) + if r1json != r2json: + return False + elif r2params[key][0] != value: + return False + return True def sanitiserequest(request): request.body = re.sub(