Skip to content

Commit de63b6a

Browse files
committed
updated import style; put the version info on top of error message; fixed tests
1 parent 247d45a commit de63b6a

File tree

3 files changed

+26
-23
lines changed

3 files changed

+26
-23
lines changed

pre_commit/error_handler.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99

1010
import six
1111

12+
import pre_commit.constants as C
1213
from pre_commit import five
1314
from pre_commit import output
14-
from pre_commit.constants import VERSION as pre_commit_version
1515
from pre_commit.store import Store
1616

1717

@@ -28,12 +28,14 @@ def _to_bytes(exc):
2828

2929
def _log_and_exit(msg, exc, formatted):
3030
error_msg = b''.join((
31+
_to_bytes('### version information\n'),
32+
_to_bytes('pre-commit.version={}\n'.format(C.VERSION)),
33+
_to_bytes('sys.version={}\n'.format(sys.version.replace('\n', ' '))),
34+
_to_bytes('sys.executable={}\n'.format(sys.executable)),
35+
_to_bytes('### error information\n'),
3136
five.to_bytes(msg), b': ',
3237
five.to_bytes(type(exc).__name__), b': ',
3338
_to_bytes(exc), b'\n',
34-
_to_bytes('pre-commit.version={}\n'.format(pre_commit_version)),
35-
_to_bytes('sys.version={}\n'.format(sys.version.replace('\n', ' '))),
36-
_to_bytes('sys.executable={}\n'.format(sys.executable)),
3739
))
3840
output.write(error_msg)
3941
store = Store()

tests/error_handler_test.py

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -104,29 +104,30 @@ def test_log_and_exit(cap_out, mock_store_dir):
104104

105105
printed = cap_out.get()
106106
log_file = os.path.join(mock_store_dir, 'pre-commit.log')
107-
printed_lines = printed.split('\n')
108-
assert len(printed_lines) == 6, printed_lines
109-
assert printed_lines[0] == 'msg: FatalError: hai'
107+
printed_lines = printed.splitlines()
108+
print(printed_lines)
109+
assert len(printed_lines) == 7
110+
assert printed_lines[0] == '### version information'
110111
assert re.match(r'^pre-commit.version=\d+\.\d+\.\d+$', printed_lines[1])
111112
assert printed_lines[2].startswith('sys.version=')
112113
assert printed_lines[3].startswith('sys.executable=')
113-
assert printed_lines[4] == 'Check the log at {}'.format(log_file)
114-
assert printed_lines[5] == '' # checks for \n at the end of last line
114+
assert printed_lines[4] == '### error information'
115+
assert printed_lines[5] == 'msg: FatalError: hai'
116+
assert printed_lines[6] == 'Check the log at {}'.format(log_file)
115117

116118
assert os.path.exists(log_file)
117119
with io.open(log_file) as f:
118-
logged_lines = f.read().split('\n')
119-
assert len(logged_lines) == 6, logged_lines
120-
assert logged_lines[0] == 'msg: FatalError: hai'
120+
logged_lines = f.read().splitlines()
121+
assert len(logged_lines) == 7
122+
assert printed_lines[0] == '### version information'
121123
assert re.match(
122124
r'^pre-commit.version=\d+\.\d+\.\d+$',
123125
printed_lines[1],
124126
)
125127
assert logged_lines[2].startswith('sys.version=')
126128
assert logged_lines[3].startswith('sys.executable=')
127-
assert logged_lines[4] == "I'm a stacktrace"
128-
# checks for \n at the end of stack trace
129-
assert printed_lines[5] == ''
129+
assert logged_lines[5] == 'msg: FatalError: hai'
130+
assert logged_lines[6] == "I'm a stacktrace"
130131

131132

132133
def test_error_handler_non_ascii_exception(mock_store_dir):
@@ -148,7 +149,8 @@ def test_error_handler_no_tty(tempdir_factory):
148149
pre_commit_home=pre_commit_home,
149150
)
150151
log_file = os.path.join(pre_commit_home, 'pre-commit.log')
151-
output_lines = output[1].replace('\r', '').split('\n')
152-
assert output_lines[0] == 'An unexpected error has occurred: ValueError: ☃'
153-
assert output_lines[-2] == 'Check the log at {}'.format(log_file)
154-
assert output_lines[-1] == '' # checks for \n at the end of stack trace
152+
output_lines = output[1].replace('\r', '').splitlines()
153+
assert (
154+
output_lines[-2] == 'An unexpected error has occurred: ValueError: ☃'
155+
)
156+
assert output_lines[-1] == 'Check the log at {}'.format(log_file)

tests/main_test.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -164,14 +164,13 @@ def test_expected_fatal_error_no_git_repo(in_tmpdir, cap_out, mock_store_dir):
164164
with pytest.raises(SystemExit):
165165
main.main([])
166166
log_file = os.path.join(mock_store_dir, 'pre-commit.log')
167-
cap_out_lines = cap_out.get().split('\n')
167+
cap_out_lines = cap_out.get().splitlines()
168168
assert (
169-
cap_out_lines[0] ==
169+
cap_out_lines[-2] ==
170170
'An error has occurred: FatalError: git failed. '
171171
'Is it installed, and are you in a Git repository directory?'
172172
)
173-
assert cap_out_lines[-2] == 'Check the log at {}'.format(log_file)
174-
assert cap_out_lines[-1] == '' # checks for \n at the end of error message
173+
assert cap_out_lines[-1] == 'Check the log at {}'.format(log_file)
175174

176175

177176
def test_warning_on_tags_only(mock_commands, cap_out, mock_store_dir):

0 commit comments

Comments
 (0)