feat: add muse hub issue get/list/close/reopen/comment subcommands with security hardening
- Five new subcommands: get, list, close, reopen, comment - Input validation: label length (_MAX_ISSUE_LABEL_LEN=255), body length (_MAX_ISSUE_COMMENT_LEN=50000) - URL encoding via urllib.parse.quote for all user-supplied query params - sanitize_display on all API-returned strings in text output - Idempotency guards on close/reopen in musehub service layer - 445 tests passing (8 new test classes, ~90 new tests)
sha256:6688898fe43753e724d54c7d51207d3aeeac274f7d6ee399fd3e28c4c31faa38
sha
+105
~4
symbols
sha256:0bf0d3e0b15867e4833af0e5f167f6ea735e8adfdaad5bbea1861bb3b19044c4
snapshot
+105
symbols added
~4
symbols modified
0
dead code introduced
Semantic Changes
109 symbols
~
register
+
test_negative_number_exits_nonzero_no_network
method
method test_negative_number_exits_nonzero_no_network L6383–6392
+
test_success_json_output_has_state_closed
method
method test_success_json_output_has_state_closed L6403–6414
+
test_zero_number_exits_nonzero_no_network
method
method test_zero_number_exits_nonzero_no_network L6372–6381
+
test_body_sent_verbatim_at_max_length
method
method test_body_sent_verbatim_at_max_length L6884–6913
+
test_body_too_long_error_message_mentions_length
method
method test_body_too_long_error_message_mentions_length L6870–6882
+
test_body_too_long_exits_nonzero_no_network
method
method test_body_too_long_exits_nonzero_no_network L6838–6852
+
test_empty_body_exits_nonzero_no_network
method
method test_empty_body_exits_nonzero_no_network L6657–6668
+
test_negative_number_exits_nonzero_no_network
method
method test_negative_number_exits_nonzero_no_network L6644–6655
+
test_path_contains_comments_and_number
method
method test_path_contains_comments_and_number L6778–6803
+
test_success_json_output_has_comments
method
method test_success_json_output_has_comments L6693–6708
+
test_whitespace_only_body_exits_nonzero
method
method test_whitespace_only_body_exits_nonzero L6670–6681
+
test_zero_number_exits_nonzero_no_network
method
method test_zero_number_exits_nonzero_no_network L6631–6642
+
test_invalid_number_message_mentions_positive
method
method test_invalid_number_message_mentions_positive L5908–5916
+
test_json_output_contains_number_and_title
method
method test_json_output_contains_number_and_title L5918–5930
+
test_json_passthrough_does_not_emit_stderr_summary
method
method test_json_passthrough_does_not_emit_stderr_summary L6007–6019
+
test_negative_number_exits_nonzero_no_network
method
method test_negative_number_exits_nonzero_no_network L5897–5906
+
test_text_output_goes_to_stderr_not_stdout
method
method test_text_output_goes_to_stderr_not_stdout L5943–5956
+
test_zero_number_exits_nonzero_no_network
method
method test_zero_number_exits_nonzero_no_network L5885–5895
+
test_invalid_state_value_rejected_by_argparse
method
method test_invalid_state_value_rejected_by_argparse L6234–6244
+
test_label_injection_does_not_add_extra_query_params
method
method test_label_injection_does_not_add_extra_query_params L6126–6155
+
test_label_too_long_error_message_mentions_length
method
method test_label_too_long_error_message_mentions_length L6299–6309
+
test_label_too_long_exits_nonzero_no_network
method
method test_label_too_long_exits_nonzero_no_network L6258–6270
+
test_no_issues_message_sanitizes_state
method
method test_no_issues_message_sanitizes_state L6338–6361
+
test_negative_number_exits_nonzero_no_network
method
method test_negative_number_exits_nonzero_no_network L6513–6522
+
test_path_contains_reopen_and_number
method
method test_path_contains_reopen_and_number L6581–6604
+
test_success_json_output_has_state_open
method
method test_success_json_output_has_state_open L6533–6544
+
test_zero_number_exits_nonzero_no_network
method
method test_zero_number_exits_nonzero_no_network L6502–6511
+
test_concurrent_comment_body_validation
method
method test_concurrent_comment_body_validation L7130–7149
+
test_issue_list_resp_helper_is_stable
method
method test_issue_list_resp_helper_is_stable L7151–7167
+
test_list_label_encoding_many_special_chars
method
method test_list_label_encoding_many_special_chars L7169–7185
+
test_zero_and_negative_numbers_all_rejected
method
method test_zero_and_negative_numbers_all_rejected L7187–7191
0 comments
To add a comment, use the Muse CLI:
muse hub commit comment sha256:6688898fe43753e724d54c7d51207d3aeeac274f7d6ee399fd3e28c4c31faa38 --body "your comment"
No comments yet. Be the first to start the discussion.