changeset 6078:ebc23d34102f

convert: added gnu arch (baz) tests
author Aleix Conchillo Flaque <aleix@member.fsf.org>
date Tue, 12 Feb 2008 10:38:34 +0100
parents 89c70d496175
children ea34059b89de
files hgext/convert/gnuarch.py tests/hghave tests/test-convert-baz tests/test-convert-baz.out
diffstat 4 files changed, 146 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/convert/gnuarch.py	Sun Feb 10 13:19:24 2008 +0100
+++ b/hgext/convert/gnuarch.py	Tue Feb 12 10:38:34 2008 +0100
@@ -23,7 +23,7 @@
         super(gnuarch_source, self).__init__(ui, path, rev=rev)
 
         if not os.path.exists(os.path.join(path, '{arch}')):
-            raise NoRepo(_("couldn't open GNU Arch repo %s" % path))
+            raise NoRepo(_("%s does not look like a GNU Arch repo" % path))
 
         # Could use checktool, but we want to check for baz or tla.
         self.execmd = None
--- a/tests/hghave	Sun Feb 10 13:19:24 2008 +0100
+++ b/tests/hghave	Tue Feb 12 10:38:34 2008 +0100
@@ -21,6 +21,9 @@
     ret = fh.close()
     return (ignorestatus or ret is None) and r.search(s)
 
+def has_baz():
+    return matchoutput('baz --version 2>&1', r'baz Bazaar version')
+
 def has_cvs():
     return matchoutput('cvs --version 2>&1', r'Concurrent Versions System')
 
@@ -102,6 +105,7 @@
         os.rmdir(d)
 
 checks = {
+    "baz": (has_baz, "GNU Arch baz client"),
     "cvs": (has_cvs, "cvs client"),
     "cvsps": (has_cvsps, "cvsps utility"),
     "darcs": (has_darcs, "darcs client"),
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-baz	Tue Feb 12 10:38:34 2008 +0100
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+"$TESTDIR/hghave" baz || exit 80
+
+echo "[extensions]" >> $HGRCPATH
+echo "convert=" >> $HGRCPATH
+echo 'hgext.graphlog =' >> $HGRCPATH
+
+echo % create baz archive
+baz make-archive baz@mercurial--convert hg-test-convert-baz
+
+echo % initialize baz repo
+mkdir baz-repo
+cd baz-repo/
+baz init-tree baz@mercurial--convert/baz--test--0
+baz import
+
+echo % create initial files
+echo 'this is a file' > a
+baz add a
+mkdir src
+baz add src
+cd src
+dd count=1 if=/dev/zero of=b > /dev/null 2> /dev/null
+baz add b
+baz commit -s "added a file, src and src/b (binary)"
+
+echo % create link file and modify a
+ln -s ../a a-link
+baz add a-link
+echo 'this a modification to a' >> ../a
+baz commit -s "added link to a and modify a"
+
+echo % create second link and modify b
+ln -s ../a a-link-2
+baz add a-link-2
+dd count=1 seek=1 if=/dev/zero of=b > /dev/null 2> /dev/null
+baz commit -s "added second link and modify b"
+
+echo % b file to link and a-link-2 to regular file
+rm -f a-link-2
+echo 'this is now a regular file' > a-link-2
+ln -sf ../a b
+baz commit -s "file to link and link to file test"
+
+echo % move a-link-2 file and src directory
+cd ..
+baz mv src/a-link-2 c
+baz mv src test
+baz commit -s "move and rename a-link-2 file and src directory"
+
+cd ..
+
+echo % converting baz repo to Mercurial
+hg convert baz-repo baz-repo-hg
+
+baz register-archive -d baz@mercurial--convert
+
+glog()
+{
+    hg glog --template '#rev# "#desc|firstline#" files: #files#\n' "$@"
+}
+
+echo % show graph log
+glog -R baz-repo-hg
+hg -R baz-repo-hg manifest --debug
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-baz.out	Tue Feb 12 10:38:34 2008 +0100
@@ -0,0 +1,75 @@
+% create baz archive
+% initialize baz repo
+* creating version baz@mercurial--convert/baz--test--0
+* imported baz@mercurial--convert/baz--test--0
+% create initial files
+* build pristine tree for baz@mercurial--convert/baz--test--0--base-0
+* Scanning for full-tree revision: .
+* from import revision: baz@mercurial--convert/baz--test--0--base-0
+A/ .arch-ids
+A/ src
+A/ src/.arch-ids
+A  .arch-ids/a.id
+A  a
+A  src/.arch-ids/=id
+A  src/.arch-ids/b.id
+A  src/b
+* update pristine tree (baz@mercurial--convert/baz--test--0--base-0 => baz--test--0--patch-1)
+* committed baz@mercurial--convert/baz--test--0--patch-1
+% create link file and modify a
+A  src/.arch-ids/a-link.id
+A  src/a-link
+M  a
+* update pristine tree (baz@mercurial--convert/baz--test--0--patch-1 => baz--test--0--patch-2)
+* committed baz@mercurial--convert/baz--test--0--patch-2
+% create second link and modify b
+A  src/.arch-ids/a-link-2.id
+A  src/a-link-2
+Mb src/b
+* update pristine tree (baz@mercurial--convert/baz--test--0--patch-2 => baz--test--0--patch-3)
+* committed baz@mercurial--convert/baz--test--0--patch-3
+% b file to link and a-link-2 to regular file
+fl src/b
+lf src/a-link-2
+* update pristine tree (baz@mercurial--convert/baz--test--0--patch-3 => baz--test--0--patch-4)
+* committed baz@mercurial--convert/baz--test--0--patch-4
+% move a-link-2 file and src directory
+D/ src/.arch-ids
+A/ test/.arch-ids
+/> src	test
+=> src/.arch-ids/a-link-2.id	.arch-ids/c.id
+=> src/a-link-2	c
+=> src/.arch-ids/=id	test/.arch-ids/=id
+=> src/.arch-ids/a-link.id	test/.arch-ids/a-link.id
+=> src/.arch-ids/b.id	test/.arch-ids/b.id
+* update pristine tree (baz@mercurial--convert/baz--test--0--patch-4 => baz--test--0--patch-5)
+* committed baz@mercurial--convert/baz--test--0--patch-5
+% converting baz repo to Mercurial
+initializing destination baz-repo-hg repository
+analyzing tree version baz@mercurial--convert/baz--test--0...
+scanning source...
+sorting...
+converting...
+5 initial import
+4 added a file, src and src/b (binary)
+3 added link to a and modify a
+2 added second link and modify b
+1 file to link and link to file test
+0 move and rename a-link-2 file and src directory
+% show graph log
+o  5 "move and rename a-link-2 file and src directory" files: c src/a-link src/a-link-2 src/b test/a-link test/b
+|
+o  4 "file to link and link to file test" files: src/a-link-2 src/b
+|
+o  3 "added second link and modify b" files: src/a-link-2 src/b
+|
+o  2 "added link to a and modify a" files: a src/a-link
+|
+o  1 "added a file, src and src/b (binary)" files: a src/b
+|
+o  0 "initial import" files:
+
+c4072c4b72e1cabace081888efa148ee80ca3cbb 644   a
+e3207be798aaf87a444a62903621edab4ddc1fb6 644   c
+1f6b5bb93f1da278ef1fead1e4740a03d8802e9f 644 @ test/a-link
+1f6b5bb93f1da278ef1fead1e4740a03d8802e9f 644 @ test/b