summaryrefslogtreecommitdiffstats
path: root/project.py
diff options
context:
space:
mode:
Diffstat (limited to 'project.py')
-rw-r--r--project.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/project.py b/project.py
index 9f790308..b7ed6f33 100644
--- a/project.py
+++ b/project.py
@@ -996,6 +996,13 @@ class Project(object):
996 if not branch.remote.review: 996 if not branch.remote.review:
997 raise GitError('remote %s has no review url' % branch.remote.name) 997 raise GitError('remote %s has no review url' % branch.remote.name)
998 998
999 # Basic validity check on label syntax.
1000 for label in labels:
1001 if not re.match(r'^.+[+-][0-9]+$', label):
1002 raise UploadError(
1003 f'invalid label syntax "{label}": labels use forms like '
1004 'CodeReview+1 or Verified-1')
1005
999 if dest_branch is None: 1006 if dest_branch is None:
1000 dest_branch = self.dest_branch 1007 dest_branch = self.dest_branch
1001 if dest_branch is None: 1008 if dest_branch is None:
@@ -1031,6 +1038,7 @@ class Project(object):
1031 if auto_topic: 1038 if auto_topic:
1032 opts += ['topic=' + branch.name] 1039 opts += ['topic=' + branch.name]
1033 opts += ['t=%s' % p for p in hashtags] 1040 opts += ['t=%s' % p for p in hashtags]
1041 # NB: No need to encode labels as they've been validated above.
1034 opts += ['l=%s' % p for p in labels] 1042 opts += ['l=%s' % p for p in labels]
1035 1043
1036 opts += ['r=%s' % p for p in people[0]] 1044 opts += ['r=%s' % p for p in people[0]]