diff mbox series

[RFC] mklog.py: Parse first 10 lines for PR/DR number

Message ID 0b0fbd64-2d49-fde5-51ec-8065e0ef2004@codesourcery.com
State New
Headers show
Series [RFC] mklog.py: Parse first 10 lines for PR/DR number | expand

Commit Message

Tobias Burnus Sept. 8, 2020, 9:47 a.m. UTC
Hi Martin, hi all,

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.

Tobias

-----------------
Mentor Graphics (Deutschland) GmbH, Arnulfstraße 201, 80634 München / Germany
Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Alexander Walter

Comments

Martin Sebor Sept. 8, 2020, 3:50 p.m. UTC | #1
On 9/8/20 3:47 AM, Tobias Burnus wrote:
> Hi Martin, hi all,
> 
> 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.  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.

Martin
Tobias Burnus Sept. 8, 2020, 4:20 p.m. UTC | #2
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
Martin Liška Sept. 21, 2020, 8:05 a.m. UTC | #3
On 9/8/20 6:20 PM, Tobias Burnus wrote:
> However, the new version of the patch stops after the first
> 'dg-error/dg-warning'.

LGTM.

Martin
diff mbox series

Patch

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..d334a3875c9 100755
--- a/contrib/mklog.py
+++ b/contrib/mklog.py
@@ -137,7 +137,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,8 +152,6 @@  def generate_changelog(data, no_functions=False, fill_pr_titles=False):
                         dr = m.group('dr')
                         if dr not in prs:
                             prs.append(dr)
-                    else:
-                        break
 
     if fill_pr_titles:
         out += get_pr_titles(prs)