fix(logs): keep newline between log pages in get_log_by_pointer (#2826)

Signed-off-by: ShryukGrandhi <[email protected]>
This commit is contained in:
ShryukGrandhi
2026-10-31 15:16:10 +08:00
committed by GitHub
parent 7ff04002a2
commit a6ed298f2a
2 changed files with 15 additions and 4 deletions
+4 -4
View File
@@ -57,12 +57,12 @@ class LogCache:
start_offset: int,
) -> tuple[str, int, int]:
"""获取指定页码和偏移量的日志"""
final_logs_str = ''
final_logs: list[str] = []
for page in self.log_pages:
if page.number == start_page_number:
final_logs_str += '\n'.join(page.logs[start_offset:])
final_logs.extend(page.logs[start_offset:])
elif page.number > start_page_number:
final_logs_str += '\n'.join(page.logs)
final_logs.extend(page.logs)
return final_logs_str, page.number, len(page.logs)
return '\n'.join(final_logs), page.number, len(page.logs)
+11
View File
@@ -159,6 +159,17 @@ class TestLogCache:
assert 'page0 log 0' in result
assert 'page1 log 0' in result
def test_get_log_by_pointer_across_pages_keeps_line_boundaries(self):
"""Lines from adjacent pages are separated by a newline, not glued together."""
cache = LogCache()
logs = [f'log {i}' for i in range(LOG_PAGE_SIZE * 2 + 1)]
for log in logs:
cache.add_log(log)
result, _, _ = cache.get_log_by_pointer(0, 0)
assert result.split('\n') == logs
def test_get_log_by_pointer_from_second_page(self):
"""get_log_by_pointer can start from second page."""
cache = LogCache()