Skip to content

Commit 2662c2d

Browse files
committed
Enhance git log verification
- Add normalizeWhitespace function to handle formatting differences - Enhance isGitLogEmpty and isReleaseHeadInGitLog functions with normalized comparison - Fix git log verification failures due to whitespace differences - Improve robustness of git log verification across different formats
1 parent 8e209d2 commit 2662c2d

File tree

1 file changed

+41
-4
lines changed

1 file changed

+41
-4
lines changed

common.py

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,33 @@ def sanitizePackageLog(log, report = None):
307307
slog = slog.rstrip('\n')
308308
return slog
309309

310+
def normalizeWhitespace(text):
311+
"""
312+
Normalize whitespace in text to handle formatting differences between
313+
release logs and package logs. This function:
314+
1. Normalizes line endings
315+
2. Normalizes multiple spaces/tabs to single spaces
316+
3. Removes trailing whitespace from lines
317+
4. Normalizes empty lines
318+
"""
319+
if not text:
320+
return text
321+
322+
# Split into lines and normalize each line
323+
lines = text.split('\n')
324+
normalized_lines = []
325+
326+
for line in lines:
327+
# Replace multiple whitespace characters with single space
328+
normalized_line = ' '.join(line.split())
329+
normalized_lines.append(normalized_line)
330+
331+
# Join lines back together, removing empty lines at the end
332+
while normalized_lines and normalized_lines[-1] == '':
333+
normalized_lines.pop()
334+
335+
return '\n'.join(normalized_lines)
336+
310337
def isGitLogEmpty (package, releaseLog, gitLog, report = None):
311338
logPath = os.path.join(package.basePath, gitLog)
312339
prisitineLog = readFile(logPath)
@@ -316,9 +343,14 @@ def isGitLogEmpty (package, releaseLog, gitLog, report = None):
316343
report.message("git log contains:", gitLog)
317344
prisitineLog = prisitineLog.decode('utf-8', 'ignore')
318345
report.fmtmessage(prisitineLog)
319-
if log == releaseLog[0]:
346+
# Normalize whitespace for comparison
347+
normalized_log = normalizeWhitespace(log)
348+
normalized_release_log_0 = normalizeWhitespace(releaseLog[0])
349+
normalized_release_log_1 = normalizeWhitespace(releaseLog[1]) if releaseLog[1] is not None else None
350+
351+
if normalized_log == normalized_release_log_0:
320352
return True
321-
if releaseLog[1] != None and log == releaseLog[1]:
353+
if normalized_release_log_1 is not None and normalized_log == normalized_release_log_1:
322354
return True
323355
return False
324356

@@ -327,9 +359,14 @@ def isReleaseHeadInGitLog (report, package, releaseLog, gitLog):
327359
log = readFile(logPath)
328360
log = sanitizePackageLog(log)
329361

330-
if releaseLog[0] in log:
362+
# Normalize whitespace for comparison
363+
normalized_log = normalizeWhitespace(log)
364+
normalized_release_log_0 = normalizeWhitespace(releaseLog[0])
365+
normalized_release_log_1 = normalizeWhitespace(releaseLog[1]) if releaseLog[1] is not None else None
366+
367+
if normalized_release_log_0 in normalized_log:
331368
return True
332-
if releaseLog[1] != None and releaseLog[1] in log:
369+
if normalized_release_log_1 is not None and normalized_release_log_1 in normalized_log:
333370
return True
334371
return False
335372

0 commit comments

Comments
 (0)