Patchwork D6975: fix: add :enabled sub-config for fixer tools

login
register
mail settings
Submitter phabricator
Date Oct. 5, 2019, 6:29 p.m.
Message ID <62a7d7dbfa726152d40677c2c8c5fae7@localhost.localdomain>
Download mbox | patch
Permalink /patch/41993/
State Not Applicable
Headers show

Comments

phabricator - Oct. 5, 2019, 6:29 p.m.
Closed by commit rHG808a57a08470: fix: add :enabled sub-config for fixer tools (authored by hooper).
This revision was automatically updated to reflect the committed changes.
This revision was not accepted when it landed; it landed in state "Needs Review".

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D6975?vs=16824&id=16852

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D6975/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D6975

AFFECTED FILES
  hgext/fix.py
  tests/test-fix.t

CHANGE DETAILS




To: hooper, #hg-reviewers
Cc: mercurial-devel

Patch

diff --git a/tests/test-fix.t b/tests/test-fix.t
--- a/tests/test-fix.t
+++ b/tests/test-fix.t
@@ -1341,6 +1341,22 @@ 
 
   $ cd ..
 
+Tools can be disabled. Disabled tools do nothing but print a debug message.
+
+  $ hg init disabled
+  $ cd disabled
+
+  $ printf "foo\n" > foo
+  $ hg add -q
+  $ hg fix --debug --working-dir --config "fix.disabled:command=echo fixed" \
+  >                              --config "fix.disabled:pattern=foo" \
+  >                              --config "fix.disabled:enabled=false"
+  ignoring disabled fixer tool: disabled
+  $ cat foo
+  foo
+
+  $ cd ..
+
 Test that we can configure a fixer to affect all files regardless of the cwd.
 The way we invoke matching must not prohibit this.
 
diff --git a/hgext/fix.py b/hgext/fix.py
--- a/hgext/fix.py
+++ b/hgext/fix.py
@@ -173,6 +173,7 @@ 
     'priority': 0,
     'metadata': 'false',
     'skipclean': 'true',
+    'enabled': 'true',
 }
 
 for key, default in FIXER_ATTRS.items():
@@ -726,6 +727,7 @@ 
         fixers[name]._priority = int(fixers[name]._priority)
         fixers[name]._metadata = stringutil.parsebool(fixers[name]._metadata)
         fixers[name]._skipclean = stringutil.parsebool(fixers[name]._skipclean)
+        fixers[name]._enabled = stringutil.parsebool(fixers[name]._enabled)
         # Don't use a fixer if it has no pattern configured. It would be
         # dangerous to let it affect all files. It would be pointless to let it
         # affect no files. There is no reasonable subset of files to use as the
@@ -734,6 +736,9 @@ 
             ui.warn(
                 _('fixer tool has no pattern configuration: %s\n') % (name,))
             del fixers[name]
+        elif not fixers[name]._enabled:
+            ui.debug('ignoring disabled fixer tool: %s\n' % (name,))
+            del fixers[name]
     return collections.OrderedDict(
         sorted(fixers.items(), key=lambda item: item[1]._priority,
                reverse=True))