mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
tests: unify test-subrepo-svn
This commit is contained in:
parent
f78caca1fb
commit
b6dcfa5955
@ -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 <<EOF
|
||||
externals -r1 $SVNREPO/externals
|
||||
EOF
|
||||
svn propset -F extdef svn:externals src
|
||||
svn ci -m 'Setting externals'
|
||||
cd ..
|
||||
|
||||
echo % create hg repo
|
||||
mkdir sub
|
||||
cd sub
|
||||
hg init t
|
||||
cd t
|
||||
|
||||
echo % first revision, no sub
|
||||
echo a > 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')"
|
@ -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
|
193
tests/test-subrepo-svn.t
Normal file
193
tests/test-subrepo-svn.t
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user