mq: add '.' and '..' to list of forbidden patch names stable
authorIdan Kamara <idankk86@gmail.com>
Fri, 29 Apr 2011 22:21:13 +0300
branchstable
changeset 14051 2b1226693c70
parent 14050 9e8a9d45945c
child 14052 ecaa78594983
child 14104 23fc62e0a960
mq: add '.' and '..' to list of forbidden patch names When an empty string is being passed to normname it would return '.' causing checkfile() to always return that a patch with that name exists.
hgext/mq.py
tests/test-mq-qnew.t
--- a/hgext/mq.py	Fri Mar 04 14:00:49 2011 +0100
+++ b/hgext/mq.py	Fri Apr 29 22:21:13 2011 +0300
@@ -834,7 +834,7 @@
                 raise util.Abort(_("local changes found"))
         return m, a, r, d
 
-    _reserved = ('series', 'status', 'guards')
+    _reserved = ('series', 'status', 'guards', '.', '..')
     def check_reserved_name(self, name):
         if (name in self._reserved or name.startswith('.hg')
             or name.startswith('.mq') or '#' in name or ':' in name):
--- a/tests/test-mq-qnew.t	Fri Mar 04 14:00:49 2011 +0100
+++ b/tests/test-mq-qnew.t	Fri Apr 29 22:21:13 2011 +0300
@@ -15,6 +15,8 @@
   >     hg qnew series
   >     hg qnew status
   >     hg qnew guards
+  >     hg qnew .
+  >     hg qnew ..
   >     hg qnew .hgignore
   >     hg qnew .mqfoo
   >     hg qnew 'foo#bar'
@@ -102,6 +104,8 @@
   abort: "series" cannot be used as the name of a patch
   abort: "status" cannot be used as the name of a patch
   abort: "guards" cannot be used as the name of a patch
+  abort: "." cannot be used as the name of a patch
+  abort: ".." cannot be used as the name of a patch
   abort: ".hgignore" cannot be used as the name of a patch
   abort: ".mqfoo" cannot be used as the name of a patch
   abort: "foo#bar" cannot be used as the name of a patch
@@ -167,6 +171,8 @@
   abort: "series" cannot be used as the name of a patch
   abort: "status" cannot be used as the name of a patch
   abort: "guards" cannot be used as the name of a patch
+  abort: "." cannot be used as the name of a patch
+  abort: ".." cannot be used as the name of a patch
   abort: ".hgignore" cannot be used as the name of a patch
   abort: ".mqfoo" cannot be used as the name of a patch
   abort: "foo#bar" cannot be used as the name of a patch