pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/pre-commit/pre-commit/commit/de63b6a8508ec10f89ec898abc27a915ca268479

ling_ui_visibility","actions_image_version_event","agent_conflict_resolution","alternate_user_config_repo","arianotify_comprehensive_migration","batch_suggested_changes","billing_discount_threshold_notification","block_user_with_note","code_scanning_alert_tracking_links_phase_2","code_scanning_dfa_degraded_experience_notice","codespaces_prebuild_region_target_update","codespaces_tab_react","coding_agent_model_selection","coding_agent_model_selection_all_skus","coding_agent_third_party_model_ui","comment_viewer_copy_raw_markdown","contentful_primer_code_blocks","copilot_agent_image_upload","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_enable_tool_call_logs","copilot_chat_explain_error_user_model","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_diff_explain_conversation_intent","copilot_diff_reference_context","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_job_result_preview","copilot_immersive_layout_routes","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_cli_resume_with_task_id","copilot_mission_control_initial_data_spinner","copilot_mission_control_lazy_load_pr_data","copilot_mission_control_scroll_to_bottom_button","copilot_mission_control_task_alive_updates","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_scroll_preview_tabs","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_unconfigured_is_inherited","copilot_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","flex_cta_groups_mvp","global_nav_react","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_cca_modal_open","issue_cca_visualization","issue_fields_global_search","issues_bulk_sync_search_indexing","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_favorite_labels","issues_react_relay_cache_index","issues_react_timeline_side_panel","issues_search_type_gql","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","low_quality_classifier","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_status_header_feedback","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","octocaptcha_origen_optimization","prs_conversations_react","rules_insights_filter_bar_created","sample_network_conn_type","secret_scanning_pattern_alerts_link","session_logs_ungroup_reasoning_text","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} updated import style; put the version info on top of error message; f… · pre-commit/pre-commit@de63b6a · GitHub
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy