Mercurial > hg-stable
changeset 23447:815e76a45b24
generate-working-copy-states: accept depth arguments on command line
Add a parameter 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.
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Sun, 09 Nov 2014 00:10:29 -0800 |
parents | e51027c85dcd |
children | 6a92b5fcfba8 |
files | tests/generate-working-copy-states.py tests/test-revert.t tests/test-status-rev.t |
diffstat | 3 files changed, 55 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/generate-working-copy-states.py Sat Nov 08 23:37:54 2014 -0800 +++ b/tests/generate-working-copy-states.py Sun Nov 09 00:10:29 2014 -0800 @@ -1,4 +1,34 @@ -# generate proper file state to test working copy behavior +# Helper script used for generating history and working copy files and content. +# The file's name corresponds to its history. The number of changesets can +# be specified on the command line. With 2 changesets, files with names like +# content1_content2_content1-untracked are generated. The first two filename +# segments describe the contents in the two changesets. The third segment +# ("content1-untracked") describes the state in the working copy, i.e. +# the file has content "content1" and is untracked (since it was previously +# tracked, it has been forgotten). +# +# This script generates the filenames and their content, but it's up to the +# caller to tell hg about the state. +# +# There are two subcommands: +# filelist <numchangesets> +# state <numchangesets> (<changeset>|wc) +# +# Typical usage: +# +# $ python $TESTDIR/generate-working-copy-states.py state 2 1 +# $ hg addremove --similarity 0 +# $ hg commit -m 'first' +# +# $ python $TESTDIR/generate-working-copy-states.py state 2 1 +# $ hg addremove --similarity 0 +# $ hg commit -m 'second' +# +# $ python $TESTDIR/generate-working-copy-states.py state 2 wc +# $ hg addremove --similarity 0 +# $ hg forget *_*_*-untracked +# $ rm *_*_missing-* + import sys import os @@ -21,25 +51,27 @@ parentcontents + [content]): yield combination -# sort to make sure we have stable output -combinations = sorted(generatestates(2, [])) +# retrieve the command line arguments +target = sys.argv[1] +maxchangesets = int(sys.argv[2]) +if target == 'state': + depth = sys.argv[3] -# retrieve the state we must generate -target = sys.argv[1] +# sort to make sure we have stable output +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)
--- a/tests/test-revert.t Sat Nov 08 23:37:54 2014 -0800 +++ b/tests/test-revert.t Sun Nov 09 00:10:29 2014 -0800 @@ -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
--- a/tests/test-status-rev.t Sat Nov 08 23:37:54 2014 -0800 +++ b/tests/test-status-rev.t Sun Nov 09 00:10:29 2014 -0800 @@ -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