From patchwork Tue Sep 21 15:39:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D11476: extensions: prevent a crash on py3 with a `minimumhgversion` str value From: phabricator X-Patchwork-Id: 49792 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Tue, 21 Sep 2021 15:39:36 +0000 mharbison72 created this revision. Herald added a reviewer: hg-reviewers. Herald added a subscriber: mercurial-patches. REVISION SUMMARY The expectation is that this field is bytes, but unported extensions are a thing and it shouldn't explode on a bad value. We already do this transformation in the version reporting mechanism. REPOSITORY rHG Mercurial BRANCH default REVISION DETAIL https://phab.mercurial-scm.org/D11476 AFFECTED FILES mercurial/extensions.py tests/test-extension.t CHANGE DETAILS To: mharbison72, #hg-reviewers Cc: mercurial-patches, mercurial-devel diff --git a/tests/test-extension.t b/tests/test-extension.t --- a/tests/test-extension.t +++ b/tests/test-extension.t @@ -1692,12 +1692,13 @@ $ hg --config extensions.minversion=minversion3.py version 2>&1 | egrep '\(third' [1] -Don't explode on py3 with a bad version number +Don't explode on py3 with a bad version number (both str vs bytes, and not enough +parts) $ cat > minversion4.py << EOF > from mercurial import util > util.version = lambda: b'3.5' - > minimumhgversion = b'3' + > minimumhgversion = '3' > EOF $ hg --config extensions.minversion=minversion4.py version -v Mercurial Distributed SCM (version 3.5) diff --git a/mercurial/extensions.py b/mercurial/extensions.py --- a/mercurial/extensions.py +++ b/mercurial/extensions.py @@ -224,7 +224,7 @@ minver = getattr(mod, 'minimumhgversion', None) if minver: curver = util.versiontuple(n=2) - extmin = util.versiontuple(minver, 2) + extmin = util.versiontuple(stringutil.forcebytestr(minver), 2) if None in extmin: extmin = (extmin[0] or 0, extmin[1] or 0)