Patchwork [3,of,5] generate-working-copy-states: accept depth arguments on command line

login
register
mail settings
Submitter Martin von Zweigbergk
Date Dec. 1, 2014, 6:14 a.m.
Message ID <cc7e94d51670496aa615.1417414498@martinvonz.mtv.corp.google.com>
Download mbox | patch
Permalink /patch/6927/
State Accepted
Headers show

Comments

Martin von Zweigbergk - Dec. 1, 2014, 6:14 a.m.
# HG changeset patch
# User Martin von Zweigbergk <martinvonz@google.com>
# Date 1415520629 28800
#      Sun Nov 09 00:10:29 2014 -0800
# Node ID cc7e94d51670496aa6150f282149f28dae754fa6
# Parent  ca7817e83c7fa92036b96ab000a8b57a69313d0e
generate-working-copy-states: accept depth arguments on command line

Add an parameters to generate-working-copy-states.py that indicates
how many changesets are wanted. This number impacts all the
subcommands. The current 'filelist' subcommand becomes 'filelist 2',
the current 'base' and 'parent' subcommands become 'state 2 1' and
'state 2 2' respectively, while 'wc' becomes 'state 2 wc'.

See earlier patch for motivation.
Pierre-Yves David - Dec. 2, 2014, 10:14 p.m.
On 11/30/2014 10:14 PM, Martin von Zweigbergk wrote:
> generate-working-copy-states: accept depth arguments on command line
>
> Add an parameters to generate-working-copy-states.py that indicates
> how many changesets are wanted. This number impacts all the
> subcommands. The current 'filelist' subcommand becomes 'filelist 2',
> the current 'base' and 'parent' subcommands become 'state 2 1' and
> 'state 2 2' respectively, while 'wc' becomes 'state 2 wc'.
>
> See earlier patch for motivation.

The patch itself sounds good to me, but the cli api start to get hairy. 
Can I get you to add some documentation about the way it is supposed to 
the used at the beginning of the script?

Patch

diff --git a/tests/generate-working-copy-states.py b/tests/generate-working-copy-states.py
--- a/tests/generate-working-copy-states.py
+++ b/tests/generate-working-copy-states.py
@@ -21,25 +21,27 @@ 
                                               parentcontents + [content]):
                 yield combination
 
+# retrieve the command line arguments
+target = sys.argv[1]
+maxchangesets = int(sys.argv[2])
+if target == 'state':
+    depth = sys.argv[3]
+
 # sort to make sure we have stable output
-combinations = sorted(generatestates(2, []))
-
-# retrieve the state we must generate
-target = sys.argv[1]
+combinations = sorted(generatestates(maxchangesets, []))
 
 # compute file content
 content = []
-for filename, [base, parent, wcc] in combinations:
+for filename, states in combinations:
     if target == 'filelist':
         print filename
-    elif target == 'base':
-        content.append((filename, base))
-    elif target == 'parent':
-        content.append((filename, parent))
-    elif target == 'wc':
-        # Make sure there is content so the file gets written and can be
-        # tracked. It will be deleted outside of this script.
-        content.append((filename, wcc or 'TOBEDELETED'))
+    elif target == 'state':
+        if depth == 'wc':
+            # Make sure there is content so the file gets written and can be
+            # tracked. It will be deleted outside of this script.
+            content.append((filename, states[maxchangesets] or 'TOBEDELETED'))
+        else:
+            content.append((filename, states[int(depth) - 1]))
     else:
         print >> sys.stderr, "unknown target:", target
         sys.exit(1)
diff --git a/tests/test-revert.t b/tests/test-revert.t
--- a/tests/test-revert.t
+++ b/tests/test-revert.t
@@ -430,7 +430,7 @@ 
 
 check list of planned files
 
-  $ python $TESTDIR/generate-working-copy-states.py filelist
+  $ python $TESTDIR/generate-working-copy-states.py filelist 2
   content1_content1_content1-tracked
   content1_content1_content1-untracked
   content1_content1_content3-tracked
@@ -485,7 +485,7 @@ 
 
 Generate base changeset
 
-  $ python $TESTDIR/generate-working-copy-states.py base
+  $ python $TESTDIR/generate-working-copy-states.py state 2 1
   $ hg addremove --similarity 0
   adding content1_content1_content1-tracked
   adding content1_content1_content1-untracked
@@ -557,7 +557,7 @@ 
 
 Create parent changeset
 
-  $ python $TESTDIR/generate-working-copy-states.py parent
+  $ python $TESTDIR/generate-working-copy-states.py state 2 2
   $ hg addremove --similarity 0
   removing content1_missing_content1-tracked
   removing content1_missing_content1-untracked
@@ -621,7 +621,7 @@ 
 
 Setup working directory
 
-  $ python $TESTDIR/generate-working-copy-states.py wc
+  $ python $TESTDIR/generate-working-copy-states.py state 2 wc
   $ hg addremove --similarity 0
   adding content1_missing_content1-tracked
   adding content1_missing_content1-untracked
@@ -838,7 +838,7 @@ 
 revert all files individually and check the output
 (output is expected to be different than in the --all case)
 
-  $ for file in `python $TESTDIR/generate-working-copy-states.py filelist`; do
+  $ for file in `python $TESTDIR/generate-working-copy-states.py filelist 2`; do
   >   echo '### revert for:' $file;
   >   hg revert $file;
   >   echo
@@ -931,7 +931,7 @@ 
 revert all files individually and check the output
 (output is expected to be different than in the --all case)
 
-  $ for file in `python $TESTDIR/generate-working-copy-states.py filelist`; do
+  $ for file in `python $TESTDIR/generate-working-copy-states.py filelist 2`; do
   >   echo '### revert for:' $file;
   >   hg revert $file --rev 'desc(base)';
   >   echo
diff --git a/tests/test-status-rev.t b/tests/test-status-rev.t
--- a/tests/test-status-rev.t
+++ b/tests/test-status-rev.t
@@ -5,7 +5,7 @@ 
 
 First commit
 
-  $ python $TESTDIR/generate-working-copy-states.py base
+  $ python $TESTDIR/generate-working-copy-states.py state 2 1
   $ hg addremove --similarity 0
   adding content1_content1_content1-tracked
   adding content1_content1_content1-untracked
@@ -31,7 +31,7 @@ 
 
 Second commit
 
-  $ python $TESTDIR/generate-working-copy-states.py parent
+  $ python $TESTDIR/generate-working-copy-states.py state 2 2
   $ hg addremove --similarity 0
   removing content1_missing_content1-tracked
   removing content1_missing_content1-untracked
@@ -49,7 +49,7 @@ 
 
 Working copy
 
-  $ python $TESTDIR/generate-working-copy-states.py wc
+  $ python $TESTDIR/generate-working-copy-states.py state 2 wc
   $ hg addremove --similarity 0
   adding content1_missing_content1-tracked
   adding content1_missing_content1-untracked