test-tags: clarify test output; simplify test script a bit (issue548).
- use simpler way ('hg id') to get current changeset id
- add 'echo' statements to guide the eye when reading output
- add some more output to clarify the state of .hgtags
- drop '-d' option from every commit/tag, since run-tests.py
does this (although with a different timestamp, so changeset
ids differ)
--- a/tests/test-tags Wed Jul 15 17:44:47 2009 +0200
+++ b/tests/test-tags Thu Jul 16 10:39:41 2009 -0400
@@ -1,24 +1,31 @@
#!/bin/sh
+echo "% setup"
mkdir t
cd t
hg init
hg id
echo a > a
hg add a
-hg commit -m "test" -d "1000000 0"
+hg commit -m "test"
hg co
hg identify
-T=`hg tip --debug | head -n 1 | cut -d : -f 3`
+
+echo "% create local tag with long name"
+T=`hg identify --debug --id`
hg tag -l "This is a local tag with a really long name!"
hg tags
rm .hg/localtags
+
+echo "% create a tag behind hg's back"
echo "$T first" > .hgtags
cat .hgtags
hg add .hgtags
-hg commit -m "add tags" -d "1000000 0"
+hg commit -m "add tags"
hg tags
hg identify
+
+echo "% create a branch"
echo bb > a
hg status
hg identify
@@ -28,89 +35,94 @@
hg status
echo 1 > b
hg add b
-hg commit -m "branch" -d "1000000 0"
+hg commit -m "branch"
hg id
+
+echo "% merge the two heads"
hg merge 1
hg id
hg status
-hg commit -m "merge" -d "1000000 0"
+hg commit -m "merge"
-# create fake head, make sure tag not visible afterwards
+echo "% create fake head, make sure tag not visible afterwards"
cp .hgtags tags
-hg tag -d "1000000 0" last
+hg tag last
hg rm .hgtags
-hg commit -m "remove" -d "1000000 0"
+hg commit -m "remove"
mv tags .hgtags
hg add .hgtags
-hg commit -m "readd" -d "1000000 0"
+hg commit -m "readd"
hg tags
-# invalid tags
+echo "% add invalid tags"
echo "spam" >> .hgtags
echo >> .hgtags
echo "foo bar" >> .hgtags
echo "$T invalid" | sed "s/..../a5a5/" >> .hg/localtags
-hg commit -m "tags" -d "1000000 0"
+echo "committing .hgtags:"
+cat .hgtags
+hg commit -m "tags"
-# report tag parse error on other head
+echo "% report tag parse error on other head"
hg up 3
echo 'x y' >> .hgtags
-hg commit -m "head" -d "1000000 0"
+hg commit -m "head"
hg tags
hg tip
-# test tag precedence rules
+echo "% test tag precedence rules"
cd ..
hg init t2
cd t2
echo foo > foo
hg add foo
-hg ci -m 'add foo' -d '1000000 0' # rev 0
-hg tag -d '1000000 0' bar # rev 1
+hg ci -m 'add foo' # rev 0
+hg tag bar # rev 1
echo >> foo
-hg ci -m 'change foo 1' -d '1000000 0' # rev 2
+hg ci -m 'change foo 1' # rev 2
hg up -C 1
-hg tag -r 1 -d '1000000 0' -f bar # rev 3
+hg tag -r 1 -f bar # rev 3
hg up -C 1
echo >> foo
-hg ci -m 'change foo 2' -d '1000000 0' # rev 4
+hg ci -m 'change foo 2' # rev 4
hg tags
-# test tag removal
-hg tag --remove -d '1000000 0' bar
-hg tip
+echo "% test tag removal"
+hg tag --remove bar # rev 5
+hg tip -vp
hg tags
echo '% remove nonexistent tag'
-hg tag --remove -d '1000000 0' foobar
+hg tag --remove foobar
hg tip
-# test tag rank
+echo "% test tag rank"
cd ..
hg init t3
cd t3
echo foo > foo
hg add foo
-hg ci -m 'add foo' -d '1000000 0' # rev 0
-hg tag -d '1000000 0' -f bar # rev 1 bar -> 0
-hg tag -d '1000000 0' -f bar # rev 2 bar -> 1
-hg tag -d '1000000 0' -fr 0 bar # rev 3 bar -> 0
-hg tag -d '1000000 0' -fr 1 bar # rev 3 bar -> 1
-hg tag -d '1000000 0' -fr 0 bar # rev 4 bar -> 0
+hg ci -m 'add foo' # rev 0
+hg tag -f bar # rev 1 bar -> 0
+hg tag -f bar # rev 2 bar -> 1
+hg tag -fr 0 bar # rev 3 bar -> 0
+hg tag -fr 1 bar # rev 4 bar -> 1
+hg tag -fr 0 bar # rev 5 bar -> 0
hg tags
hg co 3
echo barbar > foo
-hg ci -m 'change foo' -d '1000000 0' # rev 0
+hg ci -m 'change foo' # rev 6
hg tags
-hg tag -d '1000000 0' -r 3 bar # should complain
+echo "% don't allow moving tag without -f"
+hg tag -r 3 bar
hg tags
-# test tag rank with 3 heads
+echo "% test tag rank with 3 heads"
cd ..
hg init t4
cd t4
@@ -124,10 +136,11 @@
hg tags
hg up -qC 0
hg tag -m 'retag rev 0' -fr 0 bar # rev 4 bar -> 0, but bar stays at 2
-echo % bar should still point to rev 2
+echo "% bar should still point to rev 2"
hg tags
+echo "% remove local as global and global as local"
# test that removing global/local tags does not get confused when trying
# to remove a tag of type X which actually only exists as a type Y
cd ..
--- a/tests/test-tags.out Wed Jul 15 17:44:47 2009 +0200
+++ b/tests/test-tags.out Thu Jul 16 10:39:41 2009 -0400
@@ -1,78 +1,108 @@
+% setup
000000000000 tip
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-0acdaf898367 tip
-tip 0:0acdaf898367
-This is a local tag with a really long name! 0:0acdaf898367
-0acdaf8983679e0aac16e811534eb49d7ee1f2b4 first
-tip 1:8a3ca90d111d
-first 0:0acdaf898367
-8a3ca90d111d tip
+acb14030fe0a tip
+% create local tag with long name
+tip 0:acb14030fe0a
+This is a local tag with a really long name! 0:acb14030fe0a
+% create a tag behind hg's back
+acb14030fe0a21b60322c440ad2d20cf7685a376 first
+tip 1:b9154636be93
+first 0:acb14030fe0a
+b9154636be93 tip
+% create a branch
M a
-8a3ca90d111d+ tip
+b9154636be93+ tip
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-0acdaf898367+ first
-0acdaf898367+ first
+acb14030fe0a+ first
+acb14030fe0a+ first
M a
created new head
-8216907a933d tip
+c8edf04160c7 tip
+% merge the two heads
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
-8216907a933d+8a3ca90d111d+ tip
+c8edf04160c7+b9154636be93+ tip
M .hgtags
-tip 6:e2174d339386
-first 0:0acdaf898367
+% create fake head, make sure tag not visible afterwards
+tip 6:35ff301afafe
+first 0:acb14030fe0a
+% add invalid tags
+committing .hgtags:
+acb14030fe0a21b60322c440ad2d20cf7685a376 first
+spam
+
+foo bar
+% report tag parse error on other head
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
created new head
-.hgtags@c071f74ab5eb, line 2: cannot parse entry
-.hgtags@c071f74ab5eb, line 4: node 'foo' is not well formed
-.hgtags@4ca6f1b1a68c, line 2: node 'x' is not well formed
-tip 8:4ca6f1b1a68c
-first 0:0acdaf898367
-changeset: 8:4ca6f1b1a68c
-.hgtags@c071f74ab5eb, line 2: cannot parse entry
-.hgtags@c071f74ab5eb, line 4: node 'foo' is not well formed
-.hgtags@4ca6f1b1a68c, line 2: node 'x' is not well formed
+.hgtags@75d9f02dfe28, line 2: cannot parse entry
+.hgtags@75d9f02dfe28, line 4: node 'foo' is not well formed
+.hgtags@c4be69a18c11, line 2: node 'x' is not well formed
+tip 8:c4be69a18c11
+first 0:acb14030fe0a
+changeset: 8:c4be69a18c11
+.hgtags@75d9f02dfe28, line 2: cannot parse entry
+.hgtags@75d9f02dfe28, line 4: node 'foo' is not well formed
+.hgtags@c4be69a18c11, line 2: node 'x' is not well formed
tag: tip
-parent: 3:b2ef3841386b
+parent: 3:ac5e980c4dc0
user: test
-date: Mon Jan 12 13:46:40 1970 +0000
+date: Thu Jan 01 00:00:00 1970 +0000
summary: head
+% test tag precedence rules
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
created new head
-tip 4:36195b728445
-bar 1:b204a97e6e8d
-changeset: 5:1f98c77278de
+tip 4:0c192d7d5e6b
+bar 1:78391a272241
+% test tag removal
+changeset: 5:5f6e8655b1c7
tag: tip
user: test
-date: Mon Jan 12 13:46:40 1970 +0000
-summary: Removed tag bar
+date: Thu Jan 01 00:00:00 1970 +0000
+files: .hgtags
+description:
+Removed tag bar
+
-tip 5:1f98c77278de
+diff -r 0c192d7d5e6b -r 5f6e8655b1c7 .hgtags
+--- a/.hgtags Thu Jan 01 00:00:00 1970 +0000
++++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
+@@ -1,1 +1,3 @@
+ bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
++78391a272241d70354aa14c874552cad6b51bb42 bar
++0000000000000000000000000000000000000000 bar
+
+tip 5:5f6e8655b1c7
% remove nonexistent tag
abort: tag 'foobar' does not exist
-changeset: 5:1f98c77278de
+changeset: 5:5f6e8655b1c7
tag: tip
user: test
-date: Mon Jan 12 13:46:40 1970 +0000
+date: Thu Jan 01 00:00:00 1970 +0000
summary: Removed tag bar
-tip 5:e86d7ed95fd3
-bar 0:b409d9da318e
+% test tag rank
+tip 5:85f05169d91d
+bar 0:bbd179dfa0a7
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
created new head
-tip 6:b744fbe1f6dd
-bar 0:b409d9da318e
+tip 6:735c3ca72986
+bar 0:bbd179dfa0a7
+% don't allow moving tag without -f
abort: tag 'bar' already exists (use -f to force)
-tip 6:b744fbe1f6dd
-bar 0:b409d9da318e
+tip 6:735c3ca72986
+bar 0:bbd179dfa0a7
+% test tag rank with 3 heads
adding foo
tip 3:197c21bbbf2c
bar 2:6fa450212aeb
% bar should still point to rev 2
tip 4:3b4b14ed0202
bar 2:6fa450212aeb
+% remove local as global and global as local
adding foo
abort: tag 'localtag' is not a global tag
abort: tag 'globaltag' is not a local tag