##// END OF EJS Templates
test-revert: move embedded script to its own file...
Martin von Zweigbergk -
r23195:29977b31 default
parent child Browse files
Show More
@@ -0,0 +1,50 b''
1 # generate proper file state to test working copy behavior
2 import sys
3 import os
4
5 # build the combination of possible states
6 combination = []
7 for base in [None, 'content1']:
8 for parent in set([None, 'content2']) | set([base]):
9 for wcc in set([None, 'content3']) | set([base, parent]):
10 for tracked in (False, True):
11 def statestring(content):
12 return content is None and 'missing' or content
13 trackedstring = tracked and 'tracked' or 'untracked'
14 filename = "%s_%s_%s-%s" % (statestring(base),
15 statestring(parent),
16 statestring(wcc),
17 trackedstring)
18 combination.append((filename, base, parent, wcc))
19
20 # make sure we have stable output
21 combination.sort()
22
23 # retrieve the state we must generate
24 target = sys.argv[1]
25
26 # compute file content
27 content = []
28 for filename, base, parent, wcc in combination:
29 if target == 'filelist':
30 print filename
31 elif target == 'base':
32 content.append((filename, base))
33 elif target == 'parent':
34 content.append((filename, parent))
35 elif target == 'wc':
36 # Make sure there is content so the file gets written and can be
37 # tracked. It will be deleted outside of this script.
38 content.append((filename, wcc or 'TOBEDELETED'))
39 else:
40 print >> sys.stderr, "unknown target:", target
41 sys.exit(1)
42
43 # write actual content
44 for filename, data in content:
45 if data is not None:
46 f = open(filename, 'w')
47 f.write(data + '\n')
48 f.close()
49 elif os.path.exists(filename):
50 os.remove(filename)
@@ -422,62 +422,9 b' Special cases from merge and rename are '
422 Write the python script to disk
422 Write the python script to disk
423 -------------------------------
423 -------------------------------
424
424
425 $ cat << EOF > gen-revert-cases.py
426 > # generate proper file state to test revert behavior
427 > import sys
428 > import os
429 >
430 > # build the combination of possible states
431 > combination = []
432 > for base in [None, 'content1']:
433 > for parent in set([None, 'content2']) | set([base]):
434 > for wcc in set([None, 'content3']) | set([base, parent]):
435 > for tracked in (False, True):
436 > def statestring(content):
437 > return content is None and 'missing' or content
438 > trackedstring = tracked and 'tracked' or 'untracked'
439 > filename = "%s_%s_%s-%s" % (statestring(base),
440 > statestring(parent),
441 > statestring(wcc),
442 > trackedstring)
443 > combination.append((filename, base, parent, wcc))
444 >
445 > # make sure we have stable output
446 > combination.sort()
447 >
448 > # retrieve the state we must generate
449 > target = sys.argv[1]
450 >
451 > # compute file content
452 > content = []
453 > for filename, base, parent, wcc in combination:
454 > if target == 'filelist':
455 > print filename
456 > elif target == 'base':
457 > content.append((filename, base))
458 > elif target == 'parent':
459 > content.append((filename, parent))
460 > elif target == 'wc':
461 > # Make sure there is content so the file gets written and can be
462 > # tracked. It will be deleted outside of this script.
463 > content.append((filename, wcc or 'TOBEDELETED'))
464 > else:
465 > print >> sys.stderr, "unknown target:", target
466 > sys.exit(1)
467 >
468 > # write actual content
469 > for filename, data in content:
470 > if data is not None:
471 > f = open(filename, 'w')
472 > f.write(data + '\n')
473 > f.close()
474 > elif os.path.exists(filename):
475 > os.remove(filename)
476 > EOF
477
478 check list of planned files
425 check list of planned files
479
426
480 $ python gen-revert-cases.py filelist
427 $ python $TESTDIR/generate-working-copy-states.py filelist
481 content1_content1_content1-tracked
428 content1_content1_content1-tracked
482 content1_content1_content1-untracked
429 content1_content1_content1-untracked
483 content1_content1_content3-tracked
430 content1_content1_content3-tracked
@@ -532,7 +479,7 b' Generate appropriate repo state'
532
479
533 Generate base changeset
480 Generate base changeset
534
481
535 $ python ../gen-revert-cases.py base
482 $ python $TESTDIR/generate-working-copy-states.py base
536 $ hg addremove --similarity 0
483 $ hg addremove --similarity 0
537 adding content1_content1_content1-tracked
484 adding content1_content1_content1-tracked
538 adding content1_content1_content1-untracked
485 adding content1_content1_content1-untracked
@@ -604,7 +551,7 b' Generate base changeset'
604
551
605 Create parent changeset
552 Create parent changeset
606
553
607 $ python ../gen-revert-cases.py parent
554 $ python $TESTDIR/generate-working-copy-states.py parent
608 $ hg addremove --similarity 0
555 $ hg addremove --similarity 0
609 removing content1_missing_content1-tracked
556 removing content1_missing_content1-tracked
610 removing content1_missing_content1-untracked
557 removing content1_missing_content1-untracked
@@ -668,7 +615,7 b' Create parent changeset'
668
615
669 Setup working directory
616 Setup working directory
670
617
671 $ python ../gen-revert-cases.py wc
618 $ python $TESTDIR/generate-working-copy-states.py wc
672 $ hg addremove --similarity 0
619 $ hg addremove --similarity 0
673 adding content1_missing_content1-tracked
620 adding content1_missing_content1-tracked
674 adding content1_missing_content1-untracked
621 adding content1_missing_content1-untracked
@@ -885,7 +832,7 b' Test revert to parent content with expli'
885 revert all files individually and check the output
832 revert all files individually and check the output
886 (output is expected to be different than in the --all case)
833 (output is expected to be different than in the --all case)
887
834
888 $ for file in `python ../gen-revert-cases.py filelist`; do
835 $ for file in `python $TESTDIR/generate-working-copy-states.py filelist`; do
889 > echo '### revert for:' $file;
836 > echo '### revert for:' $file;
890 > hg revert $file;
837 > hg revert $file;
891 > echo
838 > echo
@@ -978,7 +925,7 b' Test revert to "base" content with expli'
978 revert all files individually and check the output
925 revert all files individually and check the output
979 (output is expected to be different than in the --all case)
926 (output is expected to be different than in the --all case)
980
927
981 $ for file in `python ../gen-revert-cases.py filelist`; do
928 $ for file in `python $TESTDIR/generate-working-copy-states.py filelist`; do
982 > echo '### revert for:' $file;
929 > echo '### revert for:' $file;
983 > hg revert $file --rev 'desc(base)';
930 > hg revert $file --rev 'desc(base)';
984 > echo
931 > echo
General Comments 0
You need to be logged in to leave comments. Login now