Skip to content

Commit 6459b4d

Browse files
committed
Improve b261af9 (Yelp#568)
- move try-except up the stack, so we actually have a line number and not only the column - also catch IndexError (eg. if the file has fewer lines than secret.line_number)
1 parent 001e163 commit 6459b4d

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

Diff for: detect_secrets/audit/io.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from ..types import SecretContext
1010
from ..util.color import AnsiColor
1111
from ..util.color import colorize
12+
from detect_secrets.exceptions import SecretNotFoundOnSpecifiedLineError
1213

1314

1415
def print_message(message: str) -> None:
@@ -34,7 +35,10 @@ def print_context(context: SecretContext) -> None:
3435

3536
context.snippet.add_line_numbers()
3637
if context.secret.secret_value:
37-
context.snippet.highlight_line(context.secret.secret_value)
38+
try:
39+
context.snippet.highlight_line(context.secret.secret_value)
40+
except (ValueError, IndexError):
41+
raise SecretNotFoundOnSpecifiedLineError(context.secret.line_number)
3842
else:
3943
context.snippet.target_line = colorize(context.snippet.target_line, AnsiColor.BOLD)
4044
print_message(str(context.snippet))

Diff for: detect_secrets/util/code_snippet.py

+9-13
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
from .color import AnsiColor
55
from .color import colorize
6-
from detect_secrets.exceptions import SecretNotFoundOnSpecifiedLineError
76

87

98
def get_code_snippet(
@@ -72,19 +71,16 @@ def highlight_line(self, payload: str) -> 'CodeSnippet':
7271
"""
7372
:param payload: string to highlight, on chosen line
7473
"""
75-
try:
76-
index_of_payload = self.target_line.lower().index(payload.lower())
77-
end_of_payload = index_of_payload + len(payload)
78-
79-
self.target_line = u'{}{}{}'.format(
80-
self.target_line[:index_of_payload],
81-
self.apply_highlight(self.target_line[index_of_payload:end_of_payload]),
82-
self.target_line[end_of_payload:],
83-
)
74+
index_of_payload = self.target_line.lower().index(payload.lower())
75+
end_of_payload = index_of_payload + len(payload)
76+
77+
self.target_line = "{}{}{}".format(
78+
self.target_line[:index_of_payload],
79+
self.apply_highlight(self.target_line[index_of_payload:end_of_payload]),
80+
self.target_line[end_of_payload:],
81+
)
8482

85-
return self
86-
except ValueError:
87-
raise SecretNotFoundOnSpecifiedLineError(self.target_index)
83+
return self
8884

8985
def get_line_number(self, line_number: int) -> str:
9086
"""Broken out, for custom colorization."""

0 commit comments

Comments
 (0)