# HG changeset patch # User Greg Ward # Date 1247755181 14400 # Node ID a604c98dbf624e4916951e9bd709826aa47e6ba8 # Parent 63cfacb7917e3708be169fa6b8ac1031780dc3dc 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) diff -r 63cfacb7917e -r a604c98dbf62 tests/test-tags --- 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 .. diff -r 63cfacb7917e -r a604c98dbf62 tests/test-tags.out --- 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