[INFO] fetching crate sabiql 1.11.0...
[INFO] testing sabiql-1.11.0 against 1.95.0 for beta-1.96-2
[INFO] extracting crate sabiql 1.11.0 into /workspace/builds/worker-4-tc1/source
[INFO] removed /workspace/builds/worker-4-tc1/source/rust-toolchain.toml
[INFO] started tweaking crates.io crate sabiql 1.11.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate sabiql 1.11.0
[INFO] tweaked toml for crates.io crate sabiql 1.11.0 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate sabiql 1.11.0 on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate sabiql 1.11.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.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rstest v0.19.0
[INFO] [stderr]   Downloaded nucleo-matcher v0.3.1
[INFO] [stderr]   Downloaded unicode-casefold v0.2.0
[INFO] [stderr]   Downloaded self_update v0.42.0
[INFO] [stderr]   Downloaded rstest_macros v0.19.0
[INFO] [stderr]   Downloaded tokio v1.52.0
[INFO] [stderr]   Downloaded pxfm v0.1.28
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 968c6c101c50f4fdd42bb791ec01421d9252fc4360c7c813d15ba347f59463db
[INFO] running `Command { std: "docker" "start" "-a" "968c6c101c50f4fdd42bb791ec01421d9252fc4360c7c813d15ba347f59463db", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "968c6c101c50f4fdd42bb791ec01421d9252fc4360c7c813d15ba347f59463db", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "968c6c101c50f4fdd42bb791ec01421d9252fc4360c7c813d15ba347f59463db", kill_on_drop: false }`
[INFO] [stdout] 968c6c101c50f4fdd42bb791ec01421d9252fc4360c7c813d15ba347f59463db
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 0e14afea9a525eb0df3a4c137d9ead71e3b9465aebf0d2ca40bee63ca389437c
[INFO] running `Command { std: "docker" "start" "-a" "0e14afea9a525eb0df3a4c137d9ead71e3b9465aebf0d2ca40bee63ca389437c", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling compact_str v0.9.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling owo-colors v4.3.0
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling line-clipping v0.3.7
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling pxfm v0.1.28
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling eyre v0.6.12
[INFO] [stderr]    Compiling color-spantrace v0.3.0
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling indenter v0.3.4
[INFO] [stderr]    Compiling bytemuck v1.25.0
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling byteorder-lite v0.1.0
[INFO] [stderr]    Compiling x11rb-protocol v0.13.2
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling backtrace v0.3.76
[INFO] [stderr]    Compiling csv-core v0.1.13
[INFO] [stderr]    Compiling uuid v1.23.1
[INFO] [stderr]    Compiling dirs v5.0.1
[INFO] [stderr]    Compiling nucleo-matcher v0.3.1
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]    Compiling png v0.18.1
[INFO] [stderr]    Compiling unicode-casefold v0.2.0
[INFO] [stderr]    Compiling tracing-error v0.2.1
[INFO] [stderr]    Compiling color-eyre v0.6.5
[INFO] [stderr]    Compiling moxcms v0.8.1
[INFO] [stderr]    Compiling csv v1.4.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tokio v1.52.0
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling x11rb v0.13.2
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling kasuari v0.4.12
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling ratatui-core v0.1.0
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling image v0.25.10
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling ratatui-macros v0.7.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling arboard v3.6.1
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling sabiql v1.11.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 09s
[INFO] running `Command { std: "docker" "inspect" "0e14afea9a525eb0df3a4c137d9ead71e3b9465aebf0d2ca40bee63ca389437c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0e14afea9a525eb0df3a4c137d9ead71e3b9465aebf0d2ca40bee63ca389437c", kill_on_drop: false }`
[INFO] [stdout] 0e14afea9a525eb0df3a4c137d9ead71e3b9465aebf0d2ca40bee63ca389437c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8e945bc7e904d8c597ee2b93e1c63f628f872bfff22a5d9ed611613258fad450
[INFO] running `Command { std: "docker" "start" "-a" "8e945bc7e904d8c597ee2b93e1c63f628f872bfff22a5d9ed611613258fad450", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling rstest_macros v0.19.0
[INFO] [stderr]    Compiling mockall_derive v0.13.1
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling console v0.16.3
[INFO] [stderr]    Compiling fragile v2.1.0
[INFO] [stderr]    Compiling downcast v0.11.0
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling x11rb v0.13.2
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling insta v1.47.2
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling tokio v1.52.0
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling arboard v3.6.1
[INFO] [stderr]    Compiling kasuari v0.4.12
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling ratatui-core v0.1.0
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling mockall v0.13.1
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling rstest v0.19.0
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling ratatui-macros v0.7.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling sabiql v1.11.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 10s
[INFO] running `Command { std: "docker" "inspect" "8e945bc7e904d8c597ee2b93e1c63f628f872bfff22a5d9ed611613258fad450", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8e945bc7e904d8c597ee2b93e1c63f628f872bfff22a5d9ed611613258fad450", kill_on_drop: false }`
[INFO] [stdout] 8e945bc7e904d8c597ee2b93e1c63f628f872bfff22a5d9ed611613258fad450
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 072264d0df34bfe1e0453bde8f1897b55ca7fdbc4513a34c65b26e2e3de27cde
[INFO] running `Command { std: "docker" "start" "-a" "072264d0df34bfe1e0453bde8f1897b55ca7fdbc4513a34c65b26e2e3de27cde", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.47s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/sabiql-d5c3bca12ace31c0)
[INFO] [stdout] 
[INFO] [stdout] running 2913 tests
[INFO] [stdout] test app::cmd::browse::query::tests::export_path::epoch_days_to_ymd_leap_year_feb_29 ... ok
[INFO] [stdout] test app::cmd::browse::metadata::tests::fetch_metadata::provider_error_returns_metadata_failed ... ok
[INFO] [stdout] test app::cmd::browse::metadata::tests::table_detail_dispatch::fetch_table_detail_calls_full_provider ... ok
[INFO] [stdout] test app::cmd::browse::metadata::tests::cache_invalidate::invalidate_removes_cache_entry ... ok
[INFO] [stdout] test app::cmd::browse::metadata::tests::fetch_metadata::cache_hit_returns_metadata_loaded ... ok
[INFO] [stdout] test app::cmd::browse::query::tests::execute_preview::error_returns_query_failed ... ok
[INFO] [stdout] test app::cmd::browse::metadata::tests::table_detail_dispatch::prefetch_table_detail_calls_light_provider ... ok
[INFO] [stdout] test app::cmd::browse::query::tests::execute_preview::success_returns_query_completed ... ok
[INFO] [stdout] test app::cmd::browse::query::tests::export_path::epoch_days_to_ymd_non_leap_century ... ok
[INFO] [stdout] test app::cmd::browse::query::tests::export_path::epoch_days_to_ymd_known_date ... ok
[INFO] [stdout] test app::cmd::browse::query::tests::export_path::epoch_days_to_ymd_century_leap_year ... ok
[INFO] [stdout] test app::cmd::browse::query::tests::export_path::epoch_days_to_ymd_unix_epoch ... ok
[INFO] [stdout] test app::cmd::browse::metadata::tests::fetch_metadata::cache_miss_returns_metadata_loaded ... ok
[INFO] [stdout] test app::cmd::browse::query::tests::export_path::resolve_export_path_contains_file_name ... ok
[INFO] [stdout] test app::cmd::browse::query::tests::export_path::epoch_days_to_ymd_year_end_dec_31 ... ok
[INFO] [stdout] test app::cmd::cache::lru_cache::tests::clear_removes_all_entries ... ok
[INFO] [stdout] test app::cmd::cache::lru_cache::tests::get_returns_inserted_value ... ok
[INFO] [stdout] test app::cmd::cache::lru_cache::tests::insert_beyond_capacity_evicts_lru_entry ... ok
[INFO] [stdout] test app::cmd::cache::lru_cache::tests::iter_returns_all_entries ... ok
[INFO] [stdout] test app::cmd::cache::lru_cache::tests::pop_removes_and_returns_value ... ok
[INFO] [stdout] test app::cmd::cache::lru_cache::tests::resize_shrink_evicts_lru ... ok
[INFO] [stdout] test app::cmd::cache::ttl_cache::tests::test_cache_miss ... ok
[INFO] [stdout] test app::cmd::cache::ttl_cache::tests::cleanup_expired_removes_stale_entries ... ok
[INFO] [stdout] test app::cmd::cache::ttl_cache::tests::cleanup_expired_preserves_valid_entries ... ok
[INFO] [stdout] test app::cmd::cache::lru_cache::tests::get_updates_lru_order_preventing_eviction ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::alias_column_completion::cached_table_returns_columns ... ok
[INFO] [stdout] test app::cmd::cache::ttl_cache::tests::test_cache_get_set ... ok
[INFO] [stdout] test app::cmd::cache::lru_cache::tests::pop_missing_key_returns_none ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::alias_column_completion::alias_prefix_filters_columns ... ok
[INFO] [stdout] test app::cmd::cache::lru_cache::tests::resize_expand_preserves_entries ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::alias_column_context::alias_dot_returns_alias_column_context ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::all_cache_columns::no_from_with_empty_prefix_returns_all_cached_columns ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::contains_match::finds_contains_matches ... ok
[INFO] [stdout] test app::cmd::cache::ttl_cache::tests::test_cache_returns_none_for_expired_entry ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::alias_column_context::table_name_dot_returns_alias_column_context ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::alias_column_completion::non_cached_table_returns_empty ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::alias_column_context::alias_dot_partial_column_returns_alias_column_context ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::alias_column_context::unknown_alias_dot_returns_schema_qualified ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::all_cache_columns::from_clause_present_returns_only_referenced_table_columns ... ok
[INFO] [stdout] test app::cmd::cache::lru_cache::tests::contains_returns_true_for_existing_key ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::context_detection::after_where_returns_column_context ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::context_detection::empty_input_returns_keyword_context ... ok
[INFO] [stdout] test app::cmd::cache::ttl_cache::tests::test_cache_invalidate ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::contains_match::prefix_match_ranked_higher_than_contains ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::context_detection::schema_dot_returns_schema_qualified ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::context_detection::schema_dot_with_partial_table ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::context_detection::partial_token_is_extracted ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::cte_or_table_context::cte_prefix_filter_works ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::cte_or_table_context::cte_candidates_ranked_higher_than_tables ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::fk_column_scoring::fk_column_returns_higher_score ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::context_detection::after_join_returns_table_context ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::integration_tests::alias_completion_without_cache_falls_back_to_keywords ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::all_cache_columns::no_from_with_2char_prefix_returns_all_cached_columns ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::cte_or_table_context::from_clause_with_cte_returns_cte_or_table ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::integration_tests::empty_prefix_shows_keywords_first ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::context_detection::after_from_returns_table_context ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::fk_column_scoring::fk_column_with_prefix_match_returns_boosted_score ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::integration_tests::column_context_mixes_keywords_and_columns ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::integration_tests::get_candidates_with_cached_table_returns_alias_columns ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::integration_tests::duplicate_text_is_deduplicated ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::context_detection::after_select_returns_column_context ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::integration_tests::from_keyword_appears_even_with_column_candidates ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::integration_tests::select_clause_with_table_detail_shows_column_candidates ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::integration_tests::single_char_prefix_keeps_keywords_first ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::integration_tests::order_by_keywords_appear_together ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::keyword_completion::sel_prefix_returns_select ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::integration_tests::two_char_prefix_boosts_columns ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::integration_tests::where_clause_with_table_detail_shows_column_candidates ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::integration_tests::get_candidates_with_table_detail_returns_columns ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::keyword_completion::empty_prefix_returns_all_keywords ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::lru_cache_behavior::cached_table_not_in_missing_tables ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::integration_tests::non_empty_prefix_shows_columns_first ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::lru_cache_behavior::table_details_iter_returns_all_cached ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::keyword_completion::case_insensitive_matching ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::missing_tables::cached_tables_are_excluded ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::missing_tables::cte_tables_are_excluded ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::missing_tables::duplicate_tables_are_deduplicated ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::missing_tables::empty_sql_returns_empty ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::missing_tables::evict_tables_ignores_missing_keys ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::missing_tables::evict_tables_removes_specified_entries ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::lru_cache_behavior::clear_removes_all_cached_tables ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::missing_tables::has_cached_table_returns_true_for_cached ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::lru_cache_behavior::evicted_table_appears_in_missing_tables ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::lru_cache_behavior::lru_eviction_order_is_fifo_without_access ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::missing_tables::max_limit_is_respected ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::prefix_match_ranking::column_prefix_match_sorted_alphabetically ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::missing_tables::simple_from_returns_table ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::prefix_match_ranking::table_name_prefix_ranked_over_qualified ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::prepared_equivalence::current_token_len_equivalence ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::prepared_equivalence::get_candidates_equivalence ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::prepared_equivalence::is_in_string_or_comment_from_tokens_edges ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::prepared_equivalence::target_table_priority_in_prepared ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::recent_columns_scoring::recent_column_returns_boosted_score ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::prepared_equivalence::missing_tables_equivalence ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::regression_tests::keyword_in_comment_does_not_affect_context ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::regression_tests::keyword_in_string_does_not_affect_context ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::regression_tests::select_xxx_f_returns_from_keyword ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::score_ranking::not_null_column_returns_higher_score ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::semicolon_suppression::multibyte_content_does_not_panic::case_2 ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::semicolon_suppression::multibyte_content_does_not_panic::case_5 ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::prefix_match_ranking::keyword_prefix_match_ranked_first ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::schema_qualified_limit::schema_qualified_candidates_with_empty_prefix ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::missing_tables::multiple_tables_returns_all ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::semicolon_suppression::multibyte_content_does_not_panic::case_3 ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::missing_tables::schema_qualified_table_returns_qualified_name ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::schema_qualified_limit::schema_qualified_candidates_limited_to_max ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::semicolon_suppression::suppression_by_trailing_semicolon::case_2 ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::semicolon_suppression::multibyte_content_does_not_panic::case_1 ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::semicolon_suppression::multibyte_content_does_not_panic::case_4 ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::semicolon_suppression::suppression_by_trailing_semicolon::case_3 ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::score_ranking::pk_column_returns_higher_score ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::semicolon_suppression::suppression_by_trailing_semicolon::case_4 ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::string_and_comment_skip::after_closed_comment_returns_candidates ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::string_and_comment_skip::inside_block_comment_returns_empty ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::string_and_comment_skip::inside_dollar_quote_returns_empty ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::string_and_comment_skip::inside_line_comment_returns_empty ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::string_and_comment_skip::inside_single_quote_string_returns_empty ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::target_table_boost::select_has_no_target_boost ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::string_and_comment_skip::after_closed_string_returns_candidates ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::word_boundary::from_with_space_matches_from ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::target_table_boost::update_target_columns_get_boost ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::semicolon_suppression::typing_after_semicolon_returns_select_candidate ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::word_boundary::from_at_word_boundary_matches ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::word_boundary::selecta_does_not_match_select ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::word_boundary::froma_does_not_match_from ... ok
[INFO] [stdout] test app::cmd::connection::tests::switch_connection::out_of_bounds_index_is_noop ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::has_active_spinner_tests::er_rendering_returns_false ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::semicolon_suppression::suppression_by_trailing_semicolon::case_1 ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::has_active_spinner_tests::running_query_returns_true ... ok
[INFO] [stdout] test app::cmd::connection::tests::delete_connection::success_returns_connection_deleted ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::has_active_spinner_tests::er_idle_returns_false ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::has_blinking_cursor_tests::connection_setup_returns_true ... ok
[INFO] [stdout] test app::cmd::connection::tests::switch_connection::dispatches_action_with_built_dsn ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::has_active_spinner_tests::idle_query_returns_false ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::has_blinking_cursor_tests::help_mode_returns_false ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::has_blinking_cursor_tests::sql_modal_returns_true ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::has_blinking_cursor_tests::normal_mode_returns_false ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::has_blinking_cursor_tests::table_picker_returns_true ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::has_blinking_cursor_tests::command_line_returns_true ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::min_instant_tests::both_none_returns_none ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::min_instant_tests::both_some_returns_earlier ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::min_instant_tests::second_some_returns_second ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::has_active_spinner_tests::er_waiting_returns_true ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::min_instant_tests::first_some_returns_first ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::next_animation_deadline_tests::earlier_message_timeout_takes_priority ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::next_animation_deadline_tests::idle_state_returns_none ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::next_animation_deadline_tests::multiple_animations_returns_earliest ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::next_animation_deadline_tests::query_running_returns_spinner_interval ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::next_animation_deadline_tests::result_highlight_returns_expiration ... ok
[INFO] [stdout] test app::cmd::connection::tests::load_connections::error_returns_empty_connections_list ... ok
[INFO] [stdout] test app::cmd::connection::tests::delete_connection::error_returns_connection_delete_failed ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::next_animation_deadline_tests::message_timeout_returns_expiration ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::next_animation_deadline_tests::completion_debounce_returns_expiration ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::next_animation_deadline_tests::table_picker_returns_cursor_blink_interval ... ok
[INFO] [stdout] test app::cmd::runner::tests::dispatch_actions::dispatches_all_actions ... ok
[INFO] [stdout] test app::cmd::runner::tests::render::clamps_stale_explorer_horizontal_offset_to_new_maximum ... ok
[INFO] [stdout] test app::cmd::utility::tests::open_folder::calls_folder_opener_port ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::next_animation_deadline_tests::er_waiting_returns_spinner_interval ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::next_animation_deadline_tests::command_line_returns_cursor_blink_interval ... ok
[INFO] [stdout] test app::model::app_state::tests::connection_catalog::clear_service_entries_empties_list ... ok
[INFO] [stdout] test app::cmd::runner::tests::render::calls_draw ... ok
[INFO] [stdout] test app::cmd::runner::tests::render::recomputes_jsonb_editor_scroll_when_visible_rows_change ... ok
[INFO] [stdout] test app::model::app_state::tests::connection_catalog::set_connections_and_services_rebuilds_combined_list ... ok
[INFO] [stdout] test app::cmd::utility::tests::copy_to_clipboard::on_failure_dispatched_when_copy_fails ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::next_animation_deadline_tests::sql_modal_returns_cursor_blink_interval ... ok
[INFO] [stdout] test app::cmd::er::task::tests::spawn_er_diagram_task::success_sends_opened_action ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::next_animation_deadline_tests::spinner_takes_priority_over_cursor_blink ... ok
[INFO] [stdout] test app::cmd::er::task::tests::spawn_er_diagram_task::error_sends_failed_action ... ok
[INFO] [stdout] test app::cmd::utility::tests::open_folder::failure_dispatches_open_folder_failed ... ok
[INFO] [stdout] test app::model::app_state::tests::connection_catalog::retain_rebuilds_list ... ok
[INFO] [stdout] test app::model::app_state::tests::connection_catalog::clear_connections_empties_list ... ok
[INFO] [stdout] test app::model::app_state::tests::connection_catalog::set_connections_rebuilds_list ... ok
[INFO] [stdout] test app::model::app_state::tests::connection_catalog::set_service_entries_rebuilds_list ... ok
[INFO] [stdout] test app::model::app_state::tests::local_state_regressions::er_preparation::accepts_status::case_1 ... ok
[INFO] [stdout] test app::model::app_state::tests::local_state_regressions::er_preparation::accepts_status::case_2 ... ok
[INFO] [stdout] test app::model::app_state::tests::local_state_regressions::inspector_scroll_reset::offset_defaults_to_zero ... ok
[INFO] [stdout] test app::model::app_state::tests::local_state_regressions::er_preparation::defaults_to_idle ... ok
[INFO] [stdout] test app::model::app_state::tests::local_state_regressions::inspector_scroll_reset::resets_to_zero_on_table_detail_loaded ... ok
[INFO] [stdout] test app::model::app_state::tests::pane_geometry::inspector_ddl_rows_clamp_small_heights ... ok
[INFO] [stdout] test app::model::app_state::tests::pane_geometry::inspector_ddl_rows_subtract_three::case_2 ... ok
[INFO] [stdout] test app::model::app_state::tests::pane_geometry::result_rows_clamp_small_heights ... ok
[INFO] [stdout] test app::model::app_state::tests::pane_geometry::inspector_ddl_rows_subtract_three::case_3 ... ok
[INFO] [stdout] test app::model::app_state::tests::pane_geometry::inspector_ddl_rows_exceed_standard_rows ... ok
[INFO] [stdout] test app::model::app_state::tests::pane_geometry::inspector_ddl_rows_subtract_three::case_1 ... ok
[INFO] [stdout] test app::model::app_state::tests::pane_geometry::result_rows_default_to_zero ... ok
[INFO] [stdout] test app::model::app_state::tests::pane_geometry::result_rows_follow_pane_height::case_1 ... ok
[INFO] [stdout] test app::model::app_state::tests::pane_geometry::result_rows_follow_pane_height::case_2 ... ok
[INFO] [stdout] test app::model::app_state::tests::pane_geometry::result_rows_stay_zero_at_minimum ... ok
[INFO] [stdout] test app::cmd::utility::tests::copy_to_clipboard::copy_failed_dispatched_when_no_on_failure ... ok
[INFO] [stdout] test app::model::app_state::tests::sql_modal_lifecycle::failed_prefetch_tables_store_error_and_time ... ok
[INFO] [stdout] test app::model::app_state::tests::reload_metadata_reset::resets_er_preparation ... ok
[INFO] [stdout] test app::cmd::utility::tests::copy_to_clipboard::on_success_dispatched_when_copy_succeeds ... ok
[INFO] [stdout] test app::model::app_state::tests::reload_metadata_reset::clears_stale_messages ... ok
[INFO] [stdout] test app::model::app_state::tests::table_selection::filter_ignores_case ... ok
[INFO] [stdout] test app::model::app_state::tests::table_selection::selection_generation_advances_after_reselection ... ok
[INFO] [stdout] test app::model::app_state::tests::table_selection::selection_generation_increments_on_selection ... ok
[INFO] [stdout] test app::model::app_state::tests::sql_modal_lifecycle::prefetch_queue_starts_empty ... ok
[INFO] [stdout] test app::model::app_state::tests::table_selection::selection_generation_starts_at_zero ... ok
[INFO] [stdout] test app::model::app_state::tests::sql_modal_lifecycle::prefetching_tables_track_in_flight ... ok
[INFO] [stdout] test app::model::browse::cell_edit::tests::begin_with_value_sets_active_state_with_copied_values ... ok
[INFO] [stdout] test app::model::app_state::tests::table_selection::empty_filter_returns_all ... ok
[INFO] [stdout] test app::model::app_state::tests::table_selection::substring_filter_matches ... ok
[INFO] [stdout] test app::model::app_state::tests::pane_geometry::result_rows_follow_pane_height::case_3 ... ok
[INFO] [stdout] test app::model::browse::cell_edit::tests::clear_after_begin_resets_all_fields ... ok
[INFO] [stdout] test app::model::app_state::tests::pane_geometry::result_rows_follow_pane_height::case_4 ... ok
[INFO] [stdout] test app::model::app_state::tests::ui_facade::toggle_focus_enters_focus_mode ... ok
[INFO] [stdout] test app::model::browse::cell_edit::tests::cursor_movement_works_through_input ... ok
[INFO] [stdout] test app::model::app_state::tests::ui_facade::toggle_focus_restores_previous_pane ... ok
[INFO] [stdout] test app::model::app_state::tests::pane_geometry::result_rows_scale_with_height ... ok
[INFO] [stdout] test app::model::browse::cell_edit::tests::backspace_at_middle_removes_correct_char ... ok
[INFO] [stdout] test app::model::browse::cell_edit::tests::delete_at_cursor_position ... ok
[INFO] [stdout] test app::model::browse::cell_edit::tests::has_pending_draft_returns_false_when_not_active ... ok
[INFO] [stdout] test app::model::app_state::tests::reload_metadata_reset::resets_prefetch_state ... ok
[INFO] [stdout] test app::model::browse::cell_edit::tests::has_pending_draft_returns_false_when_draft_equals_original ... ok
[INFO] [stdout] test app::model::browse::cell_edit::tests::has_pending_draft_returns_true_when_draft_differs ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::has_history_hint_tests::false_when_browsing_history ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::default_creates_idle_state ... ok
[INFO] [stdout] test app::model::app_state::tests::sql_modal_lifecycle::prefetch_queue_is_fifo ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::capability_tests::is_history_mode_reflects_history_index ... ok
[INFO] [stdout] test app::model::browse::cell_edit::tests::only_col_selected_returns_inactive ... ok
[INFO] [stdout] test app::model::browse::cell_edit::tests::only_row_selected_returns_inactive ... ok
[INFO] [stdout] test app::model::browse::jsonb_detail::tests::enter_edit_deactivates_search ... ok
[INFO] [stdout] test app::model::browse::jsonb_detail::tests::open_falls_back_to_original_input_when_json_is_invalid ... ok
[INFO] [stdout] test app::model::browse::jsonb_detail::tests::open_prettifies_valid_json_into_editor ... ok
[INFO] [stdout] test app::model::browse::jsonb_detail::tests::open_pretty_uses_provided_pretty_content ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::capability_tests::can_edit_only_live_preview ... ok
[INFO] [stdout] test app::model::app_state::tests::ui_facade::csv_export_allowed_for_live_result ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::has_history_hint_tests::false_when_no_history ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::has_history_hint_tests::true_when_history_exists_and_not_browsing ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::history_bar_tests::absent_when_not_in_history ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::pagination::can_next_false_when_reached_end ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::history_bar_tests::shows_index_and_total_when_in_history ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::pagination::can_prev_true_on_later_page ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::pagination::can_next_true_when_estimate_unknown ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::pagination::offset_returns_correct_value ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::pagination::reset_clears_state ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::pagination::total_pages_estimate_exact_division ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::pagination::total_pages_estimate_clamps_negative_to_one ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::pagination::total_pages_estimate_clamps_zero_to_one ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::query_status_default_is_idle ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::pagination::total_pages_estimate_none_when_unknown ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::pagination::total_pages_estimate_rounds_up ... ok
[INFO] [stdout] test app::model::app_state::tests::ui_facade::csv_export_blocked_in_history_mode ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::capability_tests::can_paginate_only_live_preview ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::result_generation_tests::increments_on_enter_and_exit_history ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::visible_result_kind_tests::empty_when_no_result_and_no_history ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::pagination::can_prev_false_on_first_page ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::visible_result_kind_tests::history_entry_even_when_index_out_of_range ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::visible_result_kind_tests::history_entry_kind_when_history_index_set ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::visible_result_kind_tests::live_preview_when_current_result_is_preview ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::visible_result_kind_tests::live_adhoc_when_current_result_is_adhoc ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::visible_result_tests::current_result_when_no_history_index ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::visible_result_tests::empty_query_execution_returns_none ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::result_generation_tests::increments_on_clear_current_result ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::visible_result_tests::history_entry_when_history_index_set ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::result_generation_tests::increments_on_push_history ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::result_generation_tests::increments_on_set_current_result ... ok
[INFO] [stdout] test app::model::browse::result_history::tests::is_empty_returns_true_when_no_entries ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::visible_result_tests::history_index_out_of_range_returns_none ... ok
[INFO] [stdout] test app::model::browse::result_interaction::tests::clear_operator_pending_selective ... ok
[INFO] [stdout] test app::model::browse::result_interaction::tests::discard_cell_edit_clears_edit_and_preview_only ... ok
[INFO] [stdout] test app::model::browse::result_interaction::tests::enter_cell_delegates_correctly ... ok
[INFO] [stdout] test app::model::browse::result_interaction::tests::exit_cell_to_scroll_clears_pending_preview_even_without_staging ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::result_generation_tests::does_not_increment_on_cursor_like_operations ... ok
[INFO] [stdout] test app::model::browse::result_history::tests::is_empty_returns_false_after_push ... ok
[INFO] [stdout] test app::model::browse::result_history::tests::len_returns_entry_count ... ok
[INFO] [stdout] test app::model::browse::result_history::tests::push_and_get_returns_entries_in_order ... ok
[INFO] [stdout] test app::model::browse::result_history::tests::push_evicts_oldest_when_at_capacity ... ok
[INFO] [stdout] test app::model::browse::result_interaction::tests::begin_cell_edit_sets_active ... ok
[INFO] [stdout] test app::model::browse::result_interaction::tests::clamp_selection_delegates ... ok
[INFO] [stdout] test app::model::browse::result_interaction::tests::clear_expired_flash_removes_expired ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::visible_result_tests::history_without_live_result_returns_none ... ok
[INFO] [stdout] test app::model::browse::result_interaction::tests::clear_expired_flash_keeps_active ... ok
[INFO] [stdout] test app::model::browse::result_interaction::tests::exit_cell_to_scroll_clears_selection_and_preserves_staging ... ok
[INFO] [stdout] test app::model::browse::result_interaction::tests::reset_view_clears_scroll_and_all_interaction ... ok
[INFO] [stdout] test app::model::browse::result_interaction::tests::stage_row_and_unstage_last ... ok
[INFO] [stdout] test app::model::browse::session::tests::cache_round_trip::restore_then_begin_reload_preserves_selection ... ok
[INFO] [stdout] test app::model::browse::session::tests::clear_table_selection_clears_all ... ok
[INFO] [stdout] test app::model::browse::session::tests::cache_round_trip::round_trip_preserves_state ... ok
[INFO] [stdout] test app::model::browse::session::tests::connection_lifecycle::begin_connecting_sets_pair ... ok
[INFO] [stdout] test app::model::browse::session::tests::clear_table_selection_invalidates_pending_detail ... ok
[INFO] [stdout] test app::model::browse::session::tests::connection_lifecycle::begin_metadata_refresh_keeps_connection_state ... ok
[INFO] [stdout] test app::model::browse::session::tests::connection_lifecycle::mark_connected_sets_pair_and_metadata ... ok
[INFO] [stdout] test app::model::browse::session::tests::connection_lifecycle::mark_connection_failed_when_connected_keeps_connected ... ok
[INFO] [stdout] test app::model::browse::session::tests::connection_lifecycle::mark_connection_failed_when_not_connected ... ok
[INFO] [stdout] test app::model::browse::session::tests::connection_lifecycle::mark_disconnected_resets_connection_pair ... ok
[INFO] [stdout] test app::model::browse::session::tests::database_name_tests::cleared_after_reset ... ok
[INFO] [stdout] test app::model::browse::session::tests::cache_round_trip::restore_resets_generation_and_reloading ... ok
[INFO] [stdout] test app::model::browse::session::tests::connection_lifecycle::begin_reload_and_finish_reload ... ok
[INFO] [stdout] test app::model::browse::result_interaction::tests::reset_interaction_preserves_scroll ... ok
[INFO] [stdout] test app::model::browse::session::tests::database_name_tests::name_after_mark_connected ... ok
[INFO] [stdout] test app::model::browse::session::tests::database_name_tests::none_when_cache_has_no_metadata ... ok
[INFO] [stdout] test app::model::browse::session::tests::getter_tests::default_state ... ok
[INFO] [stdout] test app::model::browse::session::tests::getter_tests::is_service_connection_detects_service_dsn ... ok
[INFO] [stdout] test app::model::browse::session::tests::getter_tests::tables_returns_empty_when_no_metadata ... ok
[INFO] [stdout] test app::model::browse::session::tests::getter_tests::is_service_connection_false_for_normal_dsn ... ok
[INFO] [stdout] test app::model::browse::session::tests::reset_tests::clears_session_and_query_state ... ok
[INFO] [stdout] test app::model::browse::session::tests::select_table::clears_table_detail ... ok
[INFO] [stdout] test app::model::browse::session::tests::select_table::increments_generation ... ok
[INFO] [stdout] test app::model::browse::session::tests::select_table::resets_pagination ... ok
[INFO] [stdout] test app::model::browse::session::tests::set_table_detail_tests::accepts_matching_generation ... ok
[INFO] [stdout] test app::model::browse::session::tests::getter_tests::tables_returns_all_when_metadata_present ... ok
[INFO] [stdout] test app::model::browse::session::tests::set_table_detail_tests::rejects_stale_generation ... ok
[INFO] [stdout] test app::model::browse::session::tests::select_table::sets_selected_table_key ... ok
[INFO] [stdout] test app::model::connection::cache::tests::connection_cache_default_has_empty_fields ... ok
[INFO] [stdout] test app::model::connection::cache::tests::preserves_metadata_on_save_and_get ... ok
[INFO] [stdout] test app::model::connection::cache::tests::preserves_query_result_on_save_and_get ... ok
[INFO] [stdout] test app::model::connection::cache::tests::store_get_or_create_creates_default ... ok
[INFO] [stdout] test app::model::connection::cache::tests::store_remove_returns_and_deletes_cache ... ok
[INFO] [stdout] test app::model::connection::cache::tests::store_save_and_get_returns_saved_cache ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::stderr_as_auth_failed::case_1 ... ok
[INFO] [stdout] test app::model::browse::session::tests::database_name_tests::synced_after_restore_from_cache ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::stderr_as_cli_not_found::case_1 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::stderr_as_auth_failed::case_2 ... ok
[INFO] [stdout] test app::model::connection::cache::tests::store_get_returns_none_for_unknown_id ... ok
[INFO] [stdout] test app::model::browse::session::tests::connection_lifecycle::mark_connecting_sets_pair_without_changing_dsn ... ok
[INFO] [stdout] test app::model::browse::session::tests::database_name_tests::none_when_no_metadata ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::stderr_as_cli_not_found::case_2 ... ok
[INFO] [stdout] test app::model::connection::error::tests::error_kind::has_non_empty_summary_and_hint::case_2 ... ok
[INFO] [stdout] test app::model::connection::error::tests::error_kind::has_non_empty_summary_and_hint::case_3 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::stderr_as_database_not_found ... ok
[INFO] [stdout] test app::model::connection::error::tests::error_kind::has_non_empty_summary_and_hint::case_4 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::stderr_as_cli_not_found::case_3 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::stderr_as_cli_not_found::case_4 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::stderr_as_timeout::case_1 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::stderr_as_timeout::case_2 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::stderr_as_unknown_fallback::case_1 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::stderr_as_unknown_fallback::case_2 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::stderr_as_unknown_fallback::case_3 ... ok
[INFO] [stdout] test app::model::connection::error::tests::error_info::delegates_summary_and_hint ... ok
[INFO] [stdout] test app::model::connection::error::tests::error_info::new_auto_classifies ... ok
[INFO] [stdout] test app::model::connection::error::tests::error_info::with_kind_uses_provided_kind ... ok
[INFO] [stdout] test app::model::connection::error::tests::error_kind::has_non_empty_summary_and_hint::case_1 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::stderr_as_host_unreachable::case_2 ... ok
[INFO] [stdout] test app::model::connection::error::tests::error_kind::has_non_empty_summary_and_hint::case_5 ... ok
[INFO] [stdout] test app::model::connection::error::tests::error_kind::has_non_empty_summary_and_hint::case_6 ... ok
[INFO] [stdout] test app::model::connection::error::tests::mask_password::info_stores_both_raw_and_masked ... ok
[INFO] [stdout] test app::model::connection::error::tests::mask_password::masks_key_value_dsn::case_1 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::stderr_as_host_unreachable::case_1 ... ok
[INFO] [stdout] test app::model::connection::error::tests::mask_password::masks_key_value_dsn::case_3 ... ok
[INFO] [stdout] test app::model::connection::error::tests::mask_password::masks_key_value_dsn::case_2 ... ok
[INFO] [stdout] test app::model::connection::error::tests::mask_password::masks_mysql_credentials::case_3 ... ok
[INFO] [stdout] test app::model::connection::error::tests::mask_password::masks_postgres_url_scheme::case_1 ... ok
[INFO] [stdout] test app::model::connection::error::tests::mask_password::masks_postgres_url_scheme::case_2 ... ok
[INFO] [stdout] test app::model::connection::error::tests::mask_password::masks_postgres_url_scheme::case_3 ... ok
[INFO] [stdout] test app::model::connection::error::tests::mask_password::passthrough_when_no_password ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::clear::resets_all_fields ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::copied_feedback::clear_expired_removes_when_expired ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::copied_feedback::clear_expired_keeps_when_not_expired ... ok
[INFO] [stdout] test app::model::connection::error::tests::mask_password::masks_postgres_url_scheme::case_4 ... ok
[INFO] [stdout] test app::model::connection::error::tests::mask_password::masks_mysql_credentials::case_1 ... ok
[INFO] [stdout] test app::model::connection::error::tests::mask_password::masks_mysql_credentials::case_2 ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::copied_feedback::hidden_after_expiry ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::copied_feedback::visible_before_expiry ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::detail_line_count::counts_lines_of_error_details ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::detail_line_count::zero_when_no_error ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::masked_details::absent_when_no_error ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::scroll::down_increments_offset ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::masked_details::masks_error_string_when_error_exists ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::scroll::down_stops_at_max ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::scroll::up_decrements_offset ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::scroll::up_stops_at_zero ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::toggle_details::flips_expanded_state ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::set_error::stores_info_and_resets_ui ... ok
[INFO] [stdout] test app::model::connection::list::tests::both_profiles_and_services_concatenated ... ok
[INFO] [stdout] test app::model::connection::list::tests::both_empty_returns_empty ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::toggle_details::resets_scroll_on_collapse ... ok
[INFO] [stdout] test app::model::connection::list::tests::only_services_no_separator ... ok
[INFO] [stdout] test app::model::connection::list::tests::only_profiles_no_separator ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::is_required_returns_correct_value::case_1 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::all_returns_fields_in_order ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::is_required_returns_correct_value::case_2 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::is_required_returns_correct_value::case_3 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::is_required_returns_correct_value::case_4 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::is_required_returns_correct_value::case_5 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::is_required_returns_correct_value::case_6 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::is_required_returns_correct_value::case_7 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::next_returns_correct_field::case_1 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::next_returns_correct_field::case_2 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::next_returns_correct_field::case_3 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::next_returns_correct_field::case_4 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::next_returns_correct_field::case_5 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::next_returns_correct_field::case_6 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::next_returns_correct_field::case_7 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::prev_returns_correct_field::case_1 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::prev_returns_correct_field::case_2 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::prev_returns_correct_field::case_3 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::prev_returns_correct_field::case_4 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::prev_returns_correct_field::case_6 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::prev_returns_correct_field::case_7 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_setup_state::clear_errors_removes_all_errors ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_setup_state::default_has_correct_values ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_setup_state::focused_input_returns_correct_field ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_setup_state::focused_input_returns_none_for_ssl ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_setup_state::has_errors_returns_false_when_empty ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_setup_state::from_profile_populates_all_fields ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_field::prev_returns_correct_field::case_5 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_setup_state::has_errors_returns_true_when_errors_exist ... ok
[INFO] [stdout] test app::model::connection::state::tests::predicates_match_expected_flags::case_2 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_setup_state::default_name_with_database ... ok
[INFO] [stdout] test app::model::er_state::tests::is_complete::pending_tables_returns_false ... ok
[INFO] [stdout] test app::model::connection::state::tests::default_returns_not_connected ... ok
[INFO] [stdout] test app::model::er_state::tests::on_table_cached::removes_from_pending ... ok
[INFO] [stdout] test app::model::er_state::tests::on_table_cached::removes_from_fetching ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_setup_state::default_name_without_database ... ok
[INFO] [stdout] test app::model::er_state::tests::on_table_failed::moves_from_fetching_to_failed ... ok
[INFO] [stdout] test app::model::connection::state::tests::predicates_match_expected_flags::case_1 ... ok
[INFO] [stdout] test app::model::connection::state::tests::predicates_match_expected_flags::case_3 ... ok
[INFO] [stdout] test app::model::er_state::tests::is_complete::empty_state_returns_true ... ok
[INFO] [stdout] test app::model::connection::state::tests::predicates_match_expected_flags::case_4 ... ok
[INFO] [stdout] test app::model::explain_context::tests::modal_inner_height_uses_shared_visible_rows_contract ... ok
[INFO] [stdout] test app::model::explain_context::tests::second_explain_auto_advances_right_to_left ... ok
[INFO] [stdout] test app::model::explain_context::tests::reset_preserves_compare_state_and_history ... ok
[INFO] [stdout] test app::model::er_state::tests::is_complete::fetching_tables_returns_false ... ok
[INFO] [stdout] test app::model::explain_context::tests::set_error_does_not_affect_compare_slots ... ok
[INFO] [stdout] test app::model::explain_context::tests::set_plan_stores_query_snippet_first_line_only ... ok
[INFO] [stdout] test app::model::er_state::tests::reset::clears_all_state ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_setup_state::is_edit_mode_returns_true_for_edit ... ok
[INFO] [stdout] test app::model::er_state::tests::retry_failed::moves_failed_to_pending ... ok
[INFO] [stdout] test app::model::er_state::tests::waiting_resolution::skip_only_completion_becomes_ready ... ok
[INFO] [stdout] test app::model::er_state::tests::waiting_resolution::skip_with_prior_failures_still_complete ... ok
[INFO] [stdout] test app::model::explain_context::tests::default_has_no_content ... ok
[INFO] [stdout] test app::model::explain_context::tests::history_stores_all_explains ... ok
[INFO] [stdout] test app::model::explain_context::tests::first_explain_sets_right_only ... ok
[INFO] [stdout] test app::model::explain_context::tests::line_count_with_error ... ok
[INFO] [stdout] test app::model::explain_context::tests::history_truncates_at_max ... ok
[INFO] [stdout] test app::model::explain_context::tests::line_count_with_plan ... ok
[INFO] [stdout] test app::model::runtime_state::tests::default_creates_empty_runtime_state ... ok
[INFO] [stdout] test app::model::runtime_state::tests::new_creates_runtime_state_with_project_name ... ok
[INFO] [stdout] test app::model::shared::flash_timer::tests::clear_expired_removes_only_expired ... ok
[INFO] [stdout] test app::model::shared::flash_timer::tests::clear_removes_timer ... ok
[INFO] [stdout] test app::model::shared::flash_timer::tests::earliest_deadline_empty_returns_none ... ok
[INFO] [stdout] test app::model::shared::flash_timer::tests::earliest_deadline_returns_min ... ok
[INFO] [stdout] test app::model::shared::flash_timer::tests::expires_after_duration ... ok
[INFO] [stdout] test app::model::shared::focused_pane::tests::default_is_explorer ... ok
[INFO] [stdout] test app::model::shared::flash_timer::tests::set_and_is_active ... ok
[INFO] [stdout] test app::model::shared::focused_pane::tests::from_browse_key_returns_correct_pane::case_1 ... ok
[INFO] [stdout] test app::model::shared::focused_pane::tests::from_browse_key_returns_correct_pane::case_3 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_setup_state::is_edit_mode_returns_false_for_new ... ok
[INFO] [stdout] test app::model::shared::focused_pane::tests::from_browse_key_returns_none_for_invalid::case_1 ... ok
[INFO] [stdout] test app::model::shared::focused_pane::tests::from_browse_key_returns_none_for_invalid::case_2 ... ok
[INFO] [stdout] test app::model::shared::focused_pane::tests::from_browse_key_returns_none_for_invalid::case_3 ... ok
[INFO] [stdout] test app::model::shared::inspector_tab::tests::default_returns_info ... ok
[INFO] [stdout] test app::model::shared::inspector_tab::tests::next_cycles_through_all_tabs ... ok
[INFO] [stdout] test app::model::shared::inspector_tab::tests::next_wraps_from_last_to_first ... ok
[INFO] [stdout] test app::model::shared::inspector_tab::tests::prev_cycles_through_all_tabs_backward ... ok
[INFO] [stdout] test app::model::shared::inspector_tab::tests::prev_wraps_from_first_to_last ... ok
[INFO] [stdout] test app::model::shared::key_sequence::tests::g_prefix_is_reported_as_pending ... ok
[INFO] [stdout] test app::model::shared::key_sequence::tests::idle_by_default ... ok
[INFO] [stdout] test app::model::shared::key_sequence::tests::pending_prefix_returns_none_for_idle ... ok
[INFO] [stdout] test app::model::shared::key_sequence::tests::pending_prefix_returns_some_for_waiting ... ok
[INFO] [stdout] test app::model::shared::message::tests::clear_expired_at_keeps_unexpired_messages ... ok
[INFO] [stdout] test app::model::shared::message::tests::clear_expired_at_removes_expired_messages ... ok
[INFO] [stdout] test app::model::shared::message::tests::set_error_clears_success_message ... ok
[INFO] [stdout] test app::model::shared::message::tests::clear_removes_all_messages ... ok
[INFO] [stdout] test app::model::shared::focused_pane::tests::from_browse_key_returns_correct_pane::case_2 ... ok
[INFO] [stdout] test app::model::shared::message::tests::set_error_sets_expiration_time ... ok
[INFO] [stdout] test app::model::shared::message::tests::set_success_clears_error_message ... ok
[INFO] [stdout] test app::model::shared::modal::tests::default_mode_is_normal ... ok
[INFO] [stdout] test app::model::shared::modal::tests::is_modal_active_for_various_modes ... ok
[INFO] [stdout] test app::model::shared::modal::tests::nested_push_pop ... ok
[INFO] [stdout] test app::model::shared::modal::tests::pop_mode_override_ignores_stack ... ok
[INFO] [stdout] test app::model::shared::modal::tests::push_from_non_normal_preserves_origin ... ok
[INFO] [stdout] test app::model::shared::modal::tests::pop_on_empty_stack_returns_normal ... ok
[INFO] [stdout] test app::model::shared::modal::tests::replace_mode_keeps_stack ... ok
[INFO] [stdout] test app::model::shared::modal::tests::push_pop_preserves_return_mode ... ok
[INFO] [stdout] test app::model::shared::modal::tests::return_destination_shows_last_pushed ... ok
[INFO] [stdout] test app::model::shared::modal::tests::return_destination_with_empty_stack ... ok
[INFO] [stdout] test app::model::shared::modal::tests::set_mode_changes_mode_and_clears_stack ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::byte_index::multibyte_returns_correct_byte_indices ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::byte_index::ascii_returns_same_index ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::byte_index::past_end_returns_content_byte_len ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::content_management::clear_resets_all_fields ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::content_management::set_content_resets_scroll_and_sets_cursor_to_end ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::cursor_to_position::newline_boundary::consecutive_newlines_returns_middle_row ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::cursor_to_position::newline_boundary::cursor_before_newline_returns_end_of_current_line ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::cursor_to_position::newline_boundary::cursor_after_newline_returns_start_of_next_line ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::cursor_to_position::position::empty_string_returns_origin ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::cursor_to_position::newline_boundary::trailing_newline_returns_next_row_origin ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::cursor_to_position::position::multibyte_returns_correct_row_and_col::case_1 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::cursor_to_position::position::multibyte_returns_correct_row_and_col::case_2 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::cursor_to_position::position::multibyte_returns_correct_row_and_col::case_3 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::cursor_to_position::position::single_line_returns_correct_col ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::cursor_to_position::position::multiline_returns_correct_row_and_col ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::edit::delete_at_newline_joins_adjacent_lines ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::edit::backspace_at_newline_joins_adjacent_lines ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::edit::insert_tab_adds_four_spaces ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::buffer_navigation::end_returns_last_position ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::buffer_navigation::first_line_clamps_to_line_length ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::buffer_navigation::first_line_preserves_column ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::edit::clears_preferred_column ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::buffer_navigation::preferred_column_restored_short_to_long_line ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::horizontal::left_right_moves_cursor_by_one ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::buffer_navigation::last_line_preserves_column ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::horizontal::right_at_end_returns_unchanged ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::buffer_navigation::preferred_column_restored_long_to_short_line ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::line_boundary::empty_line_returns_same_position::case_3 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::line_boundary::empty_line_returns_same_position::case_4 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::horizontal::left_at_start_returns_zero ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::line_boundary::first_line_end_returns_line_length::case_1 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::buffer_navigation::start_returns_position_zero ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::edit::insert_newline_splits_content ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::buffer_navigation::last_line_clamps_to_line_length ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::line_boundary::empty_line_returns_same_position::case_1 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::content_management::set_content_with_cursor_sets_exact_position ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::line_boundary::empty_line_returns_same_position::case_2 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::content_management::set_content_with_cursor_clamps_past_end ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::line_boundary::first_line_start_returns_zero::case_1 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::line_boundary::first_line_start_returns_zero::case_2 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::line_boundary::multibyte_returns_line_boundaries::case_1 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::line_boundary::multibyte_returns_line_boundaries::case_2 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::line_boundary::first_line_end_returns_line_length::case_2 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::line_boundary::multibyte_returns_line_boundaries::case_4 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::line_boundary::multibyte_returns_line_boundaries::case_3 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::line_boundary::returns_current_line_start::case_1 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::line_boundary::returns_current_line_end::case_1 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::vertical::down_from_first_line_returns_same_col_in_second ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::vertical::down_from_last_line_returns_unchanged ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::vertical::down_clamps_col_to_shorter_line_length ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::line_boundary::returns_current_line_end::case_2 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::line_boundary::returns_current_line_start::case_2 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::vertical::down_to_empty_trailing_line_returns_next_row_origin ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::vertical::multibyte_up_down_preserves_col ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::vertical::up_clamps_col_to_shorter_line_length ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::vertical::up_from_empty_trailing_line_returns_prev_line_origin ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::vertical::up_from_first_line_returns_unchanged ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::vertical::up_from_second_line_returns_same_col_in_first ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::vertical::up_through_empty_line_restores_preferred_column ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::word::backward_at_start_returns_unchanged ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::word::backward_crosses_punctuation_boundary ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::word::backward_crosses_whitespace_and_newline ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::word::backward_moves_to_start_of_current_word ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::word::forward_crosses_punctuation_boundary ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::word::forward_crosses_whitespace_and_newline ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::word::forward_moves_to_start_of_next_word ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::word::forward_at_end_returns_unchanged ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::scroll::below_viewport_advances ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::scroll::above_viewport_retreats ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor::word::forward_treats_cjk_as_keyword_word ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::viewport_position::bottom_preserves_column ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::scroll::within_viewport_returns_unchanged ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::viewport_position::middle_preserves_column ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::viewport_position::top_preserves_column ... ok
[INFO] [stdout] test app::model::shared::picker::tests::reset::clears_selected_and_scroll_offset ... ok
[INFO] [stdout] test app::model::shared::picker::tests::set_selection::clamp_scroll_offset_cases::case_1 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::scroll::zero_visible_rows_returns_unchanged ... ok
[INFO] [stdout] test app::model::shared::picker::tests::set_selection::clamp_scroll_offset_cases::case_2 ... ok
[INFO] [stdout] test app::model::shared::picker::tests::set_selection::clamp_scroll_offset_cases::case_3 ... ok
[INFO] [stdout] test app::model::shared::picker::tests::set_selection::clamp_scroll_offset_cases::case_4 ... ok
[INFO] [stdout] test app::model::shared::picker::tests::set_selection::clamp_scroll_offset_cases::case_5 ... ok
[INFO] [stdout] test app::model::shared::picker::tests::set_selection::sets_selected_index ... ok
[INFO] [stdout] test app::model::shared::picker::tests::set_selection::scroll_offset_stays_zero_when_within_viewport ... ok
[INFO] [stdout] test app::model::shared::picker::tests::set_selection::clamp_scroll_offset_zero_viewport_returns_zero ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::backspace_tests::on_empty_string ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::char_count_tests::ascii_string ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::char_count_tests::empty_string_has_zero_chars ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::char_count_tests::mixed_ascii_and_multibyte ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::char_count_tests::multibyte_string ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::constructor_tests::new_accepts_valid_cursor ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::constructor_tests::new_clamps_cursor_to_char_count ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::constructor_tests::set_cursor_clamps_and_resets_viewport ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::constructor_tests::set_cursor_valid_position ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::constructor_tests::with_viewport_clamps_cursor ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::delete_tests::at_beginning ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::delete_tests::at_end_is_noop ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::delete_tests::at_middle ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::backspace_tests::at_start_is_noop ... ok
[INFO] [stdout] test app::model::shared::picker::tests::set_selection::scroll_offset_advances_when_selection_falls_below_viewport ... ok
[INFO] [stdout] test app::model::shared::picker::tests::visible_items::matches_pane_height ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::insert_char_tests::insert_at_middle ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::insert_char_tests::insert_multibyte ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::insert_str_tests::inserts_at_beginning ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::insert_str_tests::inserts_at_middle ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::insert_char_tests::insert_at_end ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::backspace_tests::multibyte ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::insert_str_tests::inserts_multibyte ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::move_down_is_noop ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::move_end ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::move_home ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::delete_tests::multibyte ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::delete_tests::on_empty_string ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::insert_char_tests::insert_at_beginning ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::move_last_line_moves_to_end ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::insert_char_tests::insert_at_empty ... ok
[INFO] [stdout] test app::model::shared::picker::tests::visible_items::zero_pane_height_returns_zero ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::move_left ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::move_left_at_start_stays ... ok
[INFO] [stdout] test app::model::shared::picker::tests::set_selection::scroll_offset_retreats_when_selection_rises_above_viewport ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::move_right ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::move_right_at_end_stays ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::word_backward_boundaries::case_1 ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::word_backward_boundaries::case_2 ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::move_up_is_noop ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::word_backward_boundaries::case_3 ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::word_backward_boundaries::case_4 ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::word_backward_boundaries::case_5 ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::word_forward_boundaries::case_2 ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::set_content_and_clear::clear_resets_all ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::backspace_tests::at_end ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::backspace_tests::at_middle ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::word_forward_boundaries::case_3 ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::word_forward_boundaries::case_4 ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::word_forward_boundaries::case_1 ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::move_cursor_tests::word_forward_boundaries::case_5 ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::set_content_and_clear::set_content_multibyte ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::set_content_and_clear::set_content_sets_cursor_to_end ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::viewport_tests::cursor_before_viewport_scrolls_left ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::viewport_tests::cursor_at_end_reserves_space_for_block_cursor ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::viewport_tests::cursor_on_last_char_no_extra_reserve ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::focus_mode::toggle_focus_enters_focus_mode ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::viewport_tests::zero_visible_width ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::focus_mode::toggle_focus_exits_focus_mode_and_restores_pane ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::help_scroll::help_max_scroll_is_zero_when_terminal_very_tall ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::help_scroll::help_max_scroll_plus_viewport_equals_content_line_count ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::horizontal_scroll_helpers::inner_width_excludes_list_chrome_from_visible_content_width ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::horizontal_scroll_helpers::double_width_characters_count_as_two_columns ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::horizontal_scroll_helpers::larger_content_preserves_remaining_scrollable_range ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::horizontal_scroll_helpers::pane_width_excludes_panel_chrome_from_visible_content_width ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::invariants::result_overhead_constants_are_consistent ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::horizontal_scroll_helpers::tiny_pane_width_returns_zero_visible_content_width ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::viewport_tests::cursor_past_right_edge_scrolls ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::list_selection::set_explorer_selection_with_none_resets_to_zero ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::list_selection::set_connection_list_selection_with_none_resets_to_zero ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::help_scroll::help_visible_rows_matches_modal_layout_height ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::constructors::new_sets_terminal_height ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::viewport_tests::cursor_within_viewport_no_change ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::horizontal_scroll_helpers::fitting_content_returns_zero_max_offset ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::pane_metrics::default_result_pane_height_returns_zero_visible_rows ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::pane_metrics::result_pane_height_calculates_correct_visible_rows::case_1 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::constructors::default_creates_empty_state ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::pane_metrics::ddl_visible_rows_equals_height_minus_three::case_2 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::pane_metrics::result_pane_height_calculates_correct_visible_rows::case_2 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::pane_metrics::result_pane_height_calculates_correct_visible_rows::case_3 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::pane_metrics::ddl_visible_rows_equals_height_minus_three::case_3 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::pane_metrics::result_pane_height_calculates_correct_visible_rows::case_4 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::pane_metrics::ddl_visible_rows_is_greater_than_standard ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::list_selection::set_explorer_selection_with_some_sets_index ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::pane_metrics::scroll_can_reach_all_rows::case_4 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::pane_metrics::small_result_pane_height_does_not_underflow ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::accessors_hide_inconsistent_state ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::clamp_caps_cell_to_max_cols ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::clamp_preserves_valid_selection ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::clamp_resets_when_row_out_of_bounds ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::pane_metrics::scroll_can_reach_all_rows::case_1 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::clamp_resets_when_zero_rows ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::clamp_resets_when_zero_cols ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::set_content_and_clear::set_content_resets_viewport ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::pane_metrics::scroll_can_reach_all_rows::case_3 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::pane_metrics::ddl_visible_rows_equals_height_minus_three::case_1 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::pane_metrics::scroll_can_reach_all_rows::case_2 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::list_selection::set_connection_list_selection_with_some_sets_index ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::default_is_scroll_mode ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::enter_cell_replaces_previous_selection ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::enter_cell_transitions_to_cell_active ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::move_cell_updates_column_when_active ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::move_cell_without_selection_is_noop ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::move_row_in_scroll_mode_is_noop ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::move_row_preserves_cell ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::reset_clears_both ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::bonus_column::adds_bonus_when_slack_sufficient ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::bonus_column::no_bonus_at_last_column ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::bonus_column::no_bonus_when_max_offset_zero ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::bonus_column::no_bonus_when_slack_insufficient ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::bonus_column::one_scroll_still_changes_one_column_with_bonus ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::bonus_column::total_width_within_available ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::column_count::at_least_one_column ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::column_count::empty_input_returns_zero ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::column_count::falls_back_to_min_when_ideal_too_wide ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::column_count::handles_varying_widths ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::column_count::reduces_count_when_long_column_in_middle ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::column_count::scroll_enabled_when_ideal_exceeds_available ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::column_count::uses_ideal_widths_primarily ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::header_min_width::columns_never_shrink_below_header_min_width ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::header_min_width::headers_never_truncated_at_any_offset ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::header_min_width::large_min_widths_respected_under_pressure ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::integration::column_count_at_least_fixed_during_scroll ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::integration::headers_never_truncated_throughout_scroll ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::integration::realistic_result_pane_scenario ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::integration::right_edge_preserves_rightmost_column_width ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::integration::slack_absorbed_when_no_scroll_needed ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::max_offset::all_fit ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::max_offset::basic ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::max_offset::more_viewport_than_columns ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::next_prev_offset::next_clamps_to_max ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::next_prev_offset::prev_clamps_to_zero ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::next_prev_offset::prev_decrements ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::right_edge::drops_leftmost_when_shrinking_not_enough ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::right_edge::rightmost_column_not_truncated_at_right_edge ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::right_edge::left_columns_shrink_first_at_right_edge ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::select_dynamic::at_least_one ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::scroll_behavior::one_scroll_changes_first_column_by_one ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::select_dynamic::offset_selects_columns ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::select_dynamic::shrinks_rightmost ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::select_fixed::exact_count ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::select_fixed::offset_selects_fixed_columns ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::select_fixed::one_column_scroll_changes_one_column ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::select_fixed::respects_boundary ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::scroll_behavior::scroll_preserves_minimum_column_count ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::select_fixed::shrinks_from_left_at_right_edge ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::slack_absorption::one_scroll_still_changes_one_column_with_slack_none ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::slack_absorption::viewport_plan_sets_policy_based_on_max_offset ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::select_fixed::shrinks_to_fit_from_right ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::total_width::multiple_columns_includes_separators ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::slack_absorption::absorbs_slack_when_max_offset_zero ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::total_width::empty_widths_return_zero ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::total_width::single_column_no_separator ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::viewport_plan::calculate_returns_valid_plan ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::viewport_plan::default_plan_needs_recalculation ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::viewport_plan::different_max_triggers_recalculation ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::viewport_plan::recalculates_when_inputs_change::case_1 ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::viewport_plan::recalculates_when_inputs_change::case_2 ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::slack_absorption::no_absorption_when_policy_none ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::viewport_plan::recalculates_when_inputs_change::case_3 ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::slack_absorption::absorbs_all_slack_without_limit ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::viewport_plan::recalculates_when_inputs_change::case_6 ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::viewport_plan::same_sum_and_max_skips_recalculation ... ok
[INFO] [stdout] test app::model::sql_editor::completion::tests::recent_columns_vec_returns_clone ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::viewport_plan::recalculates_when_inputs_change::case_4 ... ok
[INFO] [stdout] test app::model::sql_editor::modal::tests::clear_content_resets_editor_state ... ok
[INFO] [stdout] test app::model::sql_editor::modal::tests::confirming_high_with_target_name ... ok
[INFO] [stdout] test app::model::sql_editor::modal::tests::confirming_high_without_target_name ... ok
[INFO] [stdout] test app::model::sql_editor::modal::tests::visible_rows_uses_fallback_when_terminal_height_is_zero ... ok
[INFO] [stdout] test app::model::sql_editor::modal::tests::default_creates_empty_context ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::clamped_selected_preserves_valid_selection ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::clamped_selected_with_empty_entries ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::viewport_plan::recalculates_when_inputs_change::case_5 ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::empty_filter_returns_all_entries_in_reverse_order ... ok
[INFO] [stdout] test app::model::sql_editor::modal::tests::reset_prefetch_clears_all_prefetch_state ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::grouping::clamped_selected_uses_grouped_count ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::grouping::confirm_gets_representative_entry ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::filter_is_case_insensitive ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::grouping::filter_removes_separator_merging_groups ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::next_prev_offset::next_increments ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::select_fixed::shrinks_multiple_columns ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::fuzzy_filter_matches_partial_query ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::select_dynamic::basic_fit ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::grouping::grouped_count_reflects_groups ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::grouping::filter_preserves_non_consecutive_groups ... ok
[INFO] [stdout] test app::model::sql_editor::modal::tests::visible_rows_clamps_to_one_for_small_terminal ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::clamped_selected_clamps_to_last_index ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::grouping::mixed_consecutive_and_unique ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::grouping::non_consecutive_same_query_stays_separate ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::reset_clears_all_state ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::no_matches_returns_empty ... ok
[INFO] [stdout] test app::policy::json::json_diff::tests::array_element_added_returns_added_lines ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::grouping::three_consecutive_identical_entries_become_one_group ... ok
[INFO] [stdout] test app::policy::json::json_diff::tests::change_at_end_returns_no_trailing_ellipsis ... ok
[INFO] [stdout] test app::policy::json::json_diff::tests::array_element_removed_returns_removed_lines ... ok
[INFO] [stdout] test app::policy::json::json_diff::tests::identical_json_returns_none ... ok
[INFO] [stdout] test app::policy::json::json_diff::tests::change_at_start_returns_no_leading_ellipsis ... ok
[INFO] [stdout] test app::policy::json::json_diff::tests::non_json_returns_none ... ok
[INFO] [stdout] test app::policy::json::json_diff::tests::multiple_hunks_merge_when_close ... ok
[INFO] [stdout] test app::policy::json::json_diff::tests::asymmetric_large_diff_still_returns_structured_diff ... ok
[INFO] [stdout] test app::policy::json::json_diff::tests::oversized_lcs_table_returns_none ... ok
[INFO] [stdout] test app::policy::json::json_diff::tests::context_zero_returns_only_changes_and_ellipsis ... ok
[INFO] [stdout] test app::policy::json::json_diff::tests::nested_change_collapses_unchanged ... ok
[INFO] [stdout] test app::policy::json::json_diff::tests::single_value_change_returns_diff_with_context ... ok
[INFO] [stdout] test app::policy::json::tests::find_matches_tests::collapsed_children_returns_no_matches ... ok
[INFO] [stdout] test app::policy::json::tests::find_matches_tests::empty_query_returns_no_matches ... ok
[INFO] [stdout] test app::policy::json::tests::find_matches_tests::key_search_returns_case_insensitive_match ... ok
[INFO] [stdout] test app::cmd::er::task::tests::spawn_er_diagram_task::panic_sends_failed_action ... ok
[INFO] [stdout] test app::policy::json::tests::find_matches_tests::number_value_search_returns_match ... ok
[INFO] [stdout] test app::policy::json::tests::find_matches_tests::string_value_search_returns_match ... ok
[INFO] [stdout] test app::policy::json::tests::parse_json_tree_tests::array_items_returns_array_item_type ... ok
[INFO] [stdout] test app::policy::json::tests::parse_json_tree_tests::empty_object_returns_open_close ... ok
[INFO] [stdout] test app::policy::json::tests::parse_json_tree_tests::deeply_nested_json_returns_correct_depth ... ok
[INFO] [stdout] test app::policy::json::tests::parse_json_tree_tests::malformed_json_returns_error ... ok
[INFO] [stdout] test app::policy::json::tests::parse_json_tree_tests::empty_string_returns_error ... ok
[INFO] [stdout] test app::policy::json::tests::parse_json_tree_tests::nested_object_returns_correct_depth ... ok
[INFO] [stdout] test app::policy::json::tests::parse_json_tree_tests::key_value_pairs_returns_keys ... ok
[INFO] [stdout] test app::policy::json::tests::parse_json_tree_tests::scalar_bool_returns_single_line ... ok
[INFO] [stdout] test app::policy::json::tests::parse_json_tree_tests::scalar_number_returns_single_line ... ok
[INFO] [stdout] test app::policy::json::tests::parse_json_tree_tests::scalar_null_returns_single_line ... ok
[INFO] [stdout] test app::policy::json::tests::visible_line_indices_tests::collapsed_array_returns_only_opener ... ok
[INFO] [stdout] test app::policy::json::tests::visible_line_indices_tests::collapsed_object_returns_visible_lines_without_children ... ok
[INFO] [stdout] test app::policy::json::tests::visible_line_indices_tests::collapsed_root_returns_only_root_line ... ok
[INFO] [stdout] test app::policy::json::tests::parse_json_tree_tests::scalar_string_returns_single_line ... ok
[INFO] [stdout] test app::policy::json::tests::visible_line_indices_tests::empty_tree_returns_empty_indices ... ok
[INFO] [stdout] test app::policy::json::tests::visible_line_indices_tests::uncollapsed_tree_returns_all_lines ... ok
[INFO] [stdout] test app::policy::json::tests::parse_json_tree_tests::object_open_returns_correct_child_count ... ok
[INFO] [stdout] test app::policy::json::tests::parse_json_tree_tests::empty_array_returns_open_close ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::build_context::full_query_returns_complete_context ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::comments::block_comment_returns_comment_token ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::comments::keyword_in_block_comment_returns_only_outer_keyword ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::cte_definitions::multiple_ctes_returns_all_definitions ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::comments::line_comment_returns_comment_token ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::cte_definitions::recursive_cte_returns_definition ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::cursor_context::cursor_in_line_comment_returns_true ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::cursor_context::cursor_in_normal_context_returns_false ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::cte_definitions::simple_cte_returns_definition ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::string_literals::dollar_quoted_string_returns_string_literal ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::cursor_context::cursor_in_string_returns_true ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::cursor_context::cursor_after_closed_string_returns_false ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::string_literals::keyword_in_dollar_quote_returns_only_outer_keyword ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::string_literals::escape_string_returns_string_literal ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::string_literals::keyword_in_string_returns_only_outer_keyword ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::string_literals::escaped_single_quote_returns_single_literal ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::string_literals::single_quoted_string_returns_string_literal ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::string_literals::tagged_dollar_quote_returns_string_literal ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::comments::keyword_in_line_comment_returns_only_outer_keyword ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::cte_definitions::no_cte_returns_empty ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::table_references::from_with_alias_returns_alias ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::table_references::from_with_as_keyword_returns_alias ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::table_references::join_returns_multiple_references ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::table_references::left_join_returns_reference ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::table_references::simple_from_returns_single_reference ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::basic_extraction::extracts_target_table::case_1 ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::table_references::schema_qualified_table_returns_schema ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::table_references::multiple_joins_returns_all_references ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::basic_extraction::mutation_table_in_references::case_2 ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::locking_clauses::for_no_key_update_is_not_target ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::locking_clauses::for_no_key_update_not_in_references ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::basic_extraction::extracts_target_table::case_3 ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::locking_clauses::for_update_is_not_target ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::locking_clauses::multi_statement_for_update_then_update_extracts_both_tables ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::locking_clauses::multi_statement_for_no_key_update_then_update_extracts_both_tables ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::basic_extraction::extracts_target_table::case_2 ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::basic_extraction::extracts_target_table::case_4 ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::locking_clauses::multi_statement_for_share_then_update_extracts_both_tables ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::multi_statement_cursor::cursor_at_end_of_second_update ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::locking_clauses::for_update_not_in_references ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::basic_extraction::mutation_table_in_references::case_1 ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::cursor_context::cursor_in_block_comment_returns_true ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::multi_statement_cursor::cursor_in_first_update ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::multi_statement_cursor::cursor_in_second_update ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::multi_statement_cursor::select_then_update_cursor_in_select ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::multi_statement_cursor::three_statements_cursor_in_last ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::multi_statement_cursor::select_then_update_cursor_in_update ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::table_reference_edge_cases::delete_from_only_target_table ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::table_reference_edge_cases::insert_into_only_target_table ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::multi_statement_cursor::three_statements_cursor_in_middle ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::table_reference_edge_cases::delete_from_only_skips_only_keyword ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::table_reference_edge_cases::select_from_only_skips_only_keyword ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::table_reference_edge_cases::update_only_skips_only_keyword ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::table_reference_edge_cases::select_into_not_in_references ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::tokenization::cast_operator_returns_operator_token ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::table_reference_edge_cases::update_only_target_table ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::tokenization::array_access_returns_punctuation_tokens ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::tokenization::simple_select_extracts_keywords ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::table_reference_edge_cases::insert_into_only_skips_only_keyword ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::table_reference_edge_cases::with_clause_update_extracts_target ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::cte_dml::case_1_cte_update ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::cte_dml::case_2_cte_delete ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::ddl::case_1_create_table ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::cte_dml::case_3_cte_delete_where ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::ddl::case_2_alter_table ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::ddl::case_3_drop_table ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::ddl::case_4_truncate ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::dml::case_2_update_no_where ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::dml::case_3_update_with_where ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::dml::case_5_delete_with_where ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::dml::case_4_delete_no_where ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_01_string_literal_keyword ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_02_double_quoted_keyword ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::dml::case_1_plain_insert ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_03_dollar_quoted_keyword ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_04_mixed_case ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_05_leading_comment ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_06_leading_block_comment ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_07_multiple_statements ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_08_trailing_semicolon ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_09_trailing_semicolon_whitespace ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_10_where_in_subquery ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_11_where_in_string_not_real ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_12_where_in_dollar_quote ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_13_tagged_dollar_quote_keyword ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_14_semicolon_inside_string ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_15_semicolon_in_dollar_quote ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_16_non_ascii_identifier ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_17_non_ascii_literal ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_18_unterminated_dollar_quote ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_19_nested_block_comment ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_20_identifier_contains_keyword ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_21_table_name_contains_keyword ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_22_double_quoted_escaped ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_23_cte_with_update_in_subquery ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_24_select_with_parenthesized_expr ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_25_delete_then_select ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_26_select_then_select ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_28_select_into_columns ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::explain_analyze_dml::case_1_explain_analyze_update ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::explain_analyze_dml::case_2_explain_analyze_update_where ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::explain_analyze_dml::case_3_explain_analyze_delete ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::explain_analyze_dml::case_4_explain_analyze_insert ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::explain_analyze_dml::case_6_explain_paren_analyze_verbose_delete ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::edge_cases::case_27_select_into ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::other::case_1_empty ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::other::case_2_whitespace_only ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::other::case_4_block_comment_only ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::select_variants::case_02_lowercase_select ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::select_variants::case_03_cte_select ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::select_variants::case_04_recursive_cte_select ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::select_variants::case_07_explain_analyze_select ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::select_variants::case_08_explain_verbose_select ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::select_variants::case_09_explain_costs_off ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::other::case_3_comment_only ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::select_variants::case_05_multiple_ctes_select ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::select_variants::case_06_explain_select ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::select_variants::case_10_explain_update ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::select_variants::case_11_explain_delete ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::select_variants::case_12_explain_merge ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::select_variants::case_13_explain_paren_analyze_select ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::select_variants::case_14_show ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::select_variants::case_15_show_all ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::transaction::case_1_begin ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::transaction::case_2_commit ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::transaction::case_3_rollback ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::transaction::case_4_savepoint ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::transaction::case_5_start_transaction ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::transaction::case_6_rollback_to_savepoint ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::transaction::case_7_release_savepoint ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::unsupported::case_1_grant ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::unsupported::case_2_revoke ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::unsupported::case_3_copy ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::unsupported::case_6_merge ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::unsupported::case_4_do_block ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_02_truncate_only ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::unsupported::case_5_call ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_03_delete_quoted ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_01_truncate_schema ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_05_drop_index ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_04_update_quoted_schema ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_07_drop_index_concurrently ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_09_drop_policy ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_08_drop_index_concurrently_if_exists ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_11_drop_schema ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_13_drop_materialized_view ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_10_drop_policy_if_exists ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_14_drop_type ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_18_drop_extension ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_17_drop_trigger ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_12_drop_view ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_19_drop_rule ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_20_drop_domain ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_21_drop_schema_qualified ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_23_drop_role ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_22_drop_database ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_26_drop_foreign_table ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_28_drop_aggregate ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_31_drop_conversion ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_29_drop_procedure ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_32_drop_server ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_33_drop_subscription ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_34_drop_statistics ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_30_drop_collation ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_36_drop_procedure_multiple ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_27_drop_foreign_table_if_exists ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_37_drop_materialized_invalid ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_38_drop_foreign_invalid ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_39_drop_owned_by ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_24_drop_tablespace ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_35_drop_function_multiple ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_25_drop_publication ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_40_drop_cast ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_41_drop_multiple ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_43_truncate_multiple ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_42_drop_multiple_index ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::delete::case_3_schema_qualified ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::delete::case_2_with_only ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::drop_table::case_1_simple ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::drop_table::case_3_schema_qualified ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::drop_table::case_2_if_exists ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::drop_table::case_5_quoted_schema ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::not_applicable::case_2_insert ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::not_applicable::case_1_select ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::not_applicable::case_4_alter ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::not_applicable::case_3_create ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::not_applicable::case_5_transaction ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::not_applicable::case_6_other ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_06_drop_index_if_exists ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::truncate::case_2_with_table_keyword ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::truncate::case_1_simple ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::truncate::case_3_multiple ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::drop_table::case_4_quoted ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::update::case_1_simple ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_multi_statement_tests::drop_owned_by_returns_low_immediate ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::update::case_3_schema_qualified ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_multi_statement_tests::copy_unsupported_low_immediate ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::update::case_2_with_only ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_multi_statement_tests::empty_input_blocked ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_multi_statement_tests::drop_index_returns_low_immediate ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_multi_statement_tests::do_block_unsupported_low_immediate ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_multi_statement_tests::insert_then_select_returns_immediate ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_multi_statement_tests::risk_aggregation_select_insert ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_multi_statement_tests::multiple_high_uses_first_target ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_multi_statement_tests::select_into_returns_low_immediate ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_multi_statement_tests::risk_aggregation_select_update_where ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_multi_statement_tests::single_drop_passthrough ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_multi_statement_tests::single_select_passthrough ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_multi_statement_tests::single_insert_passthrough ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_multi_statement_tests::tcl_only_multi_returns_immediate ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::drop_database_returns_high_table_name_input ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::drop_table_with_leading_comment_returns_high ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::high_table_name_input::case_1_update_no_where ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::high_table_name_input::case_3_drop ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::low_risk_returns_immediate::case_1_select ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::low_risk_returns_immediate::case_2_transaction ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::high_table_name_input::case_2_delete_no_where ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::low_risk_returns_immediate::case_3_insert ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::low_risk_returns_immediate::case_4_create ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::low_risk_returns_immediate::case_5_unsupported ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::low_risk_returns_immediate::case_6_other ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::medium_risk_returns_immediate::case_3_alter ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::non_table_drop_returns_low_immediate::case_1_drop_index ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::medium_risk_returns_immediate::case_2_delete_where ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::non_table_drop_returns_low_immediate::case_2_drop_policy ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::medium_risk_returns_immediate::case_1_update_where ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::non_table_drop_returns_low_immediate::case_5_drop_owned_by ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::non_table_drop_returns_low_immediate::case_4_drop_schema ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::non_table_drop_returns_low_immediate::case_3_drop_view ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::non_table_drop_returns_low_immediate::case_6_drop_tablespace ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::split_statements_tests::basic_split::case_1_single ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::split_statements_tests::basic_split::case_2_two ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::split_statements_tests::basic_split::case_5_whitespace_only ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::split_statements_tests::basic_split::case_4_empty ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::split_statements_tests::comment_only_input ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::split_statements_tests::basic_split::case_3_trailing_semicolon ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::split_statements_tests::do_block_split ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::split_statements_tests::non_ascii_before_semicolon ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::split_statements_tests::escaped_quote_no_split ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::split_statements_tests::semicolon_in_comments::case_1_line_comment ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::split_statements_tests::semicolon_in_strings::case_2_double_quote ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::split_statements_tests::semicolon_in_comments::case_2_block_comment ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::split_statements_tests::semicolon_in_strings::case_3_dollar_quote ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::split_statements_tests::semicolon_in_strings::case_4_tagged_dollar_quote ... ok
[INFO] [stdout] test app::policy::write::write_guardrails::tests::adhoc_risk::risk_level_and_label::case_01 ... ok
[INFO] [stdout] test app::policy::write::write_guardrails::tests::adhoc_risk::risk_level_and_label::case_02 ... ok
[INFO] [stdout] test app::policy::write::write_guardrails::tests::adhoc_risk::risk_level_and_label::case_03 ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::split_statements_tests::semicolon_in_strings::case_1_single_quote ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::split_statements_tests::trailing_comment_only ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::split_statements_tests::unclosed_quote ... ok
[INFO] [stdout] test app::policy::write::write_guardrails::tests::adhoc_risk::risk_level_and_label::case_04 ... ok
[INFO] [stdout] test app::policy::write::write_guardrails::tests::adhoc_risk::risk_level_and_label::case_05 ... ok
[INFO] [stdout] test app::policy::write::write_guardrails::tests::adhoc_risk::risk_level_and_label::case_06 ... ok
[INFO] [stdout] test app::policy::write::write_guardrails::tests::guardrail_evaluation::missing_stable_identity_returns_blocked_high_risk ... ok
[INFO] [stdout] test app::policy::write::write_guardrails::tests::guardrail_evaluation::stable_where_and_identity_returns_unblocked_low_risk ... ok
[INFO] [stdout] test app::policy::write::write_guardrails::tests::guardrail_evaluation::missing_where_returns_blocked_high_risk ... ok
[INFO] [stdout] test app::policy::write::write_update::tests::pk_extraction::existing_pk_columns_returns_pk_pairs ... ok
[INFO] [stdout] test app::policy::write::write_guardrails::tests::guardrail_evaluation::target_summary_with_single_key_returns_compact_format ... ok
[INFO] [stdout] test app::policy::write::write_update::tests::pk_extraction::missing_pk_column_returns_none ... ok
[INFO] [stdout] test app::policy::write::write_update::tests::value_expr::formats_input_as_sql_expr::case_1 ... ok
[INFO] [stdout] test app::policy::write::write_guardrails::tests::adhoc_risk::risk_level_and_label::case_07 ... ok
[INFO] [stdout] test app::policy::write::write_guardrails::tests::adhoc_risk::risk_level_and_label::case_08 ... ok
[INFO] [stdout] test app::policy::write::write_guardrails::tests::adhoc_risk::risk_level_and_label::case_09 ... ok
[INFO] [stdout] test app::policy::write::write_guardrails::tests::adhoc_risk::risk_level_and_label::case_10 ... ok
[INFO] [stdout] test app::policy::write::write_guardrails::tests::adhoc_risk::risk_level_and_label::case_11 ... ok
[INFO] [stdout] test app::policy::write::write_update::tests::value_expr::formats_input_as_sql_expr::case_3 ... ok
[INFO] [stdout] test app::policy::write::write_update::tests::value_expr::value_with_control_chars_returns_escaped_preview_value ... ok
[INFO] [stdout] test app::ports::graphviz::tests::graphviz_error::not_installed_contains_installation_hint ... ok
[INFO] [stdout] test app::policy::write::write_update::tests::value_expr::json_with_different_key_order_returns_identical_output ... ok
[INFO] [stdout] test app::ports::graphviz::tests::graphviz_error::command_failed_contains_exit_code ... ok
[INFO] [stdout] test app::policy::write::write_update::tests::value_expr::formats_input_as_sql_expr::case_2 ... ok
[INFO] [stdout] test app::policy::write::write_update::tests::value_expr::non_json_value_returns_unchanged ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::basic_extraction::mutation_table_in_references::case_3 ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::tokenization::non_keyword_returns_identifier ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::explain_analyze_dml::case_5_explain_paren_analyze_update ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::classify_tests::select_variants::case_01_plain_select ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_15_drop_function ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::delete::case_1_simple ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::high_table_name_input::case_4_truncate ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_target_name_tests::additional_extraction::case_16_drop_sequence ... ok
[INFO] [stdout] test app::ports::graphviz::tests::viewer_error::launch_failed_contains_cause ... ok
[INFO] [stdout] test app::update::action::tests::non_scroll_action_returns_false::case_3 ... ok
[INFO] [stdout] test app::update::action::tests::non_scroll_action_returns_false::case_4 ... ok
[INFO] [stdout] test app::update::action::tests::scroll_action_returns_true ... ok
[INFO] [stdout] test app::update::action::tests::shared_scroll_helpers::clamp_vertical_offset_handles_boundaries::case_1 ... ok
[INFO] [stdout] test app::update::action::tests::shared_scroll_helpers::clamp_vertical_offset_handles_boundaries::case_4 ... ok
[INFO] [stdout] test app::update::action::tests::shared_scroll_helpers::clamp_vertical_offset_handles_boundaries::case_5 ... ok
[INFO] [stdout] test app::update::action::tests::shared_scroll_helpers::clamp_vertical_offset_handles_boundaries::case_2 ... ok
[INFO] [stdout] test app::update::action::tests::shared_scroll_helpers::clamp_vertical_offset_handles_boundaries::case_6 ... ok
[INFO] [stdout] test app::update::action::tests::shared_scroll_helpers::clamp_vertical_offset_handles_boundaries::case_7 ... ok
[INFO] [stdout] test app::update::action::tests::shared_scroll_helpers::page_delta_respects_visible_rows::case_1 ... ok
[INFO] [stdout] test app::update::action::tests::shared_scroll_helpers::page_delta_respects_visible_rows::case_2 ... ok
[INFO] [stdout] test app::update::action::tests::shared_scroll_helpers::page_delta_respects_visible_rows::case_4 ... ok
[INFO] [stdout] test app::update::action::tests::shared_scroll_helpers::clamp_vertical_offset_handles_boundaries::case_8 ... ok
[INFO] [stdout] test app::update::action::tests::shared_scroll_helpers::page_delta_respects_visible_rows::case_7 ... ok
[INFO] [stdout] test app::update::action::tests::shared_scroll_helpers::page_delta_respects_visible_rows::case_3 ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::backoff_calculation::backoff_values ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::completion_check::complete_not_fk_expanded_dispatches_expand ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::fk_neighbors_discovered::empty_neighbors_dispatches_generate ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::completion_check::complete_fk_expanded_dispatches_generate ... ok
[INFO] [stdout] test app::update::action::tests::non_scroll_action_returns_false::case_1 ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::fk_neighbors_discovered::non_empty_neighbors_adds_to_queue ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::metadata_loaded::after_connection_switch_pagination_reset_suppresses_auto_preview ... ok
[INFO] [stdout] test app::update::action::tests::non_scroll_action_returns_false::case_2 ... ok
[INFO] [stdout] test app::update::action::tests::shared_scroll_helpers::clamp_vertical_offset_handles_boundaries::case_3 ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::metadata_loaded::no_table_selected_defaults_to_first ... ok
[INFO] [stdout] test app::update::action::tests::shared_scroll_helpers::page_delta_respects_visible_rows::case_5 ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::fk_neighbors_discovered::phase2_table_retry_limit_triggers_completion ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::table_detail_cache_failed::first_failure_sets_retry_count_1 ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::table_detail_cache_failed::increments_retry_count ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::prefetch_table_detail::backoff_table_requeued_at_tail_with_process_effect ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::start_prefetch_all::large_db_emits_resize_effect ... ok
[INFO] [stdout] test app::update::action::tests::shared_scroll_helpers::page_delta_respects_visible_rows::case_6 ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::metadata_loaded::table_still_exists_preserves_pagination_and_emits_refresh_effects ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::prefetch_table_detail::expired_backoff_proceeds_normally ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::metadata_loaded::table_disappeared_clears_pagination_and_result ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::prefetch_table_detail::retry_limit_exceeded_as_last_table_triggers_er_completion ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::prefetch_table_detail::retry_limit_exceeded_gives_up_and_calls_on_table_failed ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::prefetch_table_detail::retry_limit_exceeded_with_queue_remaining_redrives_queue ... ok
[INFO] [stdout] test app::update::browse::navigation::connection_list::tests::confirm_connection_selection::different_connection_dispatches_switch_effect ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::start_prefetch_all::sets_fk_expanded_true ... ok
[INFO] [stdout] test app::update::browse::navigation::connection_list::tests::confirm_connection_selection::empty_connections_returns_empty_effects ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::start_prefetch_all::small_db_uses_floor_capacity ... ok
[INFO] [stdout] test app::update::browse::navigation::connection_list::tests::confirm_connection_selection::from_selector_mode_switches_to_normal ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::start_prefetch_scoped::only_selected_tables_in_queue ... ok
[INFO] [stdout] test app::update::browse::navigation::connection_list::tests::confirm_connection_selection::stays_on_same_connection_returns_to_tables ... ok
[INFO] [stdout] test app::update::browse::navigation::connection_list::tests::connection_list_navigation::select_next_increments_selection ... ok
[INFO] [stdout] test app::update::browse::navigation::connection_list::tests::connection_list_navigation::select_next_stops_at_last ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::start_prefetch_scoped::second_call_while_running_is_ignored ... ok
[INFO] [stdout] test app::update::browse::navigation::connection_list::tests::confirm_connection_selection::from_selector_same_connection_returns_to_normal ... ok
[INFO] [stdout] test app::update::browse::navigation::connection_list::tests::connections_loaded::service_load_warning_sets_error_message ... ok
[INFO] [stdout] test app::update::browse::navigation::connection_list::tests::connection_list_navigation::select_previous_decrements_selection ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::cursor_reposition::scroll_cursor_center_centers_viewport_on_selected ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::cursor_reposition::scroll_cursor_bottom_puts_selected_at_bottom ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::cursor_reposition::scroll_cursor_top_clamps_to_max_offset ... ok
[INFO] [stdout] test app::update::browse::navigation::connection_list::tests::connections_loaded::sorts_connections_by_name_case_insensitive ... ok
[INFO] [stdout] test app::update::browse::navigation::connection_list::tests::connections_loaded::stores_service_file_path_in_runtime ... ok
[INFO] [stdout] test app::update::browse::navigation::connection_list::tests::connection_list_navigation::select_previous_stops_at_first ... ok
[INFO] [stdout] test app::update::browse::navigation::connection_list::tests::connections_loaded::initializes_selection_when_not_empty ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::cursor_reposition::scroll_cursor_top_puts_selected_at_top ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::horizontal_scroll::left_press_after_end_recovers_one_column ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::horizontal_scroll::repeated_right_scroll_clamps_at_last_visible_column::case_1 ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::horizontal_scroll::repeated_right_scroll_clamps_at_last_visible_column::case_2 ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::horizontal_scroll::right_presses_past_end_do_not_increase_offset ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::page_scroll::data_fewer_than_viewport_scroll_stays_zero ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::page_scroll::empty_list_does_nothing ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::page_scroll::full_page_down_clamps_near_bottom ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::page_scroll::full_page_down_jumps_by_visible ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::page_scroll::full_page_down_moves_both_selection_and_scroll ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::page_scroll::half_page_down_moves_both_selection_and_scroll ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::page_scroll::half_page_down_preserves_relative_position ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::page_scroll::half_page_up_clamped_at_zero ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::page_scroll::zero_height_pane_is_noop ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::viewport_selection::select_middle_respects_scroll_offset ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::page_scroll::half_page_up_moves_both_selection_and_scroll ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::viewport_selection::select_middle_moves_to_viewport_center ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::viewport_selection::select_viewport_bottom_clamps_to_last_displayed_item ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::viewport_selection::select_viewport_bottom_moves_to_last_visible_item ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::viewport_selection::select_viewport_middle_uses_displayed_count_near_end ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::viewport_selection::select_viewport_bottom_uses_displayed_count_near_end ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::viewport_selection::select_viewport_top_moves_to_first_visible_item ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::page_scroll::full_page_up_moves_both_selection_and_scroll ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::page_scroll::half_page_down_clamped_at_last ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::page_scroll::half_page_down_jumps_by_correct_delta ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::page_scroll::full_page_up_clamps_near_top ... ok
[INFO] [stdout] test app::update::browse::navigation::focus::tests::toggle_read_only::ro_to_rw_opens_confirm_dialog ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::command_line_return_stack::enter_from_normal_and_exit_returns_to_normal ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::paste::er_table_picker_appends_to_filter ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::paste::command_line_appends_text ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::paste::er_table_picker_strips_newlines ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::paste::normal_mode_returns_none ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::paste::command_line_strips_newlines ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::paste::query_history_picker_appends_to_filter ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::paste::query_history_picker_strips_newlines ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::paste::table_picker_appends_text ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::picker_navigation::command_palette_previous_stops_at_zero ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::paste::table_picker_strips_newlines ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::paste::table_picker_resets_selection ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::picker_navigation::er_picker_next_increments ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::picker_navigation::command_palette_next_increments ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::picker_navigation::er_picker_previous_stops_at_zero ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::command_line_return_stack::enter_from_cell_edit_and_exit_returns_to_cell_edit ... ok
[INFO] [stdout] test app::update::browse::navigation::focus::tests::toggle_read_only::rw_to_ro_switches_immediately ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::adhoc_refresh::dml_without_table_selected_emits_no_effects ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::picker_navigation::table_picker_next_increments ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::picker_navigation::table_picker_next_stops_at_last ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::picker_navigation::table_picker_previous_decrements ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::picker_navigation::table_picker_previous_stops_at_zero ... ok
[INFO] [stdout] test app::update::browse::navigation::inspector::tests::inspector_scroll_top_bottom::inspector_full_page_scroll_clamps_to_max ... ok
[INFO] [stdout] test app::update::browse::navigation::inspector::tests::inspector_scroll_top_bottom::inspector_half_page_scroll_advances_by_half_visible_rows ... ok
[INFO] [stdout] test app::update::browse::navigation::inspector::tests::inspector_scroll_top_bottom::inspector_page_scroll_stays_zero_when_content_fits_viewport ... ok
[INFO] [stdout] test app::update::browse::navigation::inspector::tests::inspector_scroll_top_bottom::inspector_scroll_bottom_goes_to_max ... ok
[INFO] [stdout] test app::update::browse::navigation::inspector::tests::inspector_scroll_top_bottom::inspector_scroll_bottom_no_detail_stays_zero ... ok
[INFO] [stdout] test app::update::browse::navigation::inspector::tests::inspector_scroll_top_bottom::inspector_scroll_top_resets_to_zero ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::adhoc_refresh::adhoc_error_emits_no_effects ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::adhoc_refresh::ddl_emits_cache_invalidate_and_fetch_metadata ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::adhoc_refresh::ddl_resets_prefetch_state_and_clears_table_detail ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::adhoc_refresh::tcl_emits_no_effects ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::adhoc_refresh_integration::ddl_drop_then_metadata_loaded_without_table_clears_selection ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::command_line_submit::submit_erd_dispatches_open_er_table_picker ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::execute_preview::resets_pagination ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::command_line_submit::submit_unknown_pops_mode_without_side_effects ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::adhoc_refresh_integration::ddl_does_not_emit_execute_preview_so_modal_status_stays_success ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::command_line_submit::submit_quit_pops_mode_and_sets_quit ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::query_completed::adhoc_success_writes_current_result_without_touching_history_index ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::query_completed::preview_delete_clear_still_clears_staged_rows ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::query_completed::adhoc_does_not_update_pagination ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::query_completed::does_not_set_reached_end_for_full_page ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::query_completed::preview_delete_reselection_preserves_active_column_and_offset ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::adhoc_refresh::no_command_tag_emits_no_effects ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::query_completed::preview_clears_history_index ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::adhoc_refresh::select_emits_no_effects ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::adhoc_refresh_integration::ddl_create_then_metadata_loaded_preserves_explorer_selection ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::adhoc_refresh::dml_with_table_selected_emits_execute_preview ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::query_completed::adhoc_error_preserves_current_result_and_view_state ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::query_completed::sets_page_and_reached_end ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::csv_export::export_succeeded_sets_success_message ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::csv_export::request_with_error_result_is_noop ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::csv_export::export_failed_sets_error_message ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::query_failed::resets_result_selection_and_offsets ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::csv_export::request_with_adhoc_result_uses_original_query ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::csv_export::request_without_result_is_noop ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::next_page::noop_for_adhoc ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::next_page::emits_correct_offset_for_next_page ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::next_page::noop_when_reached_end ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::adhoc_refresh_integration::dml_then_preview_updates_current_result ... ok
[INFO] [stdout] test app::update::browse::query::execution::tests::adhoc_refresh_integration::success_snapshot_not_overwritten_by_subsequent_preview_result ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::csv_export::request_with_preview_result_emits_count_effect ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::next_page::noop_when_running ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::next_page::preserves_view_state_when_next_page_noops ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::next_page::transition_resets_view_state ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::csv_export::rows_counted_below_threshold_emits_export_effect ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::prev_page::preserves_view_state_when_prev_page_noops ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::prev_page::emits_correct_offset_for_prev_page ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::csv_export::rows_counted_none_opens_confirm_dialog ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::csv_export::rows_counted_above_threshold_opens_confirm_dialog ... ok
[INFO] [stdout] test app::update::browse::query::write::tests::delete_write_flow::execute_write_failed_for_delete_returns_to_normal_mode ... ok
[INFO] [stdout] test app::update::browse::query::write::tests::delete_write_flow::execute_write_success_for_delete_refreshes_target_page ... ok
[INFO] [stdout] test app::update::browse::query::write::tests::delete_write_flow::execute_write_non_one_rows_for_delete_sets_error ... ok
[INFO] [stdout] test app::update::browse::query::write::tests::write_flow::execute_write_success_refreshes_preview_page ... ok
[INFO] [stdout] test app::update::browse::query::write::tests::delete_write_flow::query_completed_restores_pending_row_selection ... ok
[INFO] [stdout] test app::update::browse::query::write::tests::delete_write_flow::query_completed_clears_selection_when_requested ... ok
[INFO] [stdout] test app::update::browse::query::write::tests::write_flow::confirm_dialog_displays_and_executes_same_sql ... ok
[INFO] [stdout] test app::update::browse::query::write::tests::write_flow::execute_write_with_non_one_row_sets_error ... ok
[INFO] [stdout] test app::update::browse::query::write::tests::delete_write_flow::open_write_preview_confirm_for_delete_sets_normal_return_mode ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::prev_page::noop_on_first_page ... ok
[INFO] [stdout] test app::update::browse::query::write::tests::delete_write_flow::open_write_preview_confirm_for_delete_sets_refresh_target_count ... ok
[INFO] [stdout] test app::update::browse::query::write::tests::write_flow::text_column_with_json_content_returns_none_diff ... ok
[INFO] [stdout] test app::update::browse::query::write::tests::write_flow::jsonb_column_produces_structured_diff ... ok
[INFO] [stdout] test app::update::browse::result::edit::tests::cell_edit_cursor_ops::delete_at_end_is_noop ... ok
[INFO] [stdout] test app::update::browse::query::write::tests::write_flow::write_rejects_stale_table_detail ... ok
[INFO] [stdout] test app::update::browse::result::edit::tests::cell_edit_cursor_ops::delete_removes_char_at_cursor ... ok
[INFO] [stdout] test app::update::browse::query::write::tests::write_flow::submit_write_opens_confirm_dialog ... ok
[INFO] [stdout] test app::update::browse::query::write::tests::write_flow::write_requires_cell_edit_mode ... ok
[INFO] [stdout] test app::update::browse::result::edit::tests::cell_edit_cursor_ops::move_cursor_left_decrements ... ok
[INFO] [stdout] test app::update::browse::result::edit::tests::cell_edit_cursor_ops::move_cursor_right_increments ... ok
[INFO] [stdout] test app::update::browse::result::edit::tests::cell_edit_cursor_ops::move_cursor_end_jumps_to_end ... ok
[INFO] [stdout] test app::update::browse::result::edit::tests::cell_edit_cursor_ops::input_inserts_at_cursor_not_at_end ... ok
[INFO] [stdout] test app::update::browse::result::edit::tests::cell_edit_cursor_ops::move_cursor_home_jumps_to_start ... ok
[INFO] [stdout] test app::update::browse::query::write::tests::write_flow::write_requires_idle_query_status ... ok
[INFO] [stdout] test app::update::browse::result::edit::tests::cell_edit_entry_guardrails::cancel_without_changes_clears_cell_edit ... ok
[INFO] [stdout] test app::update::browse::result::edit::tests::cell_edit_cursor_ops::backspace_removes_char_before_cursor ... ok
[INFO] [stdout] test app::update::browse::result::edit::tests::cell_edit_entry_guardrails::cancel_with_changes_preserves_draft ... ok
[INFO] [stdout] test app::update::browse::result::history::tests::older_clamps_at_zero ... ok
[INFO] [stdout] test app::update::browse::result::history::tests::older_decrements_index ... ok
[INFO] [stdout] test app::update::browse::result::edit::tests::cell_edit_entry_guardrails::entering_different_cell_resets_draft ... ok
[INFO] [stdout] test app::update::browse::result::history::tests::open_is_noop_when_history_empty ... ok
[INFO] [stdout] test app::update::browse::result::edit::tests::cell_edit_entry_guardrails::re_entering_same_cell_with_pending_draft_preserves_draft ... ok
[INFO] [stdout] test app::update::browse::result::edit::tests::cell_edit_entry_guardrails::stale_table_detail_blocks_cell_edit_entry ... ok
[INFO] [stdout] test app::update::browse::result::edit::tests::jsonb_dispatch::jsonb_cell_returns_dispatch_to_open_jsonb_detail ... ok
[INFO] [stdout] test app::update::browse::result::edit::tests::read_only_guard::read_only_blocks_cell_edit_entry ... ok
[INFO] [stdout] test app::update::browse::result::history::tests::navigation_resets_scroll_offset ... ok
[INFO] [stdout] test app::update::browse::result::history::tests::exit_clears_index ... ok
[INFO] [stdout] test app::update::browse::result::history::tests::newer_at_last_is_noop ... ok
[INFO] [stdout] test app::update::browse::result::history::tests::open_sets_index_to_newest ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::edit_lifecycle::append_insert_moves_to_current_line_end_before_editing ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::edit_lifecycle::close_after_edit_with_valid_changes_stores_draft ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::edit_lifecycle::cursor_movement_clears_pending_key_sequence ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::edit_lifecycle::append_insert_blocked_in_read_only_mode ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::edit_lifecycle::close_after_edit_without_changes_no_draft ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::edit_lifecycle::enter_edit_blocked_in_read_only_mode ... ok
[INFO] [stdout] test app::update::browse::result::history::tests::newer_increments_index ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::edit_lifecycle::movement_updates_scroll_with_current_editor_viewport_height ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::edit_lifecycle::reenter_edit_with_pending_changes_preserves_existing_cursor ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::edit_lifecycle::viewport_cursor_moves_follow_visible_rows::case_3 ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::entry_guards::blocked_without_table_detail ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::search::enter_search_activates_search_mode ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::navigation::close_clears_state ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::search::exit_search_deactivates_search_mode ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::entry_guards::opens_on_valid_jsonb_cell ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::edit_lifecycle::enter_edit_preserves_cursor_from_normal_mode ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::search::next_cycles_through_matches_and_moves_cursor ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::edit_lifecycle::enter_edit_switches_to_jsonb_edit_mode ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::entry_guards::blocked_on_null_cell ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::search::prev_wraps_to_last_match_and_moves_cursor ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::search::submit_deactivates_and_preserves_matches ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::edit_lifecycle::exit_edit_returns_to_viewing_mode ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::entry_guards::blocked_on_adhoc_result ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::edit_lifecycle::viewport_cursor_moves_follow_visible_rows::case_1 ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::edit_lifecycle::viewport_cursor_moves_follow_visible_rows::case_2 ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::entry_guards::blocked_on_non_jsonb_column ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::search_helpers::empty_query_returns_no_matches ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::search_helpers::returns_all_matches_within_single_line ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::history_mode_scroll::page_scroll_uses_history_entry_row_count_not_live_preview ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::history_mode_scroll::row_count_reflects_visible_result_in_history_mode ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::search_helpers::returns_first_match_offset_per_line_case_insensitively ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::boundary_conditions::data_fewer_than_viewport_scroll_stays_zero ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::boundary_conditions::full_page_up_clamps_near_top ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::boundary_conditions::half_page_down_clamps_near_bottom ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::yank::copies_all_text_to_clipboard ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::boundary_conditions::half_page_up_clamps_near_top ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::search_helpers::unicode_casefold_match_maps_back_to_original_char_offset ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::boundary_conditions::full_page_down_clamps_near_bottom ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::search::text_input_updates_search_matches_case_insensitively ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::search_helpers::casefold_matches_german_sharp_s ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::search_helpers::casefold_matches_greek_final_sigma ... ok
[INFO] [stdout] test app::update::browse::result::jsonb::tests::search_helpers::folded_byte_offset_uses_original_char_positions ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::cell_active::half_page_down_moves_both_cursor_and_viewport ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::boundary_conditions::visible_zero_cell_active_full_page_is_noop ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::boundary_conditions::visible_zero_cell_active_is_noop ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::boundary_conditions::zero_height_scroll_mode_is_noop ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::cell_active::full_page_down_moves_both ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::scroll_mode::full_page_down_clamped_at_max ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::cell_active::half_page_up_moves_both_cursor_and_viewport ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::cell_active::full_page_up_moves_both ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::viewport_position::scroll_middle_is_noop_in_scroll_mode ... ok
[INFO] [stdout] test app::update::browse::result::selection::tests::read_only_guard::read_only_blocks_stage_row_for_delete ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::viewport_position::scroll_middle_moves_row_to_viewport_center_in_cell_active ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_scroll_to_cursor::scroll_cursor_bottom_puts_row_at_bottom ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_scroll_to_cursor::scroll_cursor_center_is_noop_in_scroll_mode ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_scroll_to_cursor::scroll_cursor_center_centers_on_selected_row ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_scroll_to_cursor::scroll_cursor_top_clamps_to_max_scroll ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_scroll_to_cursor::scroll_cursor_top_puts_row_at_top ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::cell_active::half_page_down_preserves_column ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::cell_active::half_page_down_preserves_relative_position ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::scroll_mode::half_page_down_from_top ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::scroll_mode::half_page_up_from_middle ... ok
[INFO] [stdout] test app::update::browse::result::selection::tests::page_passthrough::next_page_returns_none_without_mutating_state ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::page_scroll::scroll_mode::full_page_up_clamped_at_zero ... ok
[INFO] [stdout] test app::update::browse::result::selection::tests::row_delete::clear_staged_deletes_removes_all ... ok
[INFO] [stdout] test app::update::browse::result::selection::tests::row_delete::dd_on_already_staged_row_is_noop ... ok
[INFO] [stdout] test app::update::browse::result::selection::tests::page_passthrough::prev_page_returns_none_without_mutating_state ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::cell_yank::valid_cell_emits_copy_effect ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::cell_yank::out_of_bounds_col_sets_error ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::cell_yank::row_yank_pending_does_not_copy_cell ... ok
[INFO] [stdout] test app::update::browse::result::selection::tests::row_delete::u_unstages_last_staged_row ... ok
[INFO] [stdout] test app::update::browse::result::selection::tests::row_delete::exit_to_scroll_preserves_staged_rows ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::cell_yank::history_mode_yanks_visible_cell ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::row_yank::emits_tsv_copy_effect ... ok
[INFO] [stdout] test app::update::browse::result::selection::tests::row_delete::staging_requires_active_cell ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::cell_yank::no_cell_selection_is_noop ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::row_yank::escapes_backslash ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::ddl_yank::sets_flash ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::cell_yank::out_of_bounds_row_sets_error ... ok
[INFO] [stdout] test app::update::browse::result::selection::tests::row_delete::dd_stages_active_row ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::ddl_yank::on_non_ddl_tab_returns_empty ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::ddl_yank::with_table_detail_returns_copy_effect ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::ddl_yank::without_table_detail_returns_empty ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::row_yank::no_row_selection_is_noop ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::row_yank::escapes_tab_and_newline ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::row_yank::history_mode_yanks_visible_row ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::row_yank::out_of_bounds_sets_error ... ok
[INFO] [stdout] test app::update::connection::error::tests::reenter_connection_setup::allowed_for_profile_connection ... ok
[INFO] [stdout] test app::update::connection::error::tests::reenter_connection_setup::blocked_for_service_connection ... ok
[INFO] [stdout] test app::update::connection::lifecycle::tests::fetches_metadata_when_no_cache_exists ... ok
[INFO] [stdout] test app::update::connection::lifecycle::tests::clears_completion_cache_on_switch ... ok
[INFO] [stdout] test app::update::connection::lifecycle::tests::resets_result_selection_when_restoring_cache ... ok
[INFO] [stdout] test app::update::connection::selector::tests::connection_deleted::clears_active_state_when_active_deleted ... ok
[INFO] [stdout] test app::update::connection::selector::tests::connection_deleted::adjusts_selection_when_last_item_deleted ... ok
[INFO] [stdout] test app::update::connection::lifecycle::tests::saves_current_cache_before_switching ... ok
[INFO] [stdout] test app::update::connection::lifecycle::tests::resets_read_only_on_switch ... ok
[INFO] [stdout] test app::update::connection::selector::tests::connection_deleted::removes_connection_from_list ... ok
[INFO] [stdout] test app::update::connection::selector::tests::connection_deleted::stays_in_selector_when_services_remain_after_last_profile_deleted ... ok
[INFO] [stdout] test app::update::connection::selector::tests::connection_deleted::resets_full_state_when_active_deleted ... ok
[INFO] [stdout] test app::update::connection::lifecycle::tests::restores_cached_state_when_available ... ok
[INFO] [stdout] test app::update::connection::selector::tests::open_connection_selector::resets_selection_to_zero ... ok
[INFO] [stdout] test app::update::connection::selector::tests::open_connection_selector::sets_mode_and_loads_connections ... ok
[INFO] [stdout] test app::update::connection::selector::tests::connection_deleted::transitions_to_setup_when_list_empty ... ok
[INFO] [stdout] test app::update::connection::selector::tests::request_delete_selected_connection::empty_list_does_nothing ... ok
[INFO] [stdout] test app::update::connection::error::tests::scroll_down::stops_at_detail_line_count ... ok
[INFO] [stdout] test app::update::connection::selector::tests::request_delete_selected_connection::active_connection_shows_warning ... ok
[INFO] [stdout] test app::update::connection::lifecycle::tests::sets_connected_state_when_cache_exists ... ok
[INFO] [stdout] test app::update::connection::selector::tests::request_delete_selected_connection::inactive_connection_shows_standard_message ... ok
[INFO] [stdout] test app::update::connection::lifecycle::tests::resets_result_selection_when_no_cache ... ok
[INFO] [stdout] test app::update::connection::lifecycle::tests::updates_active_connection_fields ... ok
[INFO] [stdout] test app::update::connection::selector::tests::request_delete_selected_connection::opens_confirm_dialog_with_correct_message ... ok
[INFO] [stdout] test app::update::connection::selector::tests::request_delete_selected_connection::preserves_return_mode_from_connection_selector ... ok
[INFO] [stdout] test app::update::connection::setup::tests::paste::port_respects_limit ... ok
[INFO] [stdout] test app::update::connection::setup::tests::paste::strips_newlines ... ok
[INFO] [stdout] test app::update::connection::setup::tests::connection_save::save_sets_connection_and_metadata_state_as_pair ... ok
[INFO] [stdout] test app::update::connection::setup::tests::connection_save::save_completed_resets_read_only ... ok
[INFO] [stdout] test app::update::connection::setup::tests::open_connection_setup::is_first_run_false_when_already_connected ... ok
[INFO] [stdout] test app::update::connection::setup::tests::open_connection_setup::is_first_run_false_when_connections_exist ... ok
[INFO] [stdout] test app::update::connection::setup::tests::paste::ssl_mode_ignored ... ok
[INFO] [stdout] test app::update::connection::setup::tests::open_connection_setup::is_first_run_true_when_no_connections ... ok
[INFO] [stdout] test app::update::connection::setup::tests::paste::full_port_does_nothing ... ok
[INFO] [stdout] test app::update::connection::setup::tests::paste::host_inserts_text ... ok
[INFO] [stdout] test app::update::connection::setup::tests::paste::port_filters_non_digits ... ok
[INFO] [stdout] test app::update::er::tests::er_generate_from_cache::idle_status_returns_generate_effect ... ok
[INFO] [stdout] test app::update::er::tests::er_open_diagram::increments_run_id_on_each_call ... ok
[INFO] [stdout] test app::update::connection::tests::paste_falls_through_in_normal_mode ... ok
[INFO] [stdout] test app::update::er::tests::er_open_diagram::prefetch_started_true_still_resets_and_emits_smart_refresh ... ok
[INFO] [stdout] test app::update::er::tests::er_open_diagram::no_metadata_returns_error ... ok
[INFO] [stdout] test app::update::er::tests::er_generate_from_cache::rendering_status_returns_empty_effects ... ok
[INFO] [stdout] test app::update::er::tests::er_open_diagram::rendering_status_returns_empty_effects ... ok
[INFO] [stdout] test app::update::er::tests::smart_er_refresh_completed::added_tables_trigger_scoped_prefetch ... ok
[INFO] [stdout] test app::update::er::tests::smart_er_refresh_completed::missing_in_cache_triggers_scoped_prefetch ... ok
[INFO] [stdout] test app::update::connection::setup::tests::paste::updates_cursor ... ok
[INFO] [stdout] test app::update::er::tests::er_open_diagram::no_dsn_returns_error ... ok
[INFO] [stdout] test app::update::connection::tests::unknown_action_returns_none ... ok
[INFO] [stdout] test app::update::er::tests::er_open_diagram::waiting_status_returns_empty_effects ... ok
[INFO] [stdout] test app::update::er::tests::er_open_diagram::emits_smart_refresh ... ok
[INFO] [stdout] test app::update::er::tests::smart_er_refresh_completed::no_changes_dispatches_generate_from_cache ... ok
[INFO] [stdout] test app::update::er::tests::smart_er_refresh_completed::mismatched_run_id_returns_empty_for_completed ... ok
[INFO] [stdout] test app::update::er::tests::smart_er_refresh_completed::removed_tables_trigger_evict ... ok
[INFO] [stdout] test app::update::connection::tests::paste_handled_by_setup_in_connection_setup_mode ... ok
[INFO] [stdout] test app::update::er::tests::smart_er_refresh_failed::no_metadata_sets_idle_and_error ... ok
[INFO] [stdout] test app::update::er::tests::smart_er_refresh_failed::mismatched_run_id_returns_empty_for_failed ... ok
[INFO] [stdout] test app::update::explain::tests::analyze_confirm_cancel::cancel_from_high_resets_to_normal ... ok
[INFO] [stdout] test app::update::explain::tests::explain_analyze_request::delete_with_where_executes_immediately ... ok
[INFO] [stdout] test app::update::explain::tests::explain_analyze_request::drop_shows_high_confirm ... ok
[INFO] [stdout] test app::update::explain::tests::analyze_confirm_cancel::confirm_from_high_with_mismatch_is_noop ... ok
[INFO] [stdout] test app::update::explain::tests::explain_analyze_request::empty_query_is_noop ... ok
[INFO] [stdout] test app::update::er::tests::smart_er_refresh_completed::stale_tables_trigger_evict_and_scoped_prefetch ... ok
[INFO] [stdout] test app::update::explain::tests::explain_analyze_request::delete_without_where_shows_high_confirm ... ok
[INFO] [stdout] test app::update::explain::tests::explain_analyze_request::insert_executes_immediately ... ok
[INFO] [stdout] test app::update::explain::tests::analyze_confirm_cancel::confirm_from_high_with_matching_table_emits_effect ... ok
[INFO] [stdout] test app::update::er::tests::smart_er_refresh_completed::updates_metadata_and_signatures ... ok
[INFO] [stdout] test app::update::explain::tests::explain_analyze_request::multi_statement_sets_error_and_switches_to_plan_tab ... ok
[INFO] [stdout] test app::update::explain::tests::explain_analyze_request::select_executes_immediately_without_confirm ... ok
[INFO] [stdout] test app::update::er::tests::smart_er_refresh_failed::falls_back_to_full_prefetch ... ok
[INFO] [stdout] test app::update::explain::tests::explain_analyze_request::truncate_shows_high_confirm ... ok
[INFO] [stdout] test app::update::explain::tests::compare_workflow::two_explains_auto_advance_returns_comparable_slots ... ok
[INFO] [stdout] test app::update::er::tests::smart_er_refresh_failed::falls_back_to_scoped_prefetch_when_targets_set ... ok
[INFO] [stdout] test app::update::er::tests::smart_er_refresh_failed::new_metadata_applied_before_fallback ... ok
[INFO] [stdout] test app::update::explain::tests::explain_analyze_request::update_with_where_executes_immediately ... ok
[INFO] [stdout] test app::update::explain::tests::explain_request::emits_execute_explain_effect ... ok
[INFO] [stdout] test app::update::explain::tests::explain_completed::sets_plan_and_switches_to_plan_tab ... ok
[INFO] [stdout] test app::update::explain::tests::explain_request::starts_query_timer ... ok
[INFO] [stdout] test app::update::explain::tests::explain_request::empty_query_is_noop ... ok
[INFO] [stdout] test app::update::explain::tests::scroll::compare_plan_scroll_up_saturates_at_zero ... ok
[INFO] [stdout] test app::update::explain::tests::scroll::compare_scroll_down_clamps_without_content ... ok
[INFO] [stdout] test app::update::explain::tests::read_only_analyze::read_only_blocks_insert_analyze ... ok
[INFO] [stdout] test app::update::explain::tests::explain_request::running_is_noop ... ok
[INFO] [stdout] test app::update::explain::tests::scroll::plan_scroll_down_increments ... ok
[INFO] [stdout] test app::update::explain::tests::explain_failed::sets_error_and_switches_to_plan_tab ... ok
[INFO] [stdout] test app::update::explain::tests::tab_switch::next_tab_switches_compare_to_sql ... ok
[INFO] [stdout] test app::update::explain::tests::scroll::compare_plan_scroll_down_increments ... ok
[INFO] [stdout] test app::update::explain::tests::scroll::plan_scroll_up_saturates_at_zero ... ok
[INFO] [stdout] test app::update::explain::tests::explain_request::multi_statement_sets_error_and_switches_to_plan_tab ... ok
[INFO] [stdout] test app::update::explain::tests::read_only_analyze::read_only_blocks_dml_analyze ... ok
[INFO] [stdout] test app::update::explain::tests::scroll::right_only_plan_scroll_down_increments ... ok
[INFO] [stdout] test app::update::explain::tests::scroll::compare_scroll_down_stops_at_max ... ok
[INFO] [stdout] test app::update::explain::tests::scroll::plan_scroll_down_clamps_at_max ... ok
[INFO] [stdout] test app::update::explain::tests::explain_request::no_dsn_is_noop ... ok
[INFO] [stdout] test app::update::explain::tests::read_only_analyze::read_only_allows_select_analyze ... ok
[INFO] [stdout] test app::update::explain::tests::tab_switch::prev_tab_switches_plan_to_sql ... ok
[INFO] [stdout] test app::update::explain::tests::tab_switch::prev_tab_switches_compare_to_plan ... ok
[INFO] [stdout] test app::update::explain::tests::tab_switch::prev_tab_switches_sql_to_compare ... ok
[INFO] [stdout] test app::update::helpers::tests::delete_refresh_target::single_row_first_page_clears_selection ... ok
[INFO] [stdout] test app::update::helpers::tests::delete_refresh_target::last_row_selects_previous_row ... ok
[INFO] [stdout] test app::update::helpers::tests::delete_refresh_target::single_row_non_first_page_goes_previous_page_last_row ... ok
[INFO] [stdout] test app::update::helpers::tests::delete_refresh_target_bulk::all_rows_deleted_non_first_page_goes_to_previous_page ... ok
[INFO] [stdout] test app::update::helpers::tests::delete_refresh_target_bulk::all_rows_deleted_first_page_clears_selection ... ok
[INFO] [stdout] test app::update::helpers::tests::delete_refresh_target_bulk::last_rows_deleted_selects_clamped_to_remaining_minus_one ... ok
[INFO] [stdout] test app::update::helpers::tests::delete_refresh_target_bulk::middle_rows_deleted_selects_first_deleted_index ... ok
[INFO] [stdout] test app::update::helpers::tests::validate_field_name::name_length_validation::case_1 ... ok
[INFO] [stdout] test app::update::helpers::tests::validate_field_name::valid_name_clears_previous_error ... ok
[INFO] [stdout] test app::update::helpers::tests::delete_refresh_target_bulk::single_row_deleted_from_middle_keeps_index ... ok
[INFO] [stdout] test app::update::helpers::tests::validate_field_name::whitespace_only_name_sets_error ... ok
[INFO] [stdout] test app::update::input::command::tests::command_to_action::sql_returns_open_sql_modal_action ... ok
[INFO] [stdout] test app::update::helpers::tests::validate_field_name::name_length_validation::case_2 ... ok
[INFO] [stdout] test app::update::input::command::tests::command_to_action::write_returns_submit_cell_edit_write_action ... ok
[INFO] [stdout] test app::update::input::command::tests::parse_command::empty_string_returns_unknown ... ok
[INFO] [stdout] test app::update::input::command::tests::command_to_action::erd_returns_open_er_table_picker_action ... ok
[INFO] [stdout] test app::update::input::command::tests::command_to_action::help_returns_open_help_action ... ok
[INFO] [stdout] test app::update::input::command::tests::parse_command::help_aliases::case_1 ... ok
[INFO] [stdout] test app::update::input::command::tests::command_to_action::quit_returns_quit_action ... ok
[INFO] [stdout] test app::update::input::command::tests::parse_command::quit_aliases::case_1 ... ok
[INFO] [stdout] test app::update::input::command::tests::parse_command::help_aliases::case_2 ... ok
[INFO] [stdout] test app::update::explain::tests::tab_switch::next_tab_switches_plan_to_compare ... ok
[INFO] [stdout] test app::update::input::command::tests::parse_command::erd_returns_erd ... ok
[INFO] [stdout] test app::update::input::command::tests::parse_command::quit_aliases::case_2 ... ok
[INFO] [stdout] test app::update::input::command::tests::parse_command::sql_returns_sql ... ok
[INFO] [stdout] test app::update::input::command::tests::command_to_action::unknown_returns_none_action ... ok
[INFO] [stdout] test app::update::input::command::tests::parse_command::unknown_command_returns_unknown ... ok
[INFO] [stdout] test app::update::input::command::tests::parse_command::whitespace_is_trimmed ... ok
[INFO] [stdout] test app::update::input::command::tests::parse_command::write_aliases::case_1 ... ok
[INFO] [stdout] test app::update::explain::tests::tab_switch::next_tab_switches_sql_to_plan ... ok
[INFO] [stdout] test app::update::input::command::tests::parse_command::write_aliases::case_2 ... ok
[INFO] [stdout] test app::update::helpers::tests::validate_field_name::empty_name_sets_error ... ok
[INFO] [stdout] test app::update::helpers::tests::delete_refresh_target::middle_row_keeps_same_index ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::compare_key_action_matches::case_4 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::compare_key_action_matches::case_5 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::confirm_no_action_matches ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::compare_key_action_matches::case_6 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::compare_key_action_matches::case_1 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::compare_key_action_matches::case_7 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::compare_key_action_matches::case_3 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::compare_key_action_matches::case_2 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::confirm_scroll_down_action_matches ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::confirm_scroll_up_action_matches ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::confirm_yes_action_matches ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::global_key_action_matches::case_02 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::global_key_action_matches::case_03 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::global_key_action_matches::case_05 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::global_key_action_matches::case_06 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::global_key_action_matches::case_07 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::global_key_action_matches::case_08 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::global_key_action_matches::case_09 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::global_key_action_matches::case_10 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::global_key_action_matches::case_11 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::global_key_action_matches::case_12 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::global_key_action_matches::case_13 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::plan_key_action_matches::case_1 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::plan_key_action_matches::case_2 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::plan_key_action_matches::case_3 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::plan_key_action_matches::case_6 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::plan_key_action_matches::case_5 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::plan_key_action_matches::case_4 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::binding_shape::all_mode_row_exec_entries_are_valid ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::conflict_safety::cell_edit_plain_char_combos_are_intentional ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::conflict_safety::query_history_picker_has_no_plain_char_combos ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::conflict_safety::er_picker_has_no_plain_char_combos ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::conflict_safety::table_picker_has_no_plain_char_combos ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::binding_shape::none_action_entries_have_no_combos ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::structure::help_content_line_count_matches_section_structure ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::structure::idx_constants_are_within_bounds ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::binding_shape::all_non_none_bindings_have_combos ... ok
[INFO] [stdout] test app::update::input::keymap::tests::empty_combos_entry_never_matches ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::catalog_coverage::all_mode_bindings_count ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::conflict_safety::command_line_has_no_problematic_plain_char_combos ... ok
[INFO] [stdout] test app::update::input::keymap::tests::first_matching_non_none_entry_is_resolved ... ok
[INFO] [stdout] test app::update::input::keymap::tests::resolve_mode_tests::empty_rows_returns_none ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::global_key_action_matches::case_01 ... ok
[INFO] [stdout] test app::update::input::keymap::tests::resolve_mode_tests::first_matching_binding_wins ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::action_mapping::global_key_action_matches::case_04 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::uniqueness::no_duplicate_combos_in_simple_modes ... ok
[INFO] [stdout] test app::update::input::keymap::tests::resolve_mode_tests::matches_binding_in_rows ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::catalog_semantics::resolver_contract::keymap_resolve_roundtrip_for_simple_modes ... ok
[INFO] [stdout] test app::update::input::keymap::tests::resolve_mode_tests::mode_returns_none_for_no_match ... ok
[INFO] [stdout] test app::update::input::keymap::tests::resolve_mode_tests::unrelated_row_does_not_block_later_match ... ok
[INFO] [stdout] test app::update::input::vim::actions::browse::tests::explorer_scroll_cursor_center_resolves_to_scroll_to_cursor ... ok
[INFO] [stdout] test app::update::input::vim::actions::browse::tests::inspector_ddl_yank_resolves_to_ddl_yank ... ok
[INFO] [stdout] test app::update::input::vim::actions::browse::tests::inspector_viewport_navigation_resolves_to_none_action ... ok
[INFO] [stdout] test app::update::input::vim::actions::browse::tests::result_cell_escape_with_draft_discards_edit ... ok
[INFO] [stdout] test app::update::input::vim::actions::browse::tests::result_cell_left_right_use_cell_actions::case_1 ... ok
[INFO] [stdout] test app::update::input::keymap::tests::resolves_matching_combo ... ok
[INFO] [stdout] test app::update::input::keymap::tests::resolves_no_match_to_none ... ok
[INFO] [stdout] test app::update::input::keymap::tests::skips_display_only_none_entries ... ok
[INFO] [stdout] test app::update::input::palette::tests::palette_commands_contains_no_none_actions ... ok
[INFO] [stdout] test app::update::input::vim::actions::browse::tests::result_cell_left_right_use_cell_actions::case_2 ... ok
[INFO] [stdout] test app::update::input::vim::actions::browse::tests::result_row_delete_with_pending_stages_delete ... ok
[INFO] [stdout] test app::update::input::vim::actions::browse::tests::result_cell_yank_is_not_triggered_by_y_operator ... ok
[INFO] [stdout] test app::update::input::vim::actions::browse::tests::result_row_delete_without_pending_sets_pending ... ok
[INFO] [stdout] test app::update::input::vim::actions::browse::tests::result_row_yank_with_pending_executes_yank ... ok
[INFO] [stdout] test app::update::input::vim::actions::browse::tests::result_scroll_mode_move_down_resolves_to_result_line_scroll ... ok
[INFO] [stdout] test app::update::input::vim::actions::browse::tests::result_row_yank_without_pending_sets_pending ... ok
[INFO] [stdout] test app::update::input::vim::actions::browse::tests::result_search_continuation_stays_unsupported ... ok
[INFO] [stdout] test app::update::input::vim::actions::jsonb::tests::append_opens_edit_mode ... ok
[INFO] [stdout] test app::update::input::vim::actions::jsonb::tests::extended_navigation_maps_to_cursor_moves::case_4 ... ok
[INFO] [stdout] test app::update::input::vim::actions::jsonb::tests::extended_navigation_maps_to_cursor_moves::case_5 ... ok
[INFO] [stdout] test app::update::input::vim::actions::jsonb::tests::extended_navigation_maps_to_cursor_moves::case_8 ... ok
[INFO] [stdout] test app::update::input::vim::actions::jsonb::tests::gg_moves_to_first_line ... ok
[INFO] [stdout] test app::update::input::vim::actions::jsonb::tests::left_navigation_moves_text_cursor_left ... ok
[INFO] [stdout] test app::update::input::vim::actions::jsonb::tests::search_next_moves_to_match ... ok
[INFO] [stdout] test app::update::input::vim::actions::jsonb::tests::yank_copies_full_json ... ok
[INFO] [stdout] test app::update::input::vim::actions::sql::tests::ctrl_aliases_scroll_by_line::case_1 ... ok
[INFO] [stdout] test app::update::input::vim::actions::sql::tests::ctrl_aliases_scroll_by_line::case_2 ... ok
[INFO] [stdout] test app::update::input::vim::actions::jsonb::tests::enter_is_ignored_in_viewing_mode ... ok
[INFO] [stdout] test app::update::input::vim::actions::jsonb::tests::extended_navigation_maps_to_cursor_moves::case_1 ... ok
[INFO] [stdout] test app::update::input::vim::actions::jsonb::tests::extended_navigation_maps_to_cursor_moves::case_2 ... ok
[INFO] [stdout] test app::update::input::vim::actions::jsonb::tests::extended_navigation_maps_to_cursor_moves::case_3 ... ok
[INFO] [stdout] test app::update::input::vim::actions::jsonb::tests::extended_navigation_maps_to_cursor_moves::case_6 ... ok
[INFO] [stdout] test app::update::input::vim::actions::jsonb::tests::extended_navigation_maps_to_cursor_moves::case_7 ... ok
[INFO] [stdout] test app::update::input::vim::actions::sql::tests::gg_moves_to_first_line ... ok
[INFO] [stdout] test app::update::input::vim::actions::sql::tests::insert_and_confirm_enter_insert::case_1 ... ok
[INFO] [stdout] test app::update::input::vim::actions::sql::tests::normal_navigation_moves_sql_cursor::case_04 ... ok
[INFO] [stdout] test app::update::input::vim::actions::sql::tests::normal_navigation_moves_sql_cursor::case_05 ... ok
[INFO] [stdout] test app::update::input::vim::actions::sql::tests::normal_navigation_moves_sql_cursor::case_07 ... ok
[INFO] [stdout] test app::update::input::vim::actions::sql::tests::normal_navigation_moves_sql_cursor::case_06 ... ok
[INFO] [stdout] test app::update::input::vim::actions::sql::tests::insert_and_confirm_enter_insert::case_2 ... ok
[INFO] [stdout] test app::update::input::vim::actions::sql::tests::normal_navigation_moves_sql_cursor::case_08 ... ok
[INFO] [stdout] test app::update::input::vim::actions::sql::tests::normal_navigation_moves_sql_cursor::case_01 ... ok
[INFO] [stdout] test app::update::input::vim::actions::sql::tests::normal_navigation_moves_sql_cursor::case_02 ... ok
[INFO] [stdout] test app::update::input::vim::actions::sql::tests::normal_navigation_moves_sql_cursor::case_03 ... ok
[INFO] [stdout] test app::update::input::vim::actions::sql::tests::normal_navigation_moves_sql_cursor::case_09 ... ok
[INFO] [stdout] test app::update::input::vim::actions::sql::tests::normal_navigation_moves_sql_cursor::case_11 ... ok
[INFO] [stdout] test app::update::input::vim::actions::sql::tests::normal_navigation_moves_sql_cursor::case_10 ... ok
[INFO] [stdout] test app::update::input::vim::actions::sql::tests::yank_copies_query ... ok
[INFO] [stdout] test app::update::input::vim::actions::sql::tests::normal_navigation_moves_sql_cursor::case_12 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::boundary_navigation_aliases::case_3 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::boundary_navigation_aliases::case_4 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::boundary_navigation_aliases::case_5 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::boundary_navigation_aliases::case_9 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::gg_sequence_navigation ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::horizontal_navigation_aliases::case_1 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::boundary_navigation_aliases::case_2 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::horizontal_navigation_aliases::case_2 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::boundary_navigation_aliases::case_6 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::boundary_navigation_aliases::case_7 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::boundary_navigation_aliases::case_8 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::horizontal_navigation_aliases::case_3 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::mode_transition_keys::case_1 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::mode_transition_keys::case_3 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::mode_transition_keys::case_4 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::operator_keys::case_2 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::operator_keys::case_1 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::paging_navigation_aliases::case_1 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::paging_navigation_aliases::case_2 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::paging_navigation_aliases::case_3 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::paging_navigation_aliases::case_4 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::paging_navigation_aliases::case_5 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::vertical_navigation_aliases::case_1 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::search_keys::case_2 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::mode_transition_keys::case_2 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::vertical_navigation_aliases::case_2 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::vertical_navigation_aliases::case_5 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::vertical_navigation_aliases::case_6 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::word_navigation_aliases::case_1 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::z_sequence_navigation::case_3 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::vertical_navigation_aliases::case_4 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::z_sequence_navigation::case_1 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::horizontal_navigation_aliases::case_4 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::vertical_navigation_aliases::case_3 ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog::cancel::other_intents_cancel_returns_empty_effects ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::search_keys::case_1 ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog::cancel::quit_no_connection_restores_connection_setup_synchronously ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::z_sequence_navigation::case_2 ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog::cancel::none_intent_cancel_does_not_panic ... ok
[INFO] [stdout] test app::update::input::vim::types::tests::browse_context_detects_result_pending_state ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::word_navigation_aliases::case_2 ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog::confirm::delete_connection_returns_delete_effect ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog::confirm::csv_export_returns_export_effect ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog::confirm::disable_read_only_confirm_sets_read_only_false ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog::confirm::execute_write_no_dsn_sets_error ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog::confirm::execute_write_blocked_confirm_clears_preview_state ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog::confirm::execute_write_sets_running_state_and_returns_effect ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog::confirm::quit_no_connection_sets_should_quit ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog::confirm::execute_write_blocked_returns_to_mode_with_no_effects ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog::scroll::down_clamps_at_max ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog::scroll::up_clamps_at_zero ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog::scroll::down_increments_offset ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog::scroll::up_decrements_offset ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::confirm_selection::confirm_from_normal_opens_sql_modal_with_query ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog::confirm::none_intent_confirm_does_not_panic ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::confirm_selection::confirm_from_sql_modal_overwrites_editor_content ... ok
[INFO] [stdout] test app::update::connection::selector::tests::connection_deleted::rebuilds_connection_list_items_after_delete ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog::scroll::open_resets_scroll_to_zero ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::filter_and_selection::filter_input_resets_selection ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::confirm_selection::confirm_sets_cursor_to_char_count_not_byte_len ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::filter_and_selection::select_next_clamps_at_end ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::confirm_selection::confirm_with_empty_entries_is_noop ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::filter_and_selection::select_previous_decrements ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::paging_navigation_aliases::case_6 ... ok
[INFO] [stdout] test app::update::input::vim::classify::tests::boundary_navigation_aliases::case_1 ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::lifecycle::close_restores_origin_mode ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::filter_and_selection::select_next_increments ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::loading::loaded_stores_entries ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::loading::append_failed_does_not_set_error ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::open_guards::open_when_not_connected_is_noop ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::loading::load_failed_ignored_when_picker_not_active ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::loading::load_failed_sets_error_with_expiry ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::lifecycle::open_from_normal_sets_mode_and_emits_load_effect ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::loading::loaded_ignores_when_picker_closed ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::loading::loaded_ignores_stale_connection ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::open_guards::open_when_running_is_noop ... ok
[INFO] [stdout] test app::update::reducer::tests::command_palette::confirm_selection_applies_sub_action::case_2 ... ok
[INFO] [stdout] test app::update::reducer::tests::command_palette::confirm_selection_with_reload_emits_sequence_effect ... ok
[INFO] [stdout] test app::update::reducer::tests::completion_ui::completion_next_wraps_around ... ok
[INFO] [stdout] test app::update::reducer::tests::completion_ui::completion_prev_wraps_around ... ok
[INFO] [stdout] test app::update::reducer::tests::confirm_dialog_transitions::cancel_quit_no_connection_restores_connection_setup_synchronously ... ok
[INFO] [stdout] test app::update::reducer::tests::confirm_dialog_transitions::confirm_delete_write_then_failure_returns_to_normal ... ok
[INFO] [stdout] test app::update::reducer::tests::confirm_selection_safety::confirm_selection_in_normal_mode_clears_stale_table_detail ... ok
[INFO] [stdout] test app::update::reducer::tests::confirm_dialog_transitions::confirm_delete_write_then_success_preserves_delete_context ... ok
[INFO] [stdout] test app::update::reducer::tests::confirm_selection_safety::confirm_selection_in_table_picker_mode_clears_stale_table_detail ... ok
[INFO] [stdout] test app::update::reducer::tests::command_palette::confirm_selection_applies_sub_action::case_3 ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_error_actions::close_keeps_error_info_for_reopen ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_error_actions::close_clears_copied_feedback ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_error_actions::copied_marks_feedback_visible ... ok
[INFO] [stdout] test app::update::reducer::tests::command_palette::confirm_selection_applies_sub_action::case_1 ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_error_actions::copy_returns_clipboard_effect ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_transitions::cancel_after_save_returns_to_normal_and_dispatches_try_connect ... ok
[INFO] [stdout] test app::update::reducer::tests::command_palette::confirm_selection_open_connection_selector_closes_palette ... ok
[INFO] [stdout] test app::update::reducer::tests::confirm_dialog_transitions::confirm_quit_no_connection_sets_should_quit ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_error_actions::reopen_modal_after_close_shows_same_error ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_transitions::save_completed_sets_dsn_and_returns_fetch_effect ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_validation::optional_fields_never_error::case_1 ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_transitions::save_failed_sets_error_message ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_validation::port_validation_invalid_format::case_1 ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_validation::port_validation_invalid_format::case_2 ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_validation::port_validation_out_of_range::case_1 ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_validation::port_validation_valid_range::case_1 ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_validation::port_validation_out_of_range::case_2 ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_validation::port_validation_valid_range::case_2 ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_validation::required_field_validation::case_2 ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_validation::required_field_validation::case_3 ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_validation::required_field_validation::case_1 ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_validation::required_field_validation::case_4 ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_validation::required_field_validation::case_5 ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_validation::required_field_validation::case_6 ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_validation::required_field_validation::case_7 ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_state_tests::connection_save_completed_sets_connecting_and_loading ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_validation::port_validation_valid_range::case_3 ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_state_tests::metadata_loaded_sets_connected ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_state_tests::metadata_failed_sets_failed ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_state_tests::reenter_connection_setup_preserves_form_values ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_state_tests::try_connect_when_already_connecting_is_noop ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_state_tests::switch_connection_restores_from_cache ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_state_tests::try_connect_when_already_connected_is_noop ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_state_tests::metadata_failed_preserves_connected_state ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_state_tests::try_connect_when_not_in_normal_mode_is_noop ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_state_tests::switch_connection_saves_current_and_fetches_new ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_state_tests::try_connect_without_dsn_does_nothing ... ok
[INFO] [stdout] test app::update::reducer::tests::effect_producing_actions::load_metadata_without_dsn_returns_no_effects ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_state_tests::try_connect_with_dsn_starts_connecting ... ok
[INFO] [stdout] test app::update::reducer::tests::effect_producing_actions::execute_adhoc_with_dsn_returns_effect ... ok
[INFO] [stdout] test app::update::reducer::tests::effect_producing_actions::reload_metadata_sets_is_reloading_flag ... ok
[INFO] [stdout] test app::update::reducer::tests::er_diagram::er_open_while_rendering_returns_no_effects ... ok
[INFO] [stdout] test app::update::reducer::tests::effect_producing_actions::reload_metadata_returns_sequence_effect ... ok
[INFO] [stdout] test app::update::reducer::tests::effect_producing_actions::reload_then_metadata_loaded_shows_reloaded_message ... ok
[INFO] [stdout] test app::update::reducer::tests::er_diagram::no_prefetch_emits_smart_refresh ... ok
[INFO] [stdout] test app::update::reducer::tests::er_table_picker::confirm_with_no_selection_returns_error ... ok
[INFO] [stdout] test app::update::reducer::tests::er_table_picker::confirm_with_selected_tables_sets_target_and_returns_dispatch ... ok
[INFO] [stdout] test app::update::reducer::tests::er_diagram::prefetch_started_true_emits_smart_refresh ... ok
[INFO] [stdout] test app::update::reducer::tests::er_diagram::no_metadata_returns_error ... ok
[INFO] [stdout] test app::update::reducer::tests::er_table_picker::close_er_table_picker_returns_to_normal ... ok
[INFO] [stdout] test app::update::reducer::tests::er_diagram::metadata_failed_resets_er_waiting_to_idle ... ok
[INFO] [stdout] test app::update::reducer::tests::er_diagram::always_emits_smart_refresh_even_with_pending_tables ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_error_actions::toggle_details_flips_expanded_state ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_transitions::cancel_on_first_run_opens_confirm_dialog ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_validation::optional_fields_never_error::case_2 ... ok
[INFO] [stdout] test app::update::reducer::tests::er_table_picker::open_clears_selections_and_filter ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_validation::port_validation_out_of_range::case_3 ... ok
[INFO] [stdout] test app::update::reducer::tests::er_table_picker::open_without_metadata_sets_pending ... ok
[INFO] [stdout] test app::update::reducer::tests::er_table_picker::prefetch_complete_dispatches_er_generate ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_setup_validation::validate_all_checks_all_required_fields ... ok
[INFO] [stdout] test app::update::reducer::tests::er_table_picker::target_tables_survive_er_open ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_state_tests::reenter_connection_setup_resets_all_states ... ok
[INFO] [stdout] test app::update::reducer::tests::modal_toggles::close_help_resets_scroll_offset ... ok
[INFO] [stdout] test app::update::reducer::tests::er_table_picker::prefetch_complete_with_failures_does_not_auto_open ... ok
[INFO] [stdout] test app::update::reducer::tests::modal_toggles::close_table_picker_returns_to_normal ... ok
[INFO] [stdout] test app::update::reducer::tests::effect_producing_actions::load_metadata_with_dsn_returns_fetch_effect ... ok
[INFO] [stdout] test app::update::reducer::tests::modal_toggles::open_table_picker_sets_mode_and_clears_filter ... ok
[INFO] [stdout] test app::update::reducer::tests::modal_toggles::open_help_toggles_help_mode ... ok
[INFO] [stdout] test app::update::reducer::tests::operator_pending::y_then_d_cancels_yank_starts_delete ... ok
[INFO] [stdout] test app::update::reducer::tests::er_table_picker::metadata_loaded_with_pending_but_non_normal_mode_discards ... ok
[INFO] [stdout] test app::update::reducer::tests::er_table_picker::metadata_loaded_with_pending_dispatches_open ... ok
[INFO] [stdout] test app::update::reducer::tests::er_table_picker::metadata_loaded_without_pending_does_not_dispatch_open ... ok
[INFO] [stdout] test app::update::reducer::tests::pagination_integration::confirm_selection_initializes_pagination_via_dispatch ... ok
[INFO] [stdout] test app::update::reducer::tests::pure_actions::resize_updates_terminal_height ... ok
[INFO] [stdout] test app::update::reducer::tests::pagination_integration::next_page_after_confirm_emits_correct_offset ... ok
[INFO] [stdout] test app::update::reducer::tests::pure_actions::selection_on_empty_tables_keeps_none::case_4 ... ok
[INFO] [stdout] test app::update::reducer::tests::pure_actions::selection_on_empty_tables_keeps_none::case_3 ... ok
[INFO] [stdout] test app::update::reducer::tests::pure_actions::selection_on_empty_tables_keeps_none::case_1 ... ok
[INFO] [stdout] test app::update::reducer::tests::pure_actions::toggle_focus_returns_no_effects ... ok
[INFO] [stdout] test app::update::reducer::tests::response_handlers::enter_with_error_info_opens_modal ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::help_half_page_scroll_uses_half_of_visible_rows ... ok
[INFO] [stdout] test app::update::reducer::tests::pure_actions::render_returns_render_effect ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::help_full_page_scroll_uses_visible_rows ... ok
[INFO] [stdout] test app::update::reducer::tests::pure_actions::selection_on_empty_tables_keeps_none::case_2 ... ok
[INFO] [stdout] test app::update::reducer::tests::response_handlers::metadata_loaded_with_tables_selects_first ... ok
[INFO] [stdout] test app::update::reducer::tests::response_handlers::metadata_failed_opens_error_modal_automatically ... ok
[INFO] [stdout] test app::update::reducer::tests::response_handlers::metadata_loaded_with_empty_tables_selects_none ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::help_scroll_bottom_moves_to_max_scroll ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::help_scroll_top_resets_offset_to_zero ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::result_scroll_top_resets_to_zero ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::help_page_scroll_saturates_at_bounds ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::result_scroll_up_decrements_offset ... ok
[INFO] [stdout] test app::update::reducer::tests::operator_pending::yank_pending_reset_on_non_yank_action ... ok
[INFO] [stdout] test app::update::reducer::tests::pure_actions::quit_sets_should_quit_and_returns_no_effects ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::result_scroll_up_saturates_at_zero ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_04 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_02 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_06 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_05 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_01 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_07 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_03 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_09 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_11 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_10 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_12 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_13 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_14 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_19 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_08 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_18 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_15 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_17 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_16 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_21 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_20 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_22 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_24 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_23 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::scroll_reduce_never_returns_effects::case_25 ... ok
[INFO] [stdout] test app::update::reducer::tests::sql_modal_debounce::sql_modal_input_sets_debounce_state ... ok
[INFO] [stdout] test app::update::reducer::tests::sql_modal_debounce::sql_modal_backspace_sets_debounce_state ... ok
[INFO] [stdout] test app::update::reducer::tests::sql_modal_debounce::debounce_state_uses_provided_now ... ok
[INFO] [stdout] test app::update::reducer::tests::table_detail_cached::emits_cache_effect ... ok
[INFO] [stdout] test app::update::reducer::tests::table_detail_cached::with_queue_returns_process_effect ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirmation_flow::submit_delete_without_where_enters_confirming_high ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirming_high::high_risk_confirm_blocked_when_no_target ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirming_high::high_risk_backspace_removes_char ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirming_high::high_risk_input_appends_char ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirmation_flow::submit_insert_executes_immediately ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirming_high::high_risk_move_cursor_works ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirming_high::cancel_from_confirming_high_returns_to_normal ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirming_high::high_risk_confirm_executes_on_match ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirming_high::submit_high_risk_drop_enters_confirming_high ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirming_high::submit_delete_no_where_enters_confirming_high ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirming_high::submit_unsupported_executes_immediately ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirming_high::submit_other_executes_immediately ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirming_high::submit_drop_schema_qualified_preserves_full_name ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirming_high::high_risk_confirm_blocked_on_mismatch ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirmation_flow::submit_select_executes_immediately ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirming_high::submit_medium_risk_executes_immediately ... ok
[INFO] [stdout] test app::update::sql_editor::tests::normal_insert_mode::append_insert_moves_to_line_end_and_transitions_to_editing ... ok
[INFO] [stdout] test app::update::sql_editor::tests::normal_insert_mode::enter_insert_transitions_to_editing ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirming_high::submit_update_no_where_enters_confirming_high ... ok
[INFO] [stdout] test app::update::sql_editor::tests::normal_insert_mode::enter_normal_transitions_to_normal ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirming_high::submit_truncate_enters_confirming_high ... ok
[INFO] [stdout] test app::update::sql_editor::tests::normal_insert_mode::open_sql_modal_starts_in_normal ... ok
[INFO] [stdout] test app::update::sql_editor::tests::normal_insert_mode::open_sql_modal_resets_active_tab_to_sql ... ok
[INFO] [stdout] test app::update::sql_editor::tests::normal_insert_mode::ignored_in_normal_mode ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirming_high::high_risk_confirm_matches_full_name_not_truncated ... ok
[INFO] [stdout] test app::update::sql_editor::tests::read_only_guard::read_only_reject_clears_prior_success ... ok
[INFO] [stdout] test app::update::sql_editor::tests::scrolling::moves_down_without_scrolling_while_cursor_stays_inside_visible_rows ... ok
[INFO] [stdout] test app::update::sql_editor::tests::normal_insert_mode::yank_empty_content_is_noop ... ok
[INFO] [stdout] test app::update::sql_editor::tests::normal_insert_mode::yank_non_empty_emits_copy_effect ... ok
[INFO] [stdout] test app::update::sql_editor::tests::normal_insert_mode::vertical_move_after_edit_uses_current_column ... ok
[INFO] [stdout] test app::update::sql_editor::tests::paste::advances_cursor ... ok
[INFO] [stdout] test app::update::sql_editor::tests::paste::advances_cursor_with_multibyte ... ok
[INFO] [stdout] test app::update::sql_editor::tests::paste::confirming_high_is_ignored ... ok
[INFO] [stdout] test app::update::sql_editor::tests::normal_insert_mode::yank_success_sets_flash ... ok
[INFO] [stdout] test app::update::sql_editor::tests::paste::dismisses_completion ... ok
[INFO] [stdout] test app::update::sql_editor::tests::paste::inserts_at_cursor ... ok
[INFO] [stdout] test app::update::sql_editor::tests::paste::normalizes_crlf ... ok
[INFO] [stdout] test app::update::sql_editor::tests::paste::preserves_newlines ... ok
[INFO] [stdout] test app::update::sql_editor::tests::read_only_guard::read_only_allows_select_query ... ok
[INFO] [stdout] test app::update::sql_editor::tests::yank::both_auto_slots_yank_returns_distinguishable_headers ... ok
[INFO] [stdout] test app::update::sql_editor::tests::scrolling::scrolls_once_cursor_moves_past_visible_rows ... ok
[INFO] [stdout] test app::update::sql_editor::tests::yank::compare_tab_yank_both_slots ... ok
[INFO] [stdout] test app::update::sql_editor::tests::yank::compare_tab_yank_left_only_is_noop ... ok
[INFO] [stdout] test app::update::sql_editor::tests::yank::compare_tab_yank_empty_is_noop ... ok
[INFO] [stdout] test app::update::sql_editor::tests::yank::compare_tab_yank_right_only_is_noop ... ok
[INFO] [stdout] test app::update::sql_editor::tests::yank::compare_tab_yank_includes_verdict_with_reasons ... ok
[INFO] [stdout] test domain::column::tests::type_display::formats_sql_type::case_3 ... ok
[INFO] [stdout] test domain::command_tag::tests::affected_rows_returns_count_for_dml ... ok
[INFO] [stdout] test app::update::sql_editor::tests::yank::plan_tab_yank_copies_plan_text ... ok
[INFO] [stdout] test domain::column::tests::type_display::formats_sql_type::case_4 ... ok
[INFO] [stdout] test domain::command_tag::tests::affected_rows_returns_none_for_ddl_and_tcl ... ok
[INFO] [stdout] test domain::command_tag::tests::display_message_other ... ok
[INFO] [stdout] test domain::command_tag::tests::display_message_plural_rows ... ok
[INFO] [stdout] test app::update::sql_editor::tests::yank::plan_tab_yank_no_plan_is_noop ... ok
[INFO] [stdout] test app::update::sql_editor::tests::read_only_guard::read_only_blocks_write_query_in_sql_modal ... ok
[INFO] [stdout] test domain::column::tests::type_display::formats_sql_type::case_1 ... ok
[INFO] [stdout] test domain::command_tag::tests::display_message_ddl ... ok
[INFO] [stdout] test app::update::sql_editor::tests::yank::sql_tab_yank_copies_content ... ok
[INFO] [stdout] test domain::column::tests::type_display::formats_sql_type::case_2 ... ok
[INFO] [stdout] test domain::command_tag::tests::display_message_tcl ... ok
[INFO] [stdout] test domain::command_tag::tests::display_message_singular_row ... ok
[INFO] [stdout] test app::update::sql_editor::tests::yank::plan_tab_yank_error_state_is_noop ... ok
[INFO] [stdout] test app::update::sql_editor::tests::yank::sql_tab_yank_empty_is_noop ... ok
[INFO] [stdout] test domain::command_tag::tests::display_message_zero_rows ... ok
[INFO] [stdout] test domain::command_tag::tests::is_schema_modifying_true_for_ddl ... ok
[INFO] [stdout] test domain::command_tag::tests::needs_refresh_false_for_read_only_and_tcl ... ok
[INFO] [stdout] test domain::command_tag::tests::needs_refresh_true_for_dml_and_ddl ... ok
[INFO] [stdout] test domain::connection::id::tests::display_shows_uuid ... ok
[INFO] [stdout] test domain::connection::id::tests::new_generates_unique_ids ... ok
[INFO] [stdout] test domain::connection::id::tests::from_string_preserves_value ... ok
[INFO] [stdout] test domain::connection::name::tests::display::formats_as_inner_string ... ok
[INFO] [stdout] test domain::connection::name::tests::new::accepts_nonempty_names::case_1 ... ok
[INFO] [stdout] test domain::connection::name::tests::new::accepts_nonempty_names::case_3 ... ok
[INFO] [stdout] test domain::command_tag::tests::is_schema_modifying_false_for_non_ddl ... ok
[INFO] [stdout] test domain::connection::name::tests::new::over_50_chars_returns_too_long_error ... ok
[INFO] [stdout] test domain::connection::name::tests::new::rejects_empty_or_whitespace_names::case_1 ... ok
[INFO] [stdout] test domain::connection::name::tests::new::accepts_nonempty_names::case_2 ... ok
[INFO] [stdout] test domain::connection::name::tests::normalized::lowercases_name ... ok
[INFO] [stdout] test domain::connection::name::tests::new::accepts_nonempty_names::case_4 ... ok
[INFO] [stdout] test domain::connection::name::tests::new::exactly_50_chars_returns_ok ... ok
[INFO] [stdout] test domain::connection::profile::tests::display_name::formats_connection_name ... ok
[INFO] [stdout] test domain::connection::name::tests::serde::serializes_to_string ... ok
[INFO] [stdout] test domain::connection::profile::tests::new::empty_name_returns_error ... ok
[INFO] [stdout] test domain::connection::name::tests::new::trims_whitespace ... ok
[INFO] [stdout] test domain::connection::profile::tests::new::generates_unique_id ... ok
[INFO] [stdout] test domain::connection::name::tests::serde::deserialize_empty_returns_error ... ok
[INFO] [stdout] test domain::connection::ssl_mode::tests::from_str_parses_all_variants ... ok
[INFO] [stdout] test domain::connection::name::tests::new::rejects_empty_or_whitespace_names::case_2 ... ok
[INFO] [stdout] test domain::connection::ssl_mode::tests::from_str_is_case_insensitive ... ok
[INFO] [stdout] test domain::er::tests::fk_neighbors_of_seeds::already_cached_target_excluded ... ok
[INFO] [stdout] test domain::er::tests::fk_neighbors_of_seeds::no_fk_returns_empty ... ok
[INFO] [stdout] test domain::er::tests::fk_neighbors_of_seeds::uncached_fk_target_returned ... ok
[INFO] [stdout] test domain::connection::ssl_mode::tests::from_str_returns_error_for_unknown ... ok
[INFO] [stdout] test domain::er::tests::fk_neighbors_of_seeds::non_seed_cached_table_ignored ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::bidirectional_traversal ... ok
[INFO] [stdout] test domain::er::tests::fk_neighbors_of_seeds::seed_table_itself_not_returned ... ok
[INFO] [stdout] test domain::connection::name::tests::serde::deserializes_valid_string ... ok
[INFO] [stdout] test domain::connection::service_entry::tests::to_dsn_formats_correctly ... ok
[INFO] [stdout] test domain::connection::name::tests::normalized::mixed_case_normalized_to_lowercase ... ok
[INFO] [stdout] test domain::connection::service_entry::tests::connection_id_uses_prefix ... ok
[INFO] [stdout] test domain::connection::service_entry::tests::display_name_returns_service_name ... ok
[INFO] [stdout] test domain::connection::ssl_mode::tests::default_is_prefer ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::cross_schema_fk ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::direct_fk_returns_both ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::depth_2_returns_two_hops ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::cyclic_fk_does_not_loop ... ok
[INFO] [stdout] test domain::connection::ssl_mode::tests::display_matches_parse ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::depth_1_returns_direct_neighbors_only ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::disconnected_table_excluded ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::nonexistent_seed_returns_empty ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable_multi::empty_seeds_returns_empty ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable_multi::multi_seeds_union ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable_multi::invalid_seed_ignored ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable_multi::overlap_dedup ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::both_costs_none ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::one_cost_none ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::both_zero_cost ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::row_estimate_change_in_reasons ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable_multi::single_seed_matches_single_fn ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::improved_when_cost_drops_below_threshold ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::worsened_when_cost_exceeds_threshold ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::zero_baseline_cost_with_nonzero_current ... ok
[INFO] [stdout] test domain::explain_plan::tests::parse::arrow_prefixed_node ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::boundary_at_exactly_0_9_is_similar ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::seed_only_no_fks_returns_seed ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::boundary_at_exactly_1_1_is_similar ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::same_row_estimate_not_in_reasons ... ok
[INFO] [stdout] test domain::explain_plan::tests::parse::explain_analyze_output ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::reasons_capped_at_max ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::same_node_type_not_in_reasons ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::similar_within_threshold ... ok
[INFO] [stdout] test domain::explain_plan::tests::parse::empty_input ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::transitive_fk_returns_chain ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::node_type_change_in_reasons ... ok
[INFO] [stdout] test domain::explain_plan::tests::parse::single_node_seq_scan ... ok
[INFO] [stdout] test domain::explain_plan::tests::parse::unparseable_text ... ok
[INFO] [stdout] test domain::explain_plan::tests::parse::whitespace_only_input ... ok
[INFO] [stdout] test domain::foreign_key::tests::referenced_table_returns_schema_dot_table ... ok
[INFO] [stdout] test domain::metadata::tests::tables_by_schema::empty_tables_returns_empty_map ... ok
[INFO] [stdout] test domain::metadata::tests::tables_by_schema::multiple_schemas_groups_correctly ... ok
[INFO] [stdout] test domain::query_history::tests::serde_json_format ... ok
[INFO] [stdout] test domain::query_history::tests::serde_round_trip ... ok
[INFO] [stdout] test domain::query_result::tests::builder::with_command_tag_sets_tag ... ok
[INFO] [stdout] test domain::query_history::tests::serde_round_trip_with_affected_rows ... ok
[INFO] [stdout] test domain::query_result::tests::row_count_display::formats_row_count_display::case_3 ... ok
[INFO] [stdout] test domain::query_result::tests::error::creates_with_empty_rows_and_error_message ... ok
[INFO] [stdout] test domain::query_result::tests::success::creates_with_correct_fields ... ok
[INFO] [stdout] test domain::query_result::tests::row_count_display::formats_row_count_display::case_1 ... ok
[INFO] [stdout] test domain::query_result::tests::row_count_display::formats_row_count_display::case_2 ... ok
[INFO] [stdout] test domain::table::tests::display_name::omit_public_true_returns_name_only ... ok
[INFO] [stdout] test domain::table::tests::qualified_name::formats_schema_dot_name ... ok
[INFO] [stdout] test domain::table::tests::summary::display_name_keeps_non_public_schema ... ok
[INFO] [stdout] test domain::table::tests::summary::display_name_omits_public ... ok
[INFO] [stdout] test domain::table::tests::summary::qualified_name_lower_returns_lowercased ... ok
[INFO] [stdout] test domain::explain_plan::tests::parse::nested_plan_extracts_top_level_only ... ok
[INFO] [stdout] test domain::trigger::tests::trigger_timing_display::before_displays_uppercase ... ok
[INFO] [stdout] test domain::trigger::tests::trigger_event_display::insert_displays_uppercase ... ok
[INFO] [stdout] test domain::trigger::tests::trigger_timing_display::instead_of_displays_with_space ... ok
[INFO] [stdout] test domain::query_result::tests::success::row_count_matches_rows_len ... ok
[INFO] [stdout] test domain::table::tests::display_name::omit_public_false_returns_qualified ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::loading::no_file_returns_empty_vec ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::loading::reports_error_for_invalid_toml ... ok
[INFO] [stdout] test domain::trigger::tests::trigger_event_display::truncate_displays_uppercase ... ok
[INFO] [stdout] test domain::trigger::tests::trigger_event_display::update_displays_uppercase ... ok
[INFO] [stdout] test domain::trigger::tests::trigger_timing_display::after_displays_uppercase ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::loading::reports_version_mismatch_for_v1_format ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::atomic_write::existing_file_preserved_on_save_roundtrip ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::lookup::existing_id_finds_connection ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::lookup::missing_id_returns_none ... ok
[INFO] [stdout] test domain::trigger::tests::trigger_event_display::delete_displays_uppercase ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::delete::nonexistent_id_returns_not_found ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::atomic_write::leaves_no_temp_file ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::duplicate_sections_last_wins ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::comments_and_blank_lines_ignored ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::empty_content_returns_no_entries ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::find_service_file_errors_when_pgservicefile_missing ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::hostaddr_maps_to_host ... ok
[INFO] [stdout] test infra::adapters::er_log_writer::tests::write_er_failure_log_blocking::multiple_failures_writes_all_details ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::invalid_lines_ignored ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::invalid_port_stored_as_none ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::save::creates_config_directory_if_missing ... ok
[INFO] [stdout] test infra::adapters::er_log_writer::tests::write_er_failure_log_blocking::empty_list_writes_zero_count ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::find_service_file_uses_pgservicefile_env ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::save::sets_permissions_to_0600 ... ok
[INFO] [stdout] test infra::adapters::er_log_writer::tests::write_er_failure_log_blocking::output_includes_timestamp ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::save::duplicate_name_returns_error ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::save::same_id_updates_without_duplicate_error ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::version_mismatch::save_returns_error_instead_of_losing_data ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::delete::removes_connection_by_id ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::storage_path::matches_config_file_path ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::roundtrip::save_and_load_preserves_data ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::keys_before_any_section_ignored ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::multiple_sections_parsed ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::unknown_keys_ignored ... ok
[INFO] [stdout] test infra::adapters::postgres::dsn::tests::dsn_builder::encodes_special_chars_in_credentials ... ok
[INFO] [stdout] test infra::adapters::postgres::dsn::tests::dsn_builder::includes_all_connection_fields ... ok
[INFO] [stdout] test infra::adapters::postgres::dsn::tests::extract_database_name::empty_path ... ok
[INFO] [stdout] test infra::adapters::postgres::dsn::tests::extract_database_name::key_value_at_end ... ok
[INFO] [stdout] test infra::adapters::postgres::dsn::tests::extract_database_name::key_value_format ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::whitespace_around_keys_and_values_trimmed ... ok
[INFO] [stdout] test infra::adapters::postgres::dsn::tests::extract_database_name::key_value_only ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::single_section_parsed ... ok
[INFO] [stdout] test infra::adapters::postgres::dsn::tests::extract_database_name::roundtrip_build_then_extract_returns_original_dbname ... ok
[INFO] [stdout] test infra::adapters::postgres::dsn::tests::extract_database_name::uri_path_returns_dbname::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::dsn::tests::extract_database_name::service_dsn_returns_service_name ... ok
[INFO] [stdout] test infra::adapters::postgres::dsn::tests::extract_database_name::uri_path_returns_dbname::case_1 ... ok
[INFO] [stdout] test infra::adapters::postgres::dsn::tests::extract_database_name::uri_path_returns_dbname::case_3 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::csv_parsing::csv_with_quoted_fields_parses_correctly ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::csv_parsing::empty_csv_output_has_no_headers ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::execute_query_raw_command_tag::csv_stdout_is_not_mistaken_for_command_tag ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::execute_query_raw_command_tag::delete_stdout_yields_delete_tag ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::csv_parsing::csv_with_empty_values_parses_correctly ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::csv_parsing::invalid_csv_returns_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::csv_parsing::csv_with_multibyte_characters_parses_correctly ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::section_with_no_keys ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::csv_parsing::non_csv_output_like_notice_parses_as_header ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::extract_last_csv_block::empty_leading_result_returns_last_block ... ignored, empty leading result set — needs boundary redesign
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::execute_query_raw_command_tag::select_tag_captured_for_ctas ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::extract_last_csv_block::non_select_statements_excluded_from_hint ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::execute_query_raw_command_tag::create_table_stdout_yields_create_tag_zero_rows ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::execute_query_raw_command_tag::insert_stdout_yields_insert_tag ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::execute_query_raw_command_tag::select_csv_last_line_is_not_mistaken_for_select_tag ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::csv_parsing::valid_csv_parses_headers_and_rows ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::csv_parsing::mixed_notice_and_csv_parses_first_line_as_header ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::execute_query_raw_command_tag::update_stdout_yields_update_tag ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::extract_last_csv_block::data_row_not_mistaken_when_single_select ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::extract_last_csv_block::empty_input_returns_empty ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::extract_last_csv_block::header_only_returns_unchanged ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::extract_last_csv_block::leading_block_comment_does_not_break_hint ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::extract_last_csv_block::leading_line_comment_does_not_break_hint ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::execute_query_raw_command_tag::empty_select_header_not_captured_by_filter ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::write_command_tag::parse_affected_rows_for_delete ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::extract_last_csv_block::same_field_count_different_headers_returns_last ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::write_command_tag::parse_affected_rows_for_update ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::extract_last_csv_block::single_result_set_returned_as_is ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::write_command_tag::update_zero_rows_returns_zero ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::write_command_tag::parse_affected_rows_returns_count_for_select ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::empty_or_whitespace_returns_none::case_1 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::extract_last_csv_block::single_result_set_returns_unchanged ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::extract_last_csv_block::single_statement_falls_back ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::extract_last_csv_block::three_different_headers_same_field_count ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::extract_last_csv_block::three_selects_returns_last ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::extract_last_csv_block::two_selects_different_column_count_returns_last ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::extract_last_csv_block::two_selects_same_header_returns_last ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::write_command_tag::delete_large_number_returns_correct_value ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::executor::tests::write_command_tag::invalid_format_returns_none ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::empty_or_whitespace_returns_none::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::extract_from_empty_returns_none ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::extract_from_multiline_with_notice ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::malformed_count_returns_none::case_1 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::malformed_count_returns_none::case_4 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::malformed_count_returns_none::case_5 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::parse_affected_rows_regression ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::parse_known_tags::case_01 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::extract_skips_trailing_empty_lines ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::parse_known_tags::case_03 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::parse_known_tags::case_04 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::malformed_count_returns_none::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::parse_known_tags::case_05 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::parse_known_tags::case_02 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::parse_known_tags::case_06 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::parse_known_tags::case_07 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::malformed_count_returns_none::case_3 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::parse_known_tags::case_08 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::parse_known_tags::case_09 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::parse_known_tags::case_10 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::parse_known_tags::case_11 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::parse_known_tags::case_13 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_create_as_kind::create_as_returns_correct_tag::case_3_temporary ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::parse_known_tags::case_14 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_create_as_kind::create_as_returns_correct_tag::case_5_lowercase ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_create_as_kind::create_as_returns_correct_tag::case_4_unlogged ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_create_as_kind::create_as_returns_correct_tag::case_6_materialized_view ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::parse_known_tags::case_15 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_create_as_kind::non_ctas_returns_none::case_2_plain_select ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::parse_known_tags::case_16 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::parse_known_tags::case_12 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_create_as_kind::non_ctas_returns_none::case_1_create_view ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_select_into_kind::non_select_into_returns_none::case_1_plain_select ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::unknown_command_returns_other ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_select_into_kind::non_select_into_returns_none::case_2_insert_into ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_create_as_kind::create_as_returns_correct_tag::case_1_basic ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_select_into_kind::quoted_into_returns_none::case_1_double_quotes ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_select_into_kind::quoted_into_returns_none::case_3_tagged_dollar_quote ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_select_into_kind::non_select_into_returns_none::case_3_create_table ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_select_into_kind::quoted_into_returns_none::case_2_dollar_quote ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_select_into_kind::quoted_into_returns_none::case_4_line_comment ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_create_as_kind::create_as_returns_correct_tag::case_2_temp ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::command_tag_parsing::parse_known_tags::case_17 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_select_into_kind::quoted_into_returns_none::case_5_block_comment ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::discard_rolled_back::release_after_rollback_does_not_leak_outer_frame ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::discard_rolled_back::rollback_then_release_same_sp ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_select_into_kind::quoted_into_returns_none::case_6_single_quote ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_select_into_kind::select_into_returns_create_table::case_1_basic ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::discard_rolled_back::committed_txn ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::discard_rolled_back::full_rollback ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::discard_rolled_back::full_rollback_then_bare_dml ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::discard_rolled_back::full_rollback_with_savepoint ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::discard_rolled_back::multiple_txns ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_select_into_kind::select_into_returns_create_table::case_2_with_columns ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::detect_select_into_kind::select_into_returns_create_table::case_3_with_cte ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::discard_rolled_back::partial_rollback ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::discard_rolled_back::no_txn ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::discard_rolled_back::tcl_only ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::is_known_tcl_tag::recognizes_begin_commit_rollback ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::is_known_tcl_tag::recognizes_savepoint_and_release ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::is_known_tcl_tag::recognizes_start_transaction ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::is_known_tcl_tag::rejects_non_tcl ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::committed_txn_with_update ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::count_mismatch_fallback ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::create_materialized_view ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::ctas_committed ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::ctas_full_rollback ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::ctas_savepoint_rollback_no_other_dml ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::ctas_then_delete_no_txn ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::ctas_outside_savepoint_survives ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::partial_rollback_keeps_outer_dml ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::ctas_savepoint_rollback_with_outer_dml ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::rolled_back_txn ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::discard_rolled_back::savepoint_release ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::csv_stdout_returns_none ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::discard_rolled_back::unclosed_txn ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::select_into_savepoint_rollback ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::select_into_then_delete_no_txn ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::single_ctas_no_txn ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::create_temp_table_as ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::with_select_into ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_all_tags::multi_line_tags ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_all_tags::csv_input_returns_none ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_all_tags::single_ddl ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_all_tags::skips_empty_lines ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_all_tags::savepoint_line_is_accepted ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::resolved_tags_aggregate::schema_modifying_takes_priority ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::resolved_tags_aggregate::ddl_and_dml_mixed_schema_wins ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::resolved_tags_aggregate::tcl_only_returns_last_tag ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::lexer::tests::split_sql_statements::quoted_semicolon_returns_single_statement::case_3_dollar_quote ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::lexer::tests::split_sql_statements::blank_input_returns_empty::case_2_whitespace_only ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::resolved_tags_aggregate::effective_empty_with_modifying_returns_rollback ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::lexer::tests::split_sql_statements::quoted_semicolon_returns_single_statement::case_4_tagged_dollar_quote ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::lexer::tests::split_sql_statements::blank_input_returns_empty::case_1_empty ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::lexer::tests::split_sql_statements::quoted_semicolon_returns_single_statement::case_5_line_comment ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::lexer::tests::split_sql_statements::valid_input_returns_split_statements::case_1_two_statements ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::lexer::tests::split_sql_statements::quoted_semicolon_returns_single_statement::case_6_block_comment ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::lexer::tests::split_sql_statements::valid_input_returns_split_statements::case_2_single_statement ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::single_dml_stdout ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_aggregate_command_tag::single_line_select_passes_through ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_all_tags::single_dml_tags ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::resolved_tags_aggregate::last_needs_refresh ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_all_tags::empty_string_returns_none ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::lexer::tests::split_sql_statements::quoted_semicolon_returns_single_statement::case_2_double_quotes ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::lexer::tests::split_sql_statements::quoted_semicolon_returns_single_statement::case_1_single_quotes ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::lexer::tests::split_sql_statements::valid_input_returns_split_statements::case_3_trailing_semicolon ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::lexer::tests::split_sql_statements::valid_input_returns_split_statements::case_4_multi_statement_txn ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::lexer::tests::split_sql_statements::valid_input_returns_split_statements::case_5_escaped_single_quote ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::empty_array_returns_empty_fk_vec ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::composite_foreign_key_parses_multiple_columns ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::discard_rolled_back::rollback_then_dml ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::empty_or_null_input_returns_empty_fk_vec::case_1 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::fk_code_maps_to_fk_action::case_1 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::empty_or_null_input_returns_empty_fk_vec::case_3 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::fk_code_maps_to_fk_action::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::fk_code_maps_to_fk_action::case_3 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::fk_code_maps_to_fk_action::case_6 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::malformed_json_returns_invalid_json_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::fk_code_maps_to_fk_action::case_5 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::multiple_foreign_keys_parse_in_order ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::valid_single_fk_parses_all_fields ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::missing_required_field_returns_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::json_parse_errors::parse_columns_with_missing_field_returns_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::json_parse_errors::parse_tables_with_wrong_structure_returns_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::json_parse_errors::parse_tables_with_malformed_json_returns_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::cmd_code_maps_to_rls_command::case_4 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::cmd_code_maps_to_rls_command::case_5 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::cmd_code_maps_to_rls_command::case_6 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::cmd_code_maps_to_rls_command::case_3 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::json_parse_errors::parse_indexes_with_wrong_type_returns_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::json_parse_errors::parse_empty_string_returns_empty_vec ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::empty_or_null_input_returns_none::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::empty_or_null_input_returns_none::case_3 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::enabled_and_forced_rls_preserves_flags ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::empty_or_null_input_returns_empty_fk_vec::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::malformed_json_returns_invalid_json_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::disabled_rls_without_policies_is_empty ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::cmd_code_maps_to_rls_command::case_1 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::cmd_code_maps_to_rls_command::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::empty_or_null_input_returns_none::case_1 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::missing_required_field_returns_invalid_json_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::schema_parsing::empty_array_returns_empty_schema_vec ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::fk_code_maps_to_fk_action::case_4 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::schema_parsing::empty_or_null_input_returns_empty_schema_vec::case_1 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::schema_parsing::empty_or_null_input_returns_empty_schema_vec::case_3 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::null_roles_becomes_empty_vec ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_columns_and_fks_parsing::empty_input_returns_error_for_columns_and_fks ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::schema_parsing::valid_multiple_schemas_parse_in_order ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::schema_parsing::valid_single_schema_parses_correctly ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::schema_parsing::wrong_structure_returns_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::schema_parsing::empty_or_null_input_returns_empty_schema_vec::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_columns_and_fks_parsing::unknown_key_returns_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::schema_parsing::malformed_json_returns_invalid_json_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_detail_combined_parsing::empty_input_returns_error_for_combined_detail ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::single_policy_parses_all_fields ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_columns_and_fks_parsing::valid_light_json_parses_columns_and_fks ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_columns_and_fks_parsing::missing_key_returns_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_detail_combined_parsing::all_null_sub_values_parse_to_empty_defaults ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_columns_and_fks_parsing::null_input_returns_error_for_columns_and_fks ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::schema_parsing::missing_name_field_returns_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_columns_and_fks_parsing::null_sub_values_parse_to_empty ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_info_parsing::all_fields_present_returns_values ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_info_parsing::empty_or_null_input_returns_none::case_1 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_info_parsing::empty_or_null_input_returns_none::case_3 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_info_parsing::empty_or_null_input_returns_none::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_info_parsing::negative_row_count_returns_none ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_info_parsing::null_fields_returns_none ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_info_parsing::zero_row_count_returns_zero ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_signature_parsing::empty_or_null_input_returns_empty_vec::case_3 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_detail_combined_parsing::null_input_returns_error_for_combined_detail ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_info_parsing::malformed_json_returns_invalid_json_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_signature_parsing::empty_or_null_input_returns_empty_vec::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_signature_parsing::empty_or_null_input_returns_empty_vec::case_1 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_detail_combined_parsing::missing_key_returns_invalid_json_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::wrong_column_type_returns_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_detail_combined_parsing::unknown_key_returns_invalid_json_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::json_parse_errors::parse_null_string_returns_empty_vec ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_detail_combined_parsing::valid_combined_json_parses_all_categories ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_signature_parsing::malformed_json_returns_invalid_json_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_signature_parsing::valid_single_signature_parses_all_fields ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::empty_array_returns_empty_trigger_vec ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::empty_or_null_input_returns_empty_trigger_vec::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::malformed_json_returns_invalid_json_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::empty_or_null_input_returns_empty_trigger_vec::case_3 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::multiple_events_parsed_in_order ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::timing_code_maps_to_trigger_timing::case_3 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::ddl::tests::ddl_generation::default_ddl_line_count_matches_generated_ddl ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::ddl::tests::ddl_generation::single_quote_in_comment_is_escaped ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::ddl::tests::ddl_generation::table_comment_appended_after_create ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_signature_parsing::missing_field_returns_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::timing_code_maps_to_trigger_timing::case_1 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_signature_parsing::multiple_signatures_parse_in_order ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_dialect_bulk_delete::empty_string_pk_value_returns_empty_literal ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::empty_or_null_input_returns_empty_trigger_vec::case_1 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::timing_code_maps_to_trigger_timing::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::timing_code_maps_to_trigger_timing::case_4 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::security_definer_false_stays_false ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::ddl::tests::ddl_generation::no_comment_on_when_absent ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_dialect_bulk_delete::build_bulk_delete_sql_escapes_column_name ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::ddl::tests::ddl_generation::column_comment_appended_after_create ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::valid_single_trigger_parses_all_fields ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_dialect_bulk_delete::null_pk_value_uses_null_literal ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::ddl::tests::ddl_generation::table_with_pk_returns_valid_ddl ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_dialect_bulk_delete::pk_value_with_quotes_is_escaped ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_dialect_bulk_delete::single_pk_multiple_rows_returns_in_clause_with_all_values ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_dialect_bulk_delete::single_pk_single_row_returns_in_clause ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_dialect_update::composite_pk_returns_where_with_all_keys ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_dialect_update::single_pk_returns_escaped_sql ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_dialect_bulk_delete::composite_pk_returns_row_constructor_in_clause ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_dialect_update_edge_cases::build_update_sql_escapes_column_name ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_dialect_update_edge_cases::null_value_generates_unquoted_null ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_dialect_update_edge_cases::empty_string_value_generates_empty_literal ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_literal_or_null_tests::formats_sql_literal_or_null::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_literal_or_null_tests::formats_sql_literal_or_null::case_5 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_literal_or_null_tests::formats_sql_literal_or_null::case_3 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_literal_or_null_tests::formats_sql_literal_or_null::case_4 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_literal_or_null_tests::formats_sql_literal_or_null::case_6 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::metadata_query_injection::hostile_input_is_escaped::case_01 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::metadata_query_injection::hostile_input_is_escaped::case_04 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::metadata_query_injection::hostile_input_is_escaped::case_02 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::metadata_query_injection::hostile_input_is_escaped::case_05 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::metadata_query_injection::hostile_input_is_escaped::case_08 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::metadata_query_injection::hostile_input_is_escaped::case_09 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::preview_query::primary_key_query_returns_json_aggregate_sql ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::metadata_query_injection::hostile_input_is_escaped::case_06 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::metadata_query_injection::hostile_input_is_escaped::case_10 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::preview_query::without_primary_key_columns_returns_unordered_preview_query ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::preview_query::with_primary_key_columns_returns_ordered_preview_query ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::preview_query_edge_cases::schema_name_with_double_quote_is_escaped ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::preview_query_edge_cases::table_name_with_double_quote_is_escaped ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::preview_query_edge_cases::order_by_column_with_double_quote_is_escaped ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_literal_or_null_tests::formats_sql_literal_or_null::case_1 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::table_columns_and_fks_query::table_columns_and_fks_uses_quoted_schema_and_table ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::metadata_query_injection::hostile_input_is_escaped::case_07 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::metadata_query_injection::hostile_input_is_escaped::case_03 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::table_signatures_query::contains_md5_hash ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::table_signatures_query::includes_json_aggregate_projection ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::table_signatures_query::includes_fk_separator ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::table_detail_query::table_detail_uses_quoted_schema_and_table ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_dialect_update_edge_cases::backslash_in_value_is_preserved_as_literal ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::table_detail_query::wraps_all_six_categories_in_json_build_object ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::table_signatures_query::uses_same_filter_as_tables_query ... ok
[INFO] [stdout] test infra::config::project_root::tests::find_dir_upward_tests::finds_root_from_nested_subdirectory ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::table_columns_and_fks_query::wraps_columns_and_fks_only_in_json_build_object ... ok
[INFO] [stdout] test infra::config::project_root::tests::get_project_name_tests::extracts_dir_basename ... ok
[INFO] [stdout] test infra::config::project_root::tests::find_dir_upward_tests::finds_root_with_git_file_worktree ... ok
[INFO] [stdout] test infra::adapters::query_history::tests::load_entries_with_affected_rows_and_malformed_lines ... ok
[INFO] [stdout] test infra::config::project_root::tests::get_project_name_tests::reports_unknown_for_root ... ok
[INFO] [stdout] test infra::export::dot::tests::export::calls_graphviz_and_viewer ... ok
[INFO] [stdout] test infra::adapters::query_history::tests::load_nonexistent_file_returns_empty_vec ... ok
[INFO] [stdout] test infra::config::project_root::tests::find_dir_upward_tests::finds_root_with_git_directory ... ok
[INFO] [stdout] test infra::export::dot::tests::export::graphviz_not_installed_returns_error ... ok
[INFO] [stdout] test infra::export::dot::tests::export::graphviz_command_failed_includes_exit_code ... ok
[INFO] [stdout] test infra::export::dot::tests::export::non_er_files_survive_cleanup ... ok
[INFO] [stdout] test infra::adapters::query_history::tests::load_returns_entries_in_order ... ok
[INFO] [stdout] test infra::export::dot::tests::export::graphviz_failure_preserves_old_files ... ok
[INFO] [stdout] test infra::adapters::query_history::tests::append_creates_file_and_writes_entry ... ok
[INFO] [stdout] test infra::export::dot::tests::generate_full_dot::output_is_sorted_for_stability ... ok
[INFO] [stdout] test infra::export::dot::tests::generate_full_dot::tables_appear_as_nodes ... ok
[INFO] [stdout] test infra::utils::tests::quote_ident_with_double_quote ... ok
[INFO] [stdout] test infra::utils::tests::quote_ident_simple ... ok
[INFO] [stdout] test infra::adapters::query_history::tests::below_limit_entries_are_preserved_without_trim ... ok
[INFO] [stdout] test infra::utils::tests::quote_ident_empty ... ok
[INFO] [stdout] test infra::export::dot::tests::export::viewer_failure_preserves_old_and_new_files ... ok
[INFO] [stdout] test infra::export::dot::tests::export::viewer_failure_returns_error ... ok
[INFO] [stdout] test infra::export::dot::tests::export::old_er_files_are_removed_on_export ... ok
[INFO] [stdout] test infra::utils::tests::quote_literal_empty ... ok
[INFO] [stdout] test infra::export::dot::tests::generate_full_dot::foreign_keys_appear_as_edges ... ok
[INFO] [stdout] test infra::adapters::query_history::tests::malformed_lines_are_skipped ... ok
[INFO] [stdout] test infra::utils::tests::quote_literal_simple ... ok
[INFO] [stdout] test infra::utils::tests::quote_literal_with_single_quote ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::action_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::action_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::action_keys::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::action_keys::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::action_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::scroll_keys_and_ctrl_aliases::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::scroll_keys_and_ctrl_aliases::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::scroll_keys_and_ctrl_aliases::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::r_key_retries_service_connection ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::scroll_keys_and_ctrl_aliases::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::scroll_keys_and_ctrl_aliases::case_5 ... ok
[INFO] [stdout] test infra::utils::tests::quote_literal_multiple_quotes ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::scroll_keys_and_ctrl_aliases::case_6 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::unbound_keys ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_selector_keys::selector_action_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_selector_keys::selector_action_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_selector_keys::selector_action_keys::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_selector_keys::selector_esc_closes ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_selector_keys::selector_action_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_selector_keys::selector_navigation_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_selector_keys::selector_navigation_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_selector_keys::selector_navigation_keys::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_selector_keys::selector_navigation_keys::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_selector_keys::selector_navigation_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_selector_keys::selector_navigation_keys::case_6 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_selector_keys::unknown_key_returns_none ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_setup_keys::alt_char_is_allowed_for_international_keyboards ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_setup_keys::altgr_char_is_allowed ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_setup_keys::backspace_sends_backspace_action ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_setup_keys::char_input_sends_input_action ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_setup_keys::backtab_moves_to_prev_field ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_setup_keys::ctrl_c_is_ignored ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_setup_keys::dropdown_open::ctrl_aliases::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_setup_keys::ctrl_s_saves ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_setup_keys::dropdown_open::ctrl_aliases::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_setup_keys::dropdown_open::ctrl_aliases_ignore_extra_modifiers::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_setup_keys::dropdown_open::dropdown_navigation::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_setup_keys::dropdown_open::dropdown_navigation::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::editors::tests::cell_edit_mode::backspace_returns_cell_edit_backspace ... ok
[INFO] [stdout] test ui::event::handlers::editors::tests::cell_edit_mode::char_input_returns_cell_edit_input ... ok
[INFO] [stdout] test ui::event::handlers::editors::tests::cell_edit_mode::end_returns_move_cursor_end ... ok
[INFO] [stdout] test ui::event::handlers::editors::tests::cell_edit_mode::esc_in_cell_edit_returns_cancel_not_discard ... ok
[INFO] [stdout] test ui::event::handlers::editors::tests::cell_edit_mode::home_returns_move_cursor_home ... ok
[INFO] [stdout] test ui::event::handlers::editors::tests::cell_edit_mode::left_returns_move_cursor_left ... ok
[INFO] [stdout] test ui::event::handlers::editors::tests::command_line::handles_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::editors::tests::command_line::handles_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::editors::tests::command_line::handles_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::editors::tests::cell_edit_mode::right_returns_move_cursor_right ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_setup_keys::dropdown_open::ctrl_aliases_ignore_extra_modifiers::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_setup_keys::dropdown_open::dropdown_navigation::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_setup_keys::dropdown_open::dropdown_navigation::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_setup_keys::enter_on_ssl_field_toggles_dropdown ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_setup_keys::esc_cancels ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_setup_keys::tab_moves_to_next_field ... ok
[INFO] [stdout] test ui::event::handlers::editors::tests::cell_edit_mode::delete_returns_cell_edit_delete ... ok
[INFO] [stdout] test ui::event::handlers::editors::tests::command_line::handles_keys::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::editors::tests::command_line::handles_keys::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_detail::ctrl_n_moves_cursor_down_in_normal_mode ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_detail::ctrl_p_moves_cursor_up_in_normal_mode ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_detail::end_moves_cursor_to_line_end_in_normal_mode ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_detail::gg_moves_to_first_line ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_detail::h_moves_cursor_left_in_normal_mode ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_detail::unknown_prefixed_key_cancels_sequence ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_detail::upper_n_moves_to_previous_search_match ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_edit::vim_character_keys_still_fall_through_to_editor_input::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_detail::enter_is_ignored_in_viewing_mode ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_edit::vim_character_keys_still_fall_through_to_editor_input::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_edit::ctrl_n_still_falls_through_to_editor_input ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_detail::g_begins_key_sequence ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_detail::home_moves_cursor_to_line_start_in_normal_mode ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_detail::n_moves_to_next_search_match ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_edit::arrow_up_moves_editor_cursor ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_edit::vim_character_keys_still_fall_through_to_editor_input::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_edit::vim_character_keys_still_fall_through_to_editor_input::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_search::ctrl_n_still_falls_through_to_search_input ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_search::ctrl_p_still_falls_through_to_search_input ... ok
[INFO] [stdout] test ui::event::handlers::jsonb::tests::jsonb_search::pending_prefix_is_ignored_while_search_is_active ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::enter_behavior::alt_enter_noop_when_connection_error_is_open ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::enter_behavior::enter_activates_cell_when_result_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::enter_behavior::enter_confirms_selection_when_explorer_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::enter_behavior::enter_noop_when_inspector_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::enter_behavior::plain_enter_confirms_connection_error ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::global_actions::colon_enters_command_line ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::global_actions::ctrl_k_opens_command_palette ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::global_actions::f_toggles_focus ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::global_actions::plain_p_is_noop ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::global_actions::unknown_key_returns_none ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::global_actions::ctrl_p_opens_table_picker ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::navigation_aliases::ctrl_n_is_noop_on_main_screen ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::global_actions::esc_returns_escape ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::global_actions::q_returns_quit ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::global_actions::question_mark_opens_help ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::global_actions::r_reloads_metadata ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::navigation_aliases::navigation_selects_first::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::navigation_aliases::navigation_selects_first::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::navigation_aliases::navigation_selects_last::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::navigation_aliases::navigation_selects_previous::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::pane_switch_and_tabs::backtab_noop_when_explorer_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::pane_switch_and_tabs::browse_mode_pane_focus::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::pane_switch_and_tabs::shift_tab_prev_when_inspector_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::pane_switch_and_tabs::tab_noop_when_explorer_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::ends_g_shift_g::case_03 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::pane_switch_and_tabs::tab_switches_inspector_tab_when_inspector_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::navigation_aliases::navigation_selects_next::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::ends_g_shift_g::case_01 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::navigation_aliases::navigation_selects_next::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::navigation_aliases::navigation_selects_previous::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::ends_g_shift_g::case_02 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::pane_switch_and_tabs::browse_mode_pane_focus::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::pane_switch_and_tabs::tab_noop_when_result_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::pane_switch_and_tabs::browse_mode_pane_focus::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::ends_g_shift_g::case_04 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dispatch_stage::navigation_aliases::navigation_selects_last::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::ends_g_shift_g::case_05 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::ends_g_shift_g::case_11 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::ends_g_shift_g::case_12 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::ends_g_shift_g::case_08 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::ends_g_shift_g::case_06 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::ends_g_shift_g::case_07 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::ends_g_shift_g::case_10 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::ends_g_shift_g::case_09 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::history_pane_edges::history_explorer_h_selects_viewport_top ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::history_pane_edges::history_explorer_j_selects_next ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::history_pane_edges::history_inspector_j_scrolls_down ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::history_whitelist_asymmetry::home_blocked_in_history ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::history_pane_edges::history_zz_explorer_scrolls_cursor ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::history_pane_edges::history_zz_inspector_clears ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::history_whitelist_asymmetry::down_allowed_in_history ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::history_pane_edges::history_inspector_h_is_noop ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::history_whitelist_asymmetry::end_blocked_in_history ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::history_whitelist_asymmetry::pagedown_blocked_in_history ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::history_whitelist_asymmetry::pageup_blocked_in_history ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_01 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::history_whitelist_asymmetry::up_allowed_in_history ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_02 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_04 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_05 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_06 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_03 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_07 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_08 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_10 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_11 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_09 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_12 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_13 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_14 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::shift_g_event_translates_to_select_last ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_15 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_17 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_18 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_16 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::vertical_jk::case_01 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::vertical_jk::case_02 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::vertical_jk::case_04 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::vertical_jk::case_06 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::vertical_jk::case_03 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::vertical_jk::case_05 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::vertical_jk::case_07 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::vertical_jk::case_08 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::vertical_jk::case_10 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::vertical_jk::case_09 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::vertical_jk::case_11 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::vertical_jk::case_12 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_02 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_01 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_03 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_04 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_05 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_06 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_08 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_10 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_07 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_11 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_12 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_16 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_14 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::z_prefix_returns_begin_key_sequence::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_17 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_13 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_15 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_18 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_09 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::z_prefix_returns_begin_key_sequence::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::z_prefix_returns_begin_key_sequence::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::z_prefix_returns_begin_key_sequence::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::explorer_navigation::hml_selects_viewport::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::inspector_navigation::ctrl_p_opens_table_picker_from_inspector ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::explorer_navigation::l_scrolls_right ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::inspector_navigation::g_scrolls_top::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::z_prefix_returns_begin_key_sequence::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::explorer_navigation::h_scrolls_left ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::z_prefix_returns_begin_key_sequence::case_6 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::explorer_navigation::hml_selects_viewport::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::explorer_navigation::hml_selects_viewport::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::inspector_navigation::g_scrolls_top::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::inspector_navigation::c_noop ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::explorer_navigation::c_opens_connection_selector ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::inspector_navigation::hml_noop::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::inspector_navigation::hml_noop::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::inspector_navigation::hml_noop::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::page_scroll::ctrl_d_explorer_half_page_down ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::page_scroll::ctrl_d_inspector_half_page_down ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::inspector_navigation::shift_g_scrolls_bottom::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::inspector_navigation::shift_g_scrolls_bottom::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::page_scroll::full_page_down_result::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::page_scroll::ctrl_d_result_half_page_down ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::page_scroll::full_page_down_result::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::page_scroll::page_down_explorer_full_page_down ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::page_scroll::full_page_up_result::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::result_scroll::hml_scrolls_to_viewport::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::result_scroll::hml_scrolls_to_viewport::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::result_scroll::hml_scrolls_to_viewport::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::result_scroll::l_scrolls_right ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::result_scroll::j_scrolls_down ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::page_scroll::page_down_inspector_full_page_down ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::page_scroll::ctrl_u_result_half_page_up ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::page_scroll::full_page_up_result::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::result_scroll::bracket_left_returns_prev_page ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::result_scroll::c_noop ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::focus_mode::bracket_left_returns_prev_page ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::focus_mode::bracket_right_returns_next_page ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::focus_mode::g_scrolls_top::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::result_scroll::bracket_right_returns_next_page ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pane_contracts::result_scroll::h_scrolls_left ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::focus_mode::g_scrolls_top::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::focus_mode::h_scrolls_left::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::focus_mode::h_scrolls_left::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::focus_mode::j_scrolls_down::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::focus_mode::j_scrolls_down::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::focus_mode::k_scrolls_up::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::focus_mode::k_scrolls_up::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::focus_mode::l_scrolls_right::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::focus_mode::l_scrolls_right::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::focus_mode::m_scrolls_to_viewport_middle ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::focus_mode::shift_g_scrolls_bottom::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::focus_mode::shift_g_scrolls_bottom::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::blocked_keys::are_noop::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::blocked_keys::are_noop::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::blocked_keys::are_noop::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::ctrl_keys::ctrl_overlay_keys_are_blocked::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::blocked_keys::are_noop::case_7 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::open_close::bracket_left_navigates_history_older ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::open_close::bracket_nav_falls_through_when_not_in_history ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::open_close::ctrl_h_exits_when_active ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::blocked_keys::are_noop::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::open_close::bracket_right_navigates_history_newer ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::blocked_keys::are_noop::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::open_close::ctrl_h_opens_result_history ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::blocked_keys::are_noop::case_6 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::scroll_keys::are_allowed::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::ctrl_keys::ctrl_overlay_keys_are_blocked::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::ctrl_keys::ctrl_overlay_keys_are_blocked::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::scroll_keys::are_allowed::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::blocked_keys::help_allowed ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::scroll_keys::are_allowed::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::scroll_keys::are_allowed::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::scroll_keys::are_allowed::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::scroll_keys::are_allowed::case_9 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::scroll_keys::are_allowed::case_8 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::scroll_keys::are_allowed::case_7 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::scroll_keys::are_allowed::case_6 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::scroll_keys::ctrl_p_and_ctrl_n_are_noop_in_history ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::key_sequence::begin::z_starts_sequence_in_focus_mode ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::history_mode::scroll_keys::ctrl_scroll_is_allowed ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::key_sequence::begin::z_starts_sequence_in_browse_mode ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::key_sequence::cancel_and_precedence::alt_modifier_cancels_sequence ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::key_sequence::cancel_and_precedence::ctrl_modifier_cancels_sequence ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::key_sequence::cancel_and_precedence::takes_priority_over_global_actions ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::key_sequence::cancel_and_precedence::unknown_key_cancels_sequence ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::key_sequence::explorer::z_prefix_scrolls_cursor::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::key_sequence::explorer::z_prefix_scrolls_cursor::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::key_sequence::explorer::z_prefix_scrolls_cursor::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::key_sequence::focus_mode::zz_scrolls_cursor_to_center ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::key_sequence::inspector::zz_cancels_sequence ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::key_sequence::history_mode::zb_works ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::key_sequence::history_mode::zt_works ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::key_sequence::result::z_prefix_scrolls_cursor::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::key_sequence::result::z_prefix_scrolls_cursor::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::result_cell_active::capital_y_yanks_cell ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::key_sequence::result::z_prefix_scrolls_cursor::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::result_cell_active::esc_without_draft_exits_to_scroll ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::result_cell_active::d_sets_delete_op_pending ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::confirm_dialog_keys::dialog_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::confirm_dialog_keys::non_bound_keys_return_none::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::result_cell_active::dd_stages_row_for_delete ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::result_cell_active::esc_with_draft_discards_edit ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::result_cell_active::operator_noop_without_active_cell::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::result_cell_active::operator_noop_without_active_cell::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::result_cell_active::operator_noop_without_active_cell::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::result_cell_active::i_enters_cell_edit ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::result_cell_active::yy_triggers_row_yank ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::confirm_dialog_keys::dialog_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::stateful_modes::result_cell_active::y_sets_row_yank_pending ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::confirm_dialog_keys::non_bound_keys_return_none::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::confirm_dialog_keys::non_bound_keys_return_none::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::confirm_dialog_keys::scroll_keys_return_scroll_action::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::confirm_dialog_keys::scroll_keys_return_scroll_action::case_6 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::issue_non_goals_remain_unbound_in_help_mode::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::issue_non_goals_remain_unbound_in_help_mode::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::issue_non_goals_remain_unbound_in_help_mode::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::issue_non_goals_remain_unbound_in_help_mode::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::issue_non_goals_remain_unbound_in_help_mode::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::issue_non_goals_remain_unbound_in_help_mode::case_6 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::confirm_dialog_keys::non_bound_keys_return_none::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::supported_help_scroll_keys_map_to_expected_action::case_01 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::question_mark_closes_help ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::confirm_dialog_keys::non_bound_keys_return_none::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::confirm_dialog_keys::scroll_keys_return_scroll_action::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::confirm_dialog_keys::scroll_keys_return_scroll_action::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::confirm_dialog_keys::scroll_keys_return_scroll_action::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::esc_closes_help ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::confirm_dialog_keys::scroll_keys_return_scroll_action::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::supported_help_scroll_keys_map_to_expected_action::case_02 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::supported_help_scroll_keys_map_to_expected_action::case_03 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::supported_help_scroll_keys_map_to_expected_action::case_05 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::supported_help_scroll_keys_map_to_expected_action::case_04 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::supported_help_scroll_keys_map_to_expected_action::case_10 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::supported_help_scroll_keys_map_to_expected_action::case_06 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::supported_help_scroll_keys_map_to_expected_action::case_11 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::supported_help_scroll_keys_map_to_expected_action::case_07 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::supported_help_scroll_keys_map_to_expected_action::case_12 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::supported_help_scroll_keys_map_to_expected_action::case_13 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::supported_help_scroll_keys_map_to_expected_action::case_15 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::supported_help_scroll_keys_map_to_expected_action::case_14 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::supported_help_scroll_keys_map_to_expected_action::case_09 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::supported_help_scroll_keys_map_to_expected_action::case_08 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::supported_help_scroll_keys_map_to_expected_action::case_16 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::command_palette::handles_command_palette_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::unknown_key_returns_none ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::command_palette::handles_command_palette_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::command_palette::handles_command_palette_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::command_palette::handles_command_palette_keys::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::er_table_picker::backspace_returns_er_filter_backspace ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::command_palette::handles_command_palette_keys::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::er_table_picker::char_input_returns_er_filter_input ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::er_table_picker::ctrl_alias_selects_expected_motion::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::er_table_picker::ctrl_alias_selects_expected_motion::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::er_table_picker::down_returns_select_next ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::er_table_picker::esc_returns_close_er_table_picker ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::er_table_picker::enter_returns_er_confirm_selection ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::query_history_picker::char_falls_through_to_filter_input ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::er_table_picker::up_returns_select_previous ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::query_history_picker::picker_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::query_history_picker::ctrl_alias_selects_expected_motion::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::query_history_picker::ctrl_alias_selects_expected_motion::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::query_history_picker::picker_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::query_history_picker::picker_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::query_history_picker::picker_keys::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::query_history_picker::picker_keys::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::table_picker::handles_table_picker_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::table_picker::ctrl_alias_selects_expected_motion::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::table_picker::ctrl_alias_selects_expected_motion::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::table_picker::handles_table_picker_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::table_picker::handles_table_picker_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::table_picker::handles_table_picker_keys::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::table_picker::handles_table_picker_keys::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::table_picker::handles_table_picker_keys::case_6 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::table_picker::handles_table_picker_keys::case_8 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::table_picker::handles_table_picker_keys::case_7 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::alt_enter_submits_query ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::char_input_inserts_character::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::char_input_inserts_character::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::char_input_inserts_character::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_hidden_key_behavior::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::char_input_inserts_character::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_hidden_key_behavior::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_hidden_key_behavior::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_hidden_key_behavior::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_hidden_key_behavior::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_independent_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_independent_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_independent_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_independent_keys::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_independent_keys::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_independent_keys::case_6 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_independent_keys::case_7 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_visible_ctrl_aliases::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_visible_ctrl_aliases::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_visible_key_behavior::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_visible_key_behavior::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_visible_key_behavior::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_visible_key_behavior::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::completion_visible_key_behavior::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::ctrl_alt_aliases_fall_through_to_text_input::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::ctrl_alt_aliases_fall_through_to_text_input::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::ctrl_space_triggers_completion ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::ctrl_shift_aliases_fall_through_to_text_input::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::ctrl_o_opens_query_history_picker ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing::ctrl_shift_aliases_fall_through_to_text_input::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing_commands::editing_mode_ctrl_e_requests_explain ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::keybinding_contract::compare_keybinding_combo_returns_declared_action ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::keybinding_contract::plan_keybinding_combo_returns_declared_action ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::alt_e_requests_explain_analyze ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::a_appends_at_line_end ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::alt_enter_submits ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::backtab_switches_to_prev_tab ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::boundary_keys_move_cursor::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::boundary_keys_move_cursor::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::boundary_keys_move_cursor::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::boundary_keys_move_cursor::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::compare_tab_ctrl_aliases_scroll::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::ctrl_alt_aliases_do_not_scroll_in_read_only_tabs::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::compare_tab_ctrl_aliases_scroll::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::ctrl_alt_aliases_do_not_scroll_in_read_only_tabs::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::ctrl_alt_aliases_do_not_scroll_in_read_only_tabs::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::ctrl_alt_aliases_do_not_scroll_in_read_only_tabs::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::ctrl_shift_aliases_do_not_scroll_in_read_only_tabs::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::ctrl_o_opens_history ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::ctrl_e_requests_explain ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::ctrl_shift_aliases_do_not_scroll_in_read_only_tabs::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::ctrl_l_clears ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::ctrl_shift_aliases_do_not_scroll_in_read_only_tabs::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::ctrl_shift_aliases_do_not_scroll_in_read_only_tabs::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::directional_keys_move_cursor::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::directional_keys_move_cursor::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::directional_keys_move_cursor::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::directional_keys_move_cursor::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::directional_keys_move_cursor::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::directional_keys_move_cursor::case_6 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::directional_keys_move_cursor::case_7 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::enter_is_unbound ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::directional_keys_move_cursor::case_8 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::esc_closes_modal ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::g_begins_key_sequence ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::gg_moves_to_first_line ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::i_enters_insert ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::plan_tab_ctrl_aliases_scroll::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::plan_tab_ctrl_aliases_scroll::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::prefixed_ctrl_e_cancels_sequence ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::prefixed_unknown_key_cancels_sequence ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::success_error_share_normal_keybindings::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::success_error_share_normal_keybindings::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::unbound_keys_return_none ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::tab_switches_to_next_tab ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::unsupported_keys_remain_unbound::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::unsupported_keys_remain_unbound::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::viewport_and_line_jump_keys_move_cursor::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::viewport_and_line_jump_keys_move_cursor::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::viewport_and_line_jump_keys_move_cursor::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::viewport_and_line_jump_keys_move_cursor::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::alt_e_requests_analyze::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::word_keys_move_cursor::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::y_yanks_query ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal::word_keys_move_cursor::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::alt_e_requests_analyze::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::compare_tab_e_edits_query ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::compare_tab_read_only_keys_work_in_success_error::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::compare_tab_scroll_keys_scroll_comparison::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::compare_tab_read_only_keys_work_in_success_error::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::compare_tab_scroll_keys_scroll_comparison::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::compare_tab_unbound_keys_returns_none::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::compare_tab_scroll_keys_scroll_comparison::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::editing_alt_e_requests_analyze ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::ctrl_e_requests_explain::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::ctrl_e_requests_explain::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::compare_tab_unbound_keys_returns_none::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::compare_tab_scroll_keys_scroll_comparison::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::esc_closes::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::esc_closes::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::plan_tab_jk_and_arrow_keys_scroll_plan::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::plan_tab_jk_and_arrow_keys_scroll_plan::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::plan_tab_jk_and_arrow_keys_scroll_plan::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::plan_tab_jk_and_arrow_keys_scroll_plan::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::plan_tab_read_only_keys_work_in_success_error::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::plan_tab_read_only_keys_work_in_success_error::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::plan_tab_unbound_keys_returns_none::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::plan_tab_unbound_keys_returns_none::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::running_state_compare_tab_suppresses_all_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::running_state_compare_tab_suppresses_all_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::running_state_compare_tab_suppresses_all_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::running_state_compare_tab_suppresses_all_keys::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::running_state_compare_tab_suppresses_all_keys::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::running_state_suppresses_all_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::running_state_compare_tab_suppresses_all_keys::case_6 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::running_state_suppresses_all_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::running_state_suppresses_all_keys::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::running_state_suppresses_all_keys::case_6 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::y_yanks::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::running_state_suppresses_all_keys::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::running_state_suppresses_all_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::read_only_tabs::y_yanks::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::tests::paste_event::er_table_picker_pastes_text ... ok
[INFO] [stdout] test ui::event::handlers::tests::mode_dispatch::normal_mode_routes_to_normal_handler ... ok
[INFO] [stdout] test ui::event::handlers::tests::mode_dispatch::sql_modal_mode_routes_to_sql_modal_handler ... ok
[INFO] [stdout] test ui::event::handlers::tests::paste_event::help_mode_ignores_paste ... ok
[INFO] [stdout] test ui::event::handlers::tests::paste_event::normal_mode_ignores_paste ... ok
[INFO] [stdout] test ui::event::handlers::tests::paste_event::query_history_picker_pastes_text ... ok
[INFO] [stdout] test ui::event::key_translator::tests::alt_enter_translates_to_alt_modifier ... ok
[INFO] [stdout] test ui::event::handlers::tests::paste_event::table_picker_pastes_text ... ok
[INFO] [stdout] test ui::event::handlers::tests::paste_event::sql_modal_pastes_text ... ok
[INFO] [stdout] test ui::event::key_translator::tests::arrow_keys_translate_correctly ... ok
[INFO] [stdout] test ui::event::key_translator::tests::backtab_translates_with_shift ... ok
[INFO] [stdout] test ui::event::key_translator::tests::ctrl_char_translates_to_ctrl_modifier ... ok
[INFO] [stdout] test ui::event::key_translator::tests::lowercase_char_with_shift_preserves_shift ... ok
[INFO] [stdout] test ui::event::key_translator::tests::function_key_translates ... ok
[INFO] [stdout] test ui::event::key_translator::tests::null_key_translates_to_null ... ok
[INFO] [stdout] test ui::event::key_translator::tests::plain_char_translates_to_char_no_modifiers ... ok
[INFO] [stdout] test ui::event::key_translator::tests::unknown_key_translates_to_other ... ok
[INFO] [stdout] test ui::event::key_translator::tests::uppercase_char_with_shift_normalizes_to_plain ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::truncate_with_offset::ascii_input_truncates_substring::case_1 ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::truncate_with_offset::ascii_input_truncates_substring::case_3 ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::truncate_with_offset::ascii_input_truncates_substring::case_2 ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::truncate_with_offset::ascii_input_truncates_substring::case_4 ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::truncate_with_offset::unicode_input_truncates_visible_columns::case_1 ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::truncate_with_offset::unicode_input_truncates_visible_columns::case_3 ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::truncate_with_offset::unicode_input_truncates_visible_columns::case_2 ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::truncate_with_offset::unicode_input_truncates_visible_columns::case_6 ... ok
[INFO] [stdout] test ui::features::browse::result::tests::bench_ideal_widths_cache_speedup ... ignored, local-only dev benchmark, not tied to a CI issue
[INFO] [stdout] test ui::features::browse::jsonb_detail::tests::slice_chars_fitting_width_keeps_chars_that_fit_exactly ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::truncate_with_offset::unicode_input_truncates_visible_columns::case_4 ... ok
[INFO] [stdout] test ui::features::browse::jsonb_detail::tests::slice_chars_fitting_width_omits_first_wide_char_when_viewport_is_too_narrow ... ok
[INFO] [stdout] test ui::features::browse::result::tests::calculate_ideal_widths_tests::empty_headers_returns_empty_vec ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::truncate_with_offset::unicode_input_truncates_visible_columns::case_5 ... ok
[INFO] [stdout] test ui::features::browse::result::tests::calculate_ideal_widths_tests::handles_multibyte_characters_correctly ... ok
[INFO] [stdout] test ui::features::browse::result::tests::calculate_ideal_widths_tests::only_considers_first_line_for_multiline_cells ... ok
[INFO] [stdout] test ui::features::browse::result::tests::calculate_ideal_widths_tests::handles_multiple_columns_independently ... ok
[INFO] [stdout] test ui::features::browse::result::tests::calculate_ideal_widths_tests::respects_max_width_constraint ... ok
[INFO] [stdout] test ui::features::browse::result::tests::calculate_ideal_widths_tests::uses_max_of_header_and_cell_widths ... ok
[INFO] [stdout] test ui::features::browse::result::tests::empty_string_returns_empty ... ok
[INFO] [stdout] test ui::features::browse::result::tests::exact_length_returns_unchanged ... ok
[INFO] [stdout] test ui::features::browse::result::tests::long_string_truncates_with_ellipsis ... ok
[INFO] [stdout] test ui::features::browse::result::tests::calculate_ideal_widths_tests::single_column_uses_header_width_plus_padding ... ok
[INFO] [stdout] test ui::features::browse::result::tests::multibyte_characters_count_correctly ... ok
[INFO] [stdout] test ui::features::browse::result::tests::multibyte_truncation_is_safe::case_1 ... ok
[INFO] [stdout] test ui::features::browse::result::tests::multibyte_truncation_is_safe::case_2 ... ok
[INFO] [stdout] test ui::features::browse::result::tests::multibyte_truncation_is_safe::case_3 ... ok
[INFO] [stdout] test ui::features::browse::result::tests::multibyte_truncation_is_safe::case_4 ... ok
[INFO] [stdout] test ui::features::browse::result::tests::multibyte_truncation_is_safe::case_5 ... ok
[INFO] [stdout] test ui::features::browse::result::tests::short_string_returns_unchanged ... ok
[INFO] [stdout] test ui::features::browse::result::tests::newline_with_truncation_applies_to_first_line ... ok
[INFO] [stdout] test ui::features::browse::result::tests::small_max_chars_handles_edge_cases::case_2 ... ok
[INFO] [stdout] test ui::features::browse::result::tests::small_max_chars_handles_edge_cases::case_1 ... ok
[INFO] [stdout] test ui::features::browse::result::tests::newline_shows_first_line_only ... ok
[INFO] [stdout] test ui::features::browse::result::tests::small_max_chars_handles_edge_cases::case_3 ... ok
[INFO] [stdout] test ui::features::browse::result::tests::small_max_chars_handles_edge_cases::case_5 ... ok
[INFO] [stdout] test ui::features::browse::result::tests::small_max_chars_handles_edge_cases::case_4 ... ok
[INFO] [stdout] test ui::features::browse::result::tests::zero_max_chars_returns_ellipsis_only ... ok
[INFO] [stdout] test ui::features::sql_modal::compare::tests::stacked_compare_empty_slot_never_marks_flashable_rows ... ok
[INFO] [stdout] test ui::features::sql_modal::plan_highlight::tests::empty_input_returns_non_empty_spans ... ok
[INFO] [stdout] test ui::features::sql_modal::compare::tests::stacked_compare_flashes_only_plan_content_rows ... ok
[INFO] [stdout] test ui::features::sql_modal::plan_highlight::tests::deeply_nested_line_returns_space_indentation_without_guides ... ok
[INFO] [stdout] test ui::features::sql_modal::plan_highlight::tests::filter_line_returns_raw_text ... ok
[INFO] [stdout] test ui::features::sql_modal::plan_highlight::tests::nested_node_returns_indented_text_without_guide ... ok
[INFO] [stdout] test ui::features::sql_modal::plan_highlight::tests::seq_scan_line_returns_highlighted_node_and_cost ... ok
[INFO] [stdout] test ui::features::sql_modal::status::tests::truncate_with_ellipsis_tests::truncates_long_names::case_1 ... ok
[INFO] [stdout] test ui::features::sql_modal::status::tests::truncate_with_ellipsis_tests::multibyte_truncates_by_char_count ... ok
[INFO] [stdout] test ui::features::sql_modal::status::tests::truncate_with_ellipsis_tests::truncates_long_names::case_2 ... ok
[INFO] [stdout] test ui::features::sql_modal::status::tests::truncate_with_ellipsis_tests::truncates_long_names::case_4 ... ok
[INFO] [stdout] test ui::features::sql_modal::status::tests::truncate_with_ellipsis_tests::truncates_long_names::case_5 ... ok
[INFO] [stdout] test ui::features::sql_modal::status::tests::truncate_with_ellipsis_tests::truncates_long_names::case_3 ... ok
[INFO] [stdout] test ui::features::sql_modal::status::tests::truncate_with_ellipsis_tests::truncates_long_names::case_6 ... ok
[INFO] [stdout] test ui::features::sql_modal::status::tests::truncate_with_ellipsis_tests::zero_max_returns_ellipsis ... ok
[INFO] [stdout] test ui::primitives::atoms::scroll_indicator::tests::clamp_preserves_offset_within_range ... ok
[INFO] [stdout] test ui::primitives::atoms::scroll_indicator::tests::clamp_caps_offset_exceeding_max ... ok
[INFO] [stdout] test ui::primitives::atoms::scroll_indicator::tests::clamp_returns_zero_when_content_fits ... ok
[INFO] [stdout] test ui::primitives::atoms::scroll_indicator::tests::clamp_returns_zero_when_exact_fit ... ok
[INFO] [stdout] test ui::primitives::atoms::sql_highlight::tests::highlight_sql_honors_injected_theme_colors ... ok
[INFO] [stdout] test ui::primitives::atoms::sql_highlight::tests::highlight_sql_splits_multiline_comment_across_lines ... ok
[INFO] [stdout] test ui::primitives::atoms::sql_highlight::tests::highlight_sql_marks_token_types_with_expected_colors ... ok
[INFO] [stdout] test ui::primitives::atoms::sql_highlight::tests::highlight_sql_with_cursor_marks_number_at_token_start ... ok
[INFO] [stdout] test ui::primitives::atoms::sql_highlight::tests::highlight_sql_with_cursor_at_line_end_appends_cursor_cell ... ok
[INFO] [stdout] test ui::primitives::atoms::sql_highlight::tests::highlight_sql_with_cursor_on_empty_middle_line_adds_cursor_cell ... ok
[INFO] [stdout] test ui::primitives::atoms::sql_highlight::tests::highlight_sql_with_cursor_preserves_neighbor_styles ... ok
[INFO] [stdout] test ui::primitives::atoms::sql_highlight::tests::highlight_sql_with_cursor_marks_double_quote_at_token_start ... ok
[INFO] [stdout] test ui::primitives::atoms::sql_highlight::tests::highlight_sql_with_insert_cursor_preserves_token_text ... ok
[INFO] [stdout] test ui::primitives::atoms::sql_highlight::tests::highlight_sql_with_insert_cursor_preserves_injected_token_style ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::display_geometry::display_width_uses_terminal_cell_width ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::display_geometry::visual_cursor_position_wraps_with_display_width ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::insert_cursor_span::at_true_end_appends_cursor_cell ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::insert_cursor_span::preserves_modifiers_on_cursor_character ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::insert_cursor_span::uses_next_span_at_boundary ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::insert_cursor_span::preserves_existing_styles_across_boundary ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::insert_cursor_span::with_insert_kind_preserves_text_without_glyph ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::text_cursor_spans::block_cursor::all_positions_return_consistent_cursor_style ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::text_cursor_spans::block_cursor::cursor_at_end ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::text_cursor_spans::block_cursor::cursor_at_beginning ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::text_cursor_spans::block_cursor::empty_string ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::text_cursor_spans::insert_mode::preserves_text_without_glyph::case_1 ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::text_cursor_spans::insert_mode::preserves_text_without_glyph::case_2 ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::text_cursor_spans::viewport::cursor_left_of_viewport_returns_text_only ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::text_cursor_spans::insert_mode::preserves_text_without_glyph::case_3 ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::text_cursor_spans::block_cursor::cursor_at_middle ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::text_cursor_spans::block_cursor::multibyte_characters ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::text_cursor_spans::viewport::offset_positive ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::text_cursor_spans::viewport::offset_beyond_text_length ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::text_cursor_spans::viewport::visible_width_one ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::text_cursor_spans::viewport::visible_width_usize_max_sentinel ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::text_cursor_spans::viewport::visible_width_zero ... ok
[INFO] [stdout] test ui::primitives::utils::text_utils::tests::calculates_min_widths_with_str_slice ... ok
[INFO] [stdout] test ui::primitives::utils::text_utils::tests::calculates_min_widths_with_string_vec ... ok
[INFO] [stdout] test ui::primitives::utils::text_utils::tests::enforces_min_width ... ok
[INFO] [stdout] test ui::primitives::utils::text_utils::tests::wrapped_line_count_tests::counts_wrapped_lines::case_1 ... ok
[INFO] [stdout] test ui::primitives::utils::text_utils::tests::wrapped_line_count_tests::counts_wrapped_lines::case_2 ... ok
[INFO] [stdout] test ui::primitives::utils::text_utils::tests::wrapped_line_count_tests::counts_wrapped_lines::case_3 ... ok
[INFO] [stdout] test ui::primitives::utils::text_utils::tests::wrapped_line_count_tests::counts_wrapped_lines::case_6 ... ok
[INFO] [stdout] test ui::primitives::utils::text_utils::tests::wrapped_line_count_tests::counts_wrapped_lines::case_4 ... ok
[INFO] [stdout] test ui::primitives::utils::text_utils::tests::wrapped_line_count_tests::counts_wrapped_lines::case_5 ... ok
[INFO] [stdout] test ui::primitives::utils::text_utils::tests::wrapped_line_count_tests::counts_wrapped_lines::case_7 ... ok
[INFO] [stdout] test ui::primitives::utils::text_utils::tests::wrapped_line_count_tests::counts_wrapped_lines::case_8 ... ok
[INFO] [stdout] test ui::theme::tests::block_cursor_style_uses_semantic_cursor_colors ... ok
[INFO] [stdout] test ui::theme::tests::modal_border_style_uses_component_modal_border ... ok
[INFO] [stdout] test ui::theme::tests::palette_for_default_returns_default_theme ... ok
[INFO] [stdout] test ui::theme::tests::palette_for_test_contrast_returns_test_theme ... ok
[INFO] [stdout] test ui::theme::tests::picker_selected_style_uses_selected_colors ... ok
[INFO] [stdout] test ui::theme::tests::panel_border_style_prefers_focus_over_highlight ... ok
[INFO] [stdout] test ui::theme::tests::status_style_uses_requested_tone ... ok
[INFO] [stdout] test ui::theme::tests::modal_hint_style_uses_hint_token_without_bold ... ok
[INFO] [stdout] test ui::theme::tests::modal_input_border_style_prefers_error_over_focus ... ok
[INFO] [stdout] test infra::adapters::query_history::tests::append_succeeds_even_when_trim_would_fail ... ok
[INFO] [stdout] test infra::adapters::query_history::tests::multiple_appends_beyond_limit_preserves_latest ... ok
[INFO] [stdout] test infra::adapters::query_history::tests::append_trims_to_1000_when_exceeded ... ok
[INFO] [stdout] test infra::adapters::query_history::tests::trim_does_not_trigger_at_exact_limit ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2911 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 1.34s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/sabiql-ada3d8a0528b04b5)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test tests::disabled_message_contains_version_and_upgrade_guidance ... ok
[INFO] [stdout] test tests::no_subcommand_returns_none ... ok
[INFO] [stdout] test tests::update_subcommand_available_but_self_update_disabled ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/adapter_postgres.rs (/opt/rustwide/target/debug/deps/adapter_postgres-b27d20386e329b25)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test error_paths::bad_dsn_returns_connection_or_query_error ... ignored, requires PostgreSQL, tracked: #133
[INFO] [stdout] test error_paths::timeout_with_pg_sleep_returns_timeout_error ... ignored, requires PostgreSQL, tracked: #133
[INFO] [stdout] test metadata_fetch::fetch_metadata_returns_schemas ... ignored, requires PostgreSQL, tracked: #133
[INFO] [stdout] test metadata_fetch::fetch_table_detail_returns_columns ... ignored, requires PostgreSQL, tracked: #133
[INFO] [stdout] test query_execution::execute_adhoc_select_returns_query_result ... ignored, requires PostgreSQL, tracked: #133
[INFO] [stdout] test query_execution::execute_preview_returns_columns ... ignored, requires PostgreSQL, tracked: #133
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests sabiql
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "072264d0df34bfe1e0453bde8f1897b55ca7fdbc4513a34c65b26e2e3de27cde", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "072264d0df34bfe1e0453bde8f1897b55ca7fdbc4513a34c65b26e2e3de27cde", kill_on_drop: false }`
[INFO] [stdout] 072264d0df34bfe1e0453bde8f1897b55ca7fdbc4513a34c65b26e2e3de27cde
