[INFO] cloning repository https://github.com/asg017/vlotus
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/asg017/vlotus" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fasg017%2Fvlotus", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fasg017%2Fvlotus'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a2badd2a30d75c47e40ec96db7746e712b1721a9
[INFO] testing asg017/vlotus against 1.99.0-beta.8 for beta-1.100-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fasg017%2Fvlotus" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/asg017/vlotus
[INFO] finished tweaking git repo https://github.com/asg017/vlotus
[INFO] tweaked toml for git repo https://github.com/asg017/vlotus written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/asg017/vlotus on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/asg017/vlotus already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Updating git repository `https://github.com/asg017/liblotus`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded cc v1.2.61
[INFO] [stderr]   Downloaded is-wsl v0.4.0
[INFO] [stderr]   Downloaded unicode-truncate v1.1.0
[INFO] [stderr]   Downloaded gethostname v1.1.0
[INFO] [stderr]   Downloaded is-docker v0.2.0
[INFO] [stderr]   Downloaded objc2-io-surface v0.3.2
[INFO] [stderr]   Downloaded error-code v3.3.2
[INFO] [stderr]   Downloaded cassowary v0.3.0
[INFO] [stderr]   Downloaded fax v0.2.7
[INFO] [stderr]   Downloaded open v5.3.4
[INFO] [stderr]   Downloaded clipboard-win v5.4.1
[INFO] [stderr]   Downloaded csv-core v0.1.13
[INFO] [stderr]   Downloaded arboard v3.6.1
[INFO] [stderr]   Downloaded rusqlite v0.34.0
[INFO] [stderr]   Downloaded compact_str v0.8.1
[INFO] [stderr]   Downloaded crossterm v0.28.1
[INFO] [stderr]   Downloaded objc2-core-graphics v0.3.2
[INFO] [stderr]   Downloaded jiff-static v0.2.24
[INFO] [stderr]   Downloaded wasip2 v1.0.3+wasi-0.2.9
[INFO] [stderr]   Downloaded insta v1.47.2
[INFO] [stderr]   Downloaded bindgen v0.71.1
[INFO] [stderr]   Downloaded x11rb v0.13.2
[INFO] [stderr]   Downloaded unicode-width v0.2.0
[INFO] [stderr]   Downloaded ratatui v0.29.0
[INFO] [stderr]   Downloaded x11rb-protocol v0.13.2
[INFO] [stderr]   Downloaded objc2-app-kit v0.3.2
[INFO] [stderr]   Downloaded jiff v0.2.24
[INFO] [stderr]   Downloaded pxfm v0.1.29
[INFO] [stderr]   Downloaded csv v1.4.0
[INFO] [stderr]   Downloaded libsqlite3-sys v0.32.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 3b10a4ce18f56ba8b8bf1efa85ad3aeb12030b92b0035758f6a4f651ce74fbe1
[INFO] running `Command { std: "docker" "start" "3b10a4ce18f56ba8b8bf1efa85ad3aeb12030b92b0035758f6a4f651ce74fbe1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3b10a4ce18f56ba8b8bf1efa85ad3aeb12030b92b0035758f6a4f651ce74fbe1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3b10a4ce18f56ba8b8bf1efa85ad3aeb12030b92b0035758f6a4f651ce74fbe1" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3b10a4ce18f56ba8b8bf1efa85ad3aeb12030b92b0035758f6a4f651ce74fbe1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3b10a4ce18f56ba8b8bf1efa85ad3aeb12030b92b0035758f6a4f651ce74fbe1" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling libloading v0.8.9
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling bindgen v0.71.1
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling clang-sys v1.8.1
[INFO] [stderr]    Compiling foldhash v0.1.5
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling rustc-hash v2.1.2
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling cc v1.2.61
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling hashbrown v0.17.0
[INFO] [stderr]    Compiling linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling pxfm v0.1.29
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling png v0.18.1
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling is-docker v0.2.0
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling unicode-width v0.1.14
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling bytemuck v1.25.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling x11rb-protocol v0.13.2
[INFO] [stderr]    Compiling byteorder-lite v0.1.0
[INFO] [stderr]    Compiling compact_str v0.8.1
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling jiff v0.2.24
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling cexpr v0.6.0
[INFO] [stderr]    Compiling unicode-truncate v1.1.0
[INFO] [stderr]    Compiling is-wsl v0.4.0
[INFO] [stderr]    Compiling lru v0.12.5
[INFO] [stderr]    Compiling hashlink v0.10.0
[INFO] [stderr]    Compiling csv-core v0.1.13
[INFO] [stderr]    Compiling pathdiff v0.2.3
[INFO] [stderr]    Compiling unicode-width v0.2.0
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling cassowary v0.3.0
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling csv v1.4.0
[INFO] [stderr]    Compiling open v5.3.4
[INFO] [stderr]    Compiling moxcms v0.8.1
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling lotus-core v0.0.1-alpha.2 (https://github.com/asg017/liblotus?rev=43ba14875a9aba081479b74c89ea6fdb3f5b2abc#43ba1487)
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling x11rb v0.13.2
[INFO] [stderr]    Compiling ratatui v0.29.0
[INFO] [stderr]    Compiling lotus-datetime v0.0.1-alpha.2 (https://github.com/asg017/liblotus?rev=43ba14875a9aba081479b74c89ea6fdb3f5b2abc#43ba1487)
[INFO] [stderr]    Compiling image v0.25.10
[INFO] [stderr]    Compiling libsqlite3-sys v0.32.0
[INFO] [stderr]    Compiling arboard v3.6.1
[INFO] [stderr]    Compiling rusqlite v0.34.0
[INFO] [stderr]    Compiling vlotus v0.0.1-alpha.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 18s
[INFO] running `Command { std: "docker" "inspect" "3b10a4ce18f56ba8b8bf1efa85ad3aeb12030b92b0035758f6a4f651ce74fbe1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3b10a4ce18f56ba8b8bf1efa85ad3aeb12030b92b0035758f6a4f651ce74fbe1" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling console v0.16.3
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling x11rb v0.13.2
[INFO] [stderr]    Compiling insta v1.47.2
[INFO] [stderr]    Compiling arboard v3.6.1
[INFO] [stderr]    Compiling vlotus v0.0.1-alpha.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 15.17s
[INFO] running `Command { std: "docker" "inspect" "3b10a4ce18f56ba8b8bf1efa85ad3aeb12030b92b0035758f6a4f651ce74fbe1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3b10a4ce18f56ba8b8bf1efa85ad3aeb12030b92b0035758f6a4f651ce74fbe1" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.16s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/vlotus-8286bf916e3ce38f)
[INFO] [stdout] 
[INFO] [stdout] running 543 tests
[INFO] [stdout] test app::tests::add_sheet_appends_and_switches ... ok
[INFO] [stdout] test app::tests::autocomplete_dismissed_for_non_formula_input ... ok
[INFO] [stdout] test app::tests::autocomplete_accept_inserts_function_with_open_paren ... ok
[INFO] [stdout] test app::tests::autocomplete_appears_for_function_prefix ... ok
[INFO] [stdout] test app::tests::autocomplete_surfaces_datetime_extension_functions ... ok
[INFO] [stdout] test app::tests::clipboard_mark_contains_inclusive ... ok
[INFO] [stdout] test app::tests::clipboard_mark_perimeter_excludes_strict_interior ... ok
[INFO] [stdout] test app::tests::clipboard_mark_single_cell_is_all_perimeter ... ok
[INFO] [stdout] test app::tests::autofit_empty_column_uses_default ... ok
[INFO] [stdout] test app::tests::autocomplete_typing_more_resets_selection_when_not_user_picked ... ok
[INFO] [stdout] test app::tests::autocomplete_surfaces_hyperlink_function ... ok
[INFO] [stdout] test app::tests::command_quit_aliases ... ok
[INFO] [stdout] test app::tests::cancel_edit_downgrades_change_to_delete ... ok
[INFO] [stdout] test app::tests::command_empty_is_noop ... ok
[INFO] [stdout] test app::tests::cancel_edit_clears_autocomplete_and_signature ... ok
[INFO] [stdout] test app::tests::build_grid_over_includes_formulas ... ok
[INFO] [stdout] test app::tests::autocomplete_user_selected_starts_false_and_flips_on_navigation ... ok
[INFO] [stdout] test app::tests::autocomplete_suppressed_when_no_prefix_typed ... ok
[INFO] [stdout] test app::tests::autocomplete_select_next_wraps_at_end ... ok
[INFO] [stdout] test app::tests::command_unknown_is_error ... ok
[INFO] [stdout] test app::tests::autofit_column_uses_formatted_width_for_currency ... ok
[INFO] [stdout] test app::tests::command_write_is_noop_continue ... ok
[INFO] [stdout] test app::tests::clear_search_drops_state ... ok
[INFO] [stdout] test app::tests::autofit_column_uses_longest_displayed_value ... ok
[INFO] [stdout] test app::tests::data_region_isolated_island_does_not_grab_disjoint_island ... ok
[INFO] [stdout] test app::tests::data_region_internal_empty_cells_included_in_bbox ... ok
[INFO] [stdout] test app::tests::column_width_defaults_when_unset ... ok
[INFO] [stdout] test app::tests::data_region_seed_on_empty_cell_returns_none ... ok
[INFO] [stdout] test app::tests::data_region_single_populated_cell_returns_one_by_one_rect ... ok
[INFO] [stdout] test app::tests::cancel_pending_confirm_leaves_data_intact ... ok
[INFO] [stdout] test app::tests::data_region_diagonal_neighbours_connect ... ok
[INFO] [stdout] test app::tests::data_region_orthogonal_block_yields_full_bbox_from_interior ... ok
[INFO] [stdout] test app::tests::command_quit_bang_aliases_force ... ok
[INFO] [stdout] test app::tests::clear_pending_motion_state_clears_all_prefix_flags ... ok
[INFO] [stdout] test app::tests::delete_active_sheet_drops_and_falls_back ... ok
[INFO] [stdout] test app::tests::currency_input_parses_and_formats_round_trip ... ok
[INFO] [stdout] test app::tests::currency_input_with_dollar_text_stays_string ... ok
[INFO] [stdout] test app::tests::consume_count_takes_and_resets ... ok
[INFO] [stdout] test app::tests::currency_negative_input_round_trip ... ok
[INFO] [stdout] test app::tests::delete_cell_is_undoable ... ok
[INFO] [stdout] test app::tests::delete_row_requires_confirm_before_executing ... ok
[INFO] [stdout] test app::tests::clear_rect_clears_every_cell_in_one_undo_step ... ok
[INFO] [stdout] test app::tests::displayed_for_applies_format ... ok
[INFO] [stdout] test app::tests::datetime_tag_for_cell_returns_jdate_for_iso_literal ... ok
[INFO] [stdout] test app::tests::datetime_tag_for_cell_is_none_for_hyperlink ... ok
[INFO] [stdout] test app::tests::delete_active_sheet_refuses_when_only_one ... ok
[INFO] [stdout] test app::tests::datetime_tag_for_cell_is_none_for_plain_text_and_numbers ... ok
[INFO] [stdout] test app::tests::enter_visual_anchors_at_cursor ... ok
[INFO] [stdout] test app::tests::currency_dot_repeat_re_runs_auto_detect ... ok
[INFO] [stdout] test app::tests::confirm_edit_records_insert_for_dot_repeat ... ok
[INFO] [stdout] test app::tests::displayed_for_formats_formula_result_when_format_set ... ok
[INFO] [stdout] test app::tests::delete_col_with_formula_dependent_rewrites_to_ref_error ... ok
[INFO] [stdout] test app::tests::displayed_for_passes_through_when_unformatted ... ok
[INFO] [stdout] test app::tests::export_sheet_writes_csv ... ok
[INFO] [stdout] test app::tests::first_filled_in_empty_row_falls_back_to_col_zero ... ok
[INFO] [stdout] test app::tests::delete_cell_records_repeatable_action ... ok
[INFO] [stdout] test app::tests::exit_visual_saves_last_visual ... ok
[INFO] [stdout] test app::tests::export_sheet_rejects_unknown_extension ... ok
[INFO] [stdout] test app::tests::first_filled_in_row_finds_left_edge_of_content ... ok
[INFO] [stdout] test app::tests::fmt_auto_clears_explicit_alignment ... ok
[INFO] [stdout] test app::tests::fmt_alignment_preserves_other_axes ... ok
[INFO] [stdout] test app::tests::fmt_date_no_op_for_non_datetime_cell ... ok
[INFO] [stdout] test app::tests::fmt_bold_attaches_flag ... ok
[INFO] [stdout] test app::tests::fmt_clear_drops_format ... ok
[INFO] [stdout] test app::tests::fmt_bg_hex_color ... ok
[INFO] [stdout] test app::tests::fmt_date_applies_strftime_to_jdate_cell ... ok
[INFO] [stdout] test app::tests::fmt_fg_bad_color_reports_status ... ok
[INFO] [stdout] test app::tests::fmt_applies_across_visual_selection ... ok
[INFO] [stdout] test app::tests::fmt_center_and_right_round_trip ... ok
[INFO] [stdout] test app::tests::fmt_fg_named_color ... ok
[INFO] [stdout] test app::tests::fmt_left_overrides_classify_right_align ... ok
[INFO] [stdout] test app::tests::fmt_clear_drops_style_flags_too ... ok
[INFO] [stdout] test app::tests::fmt_percent_with_decimals_renders_correctly ... ok
[INFO] [stdout] test app::tests::fmt_date_persists_through_format_json_round_trip ... ok
[INFO] [stdout] test app::tests::fmt_style_flags_compose ... ok
[INFO] [stdout] test app::tests::fmt_color_preserves_other_axes ... ok
[INFO] [stdout] test app::tests::fmt_skips_empty_cells_in_selection ... ok
[INFO] [stdout] test app::tests::fmt_plus_on_unformatted_applies_usd_then_bumps ... ok
[INFO] [stdout] test app::tests::fmt_nofg_clears_only_fg ... ok
[INFO] [stdout] test app::tests::fmt_percent_attaches_format ... ok
[INFO] [stdout] test app::tests::fmt_style_preserves_number_format ... ok
[INFO] [stdout] test app::tests::fmt_usd_attaches_format_to_active_cell ... ok
[INFO] [stdout] test app::tests::fmt_usd_preserves_style_flags ... ok
[INFO] [stdout] test app::tests::fmt_usd_rejects_bad_decimals ... ok
[INFO] [stdout] test app::tests::fmt_undo_restores_prior_format ... ok
[INFO] [stdout] test app::tests::fmt_nobold_clears_flag ... ok
[INFO] [stdout] test app::tests::fmt_plus_minus_bumps_decimals ... ok
[INFO] [stdout] test app::tests::fmt_undo_restores_unformatted_state ... ok
[INFO] [stdout] test app::tests::insertable_after_operator_or_paren_or_comma ... ok
[INFO] [stdout] test app::tests::jump_filled_to_filled_walks_to_end_of_run ... ok
[INFO] [stdout] test app::tests::jump_filled_with_empty_neighbour_skips_to_next_island ... ok
[INFO] [stdout] test app::tests::jump_at_edge_is_noop ... ok
[INFO] [stdout] test app::tests::jump_no_content_in_direction_snaps_to_edge ... ok
[INFO] [stdout] test app::tests::insertable_after_equals_only_when_buffer_has_no_other_content ... ok
[INFO] [stdout] test app::tests::jump_empty_skips_to_first_filled ... ok
[INFO] [stdout] test app::tests::fmt_nodate_clears_strftime_override ... ok
[INFO] [stdout] test app::tests::handle_colwidth_parses_numeric_and_auto ... ok
[INFO] [stdout] test app::tests::jump_works_vertically ... ok
[INFO] [stdout] test app::tests::goto_first_row_and_last_filled_row ... ok
[INFO] [stdout] test app::tests::fmt_usd_with_explicit_decimals_parses ... ok
[INFO] [stdout] test app::tests::jump_to_target_handles_row_and_cell ... ok
[INFO] [stdout] test app::tests::goto_last_filled_row_on_empty_column_uses_global_max ... ok
[INFO] [stdout] test app::tests::goto_row_clamps_to_max_row ... ok
[INFO] [stdout] test app::tests::not_insertable_in_middle_of_identifier ... ok
[INFO] [stdout] test app::tests::not_insertable_when_next_meaningful_char_is_a_value ... ok
[INFO] [stdout] test app::tests::formula_with_dollar_unchanged ... ok
[INFO] [stdout] test app::tests::motion_in_visual_extends_rectangle ... ok
[INFO] [stdout] test app::tests::parse_insert_side_aliases ... ok
[INFO] [stdout] test app::tests::parse_pasted_grid_decodes_attribute_entities ... ok
[INFO] [stdout] test app::tests::parse_pasted_grid_external_clipboard_has_no_anchor ... ok
[INFO] [stdout] test app::tests::parse_pasted_grid_extracts_anchor_and_per_cell_formula ... ok
[INFO] [stdout] test app::tests::marks_set_and_jump ... ok
[INFO] [stdout] test app::tests::mouse_capture_is_on_by_default ... ok
[INFO] [stdout] test app::tests::jump_to_unset_mark_reports_status ... ok
[INFO] [stdout] test app::tests::insert_row_above_cursor_shifts_content_down ... ok
[INFO] [stdout] test app::tests::motion_in_normal_resets_anchor ... ok
[INFO] [stdout] test app::tests::last_filled_in_row_finds_right_edge_of_content ... ok
[INFO] [stdout] test app::tests::paste_from_empty_register_is_noop ... ok
[INFO] [stdout] test app::tests::nav_bang_opens_shell_prompt ... ok
[INFO] [stdout] test app::tests::goto_last_filled_row_on_empty_sheet_lands_at_row_0 ... ok
[INFO] [stdout] test app::tests::next_and_prev_sheet_wrap ... ok
[INFO] [stdout] test app::tests::insert_col_below_right_keeps_cursor_col_intact ... ok
[INFO] [stdout] test app::tests::non_arrow_key_exits_pointing ... ok
[INFO] [stdout] test app::tests::pending_operator_stores_count_and_clears_via_motion_state ... ok
[INFO] [stdout] test app::tests::plain_arrow_during_pointing_still_collapses_after_shift_extension ... ok
[INFO] [stdout] test app::tests::new_action_clears_redo_branch ... ok
[INFO] [stdout] test app::tests::pointing_arrow_inserts_ref_at_insertable_caret ... ok
[INFO] [stdout] test app::tests::quit_bang_overrides_dirty_buffer_warning ... ok
[INFO] [stdout] test app::tests::quote_for_format_csv_escapes_quotes_and_separator ... ok
[INFO] [stdout] test app::tests::percent_input_auto_detects_at_edit_commit ... ok
[INFO] [stdout] test app::tests::percent_input_with_text_stays_string ... ok
[INFO] [stdout] test app::tests::quote_for_format_tsv_replaces_tab_and_newline ... ok
[INFO] [stdout] test app::tests::pointing_arrow_clamps_at_grid_edge ... ok
[INFO] [stdout] test app::tests::pointing_arrow_moves_existing_ref ... ok
[INFO] [stdout] test app::tests::pointing_does_not_start_in_middle_of_ref ... ok
[INFO] [stdout] test app::tests::quit_with_dirty_buffer_is_refused ... ok
[INFO] [stdout] test app::tests::quit_bang_overrides_in_memory_warning ... ok
[INFO] [stdout] test app::tests::quit_in_memory_untouched_session_succeeds ... ok
[INFO] [stdout] test app::tests::now_command_inserts_current_datetime_literal ... ok
[INFO] [stdout] test app::tests::quit_in_tutor_session_skips_in_memory_warning ... ok
[INFO] [stdout] test app::tests::paste_with_cut_clear_is_one_undo_step ... ok
[INFO] [stdout] test app::tests::rename_active_sheet_rejects_collision ... ok
[INFO] [stdout] test app::tests::quit_file_backed_dirty_buffer_is_refused_then_allowed_after_w ... ok
[INFO] [stdout] test app::tests::quit_in_memory_touched_session_is_refused ... ok
[INFO] [stdout] test app::tests::search_state_matches_is_case_insensitive_when_flagged ... ok
[INFO] [stdout] test app::tests::paragraph_motions_skip_to_next_run_start ... ok
[INFO] [stdout] test app::tests::repeat_last_edit_returns_false_when_none ... ok
[INFO] [stdout] test app::tests::rename_active_sheet_to_self_is_noop ... ok
[INFO] [stdout] test app::tests::reselect_last_visual_restores_rect ... ok
[INFO] [stdout] test app::tests::patch_apply_command_lands_changes_into_dirty_buffer ... ok
[INFO] [stdout] test app::tests::rename_active_sheet_rejects_empty ... ok
[INFO] [stdout] test app::tests::rename_active_sheet_updates_name_and_persists_cells ... ok
[INFO] [stdout] test app::tests::run_shell_surfaces_nonzero_exit_in_status ... ok
[INFO] [stdout] test app::tests::scroll_full_page_clamps_at_grid_top ... ok
[INFO] [stdout] test app::tests::run_shell_pipeline_with_csv_input ... ok
[INFO] [stdout] test app::tests::reselect_last_visual_returns_false_when_none_saved ... ok
[INFO] [stdout] test app::tests::scroll_half_page_moves_cursor_by_half_visible_rows ... ok
[INFO] [stdout] test app::tests::select_data_region_on_empty_cell_selects_entire_sheet ... ok
[INFO] [stdout] test app::tests::search_current_cell_uses_displayed_value ... ok
[INFO] [stdout] test app::tests::set_mouse_re_enables_capture ... ok
[INFO] [stdout] test app::tests::search_finds_first_match_after_cursor_and_wraps ... ok
[INFO] [stdout] test app::tests::select_data_region_on_isolated_cell_is_one_by_one ... ok
[INFO] [stdout] test app::tests::search_step_backward_with_capital_n_reverses ... ok
[INFO] [stdout] test app::tests::set_mouse_is_idempotent ... ok
[INFO] [stdout] test app::tests::select_data_region_treats_whitespace_only_as_empty ... ok
[INFO] [stdout] test app::tests::set_column_width_persists_and_clamps ... ok
[INFO] [stdout] test app::tests::shift_pasted_raw_no_formula_returns_value ... ok
[INFO] [stdout] test app::tests::shift_pasted_raw_off_grid_becomes_ref_error ... ok
[INFO] [stdout] test app::tests::shift_pasted_raw_pins_absolute_refs ... ok
[INFO] [stdout] test app::tests::shift_pasted_raw_shifts_relative_refs ... ok
[INFO] [stdout] test app::tests::shift_pasted_raw_zero_delta_returns_formula_unchanged ... ok
[INFO] [stdout] test app::tests::set_mouse_query_reports_current_state ... ok
[INFO] [stdout] test app::tests::shell_enter_with_empty_buffer_is_silent_noop ... ok
[INFO] [stdout] test app::tests::shift_arrow_back_through_anchor_collapses_then_extends_other_side ... ok
[INFO] [stdout] test app::tests::signature_help_appears_inside_function_call ... ok
[INFO] [stdout] test app::tests::set_nomouse_disables_capture ... ok
[INFO] [stdout] test app::tests::shift_arrow_at_non_insertable_caret_falls_through ... ok
[INFO] [stdout] test app::tests::shell_esc_cancels_back_to_nav ... ok
[INFO] [stdout] test app::tests::signature_active_param_advances_past_commas ... ok
[INFO] [stdout] test app::tests::shift_arrow_during_pointing_extends_range ... ok
[INFO] [stdout] test app::tests::sheet_rename_command_runs_through_run_command ... ok
[INFO] [stdout] test app::tests::select_data_region_from_v_line_re_anchors_as_visual_cell ... ok
[INFO] [stdout] test app::tests::vcolumn_selection_pins_rows_to_full_grid ... ok
[INFO] [stdout] test app::tests::shift_arrow_with_no_pointing_starts_pointing_like_plain_arrow ... ok
[INFO] [stdout] test app::tests::vcolumn_status_label ... ok
[INFO] [stdout] test app::tests::shell_paste_is_one_undo_group ... ok
[INFO] [stdout] test app::tests::swap_visual_corners_swaps_anchor_and_cursor ... ok
[INFO] [stdout] test app::tests::shell_paste_lands_headers_at_cursor_and_data_below ... ok
[INFO] [stdout] test app::tests::word_backward_at_col_zero_is_noop ... ok
[INFO] [stdout] test app::tests::word_forward_stays_at_edge_with_no_more_content ... ok
[INFO] [stdout] test app::tests::word_forward_walks_past_run_then_skips_empties ... ok
[INFO] [stdout] test app::tests::vline_selection_pins_columns_to_full_grid ... ok
[INFO] [stdout] test app::tests::tablast_jumps_to_last_sheet ... ok
[INFO] [stdout] test app::tests::today_command_inserts_current_date_literal ... ok
[INFO] [stdout] test app::tests::viewport_motions_use_scroll_window ... ok
[INFO] [stdout] test app::tests::switch_sheet_isolates_cell_data ... ok
[INFO] [stdout] test app::tests::switch_sheet_clears_clipboard_mark ... ok
[INFO] [stdout] test app::tests::shell_paste_with_empty_grid_status_message ... ok
[INFO] [stdout] test app::tests::shell_paste_clamps_at_grid_bottom ... ok
[INFO] [stdout] test datetime::tests::is_datetime_tag_recognises_all_six ... ok
[INFO] [stdout] test format::tests::bump_decimals_works_for_percent_too ... ok
[INFO] [stdout] test datetime::tests::is_datetime_tag_rejects_others ... ok
[INFO] [stdout] test format::tests::currency_high_precision ... ok
[INFO] [stdout] test format::tests::currency_leading_whitespace_ok ... ok
[INFO] [stdout] test datetime::tests::parse_literal_claims_iso_date_in_full_pipeline ... ok
[INFO] [stdout] test format::tests::bump_number_decimals_clamped ... ok
[INFO] [stdout] test format::tests::currency_negative_outside_dollar ... ok
[INFO] [stdout] test format::tests::currency_rejects_bare_dollar ... ok
[INFO] [stdout] test format::tests::currency_rejects_minus_inside_dollar ... ok
[INFO] [stdout] test format::tests::currency_rejects_bad_grouping ... ok
[INFO] [stdout] test format::tests::currency_rejects_trailing_dot ... ok
[INFO] [stdout] test format::tests::currency_simple ... ok
[INFO] [stdout] test format::tests::currency_thousands ... ok
[INFO] [stdout] test format::tests::json_default_emits_empty_object ... ok
[INFO] [stdout] test app::tests::tabfirst_jumps_to_first_sheet ... ok
[INFO] [stdout] test format::tests::json_round_trip_all_axes ... ok
[INFO] [stdout] test datetime::tests::double_register_errors ... ok
[INFO] [stdout] test app::tests::yank_row_captures_full_a_through_max_col ... ok
[INFO] [stdout] test datetime::tests::register_makes_jdate_callable_in_a_formula ... ok
[INFO] [stdout] test format::tests::json_round_trip_percent ... ok
[INFO] [stdout] test format::tests::json_round_trip_zero_decimals ... ok
[INFO] [stdout] test format::tests::parse_align_strings ... ok
[INFO] [stdout] test format::tests::parse_bool_flags ... ok
[INFO] [stdout] test format::tests::parse_clears_on_null_sentinel ... ok
[INFO] [stdout] test format::tests::looks_numeric_recognizes_currency ... ok
[INFO] [stdout] test format::tests::json_round_trip_usd_only ... ok
[INFO] [stdout] test format::tests::parse_color_arg_falls_through_to_hex ... ok
[INFO] [stdout] test app::tests::wq_bang_forces_quit_in_memory ... ok
[INFO] [stdout] test format::tests::parse_color_arg_rejects_unknown ... ok
[INFO] [stdout] test format::tests::parse_color_arg_resolves_catppuccin_names ... ok
[INFO] [stdout] test app::tests::z_prefix_scrolls_keep_cursor_put ... ok
[INFO] [stdout] test format::tests::looks_numeric_recognizes_percent ... ok
[INFO] [stdout] test format::tests::parse_color_arg_resolves_natural_names ... ok
[INFO] [stdout] test format::tests::parse_colors_three_and_six_digit_hex ... ok
[INFO] [stdout] test format::tests::parse_decimals_clamped_to_max ... ok
[INFO] [stdout] test format::tests::parse_does_not_confuse_nested_keys_with_top_level ... ok
[INFO] [stdout] test format::tests::parse_hex_color_rejects_bad_input ... ok
[INFO] [stdout] test format::tests::parse_hex_color_six_digit ... ok
[INFO] [stdout] test format::tests::parse_hex_color_three_digit ... ok
[INFO] [stdout] test format::tests::parse_unknown_kind_yields_no_number_format ... ok
[INFO] [stdout] test format::tests::percent_high_precision ... ok
[INFO] [stdout] test format::tests::percent_integer_zero_decimals ... ok
[INFO] [stdout] test format::tests::percent_negative ... ok
[INFO] [stdout] test format::tests::percent_rejects_bad_input ... ok
[INFO] [stdout] test format::tests::percent_round_trip_typed_then_rendered ... ok
[INFO] [stdout] test format::tests::percent_simple ... ok
[INFO] [stdout] test format::tests::render_basic ... ok
[INFO] [stdout] test format::tests::render_passthrough_on_error_sentinel ... ok
[INFO] [stdout] test format::tests::render_passthrough_on_non_finite ... ok
[INFO] [stdout] test format::tests::render_rounding_boundary ... ok
[INFO] [stdout] test format::tests::currency_no_decimals_defaults_two ... ok
[INFO] [stdout] test format::tests::render_zero_decimals ... ok
[INFO] [stdout] test format::tests::render_percent_basic ... ok
[INFO] [stdout] test hyperlink::tests::empty_label_falls_back_to_url ... ok
[INFO] [stdout] test hyperlink::tests::encode_round_trips_through_split ... ok
[INFO] [stdout] test hyperlink::tests::concat_of_hyperlink_uses_label ... ok
[INFO] [stdout] test hyperlink::tests::hyperlink_display_falls_back_to_data_without_separator ... ok
[INFO] [stdout] test hyperlink::tests::double_register_errors ... ok
[INFO] [stdout] test hyperlink::tests::hyperlink_display_returns_label ... ok
[INFO] [stdout] test hyperlink::tests::hyperlink_edit_repr_matches_display ... ok
[INFO] [stdout] test hyperlink::tests::matches_common_schemes ... ok
[INFO] [stdout] test hyperlink::tests::numeric_label_stringifies ... ok
[INFO] [stdout] test hyperlink::tests::one_arg_uses_url_as_label ... ok
[INFO] [stdout] test hyperlink::tests::rejects_non_text_url ... ok
[INFO] [stdout] test format::tests::render_large_thousands ... ok
[INFO] [stdout] test hyperlink::tests::rejects_separator_in_url_or_label ... ok
[INFO] [stdout] test hyperlink::tests::rejects_plain_text ... ok
[INFO] [stdout] test hyperlink::tests::register_makes_hyperlink_callable_in_a_formula ... ok
[INFO] [stdout] test hyperlink::tests::rejects_scheme_with_no_rest ... ok
[INFO] [stdout] test format::tests::render_percent_zero_decimals ... ok
[INFO] [stdout] test format::tests::render_negative_uses_dash_dollar ... ok
[INFO] [stdout] test format::tests::render_no_number_format_passes_through ... ok
[INFO] [stdout] test hyperlink::tests::rejects_zero_or_three_args ... ok
[INFO] [stdout] test hyperlink::tests::rejects_whitespace_anywhere ... ok
[INFO] [stdout] test hyperlink::tests::rejects_unknown_schemes ... ok
[INFO] [stdout] test hyperlink::tests::split_payload_handles_empty_label ... ok
[INFO] [stdout] test hyperlink::tests::split_payload_returns_none_when_no_separator ... ok
[INFO] [stdout] test hyperlink::tests::two_arg_packs_url_and_label ... ok
[INFO] [stdout] test app::tests::word_backward_lands_on_run_start ... ok
[INFO] [stdout] test format::tests::currency_rejects_text ... ok
[INFO] [stdout] test format::tests::json_round_trip_date_only ... ok
[INFO] [stdout] test app::tests::undo_chain_of_edits_replays_in_reverse ... ok
[INFO] [stdout] test app::tests::wq_in_memory_touched_is_refused ... ok
[INFO] [stdout] test app::tests::undo_round_trip_single_cell ... ok
[INFO] [stdout] test mouse_tests::bare_l_still_moves_right_when_no_pending_f ... ok
[INFO] [stdout] test mouse_tests::bare_f_in_nav_sets_pending_f ... ok
[INFO] [stdout] test mouse_tests::bare_b_still_word_back_when_no_pending_f ... ok
[INFO] [stdout] test mouse_tests::bare_i_still_inserts_when_no_pending_f ... ok
[INFO] [stdout] test mouse_tests::bare_a_still_inserts_when_no_pending_f ... ok
[INFO] [stdout] test mouse_tests::bare_C_still_change_to_end_when_no_pending_g ... ok
[INFO] [stdout] test mouse_tests::bare_c_still_operator_when_no_pending_f ... ok
[INFO] [stdout] test mouse_tests::bare_u_still_undo_when_no_pending_f ... ok
[INFO] [stdout] test mouse_tests::bare_o_without_pending_g_still_opens_below ... ok
[INFO] [stdout] test app::tests::yank_selection_round_trips_through_paste ... ok
[INFO] [stdout] test mouse_tests::bare_s_still_substitutes_when_no_pending_f ... ok
[INFO] [stdout] test mouse_tests::click_in_visual_resets_selection_to_just_clicked_cell ... ok
[INFO] [stdout] test mouse_tests::col_header_click_replaces_active_pointing_ref ... ok
[INFO] [stdout] test mouse_tests::ctrl_equals_in_nav_autofits_column ... ok
[INFO] [stdout] test mouse_tests::bare_L_still_viewport_bottom_when_no_pending_g ... ok
[INFO] [stdout] test mouse_tests::col_drag_normalizes_reverse_direction ... ok
[INFO] [stdout] test mouse_tests::ctrl_w_equals_in_v_column_autofits_every_selected_column ... ok
[INFO] [stdout] test mouse_tests::ctrl_w_equals_autofits_as_fallback ... ok
[INFO] [stdout] test mouse_tests::col_header_drag_during_formula_edit_inserts_col_range ... ok
[INFO] [stdout] test mouse_tests::click_cell_with_active_pointing_replaces_ref ... ok
[INFO] [stdout] test mouse_tests::click_at_non_insertable_caret_falls_through_to_commit ... ok
[INFO] [stdout] test mouse_tests::click_cell_during_formula_edit_inserts_ref_at_caret ... ok
[INFO] [stdout] test mouse_tests::col_header_click_during_formula_edit_inserts_col_ref ... ok
[INFO] [stdout] test mouse_tests::col_header_drag_back_collapses_range ... ok
[INFO] [stdout] test mouse_tests::double_click_is_suppressed_during_edit ... ok
[INFO] [stdout] test mouse_tests::ctrl_equals_in_v_column_autofits_every_selected_column ... ok
[INFO] [stdout] test mouse_tests::ctrl_click_on_non_url_cell_falls_through_to_select ... ok
[INFO] [stdout] test mouse_tests::ctrl_click_on_url_cell_opens_url ... ok
[INFO] [stdout] test mouse_tests::click_then_drag_after_prior_visual_starts_fresh_selection ... ok
[INFO] [stdout] test app::tests::undo_log_capped_at_max_depth ... ok
[INFO] [stdout] test mouse_tests::double_click_within_threshold_enters_edit_mode ... ok
[INFO] [stdout] test mouse_tests::drag_during_formula_edit_inserts_range_ref ... ok
[INFO] [stdout] test mouse_tests::click_during_non_formula_edit_falls_through_to_commit ... ok
[INFO] [stdout] test mouse_tests::drag_normalizes_range_min_to_max ... ok
[INFO] [stdout] test mouse_tests::drag_along_column_headers_extends_column_selection ... ok
[INFO] [stdout] test mouse_tests::col_header_click_outside_formula_falls_through_to_v_column ... ok
[INFO] [stdout] test mouse_tests::down_records_drag_anchor ... ok
[INFO] [stdout] test mouse_tests::drag_past_top_at_origin_clamps_without_panic ... ok
[INFO] [stdout] test mouse_tests::drag_along_row_headers_extends_v_line_selection ... ok
[INFO] [stdout] test mouse_tests::drag_without_movement_stays_in_nav ... ok
[INFO] [stdout] test mouse_tests::equals_in_nav_starts_formula_edit ... ok
[INFO] [stdout] test mouse_tests::fB_opens_color_picker_for_bg ... ok
[INFO] [stdout] test mouse_tests::double_click_clears_drag_anchor_and_last_click ... ok
[INFO] [stdout] test mouse_tests::esc_clears_pending_f ... ok
[INFO] [stdout] test mouse_tests::drag_past_bottom_in_v_line_keeps_column ... ok
[INFO] [stdout] test mouse_tests::drag_outside_formula_falls_through_to_visual ... ok
[INFO] [stdout] test mouse_tests::drag_past_edge_without_prior_down_is_noop ... ok
[INFO] [stdout] test mouse_tests::fa_clears_alignment ... ok
[INFO] [stdout] test mouse_tests::fF_opens_color_picker_for_fg ... ok
[INFO] [stdout] test mouse_tests::drag_past_right_scrolls_and_extends_selection ... ok
[INFO] [stdout] test mouse_tests::f_percent_applies_percent_format ... ok
[INFO] [stdout] test mouse_tests::f_number_keys_clear_pending_f ... ok
[INFO] [stdout] test mouse_tests::f_dollar_applies_usd_format ... ok
[INFO] [stdout] test mouse_tests::drag_back_to_anchor_collapses_to_single_ref ... ok
[INFO] [stdout] test mouse_tests::fb_toggles_bold ... ok
[INFO] [stdout] test mouse_tests::f_dot_increases_decimals_f_comma_decreases ... ok
[INFO] [stdout] test mouse_tests::fl_fc_fr_set_alignment ... ok
[INFO] [stdout] test mouse_tests::is_double_click_pure_helper ... ok
[INFO] [stdout] test mouse_tests::fi_fu_fs_toggle_their_flags ... ok
[INFO] [stdout] test mouse_tests::f_format_keys_clear_pending_f ... ok
[INFO] [stdout] test mouse_tests::go_on_empty_cell_flashes_no_link_status ... ok
[INFO] [stdout] test mouse_tests::go_with_no_url_flashes_no_link_status ... ok
[INFO] [stdout] test mouse_tests::go_with_url_under_cursor_flashes_opened_status ... ok
[INFO] [stdout] test mouse_tests::drag_in_nav_transitions_to_visual_cell_with_correct_anchor ... ok
[INFO] [stdout] test mouse_tests::drag_past_bottom_scrolls_and_extends_selection ... ok
[INFO] [stdout] test mouse_tests::old_g_dollar_no_longer_applies_usd ... ok
[INFO] [stdout] test mouse_tests::old_gb_no_longer_toggles_bold ... ok
[INFO] [stdout] test mouse_tests::old_uppercase_g_align_no_longer_applies ... ok
[INFO] [stdout] test mouse_tests::drag_without_prior_down_is_noop ... ok
[INFO] [stdout] test mouse_tests::lowercase_x_clears_in_place_with_count ... ok
[INFO] [stdout] test mouse_tests::left_click_clears_pending_motion_state ... ok
[INFO] [stdout] test mouse_tests::picker_bad_hex_reports_status_and_stays_open ... ok
[INFO] [stdout] test mouse_tests::left_click_on_row_header_enters_v_line ... ok
[INFO] [stdout] test mouse_tests::picker_esc_cancels_without_applying ... ok
[INFO] [stdout] test mouse_tests::left_click_on_tab_switches_active_sheet ... ok
[INFO] [stdout] test mouse_tests::left_click_on_column_header_enters_v_column ... ok
[INFO] [stdout] test mouse_tests::left_click_in_nav_moves_cursor ... ok
[INFO] [stdout] test mouse_tests::left_click_outside_grid_is_noop ... ok
[INFO] [stdout] test mouse_tests::picker_hex_input_applies_typed_color ... ok
[INFO] [stdout] test mouse_tests::scroll_right_advances_horizontal_viewport ... ok
[INFO] [stdout] test mouse_tests::row_header_click_outside_formula_falls_through_to_v_line ... ok
[INFO] [stdout] test mouse_tests::non_left_button_is_ignored ... ok
[INFO] [stdout] test mouse_tests::second_click_past_threshold_stays_single_click ... ok
[INFO] [stdout] test mouse_tests::pending_g_consumer_only_handles_motion_keys_after_migrate_f ... ok
[INFO] [stdout] test mouse_tests::picker_navigates_and_applies_swatch ... ok
[INFO] [stdout] test mouse_tests::left_click_on_self_in_edit_mode_is_noop ... ok
[INFO] [stdout] test mouse_tests::shift_v_cycles_nav_then_v_line_then_v_column_then_nav ... ok
[INFO] [stdout] test mouse_tests::shift_v_from_v_cell_promotes_to_v_line ... ok
[INFO] [stdout] test mouse_tests::url_under_cursor_none_for_empty_cell ... ok
[INFO] [stdout] test mouse_tests::left_click_in_edit_mode_commits_and_moves ... ok
[INFO] [stdout] test mouse_tests::unknown_f_combo_clears_pending_f ... ok
[INFO] [stdout] test mouse_tests::url_under_cursor_none_for_plain_text ... ok
[INFO] [stdout] test mouse_tests::url_under_cursor_returns_url_for_text_url_cell ... ok
[INFO] [stdout] test shell::parser_tests::detect_csv_with_embedded_newline_in_quoted_field ... ok
[INFO] [stdout] test shell::parser_tests::detect_csv_with_escaped_double_quote ... ok
[INFO] [stdout] test patch_cli::tests::show_renders_a1_style_lines ... ok
[INFO] [stdout] test mouse_tests::url_under_cursor_returns_url_portion_for_hyperlink_cell ... ok
[INFO] [stdout] test shell::parser_tests::detect_empty_stdout_returns_none ... ok
[INFO] [stdout] test shell::parser_tests::detect_csv_with_quoted_field_containing_comma ... ok
[INFO] [stdout] test shell::parser_tests::detect_json_array_of_objects_handles_missing_keys_as_empty ... ok
[INFO] [stdout] test shell::parser_tests::detect_json_array_of_scalars_renders_with_synthetic_value_header ... ok
[INFO] [stdout] test mouse_tests::scroll_down_advances_viewport_without_moving_cursor ... ok
[INFO] [stdout] test shell::parser_tests::detect_json_array_of_objects_uses_first_object_keys_as_headers ... ok
[INFO] [stdout] test shell::parser_tests::detect_json_mixed_array_returns_none_falls_through_to_csv ... ok
[INFO] [stdout] test shell::parser_tests::detect_json_single_object_renders_as_one_row ... ok
[INFO] [stdout] test mouse_tests::scroll_up_at_origin_clamps_to_zero ... ok
[INFO] [stdout] test shell::parser_tests::detect_json_mixed_array_falls_through_to_plain_when_no_commas ... ok
[INFO] [stdout] test shell::parser_tests::detect_json_array_of_objects_stringifies_scalar_values ... ok
[INFO] [stdout] test shell::parser_tests::detect_ndjson_array_of_objects_uses_first_line_keys_as_headers ... ok
[INFO] [stdout] test shell::parser_tests::detect_ndjson_array_of_scalars_uses_synthetic_value_header ... ok
[INFO] [stdout] test shell::parser_tests::detect_malformed_json_falls_through_to_csv ... ok
[INFO] [stdout] test shell::parser_tests::detect_ndjson_lone_line_falls_through_to_regular_json ... ok
[INFO] [stdout] test shell::parser_tests::detect_ndjson_with_blank_lines_between_records_works ... ok
[INFO] [stdout] test shell::parser_tests::detect_ndjson_with_crlf_line_endings ... ok
[INFO] [stdout] test shell::parser_tests::detect_ndjson_with_missing_keys_in_later_lines_pads_with_empty ... ok
[INFO] [stdout] test shell::parser_tests::detect_json_with_unicode_escape_decodes ... ok
[INFO] [stdout] test shell::parser_tests::detect_ndjson_falls_back_when_a_line_is_not_valid_json ... ok
[INFO] [stdout] test shell::parser_tests::detect_plain_text_falls_through_to_single_value_column ... ok
[INFO] [stdout] test shell::parser_tests::detect_csv_when_only_commas_present ... ok
[INFO] [stdout] test shell::parser_tests::detect_strips_carriage_returns_from_tsv ... ok
[INFO] [stdout] test mouse_tests::row_header_click_during_formula_edit_inserts_row_ref ... ok
[INFO] [stdout] test patch_cli::tests::invert_round_trip_via_bytes ... ok
[INFO] [stdout] test mouse_tests::up_clears_drag_anchor ... ok
[INFO] [stdout] test shell::parser_tests::detect_json_nested_value_serializes_as_compact_json ... ok
[INFO] [stdout] test patch_cli::tests::combine_concatenates_in_order ... ok
[INFO] [stdout] test mouse_tests::left_click_on_active_tab_is_idempotent ... ok
[INFO] [stdout] test shell::runner_tests::shell_error_display_includes_exit_code ... ok
[INFO] [stdout] test shell::runner_tests::run_captures_multiline_stdout ... ok
[INFO] [stdout] test mouse_tests::row_header_drag_during_formula_edit_inserts_row_range ... ok
[INFO] [stdout] test shell::runner_tests::run_surfaces_nonzero_exit ... ok
[INFO] [stdout] test shell::runner_tests::run_includes_stderr_in_nonzero_error ... ok
[INFO] [stdout] test shell::runner_tests::run_echoes_stdout ... ok
[INFO] [stdout] test shell::runner_tests::run_truncates_long_stderr ... ok
[INFO] [stdout] test shell::parser_tests::detect_tsv_picks_tab_when_both_present ... ok
[INFO] [stdout] test mouse_tests::shift_scroll_advances_horizontal_viewport ... ok
[INFO] [stdout] test shell::runner_tests::run_empty_command_succeeds_with_empty_stdout ... ok
[INFO] [stdout] test mouse_tests::second_click_on_different_cell_is_not_double_click ... ok
[INFO] [stdout] test shell::runner_tests::run_with_cap_caps_oversized_stdout ... ok
[INFO] [stdout] test shell::runner_tests::run_with_cap_under_cap_returns_full_output ... ok
[INFO] [stdout] test snapshots::snapshot_formula_ref_highlight ... ok
[INFO] [stdout] test snapshots::snapshot_clipboard_mark_perimeter ... ok
[INFO] [stdout] test snapshots::snapshot_datetime_friendly_display ... ok
[INFO] [stdout] test snapshots::snapshot_color_picker_hex_mode ... ok
[INFO] [stdout] test snapshots::snapshot_command_prompt ... ok
[INFO] [stdout] test snapshots::snapshot_color_picker_open ... ok
[INFO] [stdout] test app::tests::select_data_region_on_block_enters_visual_with_correct_rect ... ok
[INFO] [stdout] test patch_cli::tests::diff_derives_patch_between_two_dbs ... ok
[INFO] [stdout] test snapshots::snapshot_showcmd_pending_g_with_count ... ok
[INFO] [stdout] test snapshots::snapshot_multi_tab_workbook_second_active ... ok
[INFO] [stdout] test snapshots::snapshot_currency_formatted_grid ... ok
[INFO] [stdout] test snapshots::snapshot_tabline_overflow_with_active_in_view ... ok
[INFO] [stdout] test snapshots::snapshot_showcmd_pending_mark ... ok
[INFO] [stdout] test snapshots::snapshot_pointing_active_shows_point_submode_in_banner ... ok
[INFO] [stdout] test store::cells::tests::apply_deletes_with_empty_raw ... ok
[INFO] [stdout] test snapshots::snapshot_showcmd_pending_5d ... ok
[INFO] [stdout] test snapshots::snapshot_search_active_with_matches ... ok
[INFO] [stdout] test store::cells::tests::apply_overwrites_spill_owned_cell ... ok
[INFO] [stdout] test store::cells::tests::get_computed_missing_cell_is_none ... ok
[INFO] [stdout] test store::cells::tests::apply_recalcs_dependents ... ok
[INFO] [stdout] test store::cells::tests::apply_inserts_authored_cell_and_recalcs ... ok
[INFO] [stdout] test store::cells::tests::get_computed_returns_engine_result ... ok
[INFO] [stdout] test store::cells::tests::hyperlink_one_arg_uses_url_as_label_through_storage ... ok
[INFO] [stdout] test snapshots::snapshot_full_format_grid ... ok
[INFO] [stdout] test store::cells::tests::jdatetime_renders_with_space_separator ... ok
[INFO] [stdout] test snapshots::snapshot_normal_mode_with_filled_cells ... ok
[INFO] [stdout] test snapshots::snapshot_insert_mode_mid_edit ... ok
[INFO] [stdout] test snapshots::snapshot_datetime_autostyle ... ok
[INFO] [stdout] test snapshots::snapshot_hyperlink_autostyle ... ok
[INFO] [stdout] test store::cells::tests::recalculate_writes_spill_descendants ... ok
[INFO] [stdout] test store::cells::tests::hyperlink_formula_round_trips_through_storage ... ok
[INFO] [stdout] test store::cells::tests::load_sheet_orders_by_row_col ... ok
[INFO] [stdout] test store::cells::tests::recalculate_cleans_stale_spill_rows ... ok
[INFO] [stdout] test snapshots::snapshot_v_line_selection ... ok
[INFO] [stdout] test store::cells::tests::jdate_round_trips_through_storage ... ok
[INFO] [stdout] test store::cells::tests::jspan_renders_friendly_in_computed ... ok
[INFO] [stdout] test snapshots::snapshot_variable_column_widths ... ok
[INFO] [stdout] test snapshots::snapshot_hyperlink_function_renders_label ... ok
[INFO] [stdout] test store::patch::tests::patch_open_twice_errors ... ok
[INFO] [stdout] test store::columns::tests::set_overwrites_existing_width ... ok
[INFO] [stdout] test store::columns::tests::delete_sheet_cascades_to_columns ... ok
[INFO] [stdout] test store::columns::tests::set_then_load_round_trip ... ok
[INFO] [stdout] test store::patch::tests::patch_status_none_when_inactive ... ok
[INFO] [stdout] test store::patch::tests::rollback_invalidates_active_patch ... ok
[INFO] [stdout] test snapshots::snapshot_visual_cell_selection ... ok
[INFO] [stdout] test store::sheets::tests::create_is_idempotent ... ok
[INFO] [stdout] test store::sheets::tests::create_then_list_returns_sheet ... ok
[INFO] [stdout] test store::sheets::tests::delete_cascades_to_cells ... ok
[INFO] [stdout] test store::sheets::tests::rename_sheet_rejects_existing_target ... ok
[INFO] [stdout] test store::structural::tests::delete_cols_carries_cell_format_through_shift ... ok
[INFO] [stdout] test store::patch::tests::patch_invert_round_trips_authored_state ... ok
[INFO] [stdout] test store::structural::tests::insert_cols_carries_cell_format_through_shift ... ok
[INFO] [stdout] test store::sheets::tests::rename_sheet_cascades_through_public_api ... ok
[INFO] [stdout] test store::sheets::tests::rename_sheet_to_self_is_noop ... ok
[INFO] [stdout] test store::structural::tests::delete_cols_drops_band_and_column_widths ... ok
[INFO] [stdout] test store::structural::tests::delete_rows_drops_band_and_shifts_below ... ok
[INFO] [stdout] test store::patch::tests::patch_pause_resume_brackets_edits_out ... ok
[INFO] [stdout] test store::sheets::tests::sheet_exists_round_trip ... ok
[INFO] [stdout] test store::tests::cell_format_fk_cascade_on_cell_delete ... ok
[INFO] [stdout] test store::structural::tests::insert_cols_shifts_column_widths ... ok
[INFO] [stdout] test store::structural::tests::insert_rows_carries_cell_format_through_shift ... ok
[INFO] [stdout] test store::tests::sheet_rename_cascades_to_cells_and_formats ... ok
[INFO] [stdout] test store::patch::tests::patch_records_authored_changes_only ... ok
[INFO] [stdout] test store::patch::tests::patch_excludes_undo_entry ... ok
[INFO] [stdout] test store::structural::tests::delete_rows_carries_cell_format_through_shift ... ok
[INFO] [stdout] test store::structural::tests::insert_rows_shifts_cells_and_rewrites_refs ... ok
[INFO] [stdout] test store::tests::open_in_memory_writes_schema_and_stamps_pragmas ... ok
[INFO] [stdout] test store::tests::is_dirty_flips_with_commit_and_rollback ... ok
[INFO] [stdout] test store::undo::tests::group_with_multiple_ops_undoes_all_at_once ... ok
[INFO] [stdout] test store::undo::tests::commit_clears_undo_log ... ok
[INFO] [stdout] test store::tests::pre_existing_tables_with_default_pragmas_rejected ... ok
[INFO] [stdout] test store::undo::tests::record_then_undo_restores_cell ... ok
[INFO] [stdout] test store::undo::tests::rollback_discards_undo_log ... ok
[INFO] [stdout] test snapshots::snapshot_tutor_l1_at_startup ... ok
[INFO] [stdout] test tutor::tests::lesson_names_are_unique ... ok
[INFO] [stdout] test ui::tests::align_text_picks_alignment_per_kind ... ok
[INFO] [stdout] test snapshots::snapshot_search_prompt ... ok
[INFO] [stdout] test ui::tests::bare_equals_is_handled ... ok
[INFO] [stdout] test store::undo::tests::undo_then_redo_round_trips ... ok
[INFO] [stdout] test store::undo::tests::column_width_undo_round_trip ... ok
[INFO] [stdout] test store::tests::unknown_db_with_foreign_app_id_rejected ... ok
[INFO] [stdout] test store::tests::legacy_datasette_db_rejects_with_pointer_to_migrate ... ok
[INFO] [stdout] test store::undo::tests::undo_payload_preserves_unicode_and_quotes ... ok
[INFO] [stdout] test store::tests::newer_schema_version_rejected ... ok
[INFO] [stdout] test store::tests::drop_without_commit_rolls_back ... ok
[INFO] [stdout] test store::tests::reopening_existing_vlotus_db_is_idempotent ... ok
[INFO] [stdout] test ui::tests::cell_at_formula_bar_and_status_are_none ... ok
[INFO] [stdout] test tutor::tests::each_lesson_has_at_least_a_title_cell ... ok
[INFO] [stdout] test ui::tests::cell_ref_and_function_get_distinct_colors ... ok
[INFO] [stdout] test ui::tests::classify_recognises_currency_as_number ... ok
[INFO] [stdout] test tutor::tests::seed_creates_one_sheet_per_lesson ... ok
[INFO] [stdout] test ui::tests::classify_recognises_numbers_booleans_and_errors ... ok
[INFO] [stdout] test ui::tests::colorize_formula_overrides_ref_color_when_highlighted ... ok
[INFO] [stdout] test ui::tests::formula_round_trips_through_spans ... ok
[INFO] [stdout] test ui::tests::non_formula_returns_single_default_span ... ok
[INFO] [stdout] test ui::tests::cell_at_last_data_row_resolves_bottom_border_does_not ... ok
[INFO] [stdout] test ui::tests::ref_highlights_assign_distinct_palette_colors_per_unique_ref ... ok
[INFO] [stdout] test ui::tests::ref_highlights_empty_for_non_formula ... ok
[INFO] [stdout] test ui::tests::ref_highlights_repeat_text_reuses_color ... ok
[INFO] [stdout] test ui::tests::string_literal_renders_with_token_string_color ... ok
[INFO] [stdout] test ui::tests::ref_highlights_range_covers_every_member_cell ... ok
[INFO] [stdout] test ui::tests::tabline_window_active_only_when_budget_too_tight ... ok
[INFO] [stdout] test store::tests::commit_persists_and_rollback_discards ... ok
[INFO] [stdout] test ui::tests::tabline_window_fits_all_when_room_for_everything ... ok
[INFO] [stdout] test ui::tests::tabline_window_centers_on_active_with_overflow ... ok
[INFO] [stdout] test ui::tests::type_style_distinct_per_kind ... ok
[INFO] [stdout] test ui::tests::tabline_window_keeps_active_visible_at_far_right ... ok
[INFO] [stdout] test ui::tests::cell_at_respects_vertical_scroll ... ok
[INFO] [stdout] test ui::tests::truncate_tab_name_caps_at_max ... ok
[INFO] [stdout] test ui::tests::cell_at_top_left_corner_is_none ... ok
[INFO] [stdout] test ui::tests::cell_at_resolves_grid_interior_to_cell ... ok
[INFO] [stdout] test ui::tests::cell_at_grid_borders_are_none ... ok
[INFO] [stdout] test ui::tests::cell_at_resolves_column_header_row ... ok
[INFO] [stdout] test ui::tests::cell_at_no_tabline_in_single_sheet_workbook ... ok
[INFO] [stdout] test ui::tests::cell_at_past_last_visible_column_is_none ... ok
[INFO] [stdout] test ui::tests::cell_at_respects_horizontal_scroll ... ok
[INFO] [stdout] test ui::tests::cell_at_resolves_tab_in_multi_sheet_workbook ... ok
[INFO] [stdout] test ui::tests::cell_at_resolves_row_gutter ... ok
[INFO] [stdout] test store::undo::tests::undo_log_pruned_at_depth ... ok
[INFO] [stdout] test snapshots::right_aligned_value_renders_full_at_every_column_width ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 543 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.46s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "3b10a4ce18f56ba8b8bf1efa85ad3aeb12030b92b0035758f6a4f651ce74fbe1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3b10a4ce18f56ba8b8bf1efa85ad3aeb12030b92b0035758f6a4f651ce74fbe1", kill_on_drop: false }`
[INFO] [stdout] 3b10a4ce18f56ba8b8bf1efa85ad3aeb12030b92b0035758f6a4f651ce74fbe1
