# HG changeset patch # User Martin von Zweigbergk # Date 1415520629 28800 # Node ID 815e76a45b24c62165f76dd66eca8022232444a1 # Parent e51027c85dcd89214df85caa55475206280777c4 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. diff -r e51027c85dcd -r 815e76a45b24 tests/generate-working-copy-states.py --- 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 +# state (|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) diff -r e51027c85dcd -r 815e76a45b24 tests/test-revert.t --- 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 diff -r e51027c85dcd -r 815e76a45b24 tests/test-status-rev.t --- 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