From ba3278a749c0e003c708e7ffc25a3af040c26690 Mon Sep 17 00:00:00 2001
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Date: Thu, 24 Dec 2020 12:34:55 +0200
Subject: utils: checkstyle.py: Move diff parsing to Commit class
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

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(-)

(limited to 'utils')

diff --git a/utils/checkstyle.py b/utils/checkstyle.py
index 07e896d9..9c2a1837 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:
-- 
cgit v1.2.1