[INFO] fetching crate rs-grid-core 0.5.0...
[INFO] testing rs-grid-core-0.5.0 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate rs-grid-core 0.5.0 into /workspace/builds/worker-0-tc2/source
[INFO] started tweaking crates.io crate rs-grid-core 0.5.0
[INFO] removed 0 missing examples
[INFO] finished tweaking crates.io crate rs-grid-core 0.5.0
[INFO] tweaked toml for crates.io crate rs-grid-core 0.5.0 written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate rs-grid-core 0.5.0 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate rs-grid-core 0.5.0 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.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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] ddbdce805b0a7c5aeddd142276ba6037d728da0692b4ce73213591159a12fcb6
[INFO] running `Command { std: "docker" "start" "ddbdce805b0a7c5aeddd142276ba6037d728da0692b4ce73213591159a12fcb6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ddbdce805b0a7c5aeddd142276ba6037d728da0692b4ce73213591159a12fcb6", 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" "ddbdce805b0a7c5aeddd142276ba6037d728da0692b4ce73213591159a12fcb6" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ddbdce805b0a7c5aeddd142276ba6037d728da0692b4ce73213591159a12fcb6", 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" "ddbdce805b0a7c5aeddd142276ba6037d728da0692b4ce73213591159a12fcb6" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling rs-grid-core v0.5.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.82s
[INFO] running `Command { std: "docker" "inspect" "ddbdce805b0a7c5aeddd142276ba6037d728da0692b4ce73213591159a12fcb6", 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" "ddbdce805b0a7c5aeddd142276ba6037d728da0692b4ce73213591159a12fcb6" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling zerocopy v0.8.47
[INFO] [stderr]    Compiling cc v1.2.57
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling zerocopy-derive v0.8.47
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling plotters-backend v0.3.7
[INFO] [stderr]    Compiling ciborium-io v0.2.2
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling plotters-svg v0.3.7
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling cast v0.3.0
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling page_size v0.6.0
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling alloca v0.4.0
[INFO] [stderr]    Compiling oorandom v11.1.5
[INFO] [stderr]    Compiling anes v0.1.6
[INFO] [stderr]    Compiling criterion-plot v0.8.2
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling criterion v0.8.2
[INFO] [stderr]    Compiling rs-grid-core v0.5.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 41.16s
[INFO] running `Command { std: "docker" "inspect" "ddbdce805b0a7c5aeddd142276ba6037d728da0692b4ce73213591159a12fcb6", 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" "ddbdce805b0a7c5aeddd142276ba6037d728da0692b4ce73213591159a12fcb6" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.12s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/rs-grid-core/9ac69a26f8ebf902/out/rs_grid_core-9ac69a26f8ebf902)
[INFO] [stdout] 
[INFO] [stdout] running 608 tests
[INFO] [stdout] test column::tests::builder_chain ... ok
[INFO] [stdout] test column::tests::cell_buttons_visible_when_sets_field ... ok
[INFO] [stdout] test column::tests::are_cell_buttons_visible_delegates_to_predicate ... ok
[INFO] [stdout] test column::tests::are_cell_buttons_visible_true_when_no_predicate ... ok
[INFO] [stdout] test column::tests::cell_buttons_visible_debug_format ... ok
[INFO] [stdout] test column::tests::cell_decoration_default_all_none ... ok
[INFO] [stdout] test column::tests::are_cell_buttons_visible_predicate_reads_other_column ... ok
[INFO] [stdout] test column::tests::cell_decoration_none_when_no_decorator ... ok
[INFO] [stdout] test column::tests::cell_decoration_predicate_reads_other_column ... ok
[INFO] [stdout] test column::tests::cell_decoration_delegates_to_closure ... ok
[INFO] [stdout] test column::tests::cell_validator_accepts_valid_input ... ok
[INFO] [stdout] test column::tests::cell_validator_rejects_invalid_input ... ok
[INFO] [stdout] test column::tests::clamp_width_with_min ... ok
[INFO] [stdout] test column::tests::clamp_width_no_constraints ... ok
[INFO] [stdout] test column::tests::clamp_width_with_max ... ok
[INFO] [stdout] test column::tests::compute_empty ... ok
[INFO] [stdout] test column::tests::compute_offsets ... ok
[INFO] [stdout] test column::tests::clamp_width_max_below_min ... ok
[INFO] [stdout] test column::tests::clamp_width_min_and_max ... ok
[INFO] [stdout] test column::tests::decorator_debug_format ... ok
[INFO] [stdout] test column::tests::cell_validator_clone_shares_closure ... ok
[INFO] [stdout] test column::tests::columndef_format_default_none ... ok
[INFO] [stdout] test column::tests::cell_validator_debug_format ... ok
[INFO] [stdout] test column::tests::clamp_width_min_below_absolute_floor ... ok
[INFO] [stdout] test column::tests::decorator_default_none ... ok
[INFO] [stdout] test column::tests::editable_predicate_debug_format ... ok
[INFO] [stdout] test column::tests::flex_default_none ... ok
[INFO] [stdout] test column::tests::editable_when_sets_field ... ok
[INFO] [stdout] test column::tests::decorated_when_sets_field ... ok
[INFO] [stdout] test column::tests::hit_column_last ... ok
[INFO] [stdout] test column::tests::editable_predicate_default_none ... ok
[INFO] [stdout] test column::tests::is_cell_editable_false_when_grid_wide_editable_false_predicate_not_called ... ok
[INFO] [stdout] test column::tests::hit_column_first ... ok
[INFO] [stdout] test column::tests::is_cell_editable_false_when_static_false_predicate_not_called ... ok
[INFO] [stdout] test column::tests::is_cell_editable_predicate_reads_other_column ... ok
[INFO] [stdout] test column::tests::required_pushes_rule ... ok
[INFO] [stdout] test column::tests::is_cell_editable_true_when_no_predicate ... ok
[INFO] [stdout] test column::tests::hit_column_out_of_range ... ok
[INFO] [stdout] test column::tests::row_predicate_debug_format ... ok
[INFO] [stdout] test column::tests::row_predicate_clone_shares_closure ... ok
[INFO] [stdout] test column::tests::hit_column_second ... ok
[INFO] [stdout] test column::tests::row_predicate_new_and_evaluate ... ok
[INFO] [stdout] test column::tests::simple_uses_default_width ... ok
[INFO] [stdout] test column::tests::with_bold_sets_flag ... ok
[INFO] [stdout] test column::tests::validate_value_runs_rules_before_legacy_validator ... ok
[INFO] [stdout] test column::tests::with_cell_buttons_sets_field ... ok
[INFO] [stdout] test column::tests::with_editor_select ... ok
[INFO] [stdout] test column::tests::with_editor_text ... ok
[INFO] [stdout] test column::tests::with_min_length_pushes_rule ... ok
[INFO] [stdout] test column::tests::with_range_pushes_rule ... ok
[INFO] [stdout] test column::tests::is_cell_editable_delegates_to_predicate ... ok
[INFO] [stdout] test column::tests::with_rules_sets_field ... ok
[INFO] [stdout] test datasource::tests::fn_cell_status_absent ... ok
[INFO] [stdout] test datasource::tests::fn_cell_status_ready ... ok
[INFO] [stdout] test column::tests::with_validator_sets_field ... ok
[INFO] [stdout] test datasource::tests::cell_status_eq ... ok
[INFO] [stdout] test column::tests::with_max_length_pushes_rule ... ok
[INFO] [stdout] test datasource::tests::fn_clone_box_returns_none ... ok
[INFO] [stdout] test column::tests::with_flex_builder ... ok
[INFO] [stdout] test datasource::tests::fn_debug_format ... ok
[INFO] [stdout] test datasource::tests::fn_set_cell_default_is_noop ... ok
[INFO] [stdout] test datasource::tests::fn_get_cell_ref_none_when_absent ... ok
[INFO] [stdout] test datasource::tests::fn_get_cell_ref_uses_default_impl ... ok
[INFO] [stdout] test datasource::tests::vec_cell_status_absent ... ok
[INFO] [stdout] test datasource::tests::fn_row_count ... ok
[INFO] [stdout] test datasource::tests::fn_get_cell_returns_none ... ok
[INFO] [stdout] test datasource::tests::vec_cell_status_ready ... ok
[INFO] [stdout] test column::tests::rules_default_empty ... ok
[INFO] [stdout] test column::tests::with_allowed_values_pushes_rule ... ok
[INFO] [stdout] test datasource::tests::vec_get_cell ... ok
[INFO] [stdout] test datasource::tests::fn_get_cell ... ok
[INFO] [stdout] test datasource::tests::vec_empty_data_source ... ok
[INFO] [stdout] test datasource::tests::vec_get_cell_out_of_range ... ok
[INFO] [stdout] test datasource::tests::vec_get_cell_ref_borrows ... ok
[INFO] [stdout] test filter::tests::contains_ctor_defaults_to_contains_op ... ok
[INFO] [stdout] test filter::tests::contains_is_case_insensitive ... ok
[INFO] [stdout] test datasource::tests::vec_row_count ... ok
[INFO] [stdout] test filter::tests::equals_numeric_mode_compares_as_numbers ... ok
[INFO] [stdout] test datasource::tests::vec_set_cell ... ok
[INFO] [stdout] test filter::tests::greater_than_or_equal_and_less_than_or_equal ... ok
[INFO] [stdout] test filter::tests::greater_than_and_less_than ... ok
[INFO] [stdout] test filter::tests::blank_and_not_blank ... ok
[INFO] [stdout] test filter::tests::is_empty_false_for_blank_op_with_no_value ... ok
[INFO] [stdout] test filter::tests::equals_string_mode_is_case_insensitive_full_match ... ok
[INFO] [stdout] test filter::tests::is_empty_true_for_empty_value_needing_op ... ok
[INFO] [stdout] test datasource::tests::vec_set_cell_out_of_range_noop ... ok
[INFO] [stdout] test filter::tests::not_equals_numeric_mode ... ok
[INFO] [stdout] test format::tests::cell_format_is_image ... ok
[INFO] [stdout] test format::tests::clone_boolean ... ok
[INFO] [stdout] test filter::tests::not_contains_negates ... ok
[INFO] [stdout] test format::tests::clone_currency ... ok
[INFO] [stdout] test format::tests::clone_custom ... ok
[INFO] [stdout] test format::tests::debug_all_variants ... ok
[INFO] [stdout] test format::tests::format_boolean_alignment ... ok
[INFO] [stdout] test format::tests::format_boolean_false ... ok
[INFO] [stdout] test format::tests::clone_image_text ... ok
[INFO] [stdout] test datasource::tests::vec_get_cell_missing_key ... ok
[INFO] [stdout] test format::tests::clone_number ... ok
[INFO] [stdout] test format::tests::clone_percent ... ok
[INFO] [stdout] test format::tests::format_boolean_true ... ok
[INFO] [stdout] test format::tests::format_cell_progress_bar_returns_raw_text ... ok
[INFO] [stdout] test format::tests::format_currency_before ... ok
[INFO] [stdout] test format::tests::format_custom ... ok
[INFO] [stdout] test format::tests::format_image_returns_raw ... ok
[INFO] [stdout] test format::tests::format_cell_styled_returns_raw_text ... ok
[INFO] [stdout] test format::tests::format_currency_after ... ok
[INFO] [stdout] test filter::tests::numeric_op_on_non_numeric_cell_never_matches_never_panics ... ok
[INFO] [stdout] test format::tests::format_image_text_extracts_label ... ok
[INFO] [stdout] test filter::tests::starts_with_and_ends_with ... ok
[INFO] [stdout] test format::tests::format_image_text_no_space_fallback ... ok
[INFO] [stdout] test format::tests::format_currency_non_numeric_fallback ... ok
[INFO] [stdout] test format::tests::format_number_basic ... ok
[INFO] [stdout] test format::tests::format_number_comma_decimal_sep ... ok
[INFO] [stdout] test format::tests::format_number_zero ... ok
[INFO] [stdout] test format::tests::format_percent ... ok
[INFO] [stdout] test format::tests::format_percent_invalid ... ok
[INFO] [stdout] test format::tests::image_format_clone ... ok
[INFO] [stdout] test format::tests::is_image_text_false_for_other_variants ... ok
[INFO] [stdout] test format::tests::is_image_text_false_for_image ... ok
[INFO] [stdout] test format::tests::is_image_text_true ... ok
[INFO] [stdout] test format::tests::format_number_invalid_fallback ... ok
[INFO] [stdout] test format::tests::progress_bar_clone_preserves_fields_and_callback ... ok
[INFO] [stdout] test format::tests::progress_bar_debug_does_not_panic ... ok
[INFO] [stdout] test format::tests::format_number_negative ... ok
[INFO] [stdout] test format::tests::format_number_no_thousands_sep ... ok
[INFO] [stdout] test format::tests::format_number_very_large ... ok
[INFO] [stdout] test format::tests::format_number_zero_decimals ... ok
[INFO] [stdout] test format::tests::styled_clone_works ... ok
[INFO] [stdout] test format::tests::styled_debug_does_not_panic ... ok
[INFO] [stdout] test hit_test::tests::checkbox_row_disabled_returns_none ... ok
[INFO] [stdout] test hit_test::tests::checkbox_row_hit_first ... ok
[INFO] [stdout] test hit_test::tests::col_header_below_header_returns_none ... ok
[INFO] [stdout] test datasource::tests::vec_clone_box ... ok
[INFO] [stdout] test hit_test::tests::col_header_hit ... ok
[INFO] [stdout] test hit_test::tests::col_header_in_gutter_returns_none ... ok
[INFO] [stdout] test hit_test::tests::data_hit_test_reveals_first_column_once_checkbox_scrolled_away ... ok
[INFO] [stdout] test hit_test::tests::checkbox_header_below_header_returns_none ... ok
[INFO] [stdout] test hit_test::tests::data_hit_test_skips_checkbox_column ... ok
[INFO] [stdout] test hit_test::tests::filter_row_cell_above_band_returns_none ... ok
[INFO] [stdout] test hit_test::tests::checkbox_header_hit ... ok
[INFO] [stdout] test hit_test::tests::checkbox_row_outside_band_returns_none ... ok
[INFO] [stdout] test hit_test::tests::checkbox_row_scrolls_with_data ... ok
[INFO] [stdout] test hit_test::tests::filter_row_cell_below_band_returns_none ... ok
[INFO] [stdout] test hit_test::tests::filter_row_cell_hidden_by_default_returns_none ... ok
[INFO] [stdout] test hit_test::tests::hit_col_header_pinned_ignores_scroll_x ... ok
[INFO] [stdout] test hit_test::tests::hit_pinned_col_ignores_scroll_x ... ok
[INFO] [stdout] test hit_test::tests::filter_row_cell_hit ... ok
[INFO] [stdout] test hit_test::tests::hit_first_cell ... ok
[INFO] [stdout] test hit_test::tests::hit_right_of_last_column_returns_none ... ok
[INFO] [stdout] test hit_test::tests::hit_in_header_returns_none ... ok
[INFO] [stdout] test hit_test::tests::hit_in_gutter_returns_none ... ok
[INFO] [stdout] test hit_test::tests::hit_test_col_header_band_unaffected_by_filter_row ... ok
[INFO] [stdout] test hit_test::tests::hit_below_last_row_returns_none ... ok
[INFO] [stdout] test hit_test::tests::hit_test_data_top_shifts_by_filter_row_when_shown ... ok
[INFO] [stdout] test hit_test::tests::hit_with_scroll ... ok
[INFO] [stdout] test hit_test::tests::row_header_below_last_row_returns_none ... ok
[INFO] [stdout] test hit_test::tests::filter_row_cell_in_gutter_returns_none ... ok
[INFO] [stdout] test hit_test::tests::hit_second_row ... ok
[INFO] [stdout] test hit_test::tests::row_header_hit_first ... ok
[INFO] [stdout] test hit_test::tests::hit_with_large_scroll_y ... ok
[INFO] [stdout] test hit_test::tests::hit_second_column ... ok
[INFO] [stdout] test hit_test::tests::row_header_in_header_zone_returns_none ... ok
[INFO] [stdout] test hit_test::tests::row_header_outside_gutter_returns_none ... ok
[INFO] [stdout] test lru_ring::tests::re_touch_moves_to_most_recently_used ... ok
[INFO] [stdout] test hit_test::tests::row_header_with_large_scroll_y ... ok
[INFO] [stdout] test lru_ring::tests::remove_evicts_from_middle ... ok
[INFO] [stdout] test lru_ring::tests::clear_resets_everything ... ok
[INFO] [stdout] test lru_ring::tests::touch_new_keys_orders_lru_to_mru ... ok
[INFO] [stdout] test lru_ring::tests::freed_slots_are_recycled ... ok
[INFO] [stdout] test model::tests::apply_filter_empty_filters_clears ... ok
[INFO] [stdout] test model::tests::apply_filter_clearing_value_filter_restores_all_rows ... ok
[INFO] [stdout] test model::tests::apply_filter_value_filter_alone_restricts_rows ... ok
[INFO] [stdout] test model::tests::apply_filter_condition_and_value_filter_and_combine ... ok
[INFO] [stdout] test model::tests::apply_filter_server_side_is_noop ... ok
[INFO] [stdout] test model::tests::apply_filter_value_filter_empty_set_matches_nothing ... ok
[INFO] [stdout] test model::tests::apply_filter_value_filters_on_different_columns_and_combine ... ok
[INFO] [stdout] test model::tests::apply_sort_server_side_is_noop ... ok
[INFO] [stdout] test model::tests::builder_column_reorderable_false ... ok
[INFO] [stdout] test model::tests::builder_editable_false ... ok
[INFO] [stdout] test model::tests::builder_overrides ... ok
[INFO] [stdout] test model::tests::builder_show_filter_row ... ok
[INFO] [stdout] test model::tests::builder_show_header_false ... ok
[INFO] [stdout] test model::tests::builder_show_row_numbers_false ... ok
[INFO] [stdout] test model::tests::builder_defaults ... ok
[INFO] [stdout] test model::tests::cell_status_returns_patched_value ... ok
[INFO] [stdout] test model::tests::column_screen_x_out_of_range_is_none ... ok
[INFO] [stdout] test model::tests::column_screen_x_pinned_ignores_scroll ... ok
[INFO] [stdout] test model::tests::column_screen_x_unpinned_shifts_by_scroll ... ok
[INFO] [stdout] test model::tests::checkbox_column_width_zero_when_disabled ... ok
[INFO] [stdout] test model::tests::flex_basic_distribution ... ok
[INFO] [stdout] test model::tests::builder_pinned_count_clamped ... ok
[INFO] [stdout] test model::tests::builder_selectable_false ... ok
[INFO] [stdout] test model::tests::effective_filter_row_height_false_by_default ... ok
[INFO] [stdout] test model::tests::effective_filter_row_height_when_shown ... ok
[INFO] [stdout] test model::tests::flex_all_columns ... ok
[INFO] [stdout] test model::tests::flex_negative_available_collapses_to_min ... ok
[INFO] [stdout] test model::tests::flex_no_flex_columns_is_noop ... ok
[INFO] [stdout] test model::tests::flex_weighted_distribution ... ok
[INFO] [stdout] test model::tests::get_cell_follows_sort_mapping ... ok
[INFO] [stdout] test model::tests::get_cell_follows_filter_mapping ... ok
[INFO] [stdout] test model::tests::flex_with_max_redistributes ... ok
[INFO] [stdout] test model::tests::get_cell_from_datasource ... ok
[INFO] [stdout] test model::tests::get_cell_missing_key ... ok
[INFO] [stdout] test model::tests::get_cell_out_of_range ... ok
[INFO] [stdout] test model::tests::get_cell_out_of_range_under_filter_clamps_not_none ... ok
[INFO] [stdout] test model::tests::is_filter_applied_true_when_condition_filter_matches_nothing ... ok
[INFO] [stdout] test model::tests::is_filter_applied_false_with_no_filters ... ok
[INFO] [stdout] test model::tests::logical_to_physical_with_sort ... ok
[INFO] [stdout] test model::tests::is_filter_applied_resets_false_after_clearing_a_zero_match_filter ... ok
[INFO] [stdout] test model::tests::pinned_width_all_columns ... ok
[INFO] [stdout] test model::tests::pinned_width_clamped_to_col_count ... ok
[INFO] [stdout] test model::tests::pinned_width_default_zero ... ok
[INFO] [stdout] test model::tests::rebuild_offsets_after_column_change ... ok
[INFO] [stdout] test model::tests::row_top_and_total_height_include_filter_row_when_shown ... ok
[INFO] [stdout] test model::tests::set_cell_patch_overrides_datasource ... ok
[INFO] [stdout] test model::tests::sort_cache_replaced_on_different_column ... ok
[INFO] [stdout] test model::tests::sort_cache_reused_for_mixed ... ok
[INFO] [stdout] test model::tests::sort_image_text_column_mixed ... ok
[INFO] [stdout] test model::tests::builder_row_selection_checkboxes ... ok
[INFO] [stdout] test model::tests::pinned_width_one_column ... ok
[INFO] [stdout] test model::tests::row_top ... ok
[INFO] [stdout] test model::tests::sort_cache_invalidated_on_clear ... ok
[INFO] [stdout] test model::tests::sort_key_cache_debug_mixed ... ok
[INFO] [stdout] test model::tests::sort_image_text_column_numeric ... ok
[INFO] [stdout] test model::tests::sort_key_cache_debug_none ... ok
[INFO] [stdout] test model::tests::sort_clear_restores_natural_order ... ok
[INFO] [stdout] test model::tests::sort_cache_reused_on_direction_toggle ... ok
[INFO] [stdout] test model::tests::sort_key_cache_debug_numeric ... ok
[INFO] [stdout] test model::tests::sort_multiple_empty_cells_mixed ... ok
[INFO] [stdout] test model::tests::sort_mixed_numeric_and_string ... ok
[INFO] [stdout] test model::tests::sort_negative_numbers ... ok
[INFO] [stdout] test model::tests::sort_single_row ... ok
[INFO] [stdout] test model::tests::sort_string_lexicographic ... ok
[INFO] [stdout] test model::tests::unique_values_dedups ... ok
[INFO] [stdout] test model::tests::total_height ... ok
[INFO] [stdout] test model::tests::sort_with_empty_cells ... ok
[INFO] [stdout] test model::tests::total_width ... ok
[INFO] [stdout] test model::tests::unique_values_missing_column_yields_empty_string ... ok
[INFO] [stdout] test model::tests::unique_values_returns_sorted_distinct_values ... ok
[INFO] [stdout] test model::tests::unique_values_too_many_when_cap_exceeded ... ok
[INFO] [stdout] test page_cache::tests::clear_invalidates_all ... ok
[INFO] [stdout] test page_cache::tests::clone_box_returns_shared_source ... ok
[INFO] [stdout] test page_cache::tests::cell_status_absent_for_short_page ... ok
[INFO] [stdout] test page_cache::tests::absent_for_missing_column ... ok
[INFO] [stdout] test page_cache::tests::clone_shares_cache ... ok
[INFO] [stdout] test page_cache::tests::needed_pages_excludes_pending ... ok
[INFO] [stdout] test page_cache::tests::needed_pages_partial_cache ... ok
[INFO] [stdout] test page_cache::tests::page_size_accessor ... ok
[INFO] [stdout] test page_cache::tests::pending_lifecycle ... ok
[INFO] [stdout] test page_cache::tests::row_count_and_set_total_rows ... ok
[INFO] [stdout] test page_cache::tests::total_rows_accessor ... ok
[INFO] [stdout] test page_cache::tests::lru_eviction ... ok
[INFO] [stdout] test row::tests::cell_value_clone ... ok
[INFO] [stdout] test page_cache::tests::needed_pages_empty_cache ... ok
[INFO] [stdout] test row::tests::cell_value_default_is_empty ... ok
[INFO] [stdout] test row::tests::get_missing_key_returns_none ... ok
[INFO] [stdout] test page_cache::tests::empty_cache_returns_loading ... ok
[INFO] [stdout] test row::tests::new_row_has_no_cells ... ok
[INFO] [stdout] test row::tests::set_and_get ... ok
[INFO] [stdout] test row::tests::set_chaining ... ok
[INFO] [stdout] test row::tests::set_overwrites_existing_value ... ok
[INFO] [stdout] test scrollbar::tests::hscroll_drag_to_scroll_positive ... ok
[INFO] [stdout] test scrollbar::tests::hscroll_geometry ... ok
[INFO] [stdout] test scrollbar::tests::hscroll_hit_left_arrow ... ok
[INFO] [stdout] test scrollbar::tests::hscroll_hit_right_arrow ... ok
[INFO] [stdout] test scrollbar::tests::hscroll_hit_thumb ... ok
[INFO] [stdout] test scrollbar::tests::hscroll_hit_track ... ok
[INFO] [stdout] test scrollbar::tests::hscroll_none_when_content_fits ... ok
[INFO] [stdout] test scrollbar::tests::hscroll_thumb_moves_with_scroll ... ok
[INFO] [stdout] test scrollbar::tests::hscroll_track_click_scroll ... ok
[INFO] [stdout] test scrollbar::tests::log_vscroll_drag_from_zero ... ok
[INFO] [stdout] test scrollbar::tests::log_vscroll_midpoint_thumb_near_top_half ... ok
[INFO] [stdout] test scrollbar::tests::log_vscroll_thumb_at_bottom ... ok
[INFO] [stdout] test page_cache::tests::inserted_page_returns_ready ... ok
[INFO] [stdout] test scrollbar::tests::log_vscroll_thumb_at_top ... ok
[INFO] [stdout] test scrollbar::tests::log_vscroll_roundtrip ... ok
[INFO] [stdout] test scrollbar::tests::log_vscroll_track_click_top_and_bottom ... ok
[INFO] [stdout] test model::tests::sort_numeric_asc ... ok
[INFO] [stdout] test scrollbar::tests::vscroll_geometry_at_top ... ok
[INFO] [stdout] test scrollbar::tests::vscroll_hit_track ... ok
[INFO] [stdout] test scrollbar::tests::min_thumb_size_enforced ... ok
[INFO] [stdout] test scrollbar::tests::vscroll_drag_to_scroll_positive ... ok
[INFO] [stdout] test scrollbar::tests::vscroll_hit_thumb ... ok
[INFO] [stdout] test model::tests::sort_numeric_desc ... ok
[INFO] [stdout] test scrollbar::tests::vscroll_hit_down_arrow ... ok
[INFO] [stdout] test scrollbar::tests::vscroll_hit_up_arrow ... ok
[INFO] [stdout] test scrollbar::tests::vscroll_none_when_content_fits ... ok
[INFO] [stdout] test search::tests::run_ascii_lowercase_only ... ok
[INFO] [stdout] test scrollbar::tests::vscroll_thumb_moves_with_scroll ... ok
[INFO] [stdout] test scrollbar::tests::vscroll_track_click_scroll ... ok
[INFO] [stdout] test search::tests::run_empty_query_returns_empty ... ok
[INFO] [stdout] test selection::tests::clear_resets_state ... ok
[INFO] [stdout] test search::tests::run_server_side_skips_scan ... ok
[INFO] [stdout] test selection::tests::extend_to_moves_focus_only ... ok
[INFO] [stdout] test selection::tests::is_selected_inverted_anchor_focus ... ok
[INFO] [stdout] test selection::tests::is_selected_rectangle ... ok
[INFO] [stdout] test selection::tests::parse_crlf_line_endings ... ok
[INFO] [stdout] test selection::tests::parse_empty_input ... ok
[INFO] [stdout] test selection::tests::parse_escaped_quote ... ok
[INFO] [stdout] test selection::tests::is_selected_single_cell ... ok
[INFO] [stdout] test selection::tests::parse_quoted_field_with_tab ... ok
[INFO] [stdout] test selection::tests::parse_tsv_trailing_empty_row_dropped ... ok
[INFO] [stdout] test selection::tests::range_none_when_empty ... ok
[INFO] [stdout] test selection::tests::range_normalises_coords ... ok
[INFO] [stdout] test selection::tests::to_tsv_escapes_double_quotes ... ok
[INFO] [stdout] test selection::tests::parse_no_trailing_newline ... ok
[INFO] [stdout] test selection::tests::to_tsv_full_range ... ok
[INFO] [stdout] test selection::tests::parse_tsv_unterminated_quote ... ok
[INFO] [stdout] test selection::tests::select_cell_sets_anchor_and_focus ... ok
[INFO] [stdout] test selection::tests::parse_tsv_quoted_newline ... ok
[INFO] [stdout] test selection::tests::to_tsv_quotes_tab_and_newline ... ok
[INFO] [stdout] test selection::tests::to_tsv_single_cell ... ok
[INFO] [stdout] test selection::tests::to_tsv_no_selection_error ... ok
[INFO] [stdout] test selection::tests::to_tsv_too_many_rows_error ... ok
[INFO] [stdout] test sort::tests::sort_dir_eq ... ok
[INFO] [stdout] test sort::tests::sort_state_construction ... ok
[INFO] [stdout] test sort::tests::sort_state_ne_different_col ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::clear_cells_does_not_touch_clipboard ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::clear_cells_clears_selected_range ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::clear_cells_on_full_column_selection_is_noop ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::clear_cells_is_undoable ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::clear_cells_reports_cleared_coordinates ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::clear_cells_reports_only_cleared_cells_when_some_are_skipped ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::clear_cells_skips_locked_cells ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::clear_cells_skips_cells_that_would_become_invalid ... ok
[INFO] [stdout] test sort::tests::sort_dir_clone ... ok
[INFO] [stdout] test sort::tests::sort_state_ne_different_dir ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::clear_cells_without_selection_is_noop ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::copy_full_col_returns_header_not_data ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::copy_full_multi_col_returns_headers ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::copy_range_returns_tsv ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::cut_clears_cells_and_returns_tsv ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::cut_selection_skips_locked_cells_but_copies_everything ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::cut_selection_skips_cells_that_would_become_invalid ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::paste_at_anchor_updates_cell ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::cut_full_col_returns_header_does_not_clear ... ok
[INFO] [stdout] test selection::tests::parse_simple ... ok
[INFO] [stdout] test sort::tests::sort_state_eq ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::copy_single_cell_returns_tsv ... ok
[INFO] [stdout] test search::tests::run_caps_at_max_matches ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::paste_at_reports_only_valid_cells ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::paste_at_tiled_partial_validity ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::paste_tiling_fills_selection ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::paste_without_selection_is_noop ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::paste_at_reports_only_written_cells ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::paste_at_skips_locked_cells ... ok
[INFO] [stdout] test state::cmd_clipboard::tests::paste_at_skips_invalid_values ... ok
[INFO] [stdout] test state::cmd_column::tests::auto_fit_all_columns_does_not_panic ... ok
[INFO] [stdout] test state::cmd_column::tests::commit_column_resize_out_of_bounds_is_noop ... ok
[INFO] [stdout] test state::cmd_column::tests::commit_column_resize_same_width_no_undo ... ok
[INFO] [stdout] test state::cmd_edit::tests::cancel_edit_clears_edit ... ok
[INFO] [stdout] test state::cmd_column::tests::move_column_same_index_is_noop ... ok
[INFO] [stdout] test state::cmd_column::tests::resize_column_out_of_bounds_is_noop ... ok
[INFO] [stdout] test state::cmd_edit::tests::commit_edit_rejects_cell_locked_mid_edit ... ok
[INFO] [stdout] test state::cmd_edit::tests::commit_edit_wrong_row_is_noop ... ok
[INFO] [stdout] test state::cmd_edit::tests::commit_edit_valid_clears_validation ... ok
[INFO] [stdout] test state::cmd_edit::tests::commit_edit_invalid_revert_mode_drops_edit ... ok
[INFO] [stdout] test state::cmd_edit::tests::start_edit_grid_not_editable_is_noop ... ok
[INFO] [stdout] test state::cmd_edit::tests::start_edit_predicate_false_is_noop ... ok
[INFO] [stdout] test state::cmd_edit::tests::start_edit_predicate_reads_cross_column_value ... ok
[INFO] [stdout] test state::cmd_edit::tests::start_edit_read_only_column_is_noop ... ok
[INFO] [stdout] test state::cmd_edit::tests::start_edit_sets_edit_cell ... ok
[INFO] [stdout] test state::cmd_edit::tests::start_edit_static_false_short_circuits_predicate ... ok
[INFO] [stdout] test state::cmd_edit::tests::validate_edit_clears_error_when_valid ... ok
[INFO] [stdout] test state::cmd_edit::tests::validate_edit_sets_error_without_committing ... ok
[INFO] [stdout] test state::cmd_meta::tests::notify_page_loaded_is_noop ... ok
[INFO] [stdout] test state::cmd_edit::tests::validate_edit_without_active_edit_is_noop ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_checkbox_column_width_negative_is_ignored ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_checkbox_column_width_positive_updates ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_checkbox_column_width_zero_updates ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_column_reorderable_false ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_editable_false ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_filter_row_height_positive_updates ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_filter_row_height_zero_is_ignored ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_header_height_positive_updates ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_header_height_zero_is_ignored ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_hovered_row_updates_field ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_invalid_edit_mode_toggles ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_row_height_positive_updates ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_row_height_zero_is_ignored ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_row_number_width_negative_is_ignored ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_row_number_width_positive_updates ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_selectable_false_clears_selection ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_selectable_true_does_not_clear ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_show_checkbox_column_true ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_show_filter_row_true ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_show_header_false ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_show_row_numbers_false ... ok
[INFO] [stdout] test state::cmd_row_check::tests::extend_row_checked_checks_range_from_anchor ... ok
[INFO] [stdout] test state::cmd_row_check::tests::extend_row_checked_handles_reversed_range ... ok
[INFO] [stdout] test state::cmd_row_check::tests::extend_row_checked_keeps_anchor_across_consecutive_extends ... ok
[INFO] [stdout] test state::cmd_row_check::tests::extend_row_checked_shrink_works_for_an_unchecking_gesture_too ... ok
[INFO] [stdout] test state::cmd_row_check::tests::extend_row_checked_shrinks_range_when_focus_moves_inward ... ok
[INFO] [stdout] test state::cmd_row_check::tests::extend_row_checked_without_prior_anchor_checks_single_row ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_row_number_width_zero_updates ... ok
[INFO] [stdout] test state::cmd_meta::tests::set_total_row_count_is_noop ... ok
[INFO] [stdout] test state::cmd_row_check::tests::header_state_indeterminate_then_checked ... ok
[INFO] [stdout] test state::cmd_row_check::tests::set_column_filter_resets_gesture_anchor ... ok
[INFO] [stdout] test state::cmd_row_check::tests::toggle_all_filtered_checked_resets_gesture_anchor ... ok
[INFO] [stdout] test state::cmd_row_check::tests::toggle_row_checked_survives_sort ... ok
[INFO] [stdout] test state::cmd_scroll::tests::resize_updates_viewport ... ok
[INFO] [stdout] test state::cmd_scroll::tests::scroll_by_accumulates ... ok
[INFO] [stdout] test state::cmd_scroll::tests::scroll_by_clamps_to_zero ... ok
[INFO] [stdout] test state::cmd_row_check::tests::toggle_all_filtered_checked_scopes_to_filter ... ok
[INFO] [stdout] test state::cmd_row_check::tests::toggle_row_checked_sets_and_clears ... ok
[INFO] [stdout] test state::cmd_scroll::tests::scroll_to_clamps_beyond_max ... ok
[INFO] [stdout] test state::cmd_scroll::tests::scroll_to_clamps_negative ... ok
[INFO] [stdout] test state::cmd_scroll::tests::scroll_to_sets_position ... ok
[INFO] [stdout] test state::cmd_search::tests::search_next_advances_current ... ok
[INFO] [stdout] test state::cmd_search::tests::search_next_empty_results_is_noop ... ok
[INFO] [stdout] test state::cmd_search::tests::search_next_wraps_around ... ok
[INFO] [stdout] test state::cmd_search::tests::search_prev_empty_results_is_noop ... ok
[INFO] [stdout] test state::cmd_search::tests::search_prev_wraps_around ... ok
[INFO] [stdout] test state::cmd_selection::tests::extend_col_selection_clamps_anchor_row_to_zero ... ok
[INFO] [stdout] test state::cmd_selection::tests::extend_col_selection_without_anchor_sets_focus ... ok
[INFO] [stdout] test state::cmd_selection::tests::extend_row_selection_clamps_anchor_col_to_zero ... ok
[INFO] [stdout] test state::cmd_selection::tests::extend_row_selection_without_anchor_sets_focus ... ok
[INFO] [stdout] test state::cmd_selection::tests::extend_selection_not_selectable_is_noop ... ok
[INFO] [stdout] test state::cmd_selection::tests::move_selection_clamps_to_bounds ... ok
[INFO] [stdout] test state::cmd_selection::tests::move_selection_extend_true_extends_range ... ok
[INFO] [stdout] test state::cmd_selection::tests::move_selection_without_existing_selection_is_noop ... ok
[INFO] [stdout] test state::cmd_selection::tests::select_cell_not_selectable_is_noop ... ok
[INFO] [stdout] test state::cmd_search::tests::clear_search_resets_state ... ok
[INFO] [stdout] test state::cmd_column::tests::move_column_out_of_bounds_is_noop ... ok
[INFO] [stdout] test state::cmd_search::tests::search_finds_matches ... ok
[INFO] [stdout] test state::cmd_edit::tests::commit_edit_invalid_block_mode_keeps_edit ... ok
[INFO] [stdout] test state::cmd_sort_filter::tests::clear_all_filters_also_clears_value_filters ... ok
[INFO] [stdout] test state::cmd_edit::tests::commit_edit_without_active_edit_is_noop ... ok
[INFO] [stdout] test state::cmd_sort_filter::tests::set_column_filter_numeric_greater_than ... ok
[INFO] [stdout] test state::cmd_sort_filter::tests::clear_all_filters_restores_all_rows ... ok
[INFO] [stdout] test state::cmd_sort_filter::tests::set_column_filter_reapplies_after_sort_change ... ok
[INFO] [stdout] test state::cmd_sort_filter::tests::set_column_value_filter_and_condition_filter_and_combine ... ok
[INFO] [stdout] test state::cmd_sort_filter::tests::set_column_value_filter_restricts_rows ... ok
[INFO] [stdout] test state::cmd_sort_filter::tests::clear_column_value_filter_restores_rows ... ok
[INFO] [stdout] test state::cmd_sort_filter::tests::set_column_filter_empty_value_removes_filter ... ok
[INFO] [stdout] test state::cmd_sort_filter::tests::set_sort_applies_direction ... ok
[INFO] [stdout] test state::cmd_sort_filter::tests::set_column_filter_filters_rows ... ok
[INFO] [stdout] test state::cmd_sort_filter::tests::toggle_sort_different_column_resets_to_asc ... ok
[INFO] [stdout] test state::cmd_sort_filter::tests::toggle_sort_first_call_sets_asc ... ok
[INFO] [stdout] test state::cmd_edit::tests::start_edit_predicate_true_allows_edit ... ok
[INFO] [stdout] test state::cmd_sort_filter::tests::toggle_sort_second_call_sets_desc ... ok
[INFO] [stdout] test state::cmd_sort_filter::tests::toggle_sort_third_call_clears_sort ... ok
[INFO] [stdout] test state::cmd_undo::tests::redo_on_empty_history_is_noop ... ok
[INFO] [stdout] test state::cmd_undo::tests::undo_cell_with_no_prior_value_removes_patch ... ok
[INFO] [stdout] test state::cmd_undo::tests::redo_reapplies_after_undo ... ok
[INFO] [stdout] test state::cmd_undo::tests::undo_on_empty_history_is_noop ... ok
[INFO] [stdout] test state::tests::auto_fit_column_adjusts_width ... ok
[INFO] [stdout] test state::tests::auto_fit_column_out_of_range_noop ... ok
[INFO] [stdout] test state::tests::auto_fit_column_accounts_for_cell_buttons ... ok
[INFO] [stdout] test state::cmd_undo::tests::undo_restores_previous_value ... ok
[INFO] [stdout] test state::tests::auto_fit_column_respects_min_width ... ok
[INFO] [stdout] test state::tests::auto_fit_all_columns_adjusts_all ... ok
[INFO] [stdout] test state::tests::auto_fit_formatted_column ... ok
[INFO] [stdout] test state::tests::clear_all_filters_resets_scroll_and_selection ... ok
[INFO] [stdout] test state::tests::clear_search_resets ... ok
[INFO] [stdout] test state::tests::clear_sort_reapplies_filter ... ok
[INFO] [stdout] test state::tests::auto_fit_image_column_uses_row_height ... ok
[INFO] [stdout] test state::tests::clear_sort_removes_sort_state ... ok
[INFO] [stdout] test state::tests::auto_fit_image_text_ignores_base64 ... ok
[INFO] [stdout] test state::tests::clear_sort_resets_scroll_y ... ok
[INFO] [stdout] test state::tests::column_reorderable_defaults_to_true ... ok
[INFO] [stdout] test state::tests::commit_column_resize_enables_undo ... ok
[INFO] [stdout] test state::tests::commit_edit_without_start_is_noop ... ok
[INFO] [stdout] test state::tests::commit_edit_wrong_cell_is_noop ... ok
[INFO] [stdout] test state::tests::cancel_edit_discards ... ok
[INFO] [stdout] test state::tests::cancel_edit_without_start_is_noop ... ok
[INFO] [stdout] test state::tests::copy_no_selection_returns_error ... ok
[INFO] [stdout] test state::tests::clear_all_filters ... ok
[INFO] [stdout] test state::tests::copy_selection_returns_tsv ... ok
[INFO] [stdout] test state::tests::extend_row_selection_spans_all_columns ... ok
[INFO] [stdout] test state::tests::extend_selection ... ok
[INFO] [stdout] test state::tests::cut_no_selection_returns_error ... ok
[INFO] [stdout] test state::tests::cut_selection_returns_tsv_and_clears_cells ... ok
[INFO] [stdout] test state::tests::filter_case_insensitive ... ok
[INFO] [stdout] test state::tests::cut_selection_is_undoable ... ok
[INFO] [stdout] test state::tests::filter_empty_text_clears ... ok
[INFO] [stdout] test state::tests::filter_clears_selection ... ok
[INFO] [stdout] test state::tests::extend_col_selection_spans_all_rows ... ok
[INFO] [stdout] test state::tests::filter_reduces_display_row_count ... ok
[INFO] [stdout] test state::tests::flex_applied_at_init ... ok
[INFO] [stdout] test state::tests::flex_cleared_on_resize_column ... ok
[INFO] [stdout] test state::tests::flex_recalculated_on_resize ... ok
[INFO] [stdout] test state::tests::hit_test_col_header_in_header_row ... ok
[INFO] [stdout] test state::cmd_sort_filter::tests::clear_sort_removes_sort ... ok
[INFO] [stdout] test state::tests::hit_test_data_cell ... ok
[INFO] [stdout] test state::tests::hit_test_col_header_returns_none_below_header ... ok
[INFO] [stdout] test state::tests::commit_column_resize_noop_when_unchanged ... ok
[INFO] [stdout] test state::tests::hit_test_returns_none_in_gutter ... ok
[INFO] [stdout] test state::tests::move_column_out_of_range_noop ... ok
[INFO] [stdout] test state::tests::move_column_reorders ... ok
[INFO] [stdout] test state::tests::move_column_same_index_noop ... ok
[INFO] [stdout] test state::tests::move_column_still_works_when_reorder_disabled ... ok
[INFO] [stdout] test state::tests::hit_test_returns_none_in_header ... ok
[INFO] [stdout] test state::tests::move_selection_clamped_to_bounds ... ok
[INFO] [stdout] test state::tests::move_selection_down ... ok
[INFO] [stdout] test state::tests::move_selection_extend ... ok
[INFO] [stdout] test state::tests::move_selection_negative_clamped ... ok
[INFO] [stdout] test state::tests::move_selection_no_selection_is_noop ... ok
[INFO] [stdout] test state::tests::new_action_clears_redo_stack ... ok
[INFO] [stdout] test state::tests::notify_page_loaded_is_noop ... ok
[INFO] [stdout] test state::tests::paste_clamps_to_grid_bounds ... ok
[INFO] [stdout] test state::tests::paste_at_origin ... ok
[INFO] [stdout] test state::tests::filter_resets_scroll_y ... ok
[INFO] [stdout] test state::tests::paste_no_selection_is_noop ... ok
[INFO] [stdout] test state::tests::filter_then_sort_works ... ok
[INFO] [stdout] test state::tests::flex_cleared_on_autofit ... ok
[INFO] [stdout] test state::tests::paste_empty_text_is_noop ... ok
[INFO] [stdout] test state::tests::paste_tiles_into_larger_selection ... ok
[INFO] [stdout] test state::tests::paste_with_upward_selection ... ok
[INFO] [stdout] test state::tests::redo_after_undo ... ok
[INFO] [stdout] test state::tests::hit_test_row_header_in_gutter ... ok
[INFO] [stdout] test state::tests::hit_test_row_header_returns_none_outside_gutter ... ok
[INFO] [stdout] test state::tests::redo_undo_redo_cycle ... ok
[INFO] [stdout] test state::tests::resize_column_clamps_to_min_width ... ok
[INFO] [stdout] test state::tests::resize_column_not_undoable ... ok
[INFO] [stdout] test state::tests::resize_column_rebuilds_offsets ... ok
[INFO] [stdout] test state::tests::resize_column_respects_min_max_width ... ok
[INFO] [stdout] test state::tests::resize_column_updates_width ... ok
[INFO] [stdout] test state::tests::resize_updates_viewport ... ok
[INFO] [stdout] test state::tests::scroll_by_accumulates ... ok
[INFO] [stdout] test state::tests::scroll_by_negative_clamped ... ok
[INFO] [stdout] test state::tests::resize_column_out_of_bounds_noop ... ok
[INFO] [stdout] test state::tests::scroll_horizontal_clamped ... ok
[INFO] [stdout] test state::tests::scroll_to_basic ... ok
[INFO] [stdout] test state::tests::search_finds_matches ... ok
[INFO] [stdout] test state::tests::search_multiple_matches ... ok
[INFO] [stdout] test state::tests::scroll_to_negative_clamped_to_zero ... ok
[INFO] [stdout] test state::tests::search_next_cycles ... ok
[INFO] [stdout] test state::tests::scroll_to_small_viewport ... ok
[INFO] [stdout] test state::tests::search_next_empty_matches_noop ... ok
[INFO] [stdout] test state::tests::search_next_scrolls_left_to_match ... ok
[INFO] [stdout] test state::tests::search_next_scrolls_right_to_match ... ok
[INFO] [stdout] test state::tests::search_next_scrolls_down_to_match ... ok
[INFO] [stdout] test state::tests::search_next_selects_match ... ok
[INFO] [stdout] test state::tests::select_cell_and_clear ... ok
[INFO] [stdout] test state::tests::select_col_spans_all_rows ... ok
[INFO] [stdout] test state::tests::select_row_spans_all_columns ... ok
[INFO] [stdout] test state::tests::set_column_reorderable_toggles_flag ... ok
[INFO] [stdout] test state::tests::search_next_scrolls_up_to_match ... ok
[INFO] [stdout] test state::tests::scroll_to_clamped_above_max ... ok
[INFO] [stdout] test state::tests::set_header_height_positive ... ok
[INFO] [stdout] test state::tests::search_prev_cycles ... ok
[INFO] [stdout] test state::tests::search_case_insensitive ... ok
[INFO] [stdout] test state::tests::search_prev_empty_matches_noop ... ok
[INFO] [stdout] test state::tests::set_pinned_count ... ok
[INFO] [stdout] test state::tests::set_row_height_negative_ignored ... ok
[INFO] [stdout] test state::tests::set_row_height_positive ... ok
[INFO] [stdout] test state::tests::set_row_number_width_disables_auto_and_locks_it_in ... ok
[INFO] [stdout] test state::tests::set_selectable_false_clears_selection ... ok
[INFO] [stdout] test state::tests::set_selectable_false_ignores_select_cell ... ok
[INFO] [stdout] test state::tests::set_selectable_true_allows_select_cell ... ok
[INFO] [stdout] test state::tests::set_header_height_zero_ignored ... ok
[INFO] [stdout] test state::tests::set_show_header_false_effective_height_is_zero ... ok
[INFO] [stdout] test state::tests::search_empty_query_clears ... ok
[INFO] [stdout] test state::tests::set_show_row_numbers_false_effective_width_is_zero ... ok
[INFO] [stdout] test state::tests::set_hovered_row ... ok
[INFO] [stdout] test state::tests::set_pinned_count_clamped ... ok
[INFO] [stdout] test state::tests::set_sort_explicit_direction ... ok
[INFO] [stdout] test state::tests::set_sort_returns_sort_warning_for_large_dataset ... ok
[INFO] [stdout] test state::tests::start_and_commit_edit ... ok
[INFO] [stdout] test state::tests::toggle_sort_cycles_none_asc_desc_none ... ok
[INFO] [stdout] test state::tests::toggle_sort_different_col_resets_to_asc ... ok
[INFO] [stdout] test state::tests::set_total_row_count_does_not_touch_the_data_source_row_count ... ok
[INFO] [stdout] test state::tests::toggle_sort_reapplies_filter ... ok
[INFO] [stdout] test state::tests::toggle_show_header_restores_original_height ... ok
[INFO] [stdout] test state::tests::undo_cut_restores_multiple_cells ... ok
[INFO] [stdout] test state::tests::undo_edit_on_nonexistent_cell_removes_patch ... ok
[INFO] [stdout] test state::tests::undo_move_column ... ok
[INFO] [stdout] test state::tests::undo_on_empty_stack_is_noop ... ok
[INFO] [stdout] test state::tests::undo_paste ... ok
[INFO] [stdout] test state::tests::toggle_sort_returns_sort_warning_for_large_dataset ... ok
[INFO] [stdout] test state::tests::undo_commit_edit ... ok
[INFO] [stdout] test state::tests::undo_auto_fit_restores_width ... ok
[INFO] [stdout] test state::tests::undo_paste_on_fn_datasource_removes_patches ... ok
[INFO] [stdout] test state::tests::undo_resize_restores_flex ... ok
[INFO] [stdout] test undo::tests::pop_redo_empty_returns_none ... ok
[INFO] [stdout] test undo::tests::push_fifo_eviction_at_capacity ... ok
[INFO] [stdout] test undo::tests::push_undo_keep_redo_also_evicts ... ok
[INFO] [stdout] test undo::tests::push_undo_keep_redo_preserves_redo ... ok
[INFO] [stdout] test validation::tests::custom_delegates_to_cell_validator ... ok
[INFO] [stdout] test validation::tests::invalid_edit_mode_default_is_revert ... ok
[INFO] [stdout] test undo::tests::pop_undo_empty_returns_none ... ok
[INFO] [stdout] test validation::tests::min_length_rejects_short_values ... ok
[INFO] [stdout] test undo::tests::push_clears_redo_stack ... ok
[INFO] [stdout] test validation::tests::max_length_rejects_long_values ... ok
[INFO] [stdout] test validation::tests::one_of_rejects_values_outside_the_list ... ok
[INFO] [stdout] test state::tests::set_total_row_count_recomputes_gutter_width_by_default ... ok
[INFO] [stdout] test state::tests::sort_then_filter_works ... ok
[INFO] [stdout] test validation::tests::validate_rules_stops_at_first_failure ... ok
[INFO] [stdout] test validation::tests::with_message_is_noop_on_custom ... ok
[INFO] [stdout] test validation::tests::with_message_overrides_default ... ok
[INFO] [stdout] test state::tests::toggle_sort_resets_scroll_y ... ok
[INFO] [stdout] test viewport::tests::scrollable_columns_with_pinned ... ok
[INFO] [stdout] test viewport::tests::visible_columns_all_visible ... ok
[INFO] [stdout] test viewport::tests::scrollable_columns_no_pinned ... ok
[INFO] [stdout] test viewport::tests::visible_columns_empty_returns_zero_zero ... ok
[INFO] [stdout] test viewport::tests::scrollable_columns_pinned_fills_viewport ... ok
[INFO] [stdout] test viewport::tests::visible_columns_scrolled_past_first ... ok
[INFO] [stdout] test viewport::tests::visible_columns_scrolled_past_first_col ... ok
[INFO] [stdout] test validation::tests::range_rejects_out_of_bounds_and_non_numeric ... ok
[INFO] [stdout] test viewport::tests::visible_rows_empty_grid ... ok
[INFO] [stdout] test viewport::tests::visible_scrollable_all_pinned ... ok
[INFO] [stdout] test viewport::tests::visible_rows_at_top ... ok
[INFO] [stdout] test viewport::tests::visible_rows_clamped_to_row_count ... ok
[INFO] [stdout] test validation::tests::required_rejects_empty_and_whitespace ... ok
[INFO] [stdout] test viewport::tests::visible_scrollable_columns_scrolled_past_first ... ok
[INFO] [stdout] test viewport::tests::visible_rows_scrolled ... ok
[INFO] [stdout] test hit_test::complexity_invariant::hit_test_cost_is_independent_of_row_count ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 608 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.98s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests rs_grid_core
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test src/column.rs - column::CellButtonsVisible (line 277) ... ignored
[INFO] [stdout] test src/column.rs - column::CellDecorator (line 198) ... ignored
[INFO] [stdout] test src/column.rs - column::CellValidator (line 24) ... ignored
[INFO] [stdout] test src/column.rs - column::EditablePredicate (line 134) ... ignored
[INFO] [stdout] test src/format.rs - format::CellElement (line 44) ... ignored
[INFO] [stdout] test src/format.rs - format::CellFormat::ProgressBar (line 190) ... ignored
[INFO] [stdout] test src/format.rs - format::CellFormat::Styled (line 135) ... ignored
[INFO] [stdout] test src/model.rs - model::GridModelBuilder (line 886) ... ignored
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 8 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.46s; merged doctests compilation took 0.45s
[INFO] running `Command { std: "docker" "inspect" "ddbdce805b0a7c5aeddd142276ba6037d728da0692b4ce73213591159a12fcb6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ddbdce805b0a7c5aeddd142276ba6037d728da0692b4ce73213591159a12fcb6", kill_on_drop: false }`
[INFO] [stdout] ddbdce805b0a7c5aeddd142276ba6037d728da0692b4ce73213591159a12fcb6
