diff options
author | Martin Liska <mliska@suse.cz> | 2019-09-04 10:08:06 +0200 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2019-09-04 08:08:06 +0000 |
commit | a45de90e56960a2607f83d0e44dd3725dc125ce9 (patch) | |
tree | 7500c1ce81edeff4b1e78a9c18f04c5d537d9abe /contrib | |
parent | e94e92dcda29872523cc74a03ee64cfb3dbea21b (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rwxr-xr-x | contrib/mklog | 22 |
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 |