test(log): comprehensive graph rendering coverage
55 tests across 9 classes covering: - Unit/integration: linear chain, merge connector, convergence, diamond, lane reuse, decorations - End-to-end: CLI --graph flag wired correctly, exit codes, structural assertions - Stress: 100-commit chain, 50 sequential merges, 3-branch wide fan, truncation warning - Data integrity: orphaned parent refs, root commit lane closure, empty refs, multiline messages, empty manifests - Performance: 100-commit linear < 2s, diamond < 1s, 50-merge < 5s - Security: ANSI escape injection, null bytes, carriage return, OSC title sequences, shell metacharacters, unicode - _topo_sort unit: child before parent, merge before both parents, all commits returned
sha256:06203cde0ee7e4470022a20a3f337417ec4d848c11a45899913786956c922a66
sha
+104
symbols
sha256:3a73c5cd6ec0a12e0b908a2097df4c5cb6dcecb4e1761dbef1c7ff90974391b4
snapshot
+104
symbols added
0
dead code introduced
Semantic Changes
104 symbols
+
test_cli_diamond_graph_contains_slash
method
method test_cli_diamond_graph_contains_slash L637–650
+
test_cli_merge_graph_contains_backslash
method
method test_cli_merge_graph_contains_backslash L622–635
+
test_convergence_connector_before_shared_ancestor
method
method test_convergence_connector_before_shared_ancestor L355–376
+
test_initial_commit_has_no_trailing_pipe
method
method test_initial_commit_has_no_trailing_pipe L378–397
+
test_no_dangling_pipe_column_after_convergence
method
method test_no_dangling_pipe_column_after_convergence L399–419
+
test_empty_branch_ref_falls_back_to_no_commits
method
method test_empty_branch_ref_falls_back_to_no_commits L852–866
+
test_graph_output_has_no_blank_prefix_on_commit_rows
method
method test_graph_output_has_no_blank_prefix_on_commit_rows L893–908
+
test_multiline_commit_message_renders_first_line_only
method
method test_multiline_commit_message_renders_first_line_only L868–882
+
test_diamond_no_wide_pipe_after_slash
method
method test_diamond_no_wide_pipe_after_slash L497–508
+
test_three_commits_no_backslash_no_slash
method
method test_three_commits_no_backslash_no_slash L221–231
+
test_merge_commit_row_has_asterisk_at_col_zero
method
method test_merge_commit_row_has_asterisk_at_col_zero L316–328
+
test_merge_connector_has_no_extra_columns
method
method test_merge_connector_has_no_extra_columns L301–314
+
test_merge_connector_no_extra_trailing_pipe
method
method test_merge_connector_no_extra_trailing_pipe L281–299
+
test_diamond_renders_under_one_second
method
method test_diamond_renders_under_one_second L939–955
+
test_fifty_sequential_merges_renders_under_five_seconds
method
method test_fifty_sequential_merges_renders_under_five_seconds L957–984
+
test_hundred_commits_renders_under_two_seconds
method
method test_hundred_commits_renders_under_two_seconds L920–937
+
test_ansi_escape_in_commit_message_neutralised
method
method test_ansi_escape_in_commit_message_neutralised L1002–1022
+
test_carriage_return_in_message_neutralised
method
method test_carriage_return_in_message_neutralised L1042–1054
+
test_null_byte_in_commit_message_neutralised
method
method test_null_byte_in_commit_message_neutralised L1024–1040
+
test_shell_metacharacters_in_message_pass_through_safe
method
method test_shell_metacharacters_in_message_pass_through_safe L1070–1087
+
test_terminal_title_escape_in_message_neutralised
method
method test_terminal_title_escape_in_message_neutralised L1056–1068
+
test_unicode_in_commit_message_renders_safely
method
method test_unicode_in_commit_message_renders_safely L1108–1122
+
test_very_long_commit_message_does_not_break_line_structure
method
method test_very_long_commit_message_does_not_break_line_structure L1089–1106
+
test_long_chain_only_asterisk_and_pipe
method
method test_long_chain_only_asterisk_and_pipe L697–709
+
test_merge_commit_before_both_parents
method
method test_merge_commit_before_both_parents L1172–1191
0 comments
To add a comment, use the Muse CLI:
muse hub commit comment sha256:06203cde0ee7e4470022a20a3f337417ec4d848c11a45899913786956c922a66 --body "your comment"
No comments yet. Be the first to start the discussion.