subrepo: add a test
authorMatt Mackall <mpm@selenic.com>
Mon, 15 Jun 2009 02:51:10 -0500
changeset 8816 a7c4eb0cc0ed
parent 8815 e87b0fc4750b
child 8817 6c9dce20ed70
subrepo: add a test
tests/test-subrepo
tests/test-subrepo.out
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-subrepo	Mon Jun 15 02:51:10 2009 -0500
@@ -0,0 +1,106 @@
+#!/bin/sh
+
+rm -rf sub
+mkdir sub
+cd sub
+hg init t
+cd t
+
+echo % first revision, no sub
+echo a > a
+hg ci -Am0
+
+echo % add first sub
+echo s = s > .hgsub
+hg add .hgsub
+hg init s
+echo a > s/a
+hg -R s ci -Ams0
+hg ci -m1
+
+echo % add sub sub
+echo ss = ss > s/.hgsub
+hg init s/ss
+echo a > s/ss/a
+hg -R s add s/.hgsub
+hg -R s/ss add s/ss/a
+hg ci -m2
+
+echo % bump sub rev
+echo b > s/a
+hg -R s ci -ms1
+hg ci -m3
+
+echo % leave sub dirty
+echo c > s/a
+hg ci -m4
+hg tip -R s
+
+echo % check caching
+hg co 0
+hg debugsub
+echo % restore
+hg co
+hg debugsub
+
+echo % new branch for merge tests
+hg co 1
+echo t = t >> .hgsub
+hg init t
+echo t > t/t
+hg -R t add t
+echo % 5
+hg ci -m5 # add sub
+echo t2 > t/t
+echo % 6
+hg st -R s
+hg ci -m6 # change sub
+hg debugsub
+echo t3 > t/t
+echo % 7
+hg ci -m7 # change sub again for conflict test
+hg rm .hgsub
+echo % 8
+hg ci -m8 # remove sub
+
+echo % merge tests
+hg co -C 3
+hg merge 5 # test adding
+hg debugsub
+hg ci -m9
+hg merge 6 --debug # test change
+hg debugsub
+echo conflict > t/t
+hg ci -m10
+HGMERGE=internal:merge hg merge --debug 7 # test conflict
+echo % should conflict
+cat t/t
+
+echo % clone
+cd ..
+hg clone t tc
+cd tc
+hg debugsub
+
+echo % push
+echo bah > t/t
+hg ci -m11
+hg push | sed 's/ .*sub/ ...sub/g'
+
+echo % push -f
+echo bah > s/a
+hg ci -m12
+hg push | sed 's/ .*sub/ ...sub/g'
+hg push -f | sed 's/ .*sub/ ...sub/g'
+
+echo % update
+cd ../t
+hg up -C # discard our earlier merge
+echo blah > t/t
+hg ci -m13
+
+echo % pull
+cd ../tc
+hg pull | sed 's/ .*sub/ ...sub/g'
+hg up # should pull t
+cat t/t
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-subrepo.out	Mon Jun 15 02:51:10 2009 -0500
@@ -0,0 +1,199 @@
+% first revision, no sub
+adding a
+% add first sub
+adding a
+committing subrepository s
+nothing changed
+% add sub sub
+committing subrepository s
+committing subrepository ss
+% bump sub rev
+committing subrepository s
+nothing changed
+% leave sub dirty
+committing subrepository s
+changeset:   3:1c833a7a9e3a
+tag:         tip
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     4
+
+% check caching
+0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+% restore
+2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+path s
+ source   s
+ revision 1c833a7a9e3a4445c711aaf0f012379cd0d4034e
+% new branch for merge tests
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+adding t/t
+% 5
+committing subrepository t
+created new head
+% 6
+committing subrepository t
+path s
+ source   s
+ revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
+path t
+ source   t
+ revision 6747d179aa9a688023c4b0cad32e4c92bb7f34ad
+% 7
+committing subrepository t
+% 8
+% merge tests
+2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+(branch merge, don't forget to commit)
+path s
+ source   s
+ revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
+path t
+ source   t
+ revision 60ca1237c19474e7a3978b0dc1ca4e6f36d51382
+created new head
+  searching for copies back to rev 2
+resolving manifests
+ overwrite None partial False
+ ancestor 1f14a2e2d3ec local f0d2028bf86d+ remote 1831e14459c4
+ .hgsubstate: versions differ -> m
+resolving manifests
+ overwrite True partial False
+ ancestor 60ca1237c194+ local 60ca1237c194+ remote 6747d179aa9a
+ t: remote is newer -> g
+getting t
+0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+(branch merge, don't forget to commit)
+path s
+ source   s
+ revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
+path t
+ source   t
+ revision 6747d179aa9a688023c4b0cad32e4c92bb7f34ad
+committing subrepository t
+  searching for copies back to rev 2
+resolving manifests
+ overwrite None partial False
+ ancestor 1831e14459c4 local e45c8b14af55+ remote f94576341bcf
+ .hgsubstate: versions differ -> m
+  searching for copies back to rev 2
+resolving manifests
+ overwrite None partial False
+ ancestor 6747d179aa9a local 20a0db6fbf6c+ remote 7af322bc1198
+ t: versions differ -> m
+preserving t for resolve of t
+picked tool 'internal:merge' for t (binary False symlink False)
+merging t
+my t@20a0db6fbf6c+ other t@7af322bc1198 ancestor t@6747d179aa9a
+warning: conflicts during merge.
+merging t failed!
+0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to abandon
+0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+(branch merge, don't forget to commit)
+% should conflict
+<<<<<<< local
+conflict
+=======
+t3
+>>>>>>> other
+% clone
+updating working directory
+pulling subrepo s
+requesting all changes
+adding changesets
+adding manifests
+adding file changes
+added 4 changesets with 5 changes to 3 files
+pulling subrepo ss
+requesting all changes
+adding changesets
+adding manifests
+adding file changes
+added 1 changesets with 1 changes to 1 files
+pulling subrepo t
+requesting all changes
+adding changesets
+adding manifests
+adding file changes
+added 4 changesets with 4 changes to 1 files (+1 heads)
+3 files updated, 0 files merged, 0 files removed, 0 files unresolved
+path s
+ source   s
+ revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
+path t
+ source   t
+ revision 20a0db6fbf6c3d2836e6519a642ae929bfc67c0e
+% push
+committing subrepository t
+pushing ...sub/t
+pushing ...subrepo ss
+searching for changes
+no changes found
+pushing ...subrepo s
+searching for changes
+no changes found
+pushing ...subrepo t
+searching for changes
+adding changesets
+adding manifests
+adding file changes
+added 1 changesets with 1 changes to 1 files
+searching for changes
+adding changesets
+adding manifests
+adding file changes
+added 1 changesets with 1 changes to 1 files
+% push -f
+committing subrepository s
+abort: push creates new remote heads!
+pushing ...sub/t
+pushing ...subrepo ss
+searching for changes
+no changes found
+pushing ...subrepo s
+searching for changes
+(did you forget to merge? use push -f to force)
+pushing ...subrepo t
+searching for changes
+no changes found
+searching for changes
+adding changesets
+adding manifests
+adding file changes
+added 1 changesets with 1 changes to 1 files
+pushing ...sub/t
+pushing ...subrepo ss
+searching for changes
+no changes found
+pushing ...subrepo s
+searching for changes
+adding changesets
+adding manifests
+adding file changes
+added 1 changesets with 1 changes to 1 files (+1 heads)
+pushing ...subrepo t
+searching for changes
+no changes found
+searching for changes
+no changes found
+% update
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+committing subrepository t
+% pull
+pulling ...sub/t
+searching for changes
+adding changesets
+adding manifests
+adding file changes
+added 1 changesets with 1 changes to 1 files
+(run 'hg update' to get a working copy)
+pulling subrepo t
+searching for changes
+adding changesets
+adding manifests
+adding file changes
+added 1 changesets with 1 changes to 1 files
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+blah