From b24abd6f96f377b10a297f6647fc9f38033fac6c Mon Sep 17 00:00:00 2001 From: Roman Babenko Date: Sat, 3 Aug 2024 17:33:43 +0300 Subject: [PATCH] strip whitespaces for subtext --- credsweeper/utils/util.py | 10 +++++++++- tests/utils/test_util.py | 16 +++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/credsweeper/utils/util.py b/credsweeper/utils/util.py index 3f51d18d5..1fa4d8188 100644 --- a/credsweeper/utils/util.py +++ b/credsweeper/utils/util.py @@ -4,6 +4,7 @@ import logging import math import os +import string import struct import tarfile from dataclasses import dataclass @@ -685,6 +686,13 @@ def subtext(text: str, pos: int, hunk_size: int) -> str: else: left_quota = hunk_size - pos left_pos = 0 + # skip leading whitespaces in result string + for i in range(left_pos, pos): + if text[i] in string.whitespace: + left_quota += 1 + left_pos += 1 + else: + break right_remain = len(text) - pos if hunk_size <= right_remain: right_quota = 0 @@ -698,4 +706,4 @@ def subtext(text: str, pos: int, hunk_size: int) -> str: left_pos -= right_quota if 0 > left_pos: left_pos = 0 - return text[left_pos:right_pos] + return text[left_pos:right_pos].rstrip() diff --git a/tests/utils/test_util.py b/tests/utils/test_util.py index 2d67cccde..b2cf2cca0 100644 --- a/tests/utils/test_util.py +++ b/tests/utils/test_util.py @@ -599,13 +599,19 @@ def test_get_chunks_coverage_p(self): def test_subtext_n(self): self.assertEqual("", Util.subtext("", 0, 0)) + self.assertEqual("", Util.subtext(' ' * 42, 0, 0)) def test_subtext_p(self): - # self.assertEqual(AZ_STRING, Util.subtext(AZ_STRING, 37, 40)) - self.assertEqual("The quick ", Util.subtext(AZ_STRING, 0, 5)) - self.assertEqual("The quick ", Util.subtext(AZ_STRING, 3, 5)) - self.assertEqual(" fox jumps", Util.subtext(AZ_STRING, 20, 5)) + self.assertEqual("var=value0123456789;", Util.subtext(" var=value0123456789; ", 21, 10)) + self.assertEqual(AZ_STRING, Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 1 + len(AZ_STRING) >> 1)) + self.assertEqual("x jump", Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 3)) + self.assertEqual("ox jumps", Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 4)) + self.assertEqual("fox jumps", Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 5)) + self.assertEqual("fox jumps ov", Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 6)) + self.assertEqual("The quick", Util.subtext(AZ_STRING, 0, 5)) + self.assertEqual("The quick", Util.subtext(AZ_STRING, 3, 5)) + self.assertEqual("fox jumps", Util.subtext(AZ_STRING, AZ_STRING.find("jumps"), 5)) self.assertEqual("e lazy dog", Util.subtext(AZ_STRING, len(AZ_STRING) - 2, 5)) self.assertEqual("the lazy dog", Util.subtext(AZ_STRING, len(AZ_STRING) - 2, 6)) - self.assertEqual(AZ_STRING[:40], Util.subtext(AZ_STRING, 15, 20)) + self.assertEqual(AZ_STRING[:39], Util.subtext(AZ_STRING, 15, 20)) self.assertEqual(AZ_STRING[-40:], Util.subtext(AZ_STRING, 33, 20))