# HG changeset patch # User Martin Geisler # Date 1282056783 -7200 # Node ID d1ea16ca6520456e27b9f99d74eaa3e25b4363c7 # Parent d521e72314f98e96c91fb30f0577ad4544634e30 tests: unify test-subrepo-svn diff -r d521e72314f9 -r d1ea16ca6520 tests/test-subrepo-svn --- a/tests/test-subrepo-svn Tue Aug 17 16:52:47 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +0,0 @@ -#!/bin/sh - -"$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 /' -filterexternal="s|Fetching external item into '.*/s/externals'|Fetching external item into 's/externals'|g" - -echo % create subversion repo - -SVNREPO="file://$escapedwd/svn-repo" -WCROOT="`pwd`/svn-wc" -svnadmin create svn-repo -svn co "$SVNREPO" svn-wc -cd svn-wc -mkdir src -echo alpha > src/alpha -svn add src -mkdir externals -echo other > externals/other -svn add externals -svn ci -m 'Add alpha' -svn up -cat > extdef < a -hg ci -Am0 - -echo % 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 -echo % debugsub -hg debugsub | sed "$filterpath" - -echo -echo % change file in svn and hg, commit -echo a >> a -echo alpha >> s/alpha -hg commit -m 'Message!' | sed "$filterexternal" \ - | sed 's:Sending.*s/alpha:Sending s/alpha:g' -hg debugsub | sed "$filterpath" - -echo -echo a > s/a -echo % should be empty despite change to s/a -hg st - -echo -echo % add a commit from svn -cd "$WCROOT"/src -svn up -echo xyz >> alpha -svn propset svn:mime-type 'text/xml' alpha -svn ci -m 'amend a from svn' -cd ../../sub/t - -echo % this commit from hg will fail -echo zzz >> s/alpha -hg ci -m 'amend alpha from hg' 2>&1 | sed "$filteroutofdate" -svn revert -q s/alpha - -echo % this commit fails because of meta changes -svn propset svn:mime-type 'text/html' s/alpha -hg ci -m 'amend alpha from hg' 2>&1 | sed "$filteroutofdate" -svn revert -q s/alpha - -echo % this commit fails because of externals changes -echo zzz > s/externals/other -hg ci -m 'amend externals from hg' -svn revert -q s/externals/other - -echo % this commit fails because of externals meta changes -svn propset svn:mime-type 'text/html' s/externals/other -hg ci -m 'amend externals from hg' -svn revert -q s/externals/other - -echo -echo % clone -cd .. -hg clone t tc | fix_path -cd tc -echo % debugsub in clone -hg debugsub | sed "$filterpath" - -echo % verify subrepo is contained within the repo directory -python -c "import os.path; print os.path.exists('s')" diff -r d521e72314f9 -r d1ea16ca6520 tests/test-subrepo-svn.out --- a/tests/test-subrepo-svn.out Tue Aug 17 16:52:47 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -% create subversion repo -Checked out revision 0. -A src -A src/alpha -A externals -A externals/other -Adding externals -Adding externals/other -Adding src -Adding src/alpha -Transmitting file data .. -Committed revision 1. -At revision 1. -property 'svn:externals' set on 'src' -Sending src - -Committed revision 2. -% create hg repo -% first revision, no sub -adding a -% add first svn sub with leading whitespaces -committing subrepository s -% debugsub -path s - source file:///root/svn-repo/src - revision 2 - -% change file in svn and hg, commit -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. -path s - source file:///root/svn-repo/src - revision 3 - -% should be empty despite change to s/a - -% add a commit from svn -U alpha - -Fetching external item into 'externals' -A externals/other -Updated external to revision 1. - -Updated to revision 3. -property 'svn:mime-type' set on 'alpha' -Sending src/alpha -Transmitting file data . -Committed revision 4. -% this commit from hg will fail -committing subrepository s -abort: svn: Commit failed (details follow): -svn: File '/src/alpha' is out of date -% this commit fails because of meta changes -property 'svn:mime-type' set on 's/alpha' -committing subrepository s -abort: svn: Commit failed (details follow): -svn: File '/src/alpha' is out of date -% this commit fails because of externals changes -committing subrepository s -abort: cannot commit svn externals -% this commit fails because of externals meta changes -property 'svn:mime-type' set on 's/externals/other' -committing subrepository s -abort: cannot commit svn externals - -% clone -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 -% debugsub in clone -path s - source file:///root/svn-repo/src - revision 3 -% verify subrepo is contained within the repo directory -True diff -r d521e72314f9 -r d1ea16ca6520 tests/test-subrepo-svn.t --- /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