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.
--- 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