aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2019-09-04 10:08:06 +0200
committerMartin Liska <marxin@gcc.gnu.org>2019-09-04 08:08:06 +0000
commita45de90e56960a2607f83d0e44dd3725dc125ce9 (patch)
tree7500c1ce81edeff4b1e78a9c18f04c5d537d9abe /contrib
parente94e92dcda29872523cc74a03ee64cfb3dbea21b (diff)
downloadgcc-a45de90e56960a2607f83d0e44dd3725dc125ce9.zip
gcc-a45de90e56960a2607f83d0e44dd3725dc125ce9.tar.gz
gcc-a45de90e56960a2607f83d0e44dd3725dc125ce9.tar.bz2
mklog: parse PR references from new test files
2019-09-04 Martin Liska <mliska@suse.cz> * mklog: Parse PR references from newly added test files. From-SVN: r275368
Diffstat (limited to 'contrib')
-rw-r--r--contrib/ChangeLog5
-rwxr-xr-xcontrib/mklog22
2 files changed, 25 insertions, 2 deletions
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index a51f7ca..5e4ec60 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,5 +1,10 @@
2019-09-04 Martin Liska <mliska@suse.cz>
+ * mklog: Parse PR references from newly added
+ test files.
+
+2019-09-04 Martin Liska <mliska@suse.cz>
+
* mklog: Use argparse instead of getopt.
2019-09-03 Ulrich Weigand <uweigand@de.ibm.com>
diff --git a/contrib/mklog b/contrib/mklog
index e7a513f..8524200 100755
--- a/contrib/mklog
+++ b/contrib/mklog
@@ -40,6 +40,8 @@ from subprocess import Popen, PIPE
me = os.path.basename(sys.argv[0])
+pr_regex = re.compile('\+(\/(\/|\*)|[Cc*!])\s+(PR [a-z+-]+\/[0-9]+)')
+
def error(msg):
sys.stderr.write("%s: error: %s\n" % (me, msg))
sys.exit(1)
@@ -299,7 +301,7 @@ def parse_patch(contents):
if l != r:
break
comps.append(l)
-
+
if not comps:
error("failed to extract common name for %s and %s" % (left, right))
@@ -338,6 +340,14 @@ def parse_patch(contents):
return diffs
+
+def get_pr_from_testcase(line):
+ r = pr_regex.search(line)
+ if r != None:
+ return r.group(3)
+ else:
+ return None
+
def main():
name, email = read_user_info()
@@ -372,6 +382,7 @@ otherwise writes to stdout.'
# Generate template ChangeLog.
logs = {}
+ prs = []
for d in diffs:
log_name = d.clname
@@ -387,6 +398,9 @@ otherwise writes to stdout.'
if hunk0.is_file_addition():
if re.search(r'testsuite.*(?<!\.exp)$', d.filename):
change_msg = ': New test.\n'
+ pr = get_pr_from_testcase(hunk0.lines[0])
+ if pr and pr not in prs:
+ prs.append(pr)
else:
change_msg = ": New file.\n"
elif hunk0.is_file_removal():
@@ -426,13 +440,17 @@ otherwise writes to stdout.'
# Print log
date = time.strftime('%Y-%m-%d')
+ bugmsg = ''
+ if len(prs):
+ bugmsg = '\n'.join(['\t' + pr for pr in prs]) + '\n'
+
for log_name, msg in sorted(logs.items()):
out.write("""\
%s:
%s %s <%s>
-%s\n""" % (log_name, date, name, email, msg))
+%s%s\n""" % (log_name, date, name, email, bugmsg, msg))
if args.inline:
# Append patch body