Mercurial > public > mercurial-scm > hg-stable
diff tests/test-subrepo-svn.t @ 11916:d1ea16ca6520
tests: unify test-subrepo-svn
author | Martin Geisler <mg@lazybytes.net> |
---|---|
date | Tue, 17 Aug 2010 16:53:03 +0200 |
parents | tests/test-subrepo-svn@0bf79efeaa20 |
children | affec9fb56ef |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-subrepo-svn.t Tue Aug 17 16:53:03 2010 +0200 @@ -0,0 +1,193 @@ + $ "$TESTDIR/hghave" svn || exit 80 + + $ fix_path() + > { + > tr '\\' / + > } + + $ escapedwd=`pwd | fix_path` + +SVN wants all paths to start with a slash. Unfortunately, Windows ones +don't. Handle that. + + $ expr "$escapedwd" : "\/" > /dev/null + $ if [ $? -ne 0 ]; then + > escapedwd="/$escapedwd" + > fi + $ escapedwd=`python -c "import urllib, sys; sys.stdout.write(urllib.quote(sys.argv[1]))" "$escapedwd"` + $ filterpath="s|$escapedwd|/root|" + $ filteroutofdate='s/ in transaction.*/ is out of date/;s/Out of date: /File /' + +create subversion repo + + $ SVNREPO="file://$escapedwd/svn-repo" + $ WCROOT="`pwd`/svn-wc" + $ svnadmin create svn-repo + $ svn co "$SVNREPO" svn-wc + Checked out revision 0. + $ cd svn-wc + $ mkdir src + $ echo alpha > src/alpha + $ svn add src + A src + A src/alpha + $ mkdir externals + $ echo other > externals/other + $ svn add externals + A externals + A externals/other + $ svn ci -m 'Add alpha' + Adding externals + Adding externals/other + Adding src + Adding src/alpha + Transmitting file data .. + Committed revision 1. + $ svn up + At revision 1. + $ echo "externals -r1 $SVNREPO/externals" > extdef + $ svn propset -F extdef svn:externals src + property 'svn:externals' set on 'src' + $ svn ci -m 'Setting externals' + Sending src + + Committed revision 2. + $ cd .. + +create hg repo + + $ mkdir sub + $ cd sub + $ hg init t + $ cd t + +first revision, no sub + + $ echo a > a + $ hg ci -Am0 + adding a + +add first svn sub with leading whitespaces + + $ echo "s = [svn] $SVNREPO/src" >> .hgsub + $ svn co --quiet "$SVNREPO"/src s + $ hg add .hgsub + $ hg ci -m1 + committing subrepository s + +debugsub + + $ hg debugsub | sed "$filterpath" + path s + source file:///root/svn-repo/src + revision 2 + +change file in svn and hg, commit + + $ echo a >> a + $ echo alpha >> s/alpha + $ hg commit -m 'Message!' \ + > | sed 's:Sending.*s/alpha:Sending s/alpha:g' + committing subrepository s + Sending s/alpha + Transmitting file data . + Committed revision 3. + + Fetching external item into '.*/s/externals' + External at revision 1. + + At revision 3. + $ hg debugsub | sed "$filterpath" + path s + source file:///root/svn-repo/src + revision 3 + + $ echo a > s/a + +should be empty despite change to s/a + + $ hg st + +add a commit from svn + + $ cd "$WCROOT"/src + $ svn up + U alpha + + Fetching external item into 'externals' + A externals/other + Updated external to revision 1. + + Updated to revision 3. + $ echo xyz >> alpha + $ svn propset svn:mime-type 'text/xml' alpha + property 'svn:mime-type' set on 'alpha' + $ svn ci -m 'amend a from svn' + Sending src/alpha + Transmitting file data . + Committed revision 4. + $ cd ../../sub/t + +this commit from hg will fail + + $ echo zzz >> s/alpha + $ hg ci -m 'amend alpha from hg' 2>&1 | sed "$filteroutofdate" + committing subrepository s + abort: svn: Commit failed (details follow): + svn: File '/src/alpha' is out of date + $ svn revert -q s/alpha + +this commit fails because of meta changes + + $ svn propset svn:mime-type 'text/html' s/alpha + property 'svn:mime-type' set on 's/alpha' + $ hg ci -m 'amend alpha from hg' 2>&1 | sed "$filteroutofdate" + committing subrepository s + abort: svn: Commit failed (details follow): + svn: File '/src/alpha' is out of date + $ svn revert -q s/alpha + +this commit fails because of externals changes + + $ echo zzz > s/externals/other + $ hg ci -m 'amend externals from hg' + committing subrepository s + abort: cannot commit svn externals + $ svn revert -q s/externals/other + +this commit fails because of externals meta changes + + $ svn propset svn:mime-type 'text/html' s/externals/other + property 'svn:mime-type' set on 's/externals/other' + $ hg ci -m 'amend externals from hg' + committing subrepository s + abort: cannot commit svn externals + $ svn revert -q s/externals/other + +clone + + $ cd .. + $ hg clone t tc | fix_path + updating to branch default + A tc/s/alpha + U tc/s + + Fetching external item into 'tc/s/externals' + A tc/s/externals/other + Checked out external at revision 1. + + Checked out revision 3. + 3 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd tc + +debugsub in clone + + $ hg debugsub | sed "$filterpath" + path s + source file:///root/svn-repo/src + revision 3 + +verify subrepo is contained within the repo directory + + $ python -c "import os.path; print os.path.exists('s')" + True