changeset 52486:8dede0df9de9

format: add pattern filtering to debugformat The number of format to consider increase, this will make the command simpler to use in tests and debug. See test changes for some direct benefits.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 18 Nov 2024 17:25:30 +0100
parents 57a4adbef74d
children a814534aaedd
files mercurial/debugcommands.py tests/test-copies-chain-merge.t tests/test-copies-in-changeset.t tests/test-persistent-nodemap.t tests/test-pullling-to-general-delta.t tests/test-revlog-delta-find.t tests/test-share-safe.t tests/test-share.t tests/test-sidedata.t tests/test-status-tracked-key.t tests/test-upgrade-repo.t
diffstat 11 files changed, 100 insertions(+), 46 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/debugcommands.py	Tue Dec 10 10:02:58 2024 +0000
+++ b/mercurial/debugcommands.py	Mon Nov 18 17:25:30 2024 +0100
@@ -1625,12 +1625,20 @@
     )
 
 
-@command(b'debugformat', [] + cmdutil.formatteropts)
-def debugformat(ui, repo, **opts):
+@command(
+    b'debugformat',
+    [] + cmdutil.formatteropts,
+    b'[PATTERN] ... [PATTERN]',
+)
+def debugformat(ui, repo, *patterns, **opts):
     """display format information about the current repository
 
     Use --verbose to get extra information about current config value and
-    Mercurial default."""
+    Mercurial default.
+
+    If patterns are specified, only format matching at least one of these
+    pattern will be displayed.
+    """
     maxvariantlength = max(len(fv.name) for fv in upgrade.allformatvariant)
     maxvariantlength = max(len(b'format-variant'), maxvariantlength)
 
@@ -1658,6 +1666,14 @@
         fm.plain(b' config default')
     fm.plain(b'\n')
     for fv in upgrade.allformatvariant:
+        if patterns:
+            for p in patterns:
+                # XXX support "re:" at some point
+                if p in fv.name:
+                    break
+            else:
+                # no pattern matches, continue
+                continue
         fm.startitem()
         repovalue = fv.fromrepo(repo)
         configvalue = fv.fromconfig(repo)
--- a/tests/test-copies-chain-merge.t	Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-copies-chain-merge.t	Mon Nov 18 17:25:30 2024 +0100
@@ -1649,7 +1649,8 @@
   > [format]
   > exp-use-copies-side-data-changeset = yes
   > EOF
-  $ hg debugformat -v | grep -E 'changelog-v2|revlog-v2|copies-sdc'
+  $ hg debugformat -v changelog-v2 revlog-v2 copies-sdc
+  format-variant     repo config default
   copies-sdc:          no    yes      no
   revlog-v2:           no     no      no
   changelog-v2:        no    yes      no
@@ -1675,7 +1676,8 @@
   > enabled=yes
   > numcpus=8
   > EOF
-  $ hg debugformat -v  | grep -E 'changelog-v2|revlog-v2|copies-sdc'
+  $ hg debugformat -v changelog-v2 revlog-v2 copies-sdc
+  format-variant     repo config default
   copies-sdc:          no    yes      no
   revlog-v2:           no     no      no
   changelog-v2:        no    yes      no
--- a/tests/test-copies-in-changeset.t	Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-copies-in-changeset.t	Mon Nov 18 17:25:30 2024 +0100
@@ -32,13 +32,13 @@
   $ hg init repo
   $ cd repo
 #if sidedata
-  $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2'
+  $ hg debugformat -v format-variant revlog-v2 copies-sdc changelog-v2
   format-variant     repo config default
   copies-sdc:         yes    yes      no
   revlog-v2:           no     no      no
   changelog-v2:       yes    yes      no
 #else
-  $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2'
+  $ hg debugformat -v format-variant revlog-v2 copies-sdc changelog-v2
   format-variant     repo config default
   copies-sdc:          no     no      no
   revlog-v2:           no     no      no
@@ -419,7 +419,7 @@
 
 downgrading
 
-  $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2'
+  $ hg debugformat -v format-variant revlog-v2 copies-sdc changelog-v2
   format-variant     repo config default
   copies-sdc:         yes    yes      no
   revlog-v2:           no     no      no
@@ -445,7 +445,7 @@
   processed revlogs:
     - changelog
   
-  $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2'
+  $ hg debugformat -v format-variant revlog-v2 copies-sdc changelog-v2
   format-variant     repo config default
   copies-sdc:          no     no      no
   revlog-v2:           no     no      no
@@ -470,7 +470,7 @@
   processed revlogs:
     - changelog
   
-  $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2'
+  $ hg debugformat -v format-variant revlog-v2 copies-sdc changelog-v2
   format-variant     repo config default
   copies-sdc:         yes    yes      no
   revlog-v2:           no     no      no
--- a/tests/test-persistent-nodemap.t	Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-persistent-nodemap.t	Mon Nov 18 17:25:30 2024 +0100
@@ -615,10 +615,12 @@
   $ hg share race-repo ./other-wc --config format.use-share-safe=yes
   updating working directory
   5001 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg debugformat -R ./race-repo | grep -E 'share-safe|persistent-nodemap'
+  $ hg debugformat -R ./race-repo share-safe persistent-nodemap
+  format-variant     repo
   share-safe:         yes
   persistent-nodemap: yes
-  $ hg debugformat -R ./other-wc/ | grep -E 'share-safe|persistent-nodemap'
+  $ hg debugformat -R ./other-wc/ share-safe persistent-nodemap
+  format-variant     repo
   share-safe:         yes
   persistent-nodemap: yes
   $ hg -R ./other-wc update 'min(head())'
--- a/tests/test-pullling-to-general-delta.t	Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-pullling-to-general-delta.t	Mon Nov 18 17:25:30 2024 +0100
@@ -19,7 +19,8 @@
   $ hg init server
 
   $ hg clone --quiet --pull server client --config format.usegeneraldelta=no
-  $ hg debugformat -R client | grep generaldelta
+  $ hg debugformat -R client generaldelta
+  format-variant     repo
   generaldelta:        no
 
 Create some complexe history
--- a/tests/test-revlog-delta-find.t	Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-revlog-delta-find.t	Mon Nov 18 17:25:30 2024 +0100
@@ -334,7 +334,8 @@
   >    --config format.usegeneraldelta=no \
   >    --config format.sparse-revlog=no \
   >    local-forced-full-p1-no-gd
-  $ hg debugformat -R local-forced-full-p1-no-gd | grep generaldelta
+  $ hg debugformat -R local-forced-full-p1-no-gd generaldelta
+  format-variant     repo
   generaldelta:        no
   $ hg -R local-forced-full-p1-no-gd pull --quiet local-pre-pull-full \
   >    --config debug.revlog.debug-delta=no
--- a/tests/test-share-safe.t	Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-share-safe.t	Mon Nov 18 17:25:30 2024 +0100
@@ -631,7 +631,8 @@
   $ hg debugbuilddag -R auto-upgrade --new-file .+5
   $ hg -R auto-upgrade update
   6 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg debugformat -R auto-upgrade | grep share-safe
+  $ hg debugformat -R auto-upgrade share-safe
+  format-variant     repo
   share-safe:          no
 
 upgrade it to share-safe automatically
@@ -641,7 +642,8 @@
   >     --config format.use-share-safe=yes
   automatically upgrading repository to the `share-safe` feature
   (see `hg help config.format.use-share-safe` for details)
-  $ hg debugformat -R auto-upgrade | grep share-safe
+  $ hg debugformat -R auto-upgrade share-safe
+  format-variant     repo
   share-safe:         yes
 
 downgrade it from share-safe automatically
@@ -651,5 +653,6 @@
   >     --config format.use-share-safe=no
   automatically downgrading repository from the `share-safe` feature
   (see `hg help config.format.use-share-safe` for details)
-  $ hg debugformat -R auto-upgrade | grep share-safe
+  $ hg debugformat -R auto-upgrade share-safe
+  format-variant     repo
   share-safe:          no
--- a/tests/test-share.t	Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-share.t	Mon Nov 18 17:25:30 2024 +0100
@@ -295,11 +295,13 @@
 #endif
 
   $ hg init repo-safe-d1 --config format.use-share-safe=yes --config format.exp-rc-dirstate-v2=no
-  $ hg debugformat -R repo-safe-d1 | grep dirstate-v2
+  $ hg debugformat -R repo-safe-d1 dirstate-v2
+  format-variant     repo
   dirstate-v2:         no
 
   $ hg share repo-safe-d1 share-safe-d2 --config format.use-share-safe=yes --config format.exp-rc-dirstate-v2=yes
   updating working directory
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg debugformat  -R share-safe-d2 | grep dirstate-v2
+  $ hg debugformat  -R share-safe-d2 dirstate-v2
+  format-variant     repo
   dirstate-v2:        yes
--- a/tests/test-sidedata.t	Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-sidedata.t	Mon Nov 18 17:25:30 2024 +0100
@@ -61,10 +61,12 @@
 -------------------------------------
 
   $ hg init up-no-side-data --config experimental.revlogv2=no
-  $ hg debugformat -v -R up-no-side-data | grep -E 'changelog-v2|revlog-v2'
+  $ hg debugformat -v -R up-no-side-data changelog-v2 revlog-v2
+  format-variant     repo config default
   revlog-v2:           no     no      no
   changelog-v2:        no     no      no
-  $ hg debugformat -v -R up-no-side-data --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data | grep -E 'changelog-v2|revlog-v2'
+  $ hg debugformat -v -R up-no-side-data --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data changelog-v2 revlog-v2
+  format-variant     repo config default
   revlog-v2:           no    yes      no
   changelog-v2:        no     no      no
   $ hg debugupgraderepo -R up-no-side-data --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data > /dev/null
@@ -73,10 +75,12 @@
 -----------------------------------------
 
   $ hg init up-side-data --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data
-  $ hg debugformat -v -R up-side-data | grep -E 'changelog-v2|revlog-v2'
+  $ hg debugformat -v -R up-side-data changelog-v2 revlog-v2
+  format-variant     repo config default
   revlog-v2:          yes     no      no
   changelog-v2:        no     no      no
-  $ hg debugformat -v -R up-side-data --config experimental.revlogv2=no | grep -E 'changelog-v2|revlog-v2'
+  $ hg debugformat -v -R up-side-data --config experimental.revlogv2=no changelog-v2 revlog-v2
+  format-variant     repo config default
   revlog-v2:          yes     no      no
   changelog-v2:        no     no      no
   $ hg debugupgraderepo -R up-side-data --config experimental.revlogv2=no > /dev/null
--- a/tests/test-status-tracked-key.t	Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-status-tracked-key.t	Mon Nov 18 17:25:30 2024 +0100
@@ -211,7 +211,8 @@
   $ hg debugbuilddag -R auto-upgrade --new-file .+5
   $ hg -R auto-upgrade update
   6 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg debugformat -R auto-upgrade | grep tracked
+  $ hg debugformat -R auto-upgrade tracked-hint
+  format-variant     repo
   tracked-hint:        no
 
 upgrade it to dirstate-tracked-hint automatically
@@ -221,7 +222,8 @@
   > --config format.use-dirstate-tracked-hint=yes
   automatically upgrading repository to the `tracked-hint` feature
   (see `hg help config.format.use-dirstate-tracked-hint` for details)
-  $ hg debugformat -R auto-upgrade | grep tracked
+  $ hg debugformat -R auto-upgrade tracked-hint
+  format-variant     repo
   tracked-hint:       yes
 
 rhg supports this feature
@@ -236,5 +238,6 @@
   > --config format.use-dirstate-tracked-hint=no
   automatically downgrading repository from the `tracked-hint` feature
   (see `hg help config.format.use-dirstate-tracked-hint` for details)
-  $ hg debugformat -R auto-upgrade | grep tracked
+  $ hg debugformat -R auto-upgrade tracked
+  format-variant     repo
   tracked-hint:        no
--- a/tests/test-upgrade-repo.t	Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-upgrade-repo.t	Mon Nov 18 17:25:30 2024 +0100
@@ -61,9 +61,11 @@
   
   no revlogs to process
   
-  $ hg debugformat -R share-child | grep dirstate-v2
+  $ hg debugformat -R share-child dirstate-v2
+  format-variant     repo
   dirstate-v2:        yes
-  $ hg debugformat -R share-parent | grep dirstate-v2
+  $ hg debugformat -R share-parent dirstate-v2
+  format-variant     repo
   dirstate-v2:         no
   $ hg status --all -R share-child
   C nf0
@@ -131,9 +133,11 @@
   
   no revlogs to process
   
-  $ hg debugformat -R share-child | grep dirstate-v2
+  $ hg debugformat -R share-child dirstate-v2
+  format-variant     repo
   dirstate-v2:         no
-  $ hg debugformat -R share-parent | grep dirstate-v2
+  $ hg debugformat -R share-parent dirstate-v2
+  format-variant     repo
   dirstate-v2:         no
   $ hg status --all -R share-child
   C nf0
@@ -1869,7 +1873,8 @@
 
 Upgrade to dirstate-v2
 
-  $ hg debugformat -v --config format.use-dirstate-v2=1 | grep dirstate-v2
+  $ hg debugformat -v --config format.use-dirstate-v2=1 dirstate-v2
+  format-variant     repo config default
   dirstate-v2:         no    yes      no
   $ hg debugupgraderepo --config format.use-dirstate-v2=1 --run
   upgrade will perform the following actions:
@@ -1892,7 +1897,8 @@
   removing temporary repository $TESTTMP/sparserevlogrepo/.hg/upgrade.* (glob)
   $ ls .hg/upgradebackup.*/dirstate
   .hg/upgradebackup.*/dirstate (glob)
-  $ hg debugformat -v | grep dirstate-v2
+  $ hg debugformat -v dirstate-v2
+  format-variant     repo config default
   dirstate-v2:        yes     no      no
   $ hg status
   $ dd bs=12 count=1 if=.hg/dirstate 2> /dev/null
@@ -1916,7 +1922,8 @@
   downgrading from dirstate-v2 to v1
   replaced files will be backed up at $TESTTMP/sparserevlogrepo/.hg/upgradebackup.* (glob)
   removing temporary repository $TESTTMP/sparserevlogrepo/.hg/upgrade.* (glob)
-  $ hg debugformat -v | grep dirstate-v2
+  $ hg debugformat -v dirstate-v2
+  format-variant     repo config default
   dirstate-v2:         no     no      no
   $ hg status
 
@@ -1927,7 +1934,8 @@
 
   $ hg init --config format.use-dirstate-v2=no dirstate-v2-empty
   $ cd dirstate-v2-empty
-  $ hg debugformat | grep dirstate-v2
+  $ hg debugformat dirstate-v2
+  format-variant     repo
   dirstate-v2:         no
 
 upgrade
@@ -1951,7 +1959,8 @@
   upgrading to dirstate-v2 from v1
   replaced files will be backed up at $TESTTMP/dirstate-v2-empty/.hg/upgradebackup.* (glob)
   removing temporary repository $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob)
-  $ hg debugformat | grep dirstate-v2
+  $ hg debugformat dirstate-v2
+  format-variant     repo
   dirstate-v2:        yes
 
 downgrade
@@ -1972,7 +1981,8 @@
   downgrading from dirstate-v2 to v1
   replaced files will be backed up at $TESTTMP/dirstate-v2-empty/.hg/upgradebackup.* (glob)
   removing temporary repository $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob)
-  $ hg debugformat | grep dirstate-v2
+  $ hg debugformat dirstate-v2
+  format-variant     repo
   dirstate-v2:         no
 
   $ cd ..
@@ -1993,7 +2003,8 @@
   $ hg debugbuilddag -R auto-upgrade --new-file .+5
   $ hg -R auto-upgrade update
   6 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg debugformat -R auto-upgrade | grep dirstate-v2
+  $ hg debugformat -R auto-upgrade dirstate-v2
+  format-variant     repo
   dirstate-v2:         no
 
 upgrade it to dirstate-v2 automatically
@@ -2003,7 +2014,8 @@
   >     --config format.use-dirstate-v2=yes
   automatically upgrading repository to the `dirstate-v2` feature
   (see `hg help config.format.use-dirstate-v2` for details)
-  $ hg debugformat -R auto-upgrade | grep dirstate-v2
+  $ hg debugformat -R auto-upgrade dirstate-v2
+  format-variant     repo
   dirstate-v2:        yes
 
 downgrade it from dirstate-v2 automatically
@@ -2013,14 +2025,16 @@
   >     --config format.use-dirstate-v2=no
   automatically downgrading repository from the `dirstate-v2` feature
   (see `hg help config.format.use-dirstate-v2` for details)
-  $ hg debugformat -R auto-upgrade | grep dirstate-v2
+  $ hg debugformat -R auto-upgrade dirstate-v2
+  format-variant     repo
   dirstate-v2:         no
 
 
 For multiple change at the same time
 ------------------------------------
 
-  $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)'
+  $ hg debugformat -R auto-upgrade dirstate-v2 tracked share-safe
+  format-variant     repo
   dirstate-v2:         no
   tracked-hint:       yes
   share-safe:          no
@@ -2038,7 +2052,8 @@
   (see `hg help config.format.use-share-safe` for details)
   automatically downgrading repository from the `tracked-hint` feature
   (see `hg help config.format.use-dirstate-tracked-hint` for details)
-  $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)'
+  $ hg debugformat -R auto-upgrade dirstate-v2 tracked share-safe
+  format-variant     repo
   dirstate-v2:        yes
   tracked-hint:        no
   share-safe:         yes
@@ -2047,7 +2062,8 @@
 ---------------------------
 
 
-  $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)'
+  $ hg debugformat -R auto-upgrade dirstate-v2 tracked share-safe
+  format-variant     repo
   dirstate-v2:        yes
   tracked-hint:        no
   share-safe:         yes
@@ -2062,7 +2078,8 @@
   >     --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet=yes \
   >     --config format.use-share-safe=no
 
-  $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)'
+  $ hg debugformat -R auto-upgrade dirstate-v2 tracked share-safe
+  format-variant     repo
   dirstate-v2:         no
   tracked-hint:       yes
   share-safe:          no
@@ -2077,7 +2094,8 @@
   >     --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories=yes \
   >     --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet=yes \
   >     --config format.use-share-safe=yes
-  $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)'
+  $ hg debugformat -R auto-upgrade dirstate-v2 tracked share-safe
+  format-variant     repo
   dirstate-v2:        yes
   tracked-hint:        no
   share-safe:         yes
@@ -2092,7 +2110,8 @@
   $ hg status -R auto-upgrade \
   >     --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories=yes \
   >     --config format.use-dirstate-v2=no
-  $ hg debugformat -R auto-upgrade | grep dirstate-v2
+  $ hg debugformat -R auto-upgrade dirstate-v2
+  format-variant     repo
   dirstate-v2:        yes
 
   $ chmod -R u+w auto-upgrade
@@ -2107,7 +2126,8 @@
   $ hg status -R auto-upgrade \
   >     --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories=yes \
   >     --config format.use-dirstate-v2=no
-  $ hg debugformat -R auto-upgrade | grep dirstate-v2
+  $ hg debugformat -R auto-upgrade dirstate-v2
+  format-variant     repo
   dirstate-v2:        yes
 
   $ killdaemons.py