On 9/8/20 5:50 PM, Martin Sebor wrote:

On 9/8/20 3:47 AM, Tobias Burnus wrote:
currently, mklog searches for "PR" (and "DR") only in the
first line of a new 'testsuite' file.

I think in many cases, the PR is listed a bit later than
the first line – although, it is usually in the first few
lines; in my example, it is in line 3 and 4.

Admittedly, I do have cases where later lines are wrong
like
"! Not tested due to PR ...'

How about testing the first, e.g., ten lines?
That's what the attached patch does.

I frequently use "prNNNNN" in dg-warning directives xfailed due
to the pr.

Those won't match pr_regex = re.compile(r'(\/(\/|\*)|[Cc*!])\s+(?P<pr>PR 
[a-z+-]+\/[0-9]+)')

They're probably only rarely in the first 10 lines
but stopping the search after the first dg- directive is seen
would help reduce the likelihood of the false positives even
further.

I think stopping after the first 'dg-' directive does not make sense;
at least I tend to start testcases with 'dg-do' followed by
'dg-(additional-)options'.

However, the new version of the patch stops after the first
'dg-error/dg-warning'.

Tobias

-----------------
Mentor Graphics (Deutschland) GmbH, Arnulfstraße 201, 80634 München / Germany
Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Alexander 
Walter
mklog.py: Parse first 10 lines for PR/DR number

contrib/ChangeLog:

	* mklog.py: Parse first 10 lines for PR/DR number
	not only the first line.

diff --git a/contrib/mklog.py b/contrib/mklog.py
index 243edbb15c5..1e85dfe583a 100755
--- a/contrib/mklog.py
+++ b/contrib/mklog.py
@@ -38,6 +38,7 @@ from unidiff import PatchSet
 
 pr_regex = re.compile(r'(\/(\/|\*)|[Cc*!])\s+(?P<pr>PR [a-z+-]+\/[0-9]+)')
 dr_regex = re.compile(r'(\/(\/|\*)|[Cc*!])\s+(?P<dr>DR [0-9]+)')
+dg_regex = re.compile(r'{\s+dg-(error|warning)')
 identifier_regex = re.compile(r'^([a-zA-Z0-9_#].*)')
 comment_regex = re.compile(r'^\/\*')
 struct_regex = re.compile(r'^(class|struct|union|enum)\s+'
@@ -137,7 +138,10 @@ def generate_changelog(data, no_functions=False, fill_pr_titles=False):
 
         # Extract PR entries from newly added tests
         if 'testsuite' in file.path and file.is_added_file:
-            for line in list(file)[0]:
+            # Only search first ten lines as later lines may
+            # contains commented code which a note that it
+            # has not been tested due to a certain PR or DR.
+            for line in list(file)[0][0:10]:
                 m = pr_regex.search(line.value)
                 if m:
                     pr = m.group('pr')
@@ -149,7 +153,8 @@ def generate_changelog(data, no_functions=False, fill_pr_titles=False):
                         dr = m.group('dr')
                         if dr not in prs:
                             prs.append(dr)
-                    else:
+                    elif dg_regex.search(line.value):
+                        # Found dg-warning/dg-error line
                         break
 
     if fill_pr_titles:

Reply via email to