upgrade: move requirements checking in a dedicated function
authorPierre-Yves David <pierre-yves.david@octobus.net>
Tue, 01 Dec 2020 15:45:23 +0100
changeset 46048 f4f956342cf1
parent 46047 4b89cf08d8dc
child 46049 a2a59cde9b9f
upgrade: move requirements checking in a dedicated function This is a simple an isolated check that can go next to the associated code. Differential Revision: https://phab.mercurial-scm.org/D9482
mercurial/upgrade.py
mercurial/upgrade_utils/actions.py
--- a/mercurial/upgrade.py	Tue Dec 01 15:11:06 2020 +0100
+++ b/mercurial/upgrade.py	Tue Dec 01 15:45:23 2020 +0100
@@ -72,26 +72,7 @@
                 revlogs.discard(upgrade)
 
     # Ensure the repository can be upgraded.
-    missingreqs = (
-        upgrade_actions.requiredsourcerequirements(repo) - repo.requirements
-    )
-    if missingreqs:
-        raise error.Abort(
-            _(b'cannot upgrade repository; requirement missing: %s')
-            % _(b', ').join(sorted(missingreqs))
-        )
-
-    blockedreqs = (
-        upgrade_actions.blocksourcerequirements(repo) & repo.requirements
-    )
-    if blockedreqs:
-        raise error.Abort(
-            _(
-                b'cannot upgrade repository; unsupported source '
-                b'requirement: %s'
-            )
-            % _(b', ').join(sorted(blockedreqs))
-        )
+    upgrade_actions.check_source_requirements(repo)
 
     # FUTURE there is potentially a need to control the wanted requirements via
     # command arguments or via an extension hook point.
--- a/mercurial/upgrade_utils/actions.py	Tue Dec 01 15:11:06 2020 +0100
+++ b/mercurial/upgrade_utils/actions.py	Tue Dec 01 15:45:23 2020 +0100
@@ -9,6 +9,7 @@
 
 from ..i18n import _
 from .. import (
+    error,
     localrepo,
     requirements,
     util,
@@ -664,3 +665,21 @@
     # e.g. adding generaldelta could schedule parent redeltas.
 
     return newactions
+
+
+def check_source_requirements(repo):
+    """Ensure that no existing requirements prevent the repository upgrade"""
+
+    required = requiredsourcerequirements(repo)
+    missingreqs = required - repo.requirements
+    if missingreqs:
+        msg = _(b'cannot upgrade repository; requirement missing: %s')
+        missingreqs = b', '.join(sorted(missingreqs))
+        raise error.Abort(msg % missingreqs)
+
+    blocking = blocksourcerequirements(repo)
+    blockingreqs = blocking & repo.requirements
+    if blockingreqs:
+        m = _(b'cannot upgrade repository; unsupported source requirement: %s')
+        blockingreqs = b', '.join(sorted(blockingreqs))
+        raise error.Abort(m % blockingreqs)