[libcamera-devel,6/8] utils: checkstyle.py: Move diff parsing to Commit class
diff mbox series

Message ID 20201224122855.22200-7-laurent.pinchart@ideasonboard.com
State Accepted
Delegated to: Laurent Pinchart
Headers show
Series
  • checkstyle.py: Ensure meson.build is updated when adding header
Related show

Commit Message

Laurent Pinchart Dec. 24, 2020, 12:28 p.m. UTC
To avoid duplicating diff parsing in commit checkers, move it to the
Commit class.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 utils/checkstyle.py | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

Comments

Niklas Söderlund Dec. 27, 2020, 10:40 a.m. UTC | #1
Hi Laurent,

Thanks for your work.

On 2020-12-24 14:28:53 +0200, Laurent Pinchart wrote:
> To avoid duplicating diff parsing in commit checkers, move it to the
> Commit class.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>

> ---
>  utils/checkstyle.py | 13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/utils/checkstyle.py b/utils/checkstyle.py
> index 07e896d9819f..9c2a1837aa11 100755
> --- a/utils/checkstyle.py
> +++ b/utils/checkstyle.py
> @@ -236,9 +236,10 @@ class Commit:
>          return self.__title
>  
>      def get_diff(self, top_level, filename):
> -        return subprocess.run(['git', 'diff', '%s~..%s' % (self.commit, self.commit),
> +        diff = subprocess.run(['git', 'diff', '%s~..%s' % (self.commit, self.commit),
>                                 '--', '%s/%s' % (top_level, filename)],
>                                stdout=subprocess.PIPE).stdout.decode('utf-8')
> +        return parse_diff(diff.splitlines(True))
>  
>      def get_file(self, filename):
>          return subprocess.run(['git', 'show', '%s:%s' % (self.commit, filename)],
> @@ -256,9 +257,10 @@ class StagedChanges(Commit):
>          self.__files = [CommitFile(f) for f in ret.splitlines()]
>  
>      def get_diff(self, top_level, filename):
> -        return subprocess.run(['git', 'diff', '--staged', '--',
> +        diff = subprocess.run(['git', 'diff', '--staged', '--',
>                                 '%s/%s' % (top_level, filename)],
>                                stdout=subprocess.PIPE).stdout.decode('utf-8')
> +        return parse_diff(diff.splitlines(True))
>  
>  
>  class Amendment(StagedChanges):
> @@ -276,9 +278,10 @@ class Amendment(StagedChanges):
>          self.__files = [CommitFile(f) for f in ret.splitlines()]
>  
>      def get_diff(self, top_level, filename):
> -        return subprocess.run(['git', 'diff', '--staged', 'HEAD~', '--',
> +        diff = subprocess.run(['git', 'diff', '--staged', 'HEAD~', '--',
>                                 '%s/%s' % (top_level, filename)],
>                                stdout=subprocess.PIPE).stdout.decode('utf-8')
> +        return parse_diff(diff.splitlines(True))
>  
>  
>  # ------------------------------------------------------------------------------
> @@ -657,9 +660,7 @@ class StripTrailingSpaceFormatter(Formatter):
>  
>  def check_file(top_level, commit, filename):
>      # Extract the line numbers touched by the commit.
> -    diff = commit.get_diff(top_level, filename)
> -    diff = diff.splitlines(True)
> -    commit_diff = parse_diff(diff)
> +    commit_diff = commit.get_diff(top_level, filename)
>  
>      lines = []
>      for hunk in commit_diff:
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

Patch
diff mbox series

diff --git a/utils/checkstyle.py b/utils/checkstyle.py
index 07e896d9819f..9c2a1837aa11 100755
--- a/utils/checkstyle.py
+++ b/utils/checkstyle.py
@@ -236,9 +236,10 @@  class Commit:
         return self.__title
 
     def get_diff(self, top_level, filename):
-        return subprocess.run(['git', 'diff', '%s~..%s' % (self.commit, self.commit),
+        diff = subprocess.run(['git', 'diff', '%s~..%s' % (self.commit, self.commit),
                                '--', '%s/%s' % (top_level, filename)],
                               stdout=subprocess.PIPE).stdout.decode('utf-8')
+        return parse_diff(diff.splitlines(True))
 
     def get_file(self, filename):
         return subprocess.run(['git', 'show', '%s:%s' % (self.commit, filename)],
@@ -256,9 +257,10 @@  class StagedChanges(Commit):
         self.__files = [CommitFile(f) for f in ret.splitlines()]
 
     def get_diff(self, top_level, filename):
-        return subprocess.run(['git', 'diff', '--staged', '--',
+        diff = subprocess.run(['git', 'diff', '--staged', '--',
                                '%s/%s' % (top_level, filename)],
                               stdout=subprocess.PIPE).stdout.decode('utf-8')
+        return parse_diff(diff.splitlines(True))
 
 
 class Amendment(StagedChanges):
@@ -276,9 +278,10 @@  class Amendment(StagedChanges):
         self.__files = [CommitFile(f) for f in ret.splitlines()]
 
     def get_diff(self, top_level, filename):
-        return subprocess.run(['git', 'diff', '--staged', 'HEAD~', '--',
+        diff = subprocess.run(['git', 'diff', '--staged', 'HEAD~', '--',
                                '%s/%s' % (top_level, filename)],
                               stdout=subprocess.PIPE).stdout.decode('utf-8')
+        return parse_diff(diff.splitlines(True))
 
 
 # ------------------------------------------------------------------------------
@@ -657,9 +660,7 @@  class StripTrailingSpaceFormatter(Formatter):
 
 def check_file(top_level, commit, filename):
     # Extract the line numbers touched by the commit.
-    diff = commit.get_diff(top_level, filename)
-    diff = diff.splitlines(True)
-    commit_diff = parse_diff(diff)
+    commit_diff = commit.get_diff(top_level, filename)
 
     lines = []
     for hunk in commit_diff: