convert: better error on invalid repository type
authorPatrick Mezard <pmezard@gmail.com>
Mon, 30 Nov 2009 22:23:04 +0100
changeset 9962 a7178eccf2dc
parent 9961 0aa1a632262b
child 9963 a68fb6f4ae4b
convert: better error on invalid repository type
hgext/convert/convcmd.py
tests/test-convert
tests/test-convert.out
--- a/hgext/convert/convcmd.py	Mon Nov 30 22:23:09 2009 +0100
+++ b/hgext/convert/convcmd.py	Mon Nov 30 22:23:04 2009 +0100
@@ -48,6 +48,8 @@
 
 def convertsource(ui, path, type, rev):
     exceptions = []
+    if type and type not in [s[0] for s in source_converters]:
+        raise util.Abort(_('%s: invalid source repository type') % type)
     for name, source, sortmode in source_converters:
         try:
             if not type or name == type:
@@ -60,6 +62,8 @@
     raise util.Abort(_('%s: missing or unsupported repository') % path)
 
 def convertsink(ui, path, type):
+    if type and type not in [s[0] for s in sink_converters]:
+        raise util.Abort(_('%s: invalid destination repository type') % type)
     for name, sink in sink_converters:
         try:
             if not type or name == type:
--- a/tests/test-convert	Mon Nov 30 22:23:09 2009 +0100
+++ b/tests/test-convert	Mon Nov 30 22:23:04 2009 +0100
@@ -50,3 +50,10 @@
 # override $PATH to ensure p4 not visible; use $PYTHON in case we're
 # running from a devel copy, not a temp installation
 PATH=$BINDIR $PYTHON $BINDIR/hg convert emptydir 2>&1 | sed 's,file://.*/emptydir,.../emptydir,g'
+
+echo % convert with imaginary source type
+hg convert --source-type foo a a-foo
+echo % convert with imaginary sink type
+hg convert --dest-type foo a a-foo
+
+true
--- a/tests/test-convert.out	Mon Nov 30 22:23:09 2009 +0100
+++ b/tests/test-convert.out	Mon Nov 30 22:23:04 2009 +0100
@@ -259,3 +259,8 @@
 emptydir does not look like a Bazaar repo
 cannot find required "p4" tool
 abort: emptydir: missing or unsupported repository
+% convert with imaginary source type
+initializing destination a-foo repository
+abort: foo: invalid source repository type
+% convert with imaginary sink type
+abort: foo: invalid destination repository type