diff tests/test-convert-hg-svn.t @ 12527:9a0528fd9172

tests: unify test-convert-hg-svn
author Matt Mackall <mpm@selenic.com>
date Sun, 26 Sep 2010 16:53:06 -0500
parents tests/test-convert-hg-svn@c52057614c72
children 0413f68da85c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-hg-svn.t	Sun Sep 26 16:53:06 2010 -0500
@@ -0,0 +1,108 @@
+
+  $ "$TESTDIR/hghave" svn svn-bindings || exit 80
+  $ fix_path()
+  > {
+  >     tr '\\' /
+  > }
+  $ echo "[extensions]" >> $HGRCPATH
+  $ echo "convert = " >> $HGRCPATH
+  $ echo "mq = " >> $HGRCPATH
+  $ svnpath=`pwd | fix_path`/svn-repo
+  $ svnadmin create "$svnpath"
+  $ cat > "$svnpath"/hooks/pre-revprop-change <<EOF
+  > #!/bin/sh
+  > 
+  > REPOS="$1"
+  > REV="$2"
+  > USER="$3"
+  > PROPNAME="$4"
+  > ACTION="$5"
+  > 
+  > if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi
+  > if [ "$ACTION" = "A" -a "$PROPNAME" = "hg:convert-branch" ]; then exit 0; fi
+  > if [ "$ACTION" = "A" -a "$PROPNAME" = "hg:convert-rev" ]; then exit 0; fi
+  > 
+  > echo "Changing prohibited revision property" >&2
+  > exit 1
+  > EOF
+  $ chmod +x "$svnpath"/hooks/pre-revprop-change
+  $ 
+  $ # SVN wants all paths to start with a slash. Unfortunately,
+  $ # Windows ones don't. Handle that.
+  $ svnurl="$svnpath"
+  $ expr "$svnurl" : "\/" > /dev/null || svnurl="/$svnurl"
+  $ svnurl="file://$svnurl"
+  $ svn co "$svnurl" "$svnpath"-wc
+  Checked out revision 0.
+  $ cd "$svnpath"-wc
+  $ echo a > a
+  $ svn add a
+  A         a
+  $ svn ci -m'added a' a
+  Adding         a
+  Transmitting file data .
+  Committed revision 1.
+  $ cd ..
+
+initial roundtrip
+
+  $ hg convert -s svn -d hg "$svnpath"-wc "$svnpath"-hg | grep -v initializing
+  scanning source...
+  sorting...
+  converting...
+  0 added a
+  $ hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc
+  scanning source...
+  sorting...
+  converting...
+
+second roundtrip should do nothing
+
+  $ hg convert -s svn -d hg "$svnpath"-wc "$svnpath"-hg
+  scanning source...
+  sorting...
+  converting...
+  $ hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc
+  scanning source...
+  sorting...
+  converting...
+
+new hg rev
+
+  $ hg clone "$svnpath"-hg "$svnpath"-work
+  updating to branch default
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ cd "$svnpath"-work
+  $ echo b > b
+  $ hg add b
+  $ hg ci -mb
+
+adding an empty revision
+
+  $ hg qnew -m emtpy empty
+  $ hg qfinish -a
+  $ cd ..
+
+echo hg to svn
+
+  $ hg --cwd "$svnpath"-hg pull -q "$svnpath"-work
+  $ hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc
+  scanning source...
+  sorting...
+  converting...
+  1 b
+  0 emtpy
+
+svn back to hg should do nothing
+
+  $ hg convert -s svn -d hg "$svnpath"-wc "$svnpath"-hg
+  scanning source...
+  sorting...
+  converting...
+
+hg back to svn should do nothing
+
+  $ hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc
+  scanning source...
+  sorting...
+  converting...