[PATCH] checkstyle: Work around bug in difflib

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri Mar 15 13:45:24 CET 2024


Hi Stefan,

Thank you for the patch.

On Thu, Mar 14, 2024 at 11:57:36AM +0100, Stefan Klug wrote:
> If a file misses the newline at the end it gets detected by checkstyle,
> but the resulting patch is incorrect and does not apply. It took me a
> while to understand that it wasn't me using checkstyle incorrectly, but
> that the patch was faulty. The bug itself is in difflib and dates back to
> 2008.
> 
> To reproduce:
> - Remove trailing newline from a file
> - git add the file
> - run ./utils/checkstyle.py -s | patch -p0
> 
> Signed-off-by: Stefan Klug <stefan.klug at ideasonboard.com>
> ---
>  utils/checkstyle.py | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/utils/checkstyle.py b/utils/checkstyle.py
> index db5a550d..20a5a592 100755
> --- a/utils/checkstyle.py
> +++ b/utils/checkstyle.py
> @@ -168,6 +168,12 @@ def parse_diff(diff):
>              hunk = DiffHunk(line)
>  
>          elif hunk is not None:
> +            # Work around https://github.com/python/cpython/issues/46395
> +            # See https://www.gnu.org/software/diffutils/manual/html_node/Incomplete-Lines.html
> +            if line[-1] != '\n':
> +                hunk.append(line + '\n')
> +                line = "\\ No newline at end of file\n"

s/"/'/g

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

> +
>              hunk.append(line)
>  
>      if hunk:

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list