topic-ext: restrict the format of topic names
authorPulkit Goyal <7895pulkit@gmail.com>
Thu, 29 Mar 2018 17:42:32 +0530
changeset 3652 81985b9d3e74
parent 3651 fa15068a9945
child 3653 d9682c41ea2f
topic-ext: restrict the format of topic names This patch restrict the format of topic names to make sure they consist only of alphanumeric, '_' and '-' characters.
hgext3rd/topic/__init__.py
tests/test-topic.t
--- a/hgext3rd/topic/__init__.py	Fri Apr 06 23:42:47 2018 +0530
+++ b/hgext3rd/topic/__init__.py	Thu Mar 29 17:42:32 2018 +0530
@@ -594,6 +594,12 @@
         # Have some restrictions on the topic name just like bookmark name
         scmutil.checknewlabel(repo, topic, 'topic')
 
+        rmatch = re.match(br'[\w\-]+', topic)
+        if not rmatch or rmatch.group(0) != topic:
+            helptxt = _("topic names can only consist of alphanumeric, '-'"
+                        " and '_' characters")
+            raise error.Abort(_("invalid topic name: '%s'") % topic, hint=helptxt)
+
     compat.startpager(ui, 'topics')
 
     if list:
--- a/tests/test-topic.t	Fri Apr 06 23:42:47 2018 +0530
+++ b/tests/test-topic.t	Thu Mar 29 17:42:32 2018 +0530
@@ -115,6 +115,24 @@
   abort: topic name cannot consist entirely of whitespaces
   [255]
 
+  $ hg topic 'a12#45'
+  abort: invalid topic name: 'a12#45'
+  (topic names can only consist of alphanumeric, '-' and '_' characters)
+  [255]
+
+  $ hg topic 'foo bar'
+  abort: invalid topic name: 'foo bar'
+  (topic names can only consist of alphanumeric, '-' and '_' characters)
+  [255]
+
+this is trying to list topic names
+  $ hg topic ''
+
+  $ hg topic '*12 B23'
+  abort: invalid topic name: '*12 B23'
+  (topic names can only consist of alphanumeric, '-' and '_' characters)
+  [255]
+
 Test commit flag and help text
 
   $ echo stuff >> alpha