From d4c56bbb3164ea1d89016f186c62e78165624878 Mon Sep 17 00:00:00 2001 From: Chuan-kai Lin Date: Thu, 9 Jan 2025 12:47:57 -0800 Subject: [PATCH] getDiffRanges: improve handling for missing patch --- src/analyze.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/analyze.ts b/src/analyze.ts index 9563bf976..c90138b0e 100644 --- a/src/analyze.ts +++ b/src/analyze.ts @@ -375,6 +375,20 @@ function getDiffRanges( logger: Logger, ): DiffThunkRange[] | undefined { if (fileDiff.patch === undefined) { + if (fileDiff.changes === 0) { + // There are situations where a changed file legitimately has no diff. + // For example, the file may be a binary file, or that the file may have + // been renamed with no changes to its contents. In these cases, the + // file would be reported as having 0 changes, and we can return an empty + // array to indicate no diff range in this file. + return []; + } + // If a file is reported to have nonzero changes but no patch, that may be + // due to the file diff being too large. In this case, we should return + // undefined to indicate that we cannot process the diff. + logger.warning( + `No patch found for file ${fileDiff.filename} with ${fileDiff.changes} changes.`, + ); return undefined; }