[libcamera-devel] [PATCH 2/2] utils: checkstyle.py: Support single line hunks

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Jan 7 16:58:04 CET 2020


Hi Kieran,

Thank you for the patch.

On Tue, Jan 07, 2020 at 03:44:41PM +0000, Kieran Bingham wrote:
> The checkstyle script expects hunks to be declared with a start line and
> line count, however the unified diff format [0] declares that a single
> line hunk will only have the start line:
> 
> > If a hunk contains just one line, only its start line number appears.
> > Otherwise its line numbers look like ‘start,count’. An empty hunk is
> > considered to start at the line that follows the hunk.
> 
> [0] https://www.gnu.org/software/diffutils/manual/html_node/Detailed-Unified.html#Detailed-Unified
> 
> Attempting to parse a single line hunk results in the following error:
> 
>   File "./utils/checkstyle.py", line 110, in __init__
>     raise RuntimeError("Malformed diff hunk header '%s'" % line)
>   RuntimeError: Malformed diff hunk header '@@ -1 +1,2 @@
> 
> The DiffHunk class only makes use of the start line, and does not
> utilise the line count, thus update the regex to make the unused
> groups optional, along with its comma separator.
> 
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
>  utils/checkstyle.py | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/utils/checkstyle.py b/utils/checkstyle.py
> index 41cd3371e81e..ab3b977358c7 100755
> --- a/utils/checkstyle.py
> +++ b/utils/checkstyle.py
> @@ -102,7 +102,7 @@ class DiffHunkSide(object):
>  
>  
>  class DiffHunk(object):
> -    diff_header_regex = re.compile(r'@@ -([0-9]+),([0-9]+) \+([0-9]+),([0-9]+) @@')
> +    diff_header_regex = re.compile(r'@@ -([0-9]+)(,[0-9]+)? \+([0-9]+)(,?[0-9]+)? @@')

How about

    diff_header_regex = re.compile(r'@@ -([0-9]+),?([0-9]+)? \+([0-9]+),?([0-9]+)? @@')

so that the count will be correctly captured, in case we need it later ?

>      def __init__(self, line):
>          match = DiffHunk.diff_header_regex.match(line)

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list