# HG changeset patch # User Aleix Conchillo Flaque # Date 2008-02-12 09:38:34 # Node ID ebc23d34102f6a01882ba215a21cbbd9b966a216 # Parent 89c70d496175b2e359161a85a66e59fcc0f53012 convert: added gnu arch (baz) tests diff --git a/hgext/convert/gnuarch.py b/hgext/convert/gnuarch.py --- a/hgext/convert/gnuarch.py +++ b/hgext/convert/gnuarch.py @@ -23,7 +23,7 @@ class gnuarch_source(converter_source, c 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 diff --git a/tests/hghave b/tests/hghave --- a/tests/hghave +++ b/tests/hghave @@ -21,6 +21,9 @@ def matchoutput(cmd, regexp, ignorestatu 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 @@ def has_unix_permissions(): 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"), diff --git a/tests/test-convert-baz b/tests/test-convert-baz new file mode 100644 --- /dev/null +++ b/tests/test-convert-baz @@ -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 diff --git a/tests/test-convert-baz.out b/tests/test-convert-baz.out new file mode 100644 --- /dev/null +++ b/tests/test-convert-baz.out @@ -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