[INFO] fetching crate sabiql 1.9.0...
[INFO] testing sabiql-1.9.0 against try#0abe69e6c16114311cc2700e972492e64d69c28f for pr-154065-1
[INFO] extracting crate sabiql 1.9.0 into /workspace/builds/worker-0-tc2/source
[INFO] removed /workspace/builds/worker-0-tc2/source/rust-toolchain.toml
[INFO] started tweaking crates.io crate sabiql 1.9.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate sabiql 1.9.0
[INFO] tweaked toml for crates.io crate sabiql 1.9.0 written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate sabiql 1.9.0 on toolchain 0abe69e6c16114311cc2700e972492e64d69c28f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate sabiql 1.9.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" "+0abe69e6c16114311cc2700e972492e64d69c28f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 3701e137b5e1202fd49d334adb481145f4b8d2ccb482feb2217ff5984a0f49b6
[INFO] running `Command { std: "docker" "start" "-a" "3701e137b5e1202fd49d334adb481145f4b8d2ccb482feb2217ff5984a0f49b6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3701e137b5e1202fd49d334adb481145f4b8d2ccb482feb2217ff5984a0f49b6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3701e137b5e1202fd49d334adb481145f4b8d2ccb482feb2217ff5984a0f49b6", kill_on_drop: false }`
[INFO] [stdout] 3701e137b5e1202fd49d334adb481145f4b8d2ccb482feb2217ff5984a0f49b6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+0abe69e6c16114311cc2700e972492e64d69c28f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] a8a463c82b0ea505ce1a8dec78a590230a0c4bbef63b3d8d782f407bb7b93eea
[INFO] running `Command { std: "docker" "start" "-a" "a8a463c82b0ea505ce1a8dec78a590230a0c4bbef63b3d8d782f407bb7b93eea", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling compact_str v0.9.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling lru v0.16.3
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling num_threads v0.1.7
[INFO] [stderr]    Compiling owo-colors v4.3.0
[INFO] [stderr]    Compiling object v0.37.3
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling num-conv v0.2.0
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling line-clipping v0.3.5
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling color-spantrace v0.3.0
[INFO] [stderr]    Compiling eyre v0.6.12
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling pxfm v0.1.28
[INFO] [stderr]    Compiling gimli v0.32.3
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling tracing-error v0.2.1
[INFO] [stderr]    Compiling png v0.18.1
[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 kasuari v0.4.12
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling moxcms v0.8.1
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling ratatui-core v0.1.0
[INFO] [stderr]    Compiling addr2line v0.25.1
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling indenter v0.3.4
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling byteorder-lite v0.1.0
[INFO] [stderr]    Compiling x11rb-protocol v0.13.2
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling bytemuck v1.25.0
[INFO] [stderr]    Compiling rustc-demangle v0.1.27
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling ratatui-macros v0.7.0
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling backtrace v0.3.76
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling image v0.25.10
[INFO] [stderr]    Compiling csv-core v0.1.13
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling x11rb v0.13.2
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling csv v1.4.0
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling arboard v3.6.1
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling uuid v1.22.0
[INFO] [stderr]    Compiling color-eyre v0.6.5
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling dirs v5.0.1
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling nucleo-matcher v0.3.1
[INFO] [stderr]    Compiling urlencoding v2.1.3
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]    Compiling sabiql v1.9.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 53s
[INFO] running `Command { std: "docker" "inspect" "a8a463c82b0ea505ce1a8dec78a590230a0c4bbef63b3d8d782f407bb7b93eea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a8a463c82b0ea505ce1a8dec78a590230a0c4bbef63b3d8d782f407bb7b93eea", kill_on_drop: false }`
[INFO] [stdout] a8a463c82b0ea505ce1a8dec78a590230a0c4bbef63b3d8d782f407bb7b93eea
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c896d036f634ca768e622fe3fc80b40917c3b09ba8ff7c7f6f507ee4d3072f7c
[INFO] running `Command { std: "docker" "start" "-a" "c896d036f634ca768e622fe3fc80b40917c3b09ba8ff7c7f6f507ee4d3072f7c", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling semver v1.0.27
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling mockall_derive v0.13.1
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling relative-path v1.9.3
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling console v0.15.11
[INFO] [stderr]    Compiling rstest_macros v0.19.0
[INFO] [stderr]    Compiling fragile v2.0.1
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling futures-timer v3.0.3
[INFO] [stderr]    Compiling downcast v0.11.0
[INFO] [stderr]    Compiling yansi v1.0.1
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling diff v0.1.13
[INFO] [stderr]    Compiling pretty_assertions v1.4.1
[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 insta v1.46.3
[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 futures-macro v0.3.32
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling kasuari v0.4.12
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling ratatui-core v0.1.0
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling arboard v3.6.1
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling futures v0.3.32
[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 clap v4.6.0
[INFO] [stderr]    Compiling rstest v0.19.0
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling mockall v0.13.1
[INFO] [stderr]    Compiling sabiql v1.9.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 2m 04s
[INFO] running `Command { std: "docker" "inspect" "c896d036f634ca768e622fe3fc80b40917c3b09ba8ff7c7f6f507ee4d3072f7c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c896d036f634ca768e622fe3fc80b40917c3b09ba8ff7c7f6f507ee4d3072f7c", kill_on_drop: false }`
[INFO] [stdout] c896d036f634ca768e622fe3fc80b40917c3b09ba8ff7c7f6f507ee4d3072f7c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 7abb71bc04e43d301468e028bdbcda1ec40123276f7c1ce55b305911883946f9
[INFO] running `Command { std: "docker" "start" "-a" "7abb71bc04e43d301468e028bdbcda1ec40123276f7c1ce55b305911883946f9", 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-2b95ae2ea3dfb056)
[INFO] [stdout] 
[INFO] [stdout] running 2576 tests
[INFO] [stdout] test app::cmd::browse::query::tests::execute_preview::success_returns_query_completed ... ok
[INFO] [stdout] test app::cmd::browse::metadata::tests::fetch_metadata::cache_miss_returns_metadata_loaded ... 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::cache_invalidate::invalidate_removes_cache_entry ... 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::table_detail_dispatch::prefetch_table_detail_calls_light_provider ... 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::execute_preview::error_returns_query_failed ... 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::export_path::epoch_days_to_ymd_leap_year_feb_29 ... 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::browse::query::tests::export_path::resolve_export_path_contains_file_name ... ok
[INFO] [stdout] test app::cmd::cache::lru_cache::tests::contains_returns_true_for_existing_key ... 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::browse::query::tests::export_path::epoch_days_to_ymd_unix_epoch ... ok
[INFO] [stdout] test app::cmd::cache::lru_cache::tests::get_updates_lru_order_preventing_eviction ... 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_known_date ... 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::resize_shrink_evicts_lru ... ok
[INFO] [stdout] test app::cmd::cache::lru_cache::tests::pop_missing_key_returns_none ... ok
[INFO] [stdout] test app::cmd::cache::ttl_cache::tests::cleanup_expired_removes_stale_entries ... 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::ttl_cache::tests::cleanup_expired_preserves_valid_entries ... ok
[INFO] [stdout] test app::cmd::cache::ttl_cache::tests::test_cache_miss ... ok
[INFO] [stdout] test app::cmd::cache::ttl_cache::tests::test_cache_get_set ... ok
[INFO] [stdout] test app::cmd::cache::lru_cache::tests::resize_expand_preserves_entries ... ok
[INFO] [stdout] test app::cmd::cache::ttl_cache::tests::test_cache_invalidate ... 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_returns_none_for_expired_entry ... 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_completion::alias_prefix_filters_columns ... 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::completion_engine::tests::contains_match::contains_match_returns_candidates ... 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::contains_match::prefix_match_ranked_higher_than_contains ... 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::all_cache_columns::no_from_with_empty_prefix_returns_all_cached_columns ... 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::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::completion_engine::tests::alias_column_context::unknown_alias_dot_returns_schema_qualified ... 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::alias_column_context::table_name_dot_returns_alias_column_context ... 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::context_detection::schema_dot_returns_schema_qualified ... 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::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_candidates_ranked_higher_than_tables ... 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::fk_column_scoring::fk_column_returns_higher_score ... 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::cte_or_table_context::from_clause_with_cte_returns_cte_or_table ... 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::from_keyword_appears_even_with_column_candidates ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::integration_tests::duplicate_text_is_deduplicated ... 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::get_candidates_with_table_detail_returns_columns ... 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::integration_tests::non_empty_prefix_shows_columns_first ... 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::integration_tests::order_by_keywords_appear_together ... 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::keyword_completion::case_insensitive_matching ... 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::single_char_prefix_keeps_keywords_first ... 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::lru_cache_behavior::cached_table_not_in_missing_tables ... 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::clear_removes_all_cached_tables ... 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::empty_prefix_returns_all_keywords ... 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::duplicate_tables_are_deduplicated ... 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::keyword_completion::sel_prefix_returns_select ... 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::multiple_tables_returns_all ... 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::lru_eviction_order_is_fifo_without_access ... 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::missing_tables::schema_qualified_table_returns_qualified_name ... 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::prefix_match_ranking::column_prefix_match_sorted_alphabetically ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::missing_tables::max_limit_is_respected ... 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::prefix_match_ranking::keyword_prefix_match_ranked_first ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::prepared_equivalence::missing_tables_equivalence ... 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::regression_tests::keyword_in_comment_does_not_affect_context ... 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::prepared_equivalence::target_table_priority_in_prepared ... 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::schema_qualified_limit::schema_qualified_candidates_with_empty_prefix ... 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::pk_column_returns_higher_score ... 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_1 ... 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_3 ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::semicolon_suppression::suppression_by_trailing_semicolon::case_1 ... 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::suppression_by_trailing_semicolon::case_3 ... 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_4 ... 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::semicolon_suppression::multibyte_content_does_not_panic::case_5 ... 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::after_closed_string_returns_candidates ... 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::word_boundary::from_at_word_boundary_matches ... 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_single_quote_string_returns_empty ... 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::string_and_comment_skip::inside_line_comment_returns_empty ... 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::dispatches_action_with_built_dsn ... ok
[INFO] [stdout] test app::cmd::connection::tests::delete_connection::success_returns_connection_deleted ... ok
[INFO] [stdout] test app::cmd::connection::tests::delete_connection::error_returns_connection_delete_failed ... ok
[INFO] [stdout] test app::cmd::connection::tests::load_connections::error_returns_empty_connections_list ... 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_idle_returns_false ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::target_table_boost::update_target_columns_get_boost ... 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::has_active_spinner_tests::idle_query_returns_false ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::has_active_spinner_tests::er_rendering_returns_false ... 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::has_blinking_cursor_tests::connection_setup_returns_true ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::has_active_spinner_tests::running_query_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::help_mode_returns_false ... 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::has_blinking_cursor_tests::sql_modal_returns_true ... 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::min_instant_tests::both_none_returns_none ... 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::min_instant_tests::both_some_returns_earlier ... ok
[INFO] [stdout] test app::cmd::er::task::tests::spawn_er_diagram_task::error_sends_failed_action ... ok
[INFO] [stdout] test app::cmd::render_schedule::tests::next_animation_deadline_tests::command_line_returns_cursor_blink_interval ... 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::min_instant_tests::first_some_returns_first ... 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::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::message_timeout_returns_expiration ... 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::result_highlight_returns_expiration ... 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::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::spinner_takes_priority_over_cursor_blink ... ok
[INFO] [stdout] test app::cmd::runner::tests::render::render_calls_draw ... ok
[INFO] [stdout] test app::cmd::runner::tests::dispatch_actions::dispatches_all_actions ... 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::utility::tests::open_folder::failure_dispatches_open_folder_failed ... ok
[INFO] [stdout] test app::cmd::utility::tests::open_folder::calls_folder_opener_port ... ok
[INFO] [stdout] test app::model::app_state::tests::connection_setters::retain_connections_filters_and_rebuilds ... ok
[INFO] [stdout] test app::cmd::utility::tests::copy_to_clipboard::on_failure_dispatched_when_copy_fails ... ok
[INFO] [stdout] test app::model::app_state::tests::connection_setters::set_connections_and_services_rebuilds_combined_list ... ok
[INFO] [stdout] test app::cmd::utility::tests::copy_to_clipboard::copy_failed_dispatched_when_no_on_failure ... 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::connection_setters::set_connections_rebuilds_list ... ok
[INFO] [stdout] test app::model::app_state::tests::connection_setters::set_service_entries_rebuilds_list ... ok
[INFO] [stdout] test app::model::app_state::tests::connection_setters::set_connections_with_empty_vec_clears_list ... ok
[INFO] [stdout] test app::model::app_state::tests::connection_setters::set_service_entries_with_empty_vec_clears_list ... ok
[INFO] [stdout] test app::model::app_state::tests::er_preparation::status_can_be_set_to_waiting ... ok
[INFO] [stdout] test app::model::app_state::tests::failed_prefetch_tables_tracks_failure_time_and_error ... ok
[INFO] [stdout] test app::model::app_state::tests::filtered_tables_is_case_insensitive ... ok
[INFO] [stdout] test app::model::app_state::tests::filtered_tables_with_empty_filter_returns_all ... ok
[INFO] [stdout] test app::model::app_state::tests::default_result_pane_height_returns_zero_visible_rows ... ok
[INFO] [stdout] test app::model::app_state::tests::er_preparation::status_can_be_set_to_rendering ... ok
[INFO] [stdout] test app::cmd::completion_engine::tests::missing_tables::cte_tables_are_excluded ... ok
[INFO] [stdout] test app::model::app_state::tests::er_preparation::new_state_defaults_to_idle ... ok
[INFO] [stdout] test app::model::app_state::tests::filtered_tables_with_matching_filter_returns_subset ... ok
[INFO] [stdout] test app::model::app_state::tests::inspector_scroll_reset::scroll_offset_stays_zero_when_no_table_detail ... ok
[INFO] [stdout] test app::model::app_state::tests::inspector_scroll_reset::scroll_offset_resets_to_zero_on_table_switch ... ok
[INFO] [stdout] test app::model::app_state::tests::inspector_visible_rows::ddl_visible_rows_equals_height_minus_three::case_1 ... ok
[INFO] [stdout] test app::model::app_state::tests::inspector_visible_rows::ddl_visible_rows_equals_height_minus_three::case_2 ... ok
[INFO] [stdout] test app::model::app_state::tests::prefetch_queue_pop_returns_fifo_order ... ok
[INFO] [stdout] test app::model::app_state::tests::large_result_pane_height_returns_proportional_rows ... ok
[INFO] [stdout] test app::model::app_state::tests::prefetch_queue_starts_empty ... ok
[INFO] [stdout] test app::model::app_state::tests::inspector_visible_rows::small_pane_height_does_not_underflow ... ok
[INFO] [stdout] test app::model::app_state::tests::inspector_visible_rows::ddl_visible_rows_is_greater_than_standard ... ok
[INFO] [stdout] test app::model::app_state::tests::prefetching_tables_tracks_in_flight ... ok
[INFO] [stdout] test app::model::app_state::tests::result_pane_height_calculates_correct_visible_rows::case_3 ... ok
[INFO] [stdout] test app::model::app_state::tests::result_pane_height_calculates_correct_visible_rows::case_4 ... ok
[INFO] [stdout] test app::model::app_state::tests::selection_generation_can_detect_stale_responses ... ok
[INFO] [stdout] test app::model::app_state::tests::inspector_visible_rows::ddl_visible_rows_equals_height_minus_three::case_3 ... ok
[INFO] [stdout] test app::model::app_state::tests::reload_metadata_reset::clears_stale_messages ... ok
[INFO] [stdout] test app::model::app_state::tests::reload_metadata_reset::clears_prefetch_state ... ok
[INFO] [stdout] test app::model::app_state::tests::reload_metadata_reset::resets_er_preparation ... ok
[INFO] [stdout] test app::model::app_state::tests::result_pane_height_calculates_correct_visible_rows::case_1 ... ok
[INFO] [stdout] test app::model::app_state::tests::selection_generation_increments_prevent_race_conditions ... ok
[INFO] [stdout] test app::model::app_state::tests::toggle_focus_exits_focus_mode_and_restores_pane ... ok
[INFO] [stdout] test app::model::app_state::tests::very_small_result_pane_returns_zero_rows ... ok
[INFO] [stdout] test app::model::app_state::tests::selection_generation_starts_at_zero ... ok
[INFO] [stdout] test app::model::browse::cell_edit::tests::backspace_at_middle_removes_correct_char ... ok
[INFO] [stdout] test app::model::app_state::tests::toggle_focus_enters_focus_mode ... ok
[INFO] [stdout] test app::model::app_state::tests::small_result_pane_height_does_not_underflow ... ok
[INFO] [stdout] test app::model::app_state::tests::result_pane_height_calculates_correct_visible_rows::case_2 ... ok
[INFO] [stdout] test app::model::browse::cell_edit::tests::clear_after_begin_resets_all_fields ... 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::browse::cell_edit::tests::delete_at_cursor_position ... 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::cell_edit::tests::has_pending_draft_returns_true_when_draft_differs ... ok
[INFO] [stdout] test app::model::browse::cell_edit::tests::has_pending_draft_returns_false_when_not_active ... 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::cursor_movement_works_through_input ... 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::query_execution::tests::capability_tests::can_edit_only_live_preview ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::default_creates_idle_state ... 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::has_history_hint_tests::false_when_no_history ... 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::has_history_hint_tests::true_when_history_exists_and_not_browsing ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::history_bar_tests::returns_index_and_total_when_in_history ... 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::can_prev_false_on_first_page ... 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::reset_clears_state ... 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::history_bar_tests::returns_none_when_not_in_history ... 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::query_status_default_is_idle ... 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::can_next_false_when_reached_end ... 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::visible_result_kind_tests::empty_when_no_result_and_no_history ... 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::pagination::total_pages_estimate_none_when_unknown ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::visible_result_kind_tests::history_entry_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_tests::returns_current_result_when_no_history_index ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::visible_result_tests::returns_history_entry_when_history_index_set ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::visible_result_tests::returns_none_when_history_index_out_of_range ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::visible_result_tests::returns_none_when_no_live_result_but_history_exists ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::visible_result_tests::returns_none_when_empty ... ok
[INFO] [stdout] test app::model::browse::query_execution::tests::pagination::total_pages_estimate_rounds_up ... ok
[INFO] [stdout] test app::model::browse::result_history::tests::len_returns_entry_count ... 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::result_history::tests::push_and_get_returns_entries_in_order ... 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::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::result_interaction::tests::clear_expired_flash_keeps_active ... 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::exit_row_to_scroll_clears_selection_and_staging ... ok
[INFO] [stdout] test app::model::browse::result_interaction::tests::reset_interaction_preserves_scroll ... ok
[INFO] [stdout] test app::model::browse::result_interaction::tests::clear_operator_pending_selective ... ok
[INFO] [stdout] test app::model::browse::result_interaction::tests::enter_row_delegates_correctly ... 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::exit_cell_to_row_transitions_to_row_active ... ok
[INFO] [stdout] test app::model::browse::result_history::tests::is_empty_returns_true_when_no_entries ... ok
[INFO] [stdout] test app::model::browse::result_interaction::tests::stage_row_and_unstage_last ... ok
[INFO] [stdout] test app::model::browse::session::tests::clear_table_selection_invalidates_pending_detail ... 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::restore_resets_generation_and_reloading ... 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::cache_round_trip::round_trip_preserves_state ... ok
[INFO] [stdout] test app::model::browse::session::tests::connection_lifecycle::begin_reload_and_finish_reload ... 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_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::database_name_tests::cleared_after_reset ... 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::connection_lifecycle::begin_connecting_sets_pair ... ok
[INFO] [stdout] test app::model::browse::session::tests::database_name_tests::returns_name_after_mark_connected ... ok
[INFO] [stdout] test app::model::browse::session::tests::database_name_tests::none_when_no_metadata ... ok
[INFO] [stdout] test app::model::browse::session::tests::database_name_tests::synced_after_restore_from_cache ... 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::reset_tests::reset_clears_everything ... ok
[INFO] [stdout] test app::model::browse::session::tests::select_table::resets_pagination ... ok
[INFO] [stdout] test app::model::browse::session::tests::select_table::increments_generation ... 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::sets_selected_table_key ... ok
[INFO] [stdout] test app::model::browse::session::tests::set_table_detail_tests::accepts_matching_generation ... ok
[INFO] [stdout] test app::model::connection::cache::tests::preserves_metadata_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::connection_cache_default_has_empty_fields ... ok
[INFO] [stdout] test app::model::connection::cache::tests::store_remove_returns_and_deletes_cache ... 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::getter_tests::tables_returns_all_when_metadata_present ... ok
[INFO] [stdout] test app::model::browse::session::tests::getter_tests::tables_returns_empty_when_no_metadata ... 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::set_table_detail_tests::rejects_stale_generation ... 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::classify_stderr_as_auth_failed::case_2 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::classify_stderr_as_auth_failed::case_1 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::classify_stderr_as_cli_not_found::case_1 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::classify_stderr_as_cli_not_found::case_4 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::classify_stderr_as_cli_not_found::case_2 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::classify_stderr_as_cli_not_found::case_3 ... ok
[INFO] [stdout] test app::model::connection::cache::tests::preserves_query_result_on_save_and_get ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::classify_stderr_as_database_not_found ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::classify_stderr_as_host_unreachable::case_2 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::classify_stderr_as_host_unreachable::case_1 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::classify_stderr_as_timeout::case_2 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::classify_stderr_as_unknown_fallback::case_2 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::classify_stderr_as_unknown_fallback::case_1 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::classify_stderr_as_unknown_fallback::case_3 ... ok
[INFO] [stdout] test app::model::connection::error::tests::classify::classify_stderr_as_timeout::case_1 ... 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_kind::has_non_empty_summary_and_hint::case_3 ... 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::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::error_info::new_auto_classifies ... 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_5 ... 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::error_kind::has_non_empty_summary_and_hint::case_6 ... 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::info_stores_both_raw_and_masked ... 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_mysql_credentials::case_2 ... 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_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_4 ... 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_3 ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::copied_feedback::hidden_after_expiry ... ok
[INFO] [stdout] test app::model::connection::error::tests::mask_password::masks_mysql_credentials::case_3 ... 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::masked_details::returns_none_when_no_error ... 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::down_increments_offset ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::detail_line_count::returns_zero_when_no_error ... 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::error_state::tests::toggle_details::resets_scroll_on_collapse ... ok
[INFO] [stdout] test app::model::connection::list::tests::both_empty_returns_empty ... ok
[INFO] [stdout] test app::model::connection::list::tests::only_profiles_no_separator ... ok
[INFO] [stdout] test app::model::connection::list::tests::only_services_no_separator ... ok
[INFO] [stdout] test app::model::connection::error_state::tests::masked_details::returns_masked_string_when_error_exists ... ok
[INFO] [stdout] test app::model::connection::list::tests::both_profiles_and_services_concatenated ... 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_3 ... 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_4 ... 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_5 ... 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_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_2 ... 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::is_required_returns_correct_value::case_7 ... 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_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_1 ... 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_field::prev_returns_correct_field::case_4 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_setup_state::default_name_without_database ... 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_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::default_has_correct_values ... 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::is_edit_mode_returns_false_for_new ... 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::default_returns_not_connected ... 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_setup_state::is_edit_mode_returns_true_for_edit ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_setup_state::clear_errors_removes_all_errors ... ok
[INFO] [stdout] test app::model::connection::state::tests::predicate_returns_expected::case_1 ... ok
[INFO] [stdout] test app::model::connection::setup::tests::connection_setup_state::default_name_with_database ... ok
[INFO] [stdout] test app::model::connection::state::tests::predicate_returns_expected::case_2 ... ok
[INFO] [stdout] test app::model::connection::state::tests::predicate_returns_expected::case_3 ... ok
[INFO] [stdout] test app::model::er_state::tests::is_complete::pending_tables_returns_false ... ok
[INFO] [stdout] test app::model::connection::state::tests::predicate_returns_expected::case_4 ... ok
[INFO] [stdout] test app::model::er_state::tests::is_complete::empty_state_returns_true ... ok
[INFO] [stdout] test app::model::er_state::tests::retry_failed::moves_failed_to_pending ... ok
[INFO] [stdout] test app::model::er_state::tests::on_table_failed::moves_from_fetching_to_failed ... 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::reset::clears_all_state ... ok
[INFO] [stdout] test app::model::er_state::tests::on_table_cached::removes_from_fetching ... ok
[INFO] [stdout] test app::model::er_state::tests::is_complete::fetching_tables_returns_false ... ok
[INFO] [stdout] test app::model::er_state::tests::on_table_cached::removes_from_pending ... 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::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::reset_preserves_compare_state_and_history ... 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::second_explain_auto_advances_right_to_left ... ok
[INFO] [stdout] test app::model::explain_context::tests::history_stores_all_explains ... 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::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::flash_timer::tests::set_and_is_active ... ok
[INFO] [stdout] test app::model::explain_context::tests::set_plan_stores_query_snippet_first_line_only ... ok
[INFO] [stdout] test app::model::shared::focused_pane::tests::default_is_explorer ... 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_2 ... 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::runtime_state::tests::new_creates_runtime_state_with_project_name ... ok
[INFO] [stdout] test app::model::runtime_state::tests::default_creates_empty_runtime_state ... 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::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_correct_pane::case_3 ... ok
[INFO] [stdout] test app::model::shared::flash_timer::tests::earliest_deadline_empty_returns_none ... 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::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::idle_by_default ... 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::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_removes_expired_messages ... ok
[INFO] [stdout] test app::model::shared::message::tests::clear_removes_all_messages ... ok
[INFO] [stdout] test app::model::shared::message::tests::set_success_clears_error_message ... ok
[INFO] [stdout] test app::model::shared::message::tests::set_error_clears_success_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::push_from_non_normal_preserves_origin ... ok
[INFO] [stdout] test app::model::shared::modal::tests::pop_mode_override_ignores_stack ... ok
[INFO] [stdout] test app::model::shared::message::tests::clear_expired_at_keeps_unexpired_messages ... ok
[INFO] [stdout] test app::model::shared::message::tests::set_error_sets_expiration_time ... ok
[INFO] [stdout] test app::model::shared::modal::tests::nested_push_pop ... 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::push_pop_preserves_return_mode ... 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::multi_line_input::tests::byte_index_tests::past_end_returns_content_byte_len ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::content_management_tests::clear_resets_all_fields ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::content_management_tests::set_content_with_cursor_clamps_past_end ... 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::content_management_tests::set_content_resets_scroll_and_sets_cursor_to_end ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::byte_index_tests::ascii_returns_same_index ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::byte_index_tests::multibyte_returns_correct_position ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::content_management_tests::set_content_with_cursor_sets_exact_position ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::cursor_to_position_tests::multiline_returns_correct_row_and_col ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::cursor_to_position_tests::multibyte_returns_correct_position::case_1 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::cursor_to_position_tests::empty_string_returns_origin ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::cursor_to_position_tests::multibyte_returns_correct_position::case_3 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::edge_case_tests::consecutive_newlines_returns_middle_row ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::cursor_to_position_tests::single_line_returns_correct_col ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::edge_case_tests::home_end_on_empty_line_returns_same_position ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::cursor_to_position_tests::multibyte_returns_correct_position::case_2 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::edge_case_tests::cursor_after_newline_returns_start_of_next_line ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::edge_case_tests::up_down_through_empty_line_clamps_col ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::edge_case_tests::down_to_empty_trailing_line_returns_next_row_origin ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::edge_case_tests::up_from_empty_trailing_line_returns_prev_line_origin ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::edit_tests::backspace_at_newline_joins_adjacent_lines ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::edge_case_tests::cursor_before_newline_returns_end_of_current_line ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::edge_case_tests::trailing_newline_returns_next_row_origin ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::edit_tests::insert_newline_splits_content ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::edit_tests::insert_tab_adds_four_spaces ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor_tests::down_clamps_col_to_shorter_line_length ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor_tests::down_from_first_line_returns_same_col_in_second ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor_tests::end_on_first_line_returns_line_length ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor_tests::down_from_last_line_returns_unchanged ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor_tests::end_returns_line_end ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor_tests::home_on_first_line_returns_zero ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor_tests::home_returns_line_start ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor_tests::left_at_start_returns_zero ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::edit_tests::delete_at_newline_joins_adjacent_lines ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::multibyte_multiline_tests::multibyte_home_end_returns_line_boundaries ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::multibyte_multiline_tests::multibyte_up_down_preserves_col ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::scroll_tests::cursor_above_viewport_retreats_scroll ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor_tests::left_right_moves_cursor_by_one ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor_tests::right_at_end_returns_unchanged ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor_tests::up_clamps_col_to_shorter_line_length ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::move_cursor_tests::up_from_second_line_returns_same_col_in_first ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::scroll_tests::cursor_below_viewport_advances_scroll ... ok
[INFO] [stdout] test app::model::shared::picker::tests::set_selection::clamp_scroll_offset_cases::case_2 ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::scroll_tests::cursor_within_viewport_returns_unchanged_scroll ... ok
[INFO] [stdout] test app::model::shared::multi_line_input::tests::scroll_tests::zero_visible_rows_returns_unchanged_scroll ... 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::picker::tests::set_selection::clamp_scroll_offset_cases::case_5 ... 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::multi_line_input::tests::move_cursor_tests::up_from_first_line_returns_unchanged ... 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::sets_selected_index ... 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::scroll_offset_advances_when_selection_falls_below_viewport ... 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::picker::tests::set_selection::scroll_offset_stays_zero_when_within_viewport ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::backspace_tests::backspace_at_middle ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::backspace_tests::backspace_at_start_is_noop ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::char_count_tests::ascii_string ... ok
[INFO] [stdout] test app::model::shared::picker::tests::visible_items::returns_pane_height_as_usize ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::char_count_tests::empty_string ... 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::backspace_tests::backspace_at_end ... 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::backspace_tests::backspace_empty_string ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::backspace_tests::backspace_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_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::with_viewport_clamps_cursor ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::delete_tests::delete_at_beginning ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::delete_tests::delete_empty_string ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::delete_tests::delete_multibyte ... 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::set_cursor_valid_position ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::delete_tests::delete_at_end_is_noop ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::delete_tests::delete_at_middle ... 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::insert_char_tests::insert_at_empty ... 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::insert_str_at_beginning ... 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::insert_char_tests::insert_at_middle ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::insert_str_tests::insert_str_at_middle ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::insert_str_tests::insert_str_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_left_at_start_stays ... 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::set_content_and_clear::clear_resets_all ... 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::move_cursor_tests::move_home ... 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::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::text_input::tests::move_cursor_tests::move_up_is_noop ... ok
[INFO] [stdout] test app::model::shared::text_input::tests::viewport_tests::cursor_past_right_edge_scrolls ... 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::ddl_visible_rows_equals_height_minus_three::case_1 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::ddl_visible_rows_equals_height_minus_three::case_2 ... 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::ddl_visible_rows_equals_height_minus_three::case_3 ... 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::ddl_visible_rows_is_greater_than_standard ... 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::ui_state::tests::default_creates_empty_state ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::default_result_pane_height_returns_zero_visible_rows ... 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::new_sets_terminal_height ... 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::move_cursor_tests::move_right_at_end_stays ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_overhead_constants_are_consistent ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_pane_height_calculates_correct_visible_rows::case_1 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_pane_height_calculates_correct_visible_rows::case_2 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_pane_height_calculates_correct_visible_rows::case_3 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_pane_height_calculates_correct_visible_rows::case_4 ... 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_clears_cell_when_zero_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::result_selection::clamp_resets_when_zero_rows ... 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_transitions_to_cell_active ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::enter_cell_without_row_is_noop ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::enter_row_clears_previous_cell ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::enter_row_transitions_to_row_active ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::exit_to_row_clears_cell_only ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::result_selection::move_row_in_row_active_stays_row_active ... 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::ui_state::tests::scroll_can_reach_all_rows::case_1 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::scroll_can_reach_all_rows::case_2 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::scroll_can_reach_all_rows::case_3 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::scroll_can_reach_all_rows::case_4 ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::set_connection_list_selection_with_none_resets_to_zero ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::set_connection_list_selection_with_some_sets_index ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::set_explorer_selection_with_none_resets_to_zero ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::set_explorer_selection_with_some_sets_index ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::small_result_pane_height_does_not_underflow ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::toggle_focus_enters_focus_mode ... ok
[INFO] [stdout] test app::model::shared::ui_state::tests::toggle_focus_exits_focus_mode_and_restores_pane ... 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::bonus_column_total_width_within_available ... 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::column_count::at_least_one_column ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::column_count::empty_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::next_increments ... 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::scroll_behavior::one_scroll_changes_first_column_by_one ... 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::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::select_dynamic::basic_fit ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::select_dynamic::shrinks_rightmost ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::select_dynamic::with_offset ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::select_fixed::exact_count ... 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::select_fixed::shrinks_from_left_at_right_edge ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::select_fixed::shrinks_multiple_columns ... 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::select_fixed::with_offset ... 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::slack_absorption::absorbs_slack_when_max_offset_zero ... 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::slack_absorption::one_scroll_still_changes_one_column_with_slack_none ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::total_width::multiple_columns_includes_separators ... 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::different_max_triggers_recalculation ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::viewport_plan::needs_recalculation_returns_expected::case_1 ... 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::total_width::empty_returns_zero ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::viewport_plan::needs_recalculation_returns_expected::case_4 ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::viewport_plan::needs_recalculation_returns_expected::case_5 ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::viewport_plan::needs_recalculation_returns_expected::case_2 ... ok
[INFO] [stdout] test app::model::shared::viewport::tests::viewport_plan::needs_recalculation_returns_expected::case_3 ... 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::needs_recalculation_returns_expected::case_6 ... ok
[INFO] [stdout] test app::model::sql_editor::modal::tests::clear_content_resets_editor_state ... 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::modal::tests::confirming_high_with_target_name ... 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::sql_editor::modal::tests::confirming_high_without_target_name ... 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::sql_editor::modal::tests::reset_prefetch_clears_all_prefetch_state ... 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::clamped_selected_clamps_to_last_index ... 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::query_history::tests::grouping::filter_preserves_non_consecutive_groups ... 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::grouping::grouped_count_reflects_groups ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::fuzzy_filter_matches_partial_query ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::grouping::three_consecutive_identical_entries_become_one_group ... 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::reset_clears_all_state ... 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::no_matches_returns_empty ... ok
[INFO] [stdout] test app::model::sql_editor::query_history::tests::grouping::filter_removes_separator_merging_groups ... 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::recursive_cte_returns_definition ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::cte_definitions::simple_cte_returns_definition ... 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::cte_definitions::multiple_ctes_returns_all_definitions ... 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::cursor_context::cursor_after_closed_string_returns_false ... 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::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::comments::line_comment_returns_comment_token ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::cte_definitions::no_cte_returns_empty ... 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::string_literals::escape_string_returns_string_literal ... 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::escaped_single_quote_returns_single_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::table_references::from_with_alias_returns_alias ... 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::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::string_literals::keyword_in_string_returns_only_outer_keyword ... 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::table_references::left_join_returns_reference ... 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::table_references::schema_qualified_table_returns_schema ... 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::target_table::basic_extraction::mutation_table_in_references::case_2 ... 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::target_table::locking_clauses::for_no_key_update_is_not_target ... 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::locking_clauses::for_no_key_update_not_in_references ... 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::locking_clauses::for_update_is_not_target ... 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::locking_clauses::multi_statement_for_share_then_update_extracts_both_tables ... 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::basic_extraction::extract_target_returns_expected::case_1 ... 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::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::basic_extraction::extract_target_returns_expected::case_2 ... 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::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::delete_from_only_target_table ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::target_table::basic_extraction::extract_target_returns_expected::case_3 ... 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::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::insert_into_only_target_table ... 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::select_into_not_in_references ... 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::basic_extraction::extract_target_returns_expected::case_4 ... 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::target_table::table_reference_edge_cases::with_clause_update_extracts_target ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::tokenization::array_access_returns_punctuation_tokens ... 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::cte_dml::case_3_cte_delete_where ... 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::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_1_plain_insert ... 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_4_delete_no_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::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::edge_cases::case_03_dollar_quoted_keyword ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::tokenization::cast_operator_returns_operator_token ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::tokenization::non_keyword_returns_identifier ... ok
[INFO] [stdout] test app::policy::sql::lexer::tests::tokenization::simple_select_extracts_keywords ... 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::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::explain_analyze_dml::case_3_explain_analyze_delete ... 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_27_select_into ... 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_6_explain_paren_analyze_verbose_delete ... 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_4_block_comment_only ... 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::classify_tests::explain_analyze_dml::case_4_explain_analyze_insert ... 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::explain_analyze_dml::case_5_explain_paren_analyze_update ... 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_04_recursive_cte_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_06_explain_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::select_variants::case_07_explain_analyze_select ... 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_3_comment_only ... 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_10_explain_update ... 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_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::select_variants::case_14_show ... 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::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::classify_tests::select_variants::case_02_lowercase_select ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::additional_extraction::case_1_truncate_schema ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::additional_extraction::case_2_truncate_only ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::additional_extraction::case_3_delete_quoted ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::additional_extraction::case_4_update_quoted_schema ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::additional_extraction::case_5_drop_no_table_keyword ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::additional_extraction::case_6_drop_multiple ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::delete::case_1_simple ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::additional_extraction::case_7_truncate_multiple ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::delete::case_2_with_only ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::delete::case_3_schema_qualified ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::drop_table::case_1_simple ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::drop_table::case_2_if_exists ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::drop_table::case_3_schema_qualified ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::drop_table::case_4_quoted ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::drop_table::case_5_quoted_schema ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::not_applicable::case_1_select ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::not_applicable::case_2_insert ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::not_applicable::case_3_create ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::not_applicable::case_4_alter ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::not_applicable::case_5_transaction ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::not_applicable::case_6_other ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::truncate::case_1_simple ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::truncate::case_2_with_table_keyword ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::truncate::case_3_multiple ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::update::case_1_simple ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::update::case_2_with_only ... ok
[INFO] [stdout] test app::policy::sql::statement_classifier::tests::extract_table_name_tests::update::case_3_schema_qualified ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_multi_statement_tests::copy_unsupported_high ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_multi_statement_tests::do_block_unsupported_high ... 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::insert_then_select_requires_enter_not_immediate ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_multi_statement_tests::multiple_high_blocked ... 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::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::tcl_only_multi_requires_enter ... 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_multi_statement_tests::single_insert_passthrough ... 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::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::table_name_extraction_failure_blocked ... 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::immediate::case_1_select ... 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::immediate::case_2_transaction ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::medium_enter::case_2_delete_where ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::low_enter::case_1_insert ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::medium_enter::case_1_update_where ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::low_enter::case_2_create ... 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::basic_split::case_5_whitespace_only ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::medium_enter::case_3_alter ... ok
[INFO] [stdout] test app::policy::write::sql_risk::tests::evaluate_sql_risk_tests::other_returns_none ... 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::evaluate_sql_risk_tests::unsupported_is_high_enter ... 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_3_trailing_semicolon ... 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::escaped_quote_no_split ... 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_1_single_quote ... 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::semicolon_in_strings::case_2_double_quote ... 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::trailing_comment_only ... 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::sql_risk::tests::split_statements_tests::non_ascii_before_semicolon ... 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_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::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::sql_risk::tests::split_statements_tests::semicolon_in_comments::case_1_line_comment ... 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::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_guardrails::tests::guardrail_evaluation::missing_stable_identity_returns_blocked_high_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_guardrails::tests::guardrail_evaluation::stable_where_and_identity_returns_unblocked_low_risk ... 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::existing_pk_columns_returns_pk_pairs ... 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::value_input_returns_expected_sql_expr::case_1 ... ok
[INFO] [stdout] test app::policy::write::write_update::tests::value_expr::value_input_returns_expected_sql_expr::case_2 ... ok
[INFO] [stdout] test app::policy::write::write_update::tests::value_expr::value_input_returns_expected_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::command_failed_contains_exit_code ... ok
[INFO] [stdout] test app::ports::graphviz::tests::graphviz_error::not_installed_contains_installation_hint ... ok
[INFO] [stdout] test app::ports::graphviz::tests::viewer_error::launch_failed_contains_cause ... 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_fk_expanded_dispatches_generate ... 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::fk_neighbors_discovered::non_empty_neighbors_adds_to_queue ... 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::metadata_loaded::after_connection_switch_pagination_reset_suppresses_auto_preview ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::metadata_loaded::no_table_selected_defaults_to_first ... 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::metadata_loaded::table_still_exists_preserves_pagination_and_emits_refresh_effects ... 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::prefetch_table_detail::expired_backoff_proceeds_normally ... 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::metadata::tests::start_prefetch_all::small_db_uses_floor_capacity ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::start_prefetch_scoped::only_selected_tables_in_queue ... 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::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::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::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::metadata::tests::start_prefetch_all::sets_fk_expanded_true ... 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::navigation::connection_list::tests::connection_list_navigation::select_previous_decrements_selection ... 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::connection_list::tests::connection_list_navigation::select_previous_stops_at_first ... 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::connections_loaded::stores_service_file_path_in_runtime ... 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::confirm_connection_selection::different_connection_dispatches_switch_effect ... ok
[INFO] [stdout] test app::update::browse::metadata::tests::start_prefetch_all::large_db_emits_resize_effect ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::empty_list_does_nothing ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::data_fewer_than_viewport_scroll_stays_zero ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::full_page_down_clamps_near_bottom ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::full_page_down_jumps_by_visible ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::full_page_up_clamps_near_top ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::full_page_down_moves_both_selection_and_scroll ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::half_page_down_clamped_at_last ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::half_page_down_jumps_by_correct_delta ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::half_page_down_preserves_relative_position ... 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::navigation::explorer::tests::explorer_page_scroll::half_page_down_moves_both_selection_and_scroll ... 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::navigation::explorer::tests::explorer_page_scroll::scroll_cursor_top_puts_selected_at_top ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::full_page_up_moves_both_selection_and_scroll ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::scroll_cursor_center_centers_viewport_on_selected ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::half_page_up_clamped_at_zero ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::half_page_up_moves_both_selection_and_scroll ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::scroll_cursor_top_clamps_to_max_offset ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::scroll_cursor_bottom_puts_selected_at_bottom ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::select_middle_moves_to_viewport_center ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::select_middle_respects_scroll_offset ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::select_viewport_bottom_clamps_to_last_displayed_item ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::select_viewport_bottom_moves_to_last_visible_item ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::select_viewport_bottom_uses_displayed_count_near_end ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::select_viewport_middle_uses_displayed_count_near_end ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::zero_height_pane_is_noop ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::paste::paste_in_command_line_appends_text ... 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::paste::paste_in_command_line_strips_newlines ... 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::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::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::paste_in_normal_mode_returns_none ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::paste::paste_in_query_history_picker_strips_newlines ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::paste::paste_in_er_table_picker_appends_to_er_filter ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::paste::paste_in_table_picker_resets_selection ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::paste::paste_in_er_table_picker_strips_newlines ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::paste::paste_in_table_picker_strips_newlines ... 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::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::picker_navigation::er_picker_next_increments ... ok
[INFO] [stdout] test app::update::browse::navigation::explorer::tests::explorer_page_scroll::select_viewport_top_moves_to_first_visible_item ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::paste::paste_in_query_history_picker_appends_to_filter ... ok
[INFO] [stdout] test app::update::browse::navigation::input::tests::paste::paste_in_table_picker_appends_text ... 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_scroll_bottom_no_detail_stays_zero ... 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_top_resets_to_zero ... 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::adhoc_refresh::select_emits_no_effects ... 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::query::execution::tests::adhoc_refresh::ddl_emits_cache_invalidate_and_fetch_metadata ... 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::adhoc_refresh::tcl_emits_no_effects ... 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_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_erd_dispatches_open_er_table_picker ... 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_quit_pops_mode_and_sets_quit ... 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::execution::tests::adhoc_refresh::ddl_resets_prefetch_state_and_clears_table_detail ... 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::execute_preview::resets_pagination ... 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::adhoc_error_preserves_current_result_and_view_state ... 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::query_completed::adhoc_success_writes_current_result_without_touching_history_index ... 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::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::execution::tests::query_completed::does_not_set_reached_end_for_full_page ... 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::request_with_adhoc_result_uses_original_query ... 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::export_failed_sets_error_message ... 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::csv_export::request_without_result_is_noop ... 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::pagination::tests::csv_export::rows_counted_below_threshold_emits_export_effect ... 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::next_page::noop_preserves_view_state ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::next_page::emits_effect_with_correct_offset ... 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::noop_when_running ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::next_page::noop_when_reached_end ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::next_page::transition_resets_view_state ... 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::pagination::tests::prev_page::noop_on_first_page ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::prev_page::emits_effect_with_correct_offset ... 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::open_write_preview_confirm_for_delete_sets_normal_return_mode ... ok
[INFO] [stdout] test app::update::browse::query::pagination::tests::prev_page::noop_preserves_view_state ... 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_failed_for_delete_returns_to_normal_mode ... 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_success_refreshes_preview_page ... 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::write_flow::write_rejects_stale_table_detail ... 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_idle_query_status ... 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::result::edit::tests::cell_edit_cursor_ops::backspace_removes_char_before_cursor ... 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::delete_at_end_is_noop ... 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::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_end_jumps_to_end ... 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_entry_guardrails::re_entering_same_cell_with_pending_draft_preserves_draft ... 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::history::tests::navigation_resets_scroll_offset ... 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::exit_clears_index ... 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::result::edit::tests::cell_edit_entry_guardrails::stale_table_detail_blocks_cell_edit_entry ... 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::older_clamps_at_zero ... ok
[INFO] [stdout] test app::update::browse::result::history::tests::open_sets_index_to_newest ... ok
[INFO] [stdout] test app::update::browse::result::history::tests::older_decrements_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::newer_increments_index ... ok
[INFO] [stdout] test app::update::browse::result::history::tests::open_is_noop_when_history_empty ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_page_scroll::cell_active_half_page_down_preserves_column ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_page_scroll::data_fewer_than_viewport_scroll_stays_zero ... 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::scroll::tests::result_page_scroll::full_page_down_clamped_at_max ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_page_scroll::full_page_down_row_active_clamps_near_bottom ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_page_scroll::full_page_up_row_active_clamps_near_top ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_page_scroll::half_page_down_row_active_clamps_near_bottom ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_page_scroll::full_page_up_clamped_at_zero ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_page_scroll::full_page_down_row_active_moves_both ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_page_scroll::full_page_up_row_active_moves_both ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_page_scroll::half_page_down_row_active_moves_both_cursor_and_viewport ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_page_scroll::half_page_down_from_top ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_page_scroll::half_page_up_row_active_clamps_near_top ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_page_scroll::half_page_up_row_active_moves_both_cursor_and_viewport ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_page_scroll::half_page_up_from_middle ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_page_scroll::scroll_middle_is_noop_in_scroll_mode ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_page_scroll::half_page_down_row_active_preserves_relative_position ... ok
[INFO] [stdout] test app::update::browse::result::scroll::tests::result_page_scroll::scroll_middle_moves_row_to_viewport_center_in_row_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_page_scroll::visible_zero_row_active_is_noop ... 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_center_centers_on_selected_row ... 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::result_page_scroll::zero_height_pane_scroll_mode_is_noop ... 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::result_page_scroll::visible_zero_row_active_full_page_is_noop ... ok
[INFO] [stdout] test app::update::browse::result::selection::tests::row_delete::dd_stages_active_row ... ok
[INFO] [stdout] test app::update::browse::result::selection::tests::row_delete::staging_requires_row_active_mode ... 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::page_passthrough::prev_page_returns_none_without_mutating_state ... 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::selection::tests::row_delete::clear_staged_deletes_removes_all ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::cell_yank::no_selection_is_noop ... 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::out_of_bounds_row_sets_error ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::ddl_yank::ddl_yank_on_non_ddl_tab_returns_empty ... 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::ddl_yank::ddl_yank_with_table_detail_returns_copy_effect ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::ddl_yank::ddl_yank_sets_flash ... 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::yank::tests::ddl_yank::ddl_yank_without_table_detail_returns_empty ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::row_yank::row_yank_emits_tsv_copy_effect ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::row_yank::row_yank_escapes_backslash ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::row_yank::row_yank_no_selection_is_noop ... ok
[INFO] [stdout] test app::update::connection::error::tests::reenter_connection_setup::allowed_for_profile_connection ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::row_yank::yank_op_pending_sets_flag ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::row_yank::row_yank_out_of_bounds_sets_error ... ok
[INFO] [stdout] test app::update::connection::error::tests::reenter_connection_setup::blocked_for_service_connection ... ok
[INFO] [stdout] test app::update::connection::error::tests::scroll_down::stops_at_detail_line_count ... ok
[INFO] [stdout] test app::update::browse::result::yank::tests::row_yank::row_yank_escapes_tab_and_newline ... ok
[INFO] [stdout] test app::update::connection::lifecycle::tests::restores_cached_state_when_available ... ok
[INFO] [stdout] test app::update::connection::lifecycle::tests::fetches_metadata_when_no_cache_exists ... ok
[INFO] [stdout] test app::update::connection::lifecycle::tests::resets_result_selection_when_no_cache ... ok
[INFO] [stdout] test app::update::connection::lifecycle::tests::saves_current_cache_before_switching ... ok
[INFO] [stdout] test app::update::connection::lifecycle::tests::resets_result_selection_when_restoring_cache ... ok
[INFO] [stdout] test app::update::connection::lifecycle::tests::clears_completion_cache_on_switch ... 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::resets_full_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::selector::tests::connection_deleted::clears_active_state_when_active_deleted ... ok
[INFO] [stdout] test app::update::connection::lifecycle::tests::sets_connected_state_when_cache_exists ... ok
[INFO] [stdout] test app::update::connection::lifecycle::tests::updates_active_connection_fields ... ok
[INFO] [stdout] test app::update::connection::selector::tests::connection_deleted::rebuilds_connection_list_items_after_delete ... 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::open_connection_selector::resets_selection_to_zero ... ok
[INFO] [stdout] test app::update::connection::selector::tests::request_delete_selected_connection::empty_list_does_nothing ... 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::selector::tests::connection_deleted::stays_in_selector_when_services_remain_after_last_profile_deleted ... 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::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::connection_save::save_sets_connection_and_metadata_state_as_pair ... ok
[INFO] [stdout] test app::update::connection::selector::tests::open_connection_selector::sets_mode_and_loads_connections ... 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::selector::tests::request_delete_selected_connection::active_connection_shows_warning ... ok
[INFO] [stdout] test app::update::connection::setup::tests::paste::paste_into_full_port_does_nothing ... ok
[INFO] [stdout] test app::update::connection::setup::tests::paste::paste_into_host_inserts_text ... ok
[INFO] [stdout] test app::update::connection::setup::tests::paste::paste_into_port_filters_non_digits ... ok
[INFO] [stdout] test app::update::connection::setup::tests::paste::paste_into_port_respects_limit ... ok
[INFO] [stdout] test app::update::connection::setup::tests::paste::paste_into_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::paste_strips_newlines ... ok
[INFO] [stdout] test app::update::connection::tests::paste_handled_by_setup_in_connection_setup_mode ... ok
[INFO] [stdout] test app::update::connection::setup::tests::paste::paste_updates_cursor ... ok
[INFO] [stdout] test app::update::connection::tests::unknown_action_returns_none ... 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_generate_from_cache::idle_status_returns_generate_effect ... ok
[INFO] [stdout] test app::update::er::tests::er_open_diagram::emits_smart_refresh ... ok
[INFO] [stdout] test app::update::er::tests::er_open_diagram::increments_run_id_on_each_call ... ok
[INFO] [stdout] test app::update::er::tests::er_open_diagram::no_dsn_returns_error ... ok
[INFO] [stdout] test app::update::er::tests::er_open_diagram::no_metadata_returns_error ... 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::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::no_changes_dispatches_generate_from_cache ... ok
[INFO] [stdout] test app::update::er::tests::smart_er_refresh_completed::mismatched_run_id_returns_empty ... ok
[INFO] [stdout] test app::update::er::tests::smart_er_refresh_completed::removed_tables_trigger_evict ... ok
[INFO] [stdout] test app::update::er::tests::smart_er_refresh_completed::missing_in_cache_triggers_scoped_prefetch ... ok
[INFO] [stdout] test app::update::er::tests::er_open_diagram::waiting_status_returns_empty_effects ... ok
[INFO] [stdout] test app::update::er::tests::smart_er_refresh_failed::falls_back_to_full_prefetch ... 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::mismatched_run_id_returns_empty ... ok
[INFO] [stdout] test app::update::explain::tests::analyze_confirm_cancel::cancel_from_high_resets_to_normal ... 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::analyze_confirm_cancel::cancel_resets_to_normal ... ok
[INFO] [stdout] test app::update::er::tests::smart_er_refresh_completed::updates_metadata_and_signatures ... ok
[INFO] [stdout] test app::update::explain::tests::compare_workflow::two_explains_auto_advance_returns_comparable_slots ... ok
[INFO] [stdout] test app::update::explain::tests::analyze_confirm_cancel::confirm_from_confirming_analyze_emits_effect ... 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::explain::tests::explain_analyze_request::delete_without_where_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::er::tests::smart_er_refresh_failed::no_metadata_sets_idle_and_error ... 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::select_executes_immediately_without_confirm ... ok
[INFO] [stdout] test app::update::explain::tests::explain_analyze_request::delete_with_where_shows_enter_confirm ... 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::drop_shows_high_confirm ... ok
[INFO] [stdout] test app::update::explain::tests::explain_analyze_request::empty_query_is_noop ... ok
[INFO] [stdout] test app::update::explain::tests::explain_analyze_request::insert_shows_enter_confirm ... ok
[INFO] [stdout] test app::update::explain::tests::explain_analyze_request::truncate_shows_high_confirm ... ok
[INFO] [stdout] test app::update::explain::tests::explain_analyze_request::update_with_where_shows_enter_confirm ... ok
[INFO] [stdout] test app::update::explain::tests::explain_request::emits_execute_explain_effect ... ok
[INFO] [stdout] test app::update::explain::tests::explain_request::running_is_noop ... 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::explain_request::multi_statement_sets_error_and_switches_to_plan_tab ... 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::explain_completed::sets_plan_and_switches_to_plan_tab ... 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::read_only_analyze::read_only_blocks_dml_analyze ... 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::scroll::compare_scroll_down_increments ... ok
[INFO] [stdout] test app::update::explain::tests::scroll::scroll_down_increments ... ok
[INFO] [stdout] test app::update::explain::tests::scroll::scroll_up_saturates_at_zero ... ok
[INFO] [stdout] test app::update::explain::tests::scroll::right_only_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::compare_scroll_up_saturates_at_zero ... ok
[INFO] [stdout] test app::update::explain::tests::scroll::scroll_down_clamps_at_max ... ok
[INFO] [stdout] test app::update::explain::tests::tab_switch::next_tab_switches_compare_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_plan_to_sql ... ok
[INFO] [stdout] test app::update::explain::tests::tab_switch::prev_tab_switches_sql_to_compare ... ok
[INFO] [stdout] test app::update::explain::tests::tab_switch::next_tab_switches_sql_to_plan ... ok
[INFO] [stdout] test app::update::explain::tests::tab_switch::next_tab_switches_plan_to_compare ... 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_first_page_clears_selection ... 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::all_rows_deleted_non_first_page_goes_to_previous_page ... 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::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::delete_refresh_target_bulk::single_row_deleted_from_middle_keeps_index ... 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::helpers::tests::validate_field_name::name_length_validation::case_1 ... ok
[INFO] [stdout] test app::update::helpers::tests::validate_field_name::name_length_validation::case_2 ... ok
[INFO] [stdout] test app::update::helpers::tests::validate_field_name::valid_name_clears_previous_error ... ok
[INFO] [stdout] test app::update::input::command::tests::command_to_action::unknown_returns_none_action ... 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::write_returns_submit_cell_edit_write_action ... 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::command_to_action::quit_returns_quit_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::parse_command::erd_returns_erd ... ok
[INFO] [stdout] test app::update::input::command::tests::parse_command::help_aliases::case_1 ... 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::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::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::command_to_action::sql_returns_open_sql_modal_action ... ok
[INFO] [stdout] test app::update::input::command::tests::parse_command::write_aliases::case_1 ... ok
[INFO] [stdout] test app::update::input::command::tests::parse_command::write_aliases::case_2 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::help_content_line_count_matches_section_structure ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::all_mode_bindings_count ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::idx_constants_are_within_bounds ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::all_mode_row_exec_entries_are_valid ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::command_line_has_no_problematic_plain_char_combos ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::compare_key_action_matches::case_1 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::compare_key_action_matches::case_3 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::compare_key_action_matches::case_2 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::compare_key_action_matches::case_5 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::compare_key_action_matches::case_7 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::compare_key_action_matches::case_6 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::confirm_key_action_matches::case_1 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::er_picker_has_no_plain_char_combos ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::confirm_key_action_matches::case_2 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::global_key_action_matches::case_02 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::global_key_action_matches::case_01 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::global_key_action_matches::case_04 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::global_key_action_matches::case_05 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::global_key_action_matches::case_07 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::global_key_action_matches::case_06 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::global_key_action_matches::case_03 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::all_non_none_bindings_have_combos ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::cell_edit_plain_char_combos_are_intentional ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::global_key_action_matches::case_12 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::global_key_action_matches::case_10 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::compare_key_action_matches::case_4 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::global_key_action_matches::case_11 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::global_key_action_matches::case_08 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::global_key_action_matches::case_13 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::global_key_action_matches::case_09 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::no_duplicate_combos_in_simple_modes ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::none_action_entries_have_no_combos ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::plan_key_action_matches::case_1 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::plan_key_action_matches::case_3 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::plan_key_action_matches::case_4 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::plan_key_action_matches::case_5 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::keymap_resolve_roundtrip_for_simple_modes ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::plan_key_action_matches::case_2 ... ok
[INFO] [stdout] test app::update::input::keymap::tests::empty_combos_entry_never_matches ... ok
[INFO] [stdout] test app::update::input::keymap::tests::resolve_mode_tests::empty_rows_returns_none ... ok
[INFO] [stdout] test app::update::input::keymap::tests::resolve_mode_tests::first_matching_binding_wins ... ok
[INFO] [stdout] test app::update::input::keymap::tests::resolve_mode_tests::matches_binding_in_rows ... ok
[INFO] [stdout] test app::update::input::keymap::tests::resolve_mode_tests::no_match_returns_none ... ok
[INFO] [stdout] test app::update::input::keymap::tests::returns_first_matching_non_none_entry ... 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::keymap::tests::returns_none_for_no_match ... ok
[INFO] [stdout] test app::update::input::keymap::tests::resolves_matching_combo ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::plan_key_action_matches::case_6 ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::query_history_picker_has_no_plain_char_combos ... ok
[INFO] [stdout] test app::update::input::keybindings::tests::semantic::table_picker_has_no_plain_char_combos ... ok
[INFO] [stdout] test app::update::input::keymap::tests::skips_display_only_none_entries ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::from_state_derives_correct_context::case_1 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::from_state_derives_correct_context::case_2 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::from_state_derives_correct_context::case_4 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::from_state_derives_correct_context::case_5 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::from_state_derives_correct_context::case_6 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::from_state_derives_correct_context::case_7 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::from_state_derives_correct_context::case_3 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_06 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_01 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_07 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_02 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_03 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_04 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_05 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_10 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_11 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_13 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_14 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_08 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_15 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_17 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_19 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_20 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_01 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_18 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_21 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_09 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_02 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_12 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_04 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_03 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_negative::case_16 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_05 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_06 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_07 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_10 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_12 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_11 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_14 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_15 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_09 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_16 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_18 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_13 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_17 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_20 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_01 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_02 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_21 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_05 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_03 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_04 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_19 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::map_nav_intent_positive::case_08 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_12 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_13 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_14 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_06 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_07 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_09 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_15 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_16 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_10 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_19 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_11 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_22 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_17 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_20 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_23 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_21 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_26 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_27 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_24 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_25 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_28 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_31 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_29 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_32 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_34 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_33 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_30 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_35 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_36 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_37 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_41 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_08 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_18 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_39 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_38 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_40 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_43 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_44 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_47 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_48 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_49 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_51 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_42 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_50 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_45 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_46 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_54 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_52 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_55 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_53 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_62 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_56 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_59 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_60 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_57 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_63 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_61 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_58 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_67 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_68 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_69 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_70 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_71 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_72 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_64 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_65 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_74 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_66 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_75 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_76 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_73 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_78 ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_79 ... ok
[INFO] [stdout] test app::update::input::palette::tests::palette_commands_contains_no_none_actions ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog_cancel::none_intent_cancel_does_not_panic ... ok
[INFO] [stdout] test app::update::modal::tests::confirm_dialog_cancel::other_intents_cancel_returns_empty_effects ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_77 ... ok
[INFO] [stdout] test app::cmd::er::task::tests::spawn_er_diagram_task::panic_sends_failed_action ... 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_cancel::quit_no_connection_restores_connection_setup_synchronously ... ok
[INFO] [stdout] test app::update::input::nav_intent::tests::resolve_matrix::case_80 ... 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_confirm::csv_export_returns_export_effect ... 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::execute_write_sets_running_state_and_returns_effect ... 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_no_dsn_sets_error ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::append_failed_does_not_set_error ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::confirm_from_normal_opens_sql_modal_with_query ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::confirm_from_sql_modal_overwrites_editor_content ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::confirm_with_empty_entries_is_noop ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::confirm_sets_cursor_to_char_count_not_byte_len ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::filter_input_resets_selection ... 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::loaded_stores_entries ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::loaded_ignores_when_picker_closed ... 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::query_history_picker::load_failed_sets_error_with_expiry ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::close_restores_origin_mode ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::load_failed_ignored_when_picker_not_active ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::open_when_not_connected_is_noop ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::select_next_clamps_at_end ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::loaded_ignores_stale_connection ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::open_when_running_is_noop ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::open_from_normal_sets_mode_and_emits_load_effect ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::select_next_increments ... ok
[INFO] [stdout] test app::update::reducer::tests::command_palette::confirm_selection_applies_sub_action::case_2 ... ok
[INFO] [stdout] test app::update::modal::tests::query_history_picker::select_previous_decrements ... 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::command_palette::confirm_selection_applies_sub_action::case_1 ... 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::command_palette::confirm_selection_applies_sub_action::case_3 ... 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_dialog_transitions::confirm_delete_write_then_success_preserves_delete_context ... 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::completion_ui::completion_next_wraps_around ... 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_selection_safety::confirm_selection_in_table_picker_mode_clears_stale_table_detail ... 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::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_error_actions::close_clears_copied_feedback ... 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::optional_fields_never_error::case_1 ... 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::connection_error_actions::toggle_details_flips_expanded_state ... 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_on_first_run_opens_confirm_dialog ... ok
[INFO] [stdout] test app::update::reducer::tests::connection_error_actions::copied_marks_feedback_visible ... 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::connection_setup_validation::port_validation_invalid_format::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_out_of_range::case_3 ... 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_1 ... 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::port_validation_invalid_format::case_2 ... 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::port_validation_valid_range::case_3 ... 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_4 ... 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_5 ... 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::reenter_connection_setup_preserves_form_values ... 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_resets_all_states ... 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::connection_state_tests::switch_connection_restores_from_cache ... 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_state_tests::switch_connection_saves_current_and_fetches_new ... 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::metadata_loaded_sets_connected ... 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::connection_state_tests::try_connect_when_already_connected_is_noop ... 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::try_connect_when_not_in_normal_mode_is_noop ... 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::execute_adhoc_with_dsn_returns_effect ... 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_metadata_sets_is_reloading_flag ... 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::always_emits_smart_refresh_even_with_pending_tables ... ok
[INFO] [stdout] test app::update::reducer::tests::er_diagram::no_metadata_returns_error ... 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::close_er_table_picker_returns_to_normal ... 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_table_picker::confirm_with_selected_tables_sets_target_and_returns_dispatch ... 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::load_metadata_without_dsn_returns_no_effects ... 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_table_picker::metadata_loaded_with_pending_but_non_normal_mode_discards ... 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::er_table_picker::confirm_with_no_selection_returns_error ... 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::er_table_picker::open_clears_selections_and_filter ... 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::er_table_picker::prefetch_complete_with_failures_does_not_auto_open ... ok
[INFO] [stdout] test app::update::reducer::tests::er_table_picker::target_tables_survive_er_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::modal_toggles::open_help_toggles_help_mode ... 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::operator_pending::y_then_d_cancels_yank_starts_delete ... 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::pagination_integration::confirm_selection_initializes_pagination_via_dispatch ... 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_2 ... ok
[INFO] [stdout] test app::update::reducer::tests::pure_actions::toggle_focus_returns_no_effects ... 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::pure_actions::render_returns_render_effect ... ok
[INFO] [stdout] test app::update::reducer::tests::pure_actions::resize_updates_terminal_height ... 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::response_handlers::enter_with_error_info_opens_modal ... 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_4 ... ok
[INFO] [stdout] test app::update::reducer::tests::scroll_actions::result_scroll_up_decrements_offset ... ok
[INFO] [stdout] test app::update::reducer::tests::sql_modal_debounce::debounce_state_uses_provided_now ... 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::response_handlers::metadata_loaded_with_tables_selects_first ... 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::result_scroll_up_saturates_at_zero ... 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::sql_modal_input_sets_debounce_state ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirmation_flow::submit_delete_without_where_enters_confirming_high ... ok
[INFO] [stdout] test app::update::reducer::tests::table_detail_cached::table_detail_cached_returns_cache_effect ... ok
[INFO] [stdout] test app::update::reducer::tests::table_detail_cached::table_detail_cached_with_queue_returns_process_effect ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirmation_flow::submit_insert_enters_confirming_low_risk ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirmation_flow::cancel_confirm_returns_to_normal ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirmation_flow::confirm_execute_in_editing_state_is_noop ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirmation_flow::confirm_execute_transitions_to_running_and_emits_effect ... 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::high_risk_confirm_executes_on_match ... 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::confirming_high::cancel_from_confirming_high_returns_to_normal ... 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_confirm_blocked_on_mismatch ... 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_input_appends_char ... 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::submit_delete_no_where_enters_confirming_high ... 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::confirming_high::submit_unsupported_falls_back_to_confirming_high ... 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::submit_high_risk_drop_enters_confirming_high ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirming_high::submit_medium_risk_stays_confirming ... ok
[INFO] [stdout] test app::update::sql_editor::tests::confirming_high::submit_other_falls_back_to_confirming_high ... 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_insert_transitions_to_editing ... 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::normal_insert_mode::yank_success_sets_flash ... 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::paste::paste_dismisses_completion ... 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::open_sql_modal_starts_in_normal ... ok
[INFO] [stdout] test app::update::sql_editor::tests::paste::paste_advances_cursor ... ok
[INFO] [stdout] test app::update::sql_editor::tests::normal_insert_mode::paste_ignored_in_normal_mode ... 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::paste::paste_in_confirming_high_is_ignored ... 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::paste::paste_inserts_at_cursor ... ok
[INFO] [stdout] test app::update::sql_editor::tests::paste::paste_normalizes_crlf ... ok
[INFO] [stdout] test app::update::sql_editor::tests::paste::paste_preserves_newlines ... ok
[INFO] [stdout] test app::update::sql_editor::tests::paste::paste_with_multibyte ... 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::read_only_guard::read_only_blocks_write_query_in_sql_modal ... 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::both_auto_slots_yank_returns_distinguishable_headers ... 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_empty_is_noop ... ok
[INFO] [stdout] test app::update::sql_editor::tests::yank::compare_tab_yank_includes_verdict_with_reasons ... 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_right_only_is_noop ... ok
[INFO] [stdout] test app::update::sql_editor::tests::yank::plan_tab_yank_copies_plan_text ... 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::yank::sql_tab_yank_copies_content ... ok
[INFO] [stdout] test app::update::sql_editor::tests::yank::sql_tab_yank_empty_is_noop ... ok
[INFO] [stdout] test domain::column::tests::type_display::returns_expected_format::case_1 ... ok
[INFO] [stdout] test domain::column::tests::type_display::returns_expected_format::case_2 ... ok
[INFO] [stdout] test domain::column::tests::type_display::returns_expected_format::case_3 ... ok
[INFO] [stdout] test domain::column::tests::type_display::returns_expected_format::case_4 ... ok
[INFO] [stdout] test domain::command_tag::tests::affected_rows_returns_count_for_dml ... ok
[INFO] [stdout] test domain::command_tag::tests::affected_rows_returns_none_for_ddl_and_tcl ... ok
[INFO] [stdout] test domain::command_tag::tests::is_schema_modifying_false_for_non_ddl ... ok
[INFO] [stdout] test domain::command_tag::tests::display_message_ddl ... 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 domain::command_tag::tests::display_message_singular_row ... ok
[INFO] [stdout] test domain::command_tag::tests::display_message_tcl ... 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::from_string_preserves_value ... ok
[INFO] [stdout] test domain::connection::id::tests::new_generates_unique_ids ... ok
[INFO] [stdout] test domain::connection::name::tests::display::formats_as_inner_string ... ok
[INFO] [stdout] test domain::connection::name::tests::new::exactly_50_chars_returns_ok ... 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::trims_whitespace ... ok
[INFO] [stdout] test domain::connection::name::tests::new::validation::case_1 ... ok
[INFO] [stdout] test domain::connection::name::tests::new::validation::case_2 ... ok
[INFO] [stdout] test domain::connection::name::tests::new::validation::case_6 ... ok
[INFO] [stdout] test domain::connection::name::tests::normalized::returns_lowercase ... ok
[INFO] [stdout] test domain::connection::name::tests::serde::deserializes_valid_string ... ok
[INFO] [stdout] test domain::connection::profile::tests::display_name::returns_connection_name ... ok
[INFO] [stdout] test domain::connection::name::tests::new::validation::case_3 ... ok
[INFO] [stdout] test domain::connection::name::tests::new::validation::case_4 ... ok
[INFO] [stdout] test domain::connection::name::tests::new::validation::case_5 ... ok
[INFO] [stdout] test domain::connection::name::tests::normalized::mixed_case_normalized_to_lowercase ... ok
[INFO] [stdout] test domain::connection::name::tests::serde::deserialize_empty_returns_error ... ok
[INFO] [stdout] test domain::connection::name::tests::serde::serializes_to_string ... 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::connection::ssl_mode::tests::display_matches_parse ... ok
[INFO] [stdout] test domain::connection::ssl_mode::tests::from_str_is_case_insensitive ... ok
[INFO] [stdout] test domain::connection::profile::tests::new::empty_name_returns_error ... 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::no_fk_returns_empty ... ok
[INFO] [stdout] test domain::connection::profile::tests::new::generates_unique_id ... ok
[INFO] [stdout] test domain::connection::ssl_mode::tests::from_str_parses_all_variants ... ok
[INFO] [stdout] test domain::er::tests::fk_neighbors_of_seeds::already_cached_target_excluded ... ok
[INFO] [stdout] test domain::connection::service_entry::tests::to_dsn_formats_correctly ... ok
[INFO] [stdout] test domain::er::tests::fk_neighbors_of_seeds::uncached_fk_target_returned ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::bidirectional_traversal ... ok
[INFO] [stdout] test domain::er::tests::fk_neighbors_of_seeds::non_seed_cached_table_ignored ... ok
[INFO] [stdout] test domain::er::tests::fk_neighbors_of_seeds::seed_table_itself_not_returned ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::cross_schema_fk ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::cyclic_fk_does_not_loop ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::direct_fk_returns_both ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::disconnected_table_excluded ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable_multi::empty_seeds_returns_empty ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable_multi::invalid_seed_ignored ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::depth_2_returns_two_hops ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::nonexistent_seed_returns_empty ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::seed_only_no_fks_returns_seed ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::transitive_fk_returns_chain ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable::depth_1_returns_direct_neighbors_only ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable_multi::multi_seeds_union ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::both_zero_cost ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::boundary_at_exactly_0_9_is_similar ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::boundary_at_exactly_1_1_is_similar ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable_multi::overlap_dedup ... ok
[INFO] [stdout] test domain::er::tests::fk_reachable_multi::single_seed_matches_single_fn ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::one_cost_none ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::reasons_capped_at_max ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::node_type_change_in_reasons ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::both_costs_none ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::row_estimate_change_in_reasons ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::same_node_type_not_in_reasons ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::same_row_estimate_not_in_reasons ... ok
[INFO] [stdout] test domain::explain_plan::tests::compare::similar_within_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::compare::improved_when_cost_drops_below_threshold ... ok
[INFO] [stdout] test domain::explain_plan::tests::parse::unparseable_text ... ok
[INFO] [stdout] test domain::explain_plan::tests::parse::empty_input ... ok
[INFO] [stdout] test domain::explain_plan::tests::parse::whitespace_only_input ... ok
[INFO] [stdout] test domain::explain_plan::tests::parse::arrow_prefixed_node ... ok
[INFO] [stdout] test domain::explain_plan::tests::parse::nested_plan_extracts_top_level_only ... ok
[INFO] [stdout] test domain::explain_plan::tests::parse::explain_analyze_output ... ok
[INFO] [stdout] test domain::explain_plan::tests::parse::single_node_seq_scan ... 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::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_round_trip_with_affected_rows ... ok
[INFO] [stdout] test domain::query_result::tests::builder::with_command_tag_sets_tag ... ok
[INFO] [stdout] test domain::query_result::tests::error::creates_with_empty_rows_and_error_message ... ok
[INFO] [stdout] test domain::query_result::tests::row_count_display::returns_expected::case_1 ... ok
[INFO] [stdout] test domain::table::tests::display_name::omit_public_false_returns_qualified ... ok
[INFO] [stdout] test domain::query_result::tests::row_count_display::returns_expected::case_3 ... ok
[INFO] [stdout] test domain::query_result::tests::row_count_display::returns_expected::case_2 ... ok
[INFO] [stdout] test domain::query_result::tests::success::creates_with_correct_fields ... ok
[INFO] [stdout] test domain::table::tests::display_name::omit_public_true_returns_name_only ... ok
[INFO] [stdout] test domain::query_result::tests::success::row_count_matches_rows_len ... ok
[INFO] [stdout] test domain::table::tests::qualified_name::returns_schema_dot_name ... 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::trigger::tests::trigger_event_display::insert_displays_uppercase ... ok
[INFO] [stdout] test domain::trigger::tests::trigger_event_display::truncate_displays_uppercase ... ok
[INFO] [stdout] test domain::trigger::tests::trigger_timing_display::after_displays_uppercase ... ok
[INFO] [stdout] test domain::trigger::tests::trigger_timing_display::before_displays_uppercase ... ok
[INFO] [stdout] test domain::table::tests::summary::display_name_keeps_non_public_schema ... ok
[INFO] [stdout] test domain::trigger::tests::trigger_event_display::delete_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::instead_of_displays_with_space ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::delete::nonexistent_id_returns_not_found ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::load_all::returns_empty_vec_when_no_file_exists ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::find_by_id::returns_none_when_not_found ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::atomic_write::leaves_no_temp_file ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::load_all::returns_error_for_invalid_toml ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::load_all::returns_version_mismatch_for_v1_format ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::roundtrip::save_and_load_preserves_data ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::save::duplicate_name_returns_error ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::save::creates_config_directory_if_missing ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::find_by_id::returns_some_when_found ... 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::returns_correct_path ... 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::comments_and_blank_lines_ignored ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::save::same_id_updates_without_duplicate_error ... 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::version_mismatch::save_returns_error_instead_of_losing_data ... 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::empty_list_writes_zero_count ... ok
[INFO] [stdout] test infra::adapters::connection_store::tests::atomic_write::existing_file_preserved_on_save_roundtrip ... 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::find_service_file_uses_pgservicefile_env ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::invalid_port_stored_as_none ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::invalid_lines_ignored ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::section_with_no_keys ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::keys_before_any_section_ignored ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::duplicate_sections_last_wins ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::empty_content_returns_no_entries ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::hostaddr_maps_to_host ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::single_section_parsed ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::multiple_sections_parsed ... 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::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::postgres::dsn::tests::extract_database_name::key_value_only ... 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_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::dsn::tests::extract_database_name::uri_path_returns_dbname::case_1 ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::unknown_keys_ignored ... 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::roundtrip_build_then_extract_returns_original_dbname ... ok
[INFO] [stdout] test infra::adapters::pg_service::tests::whitespace_around_keys_and_values_trimmed ... 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::dsn::tests::extract_database_name::uri_path_returns_dbname::case_3 ... 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::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::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::csv_parsing::csv_with_quoted_fields_parses_correctly ... 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::execute_query_raw_command_tag::delete_stdout_yields_delete_tag ... 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::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::execute_query_raw_command_tag::select_tag_captured_for_ctas ... 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::execute_query_raw_command_tag::insert_stdout_yields_insert_tag ... 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::data_row_not_mistaken_when_single_select ... 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::csv_stdout_is_not_mistaken_for_command_tag ... 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::header_only_returns_unchanged ... 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::extract_last_csv_block::non_select_statements_excluded_from_hint ... 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::extract_last_csv_block::single_result_set_returns_unchanged ... 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::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::two_selects_same_header_returns_last ... 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::executor::tests::write_command_tag::delete_large_number_returns_correct_value ... 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::two_selects_different_column_count_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::execute_query_raw_command_tag::create_table_stdout_yields_create_tag_zero_rows ... 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::extract_last_csv_block::three_selects_returns_last ... 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::extract_from_empty_returns_none ... 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::executor::tests::csv_parsing::valid_csv_parses_headers_and_rows ... 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::empty_or_whitespace_returns_none::case_1 ... 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::empty_or_whitespace_returns_none::case_2 ... 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::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_known_tags::case_01 ... 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_03 ... 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_05 ... 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::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::parse_known_tags::case_08 ... 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_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_16 ... 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::command_tag_parsing::unknown_command_returns_other ... 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_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_13 ... 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_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::command_tag_parsing::parse_known_tags::case_15 ... 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::command_tag_parsing::parse_known_tags::case_12 ... 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_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_create_as_kind::create_as_returns_correct_tag::case_6_materialized_view ... 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_create_as_kind::non_ctas_returns_none::case_1_create_view ... 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::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::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_3_tagged_dollar_quote ... 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::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::committed_txn ... 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_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::full_rollback_with_savepoint ... 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::no_txn ... 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::discard_rolled_back::multiple_txns ... 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::rollback_then_dml ... 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::rollback_then_release_same_sp ... 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::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::tcl_only ... 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::parse_aggregate_command_tag::committed_txn_with_update ... 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::count_mismatch_fallback ... 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::parse_aggregate_command_tag::csv_returns_none ... 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::create_materialized_view ... 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::ctas_committed ... 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_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::parse_aggregate_command_tag::ctas_full_rollback ... 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::ctas_outside_savepoint_survives ... 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::partial_rollback_keeps_outer_dml ... 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_all_tags::csv_returns_none ... 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::command_tag::tests::parse_all_tags::multi_line_tags ... 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_aggregate_command_tag::single_dml ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::command_tag::tests::parse_all_tags::single_dml ... 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_aggregate_command_tag::with_select_into ... 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::parse_all_tags::skips_empty_lines ... 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::schema_modifying_takes_priority ... 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::blank_input_returns_empty::case_2_whitespace_only ... 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::quoted_semicolon_returns_single_statement::case_4_tagged_dollar_quote ... 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::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_6_block_comment ... 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::command_tag::tests::resolved_tags_aggregate::last_needs_refresh ... 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_3_dollar_quote ... 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::lexer::tests::split_sql_statements::valid_input_returns_split_statements::case_3_trailing_semicolon ... 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::metadata::tests::foreign_key_parsing::empty_array_returns_empty_vec ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::empty_or_null_input_returns_empty_vec::case_3 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::fk_action_mapping_returns_expected::case_1 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::fk_action_mapping_returns_expected::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::fk_action_mapping_returns_expected::case_4 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::fk_action_mapping_returns_expected::case_3 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::fk_action_mapping_returns_expected::case_5 ... 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::fk_action_mapping_returns_expected::case_6 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::empty_or_null_input_returns_empty_vec::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::foreign_key_parsing::empty_or_null_input_returns_empty_vec::case_1 ... 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::json_parse_errors::parse_columns_with_missing_field_returns_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::json_parse_errors::parse_empty_string_returns_empty_vec ... 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::foreign_key_parsing::missing_required_field_returns_error ... 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::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_null_string_returns_empty_vec ... 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::json_parse_errors::parse_tables_with_wrong_structure_returns_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::cmd_mapping_returns_expected::case_1 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::cmd_mapping_returns_expected::case_3 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::cmd_mapping_returns_expected::case_4 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::disabled_rls_with_no_policies_returns_expected ... 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::cmd_mapping_returns_expected::case_5 ... 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::enabled_and_forced_rls_returns_expected ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::cmd_mapping_returns_expected::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::rls_parsing::cmd_mapping_returns_expected::case_6 ... 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::null_roles_becomes_empty_vec ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::schema_parsing::empty_or_null_input_returns_empty_vec::case_1 ... 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::schema_parsing::empty_or_null_input_returns_empty_vec::case_3 ... 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::schema_parsing::empty_or_null_input_returns_empty_vec::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::schema_parsing::empty_array_returns_empty_vec ... 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::malformed_json_returns_invalid_json_error ... 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::wrong_structure_returns_error ... 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::table_columns_and_fks_parsing::empty_input_returns_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_columns_and_fks_parsing::null_input_returns_error ... 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::missing_name_field_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_sub_values_parse_to_empty ... 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_columns_and_fks_parsing::valid_light_json_parses_columns_and_fks ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_detail_combined_parsing::empty_input_returns_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::table_detail_combined_parsing::null_input_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::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::null_fields_returns_none ... 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::table_detail_combined_parsing::valid_combined_json_parses_all_categories ... 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_info_parsing::zero_row_count_returns_zero ... 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_signature_parsing::empty_or_null_input_returns_empty_vec::case_3 ... 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::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_signature_parsing::missing_field_returns_error ... 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::trigger_parsing::empty_array_returns_empty_vec ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::empty_or_null_input_returns_empty_vec::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::psql::parser::metadata::tests::table_signature_parsing::valid_single_signature_parses_all_fields ... 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::trigger_parsing::empty_or_null_input_returns_empty_vec::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::empty_or_null_input_returns_empty_vec::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::trigger_parsing::malformed_json_returns_invalid_json_error ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::security_definer_false_returns_expected ... 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::sql::ddl::tests::ddl_generation::column_comment_appended_after_create ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::timing_mapping_returns_expected::case_3 ... 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::ddl::tests::ddl_generation::default_ddl_line_count_matches_generated_ddl ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::timing_mapping_returns_expected::case_1 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::timing_mapping_returns_expected::case_2 ... ok
[INFO] [stdout] test infra::adapters::postgres::psql::parser::metadata::tests::trigger_parsing::timing_mapping_returns_expected::case_4 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::ddl::tests::ddl_generation::table_comment_appended_after_create ... 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::composite_pk_returns_row_constructor_in_clause ... 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::ddl::tests::ddl_generation::no_comment_on_when_absent ... 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::ddl::tests::ddl_generation::single_quote_in_comment_is_escaped ... 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::dialect::tests::sql_dialect_bulk_delete::column_name_with_double_quote_is_escaped ... 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_bulk_delete::empty_string_pk_value_returns_empty_literal ... 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::dialect::tests::sql_dialect_update_edge_cases::empty_string_value_generates_empty_literal ... 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::single_pk_returns_escaped_sql ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_literal_or_null_tests::value_expr_returns_expected::case_3 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_dialect_update_edge_cases::column_name_with_double_quote_is_escaped ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_literal_or_null_tests::value_expr_returns_expected::case_4 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_literal_or_null_tests::value_expr_returns_expected::case_1 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_literal_or_null_tests::value_expr_returns_expected::case_2 ... 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::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_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::dialect::tests::sql_literal_or_null_tests::value_expr_returns_expected::case_5 ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::dialect::tests::sql_literal_or_null_tests::value_expr_returns_expected::case_6 ... 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_07 ... 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_03 ... 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::preview_query::primary_key_query_returns_json_aggregate_sql ... 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::order_by_column_with_double_quote_is_escaped ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::table_columns_and_fks_query::uses_quoted_schema_and_table ... 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::table_columns_and_fks_query::wraps_columns_and_fks_only_in_json_build_object ... 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_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::table_detail_query::uses_quoted_schema_and_table ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::table_signatures_query::returns_json_aggregate ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::table_signatures_query::uses_same_filter_as_tables_query ... 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::contains_md5_hash ... ok
[INFO] [stdout] test infra::adapters::postgres::sql::query::tests::table_signatures_query::includes_fk_separator ... ok
[INFO] [stdout] test infra::adapters::query_history::tests::append_creates_file_and_writes_entry ... ok
[INFO] [stdout] test infra::adapters::query_history::tests::load_entries_with_affected_rows_and_malformed_lines ... ok
[INFO] [stdout] test infra::adapters::query_history::tests::malformed_lines_are_skipped ... 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::config::project_root::tests::find_dir_upward_tests::finds_root_from_nested_subdirectory ... 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::below_limit_entries_are_preserved_without_trim ... ok
[INFO] [stdout] test infra::adapters::query_history::tests::load_returns_entries_in_order ... 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::get_project_name_tests::returns_unknown_for_root ... ok
[INFO] [stdout] test infra::export::dot::tests::export::calls_graphviz_and_viewer ... ok
[INFO] [stdout] test infra::export::dot::tests::export::graphviz_failure_preserves_old_files ... ok
[INFO] [stdout] test infra::export::dot::tests::export::graphviz_command_failed_includes_exit_code ... ok
[INFO] [stdout] test infra::export::dot::tests::export::graphviz_not_installed_returns_error ... ok
[INFO] [stdout] test infra::export::dot::tests::export::non_er_files_survive_cleanup ... ok
[INFO] [stdout] test infra::export::dot::tests::export::old_er_files_are_removed_on_export ... 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::generate_full_dot::foreign_keys_appear_as_edges ... 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_empty ... ok
[INFO] [stdout] test infra::utils::tests::quote_ident_simple ... ok
[INFO] [stdout] test infra::utils::tests::quote_ident_with_double_quote ... ok
[INFO] [stdout] test infra::utils::tests::quote_literal_empty ... ok
[INFO] [stdout] test infra::utils::tests::quote_literal_multiple_quotes ... 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::connection_error_action_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::connection_error_action_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::connection_error_action_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::connection_error_action_keys::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::connection_error_action_keys::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::connection_error_scroll_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::connection_error_scroll_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::connection_error_scroll_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::connection_error_scroll_keys::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::connections::tests::connection_error::connection_error_unbound_keys ... 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_selector_keys::selector_action_keys::case_1 ... 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_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_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_3 ... 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::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::backtab_moves_to_prev_field ... 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::ctrl_c_is_ignored ... 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::dropdown_navigation::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::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::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::delete_returns_cell_edit_delete ... 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::cell_edit_mode::right_returns_move_cursor_right ... ok
[INFO] [stdout] test ui::event::handlers::editors::tests::command_line::command_line_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::editors::tests::command_line::command_line_keys::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::editors::tests::command_line::command_line_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::editors::tests::command_line::command_line_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::editors::tests::command_line::command_line_keys::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::backtab_does_nothing_when_explorer_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::bracket_left_returns_prev_page_in_focus_mode ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::bracket_left_returns_prev_page_when_result_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::bracket_right_returns_next_page_in_focus_mode ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::bracket_right_returns_next_page_when_result_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::brackets_return_none_when_explorer_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::browse_mode_pane_focus::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::browse_mode_pane_focus::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::browse_mode_pane_focus::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::c_key_noop_when_inspector_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::c_key_noop_when_result_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::c_key_opens_connection_selector ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::colon_enters_command_line ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::ctrl_b_scrolls_result_full_page_up ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::ctrl_d_scrolls_explorer_half_page_down ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::ctrl_d_scrolls_inspector_half_page_down ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::ctrl_d_scrolls_result_half_page_down ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::ctrl_f_scrolls_result_full_page_down ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::ctrl_k_opens_command_palette ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::ctrl_p_opens_table_picker ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::ctrl_o_opens_query_history_picker ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::ctrl_u_scrolls_result_half_page_up ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::ctrl_r_toggles_read_only ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::d_in_scroll_mode_is_noop ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::d_sets_delete_op_pending_in_row_active ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::dd_stages_row_for_delete_in_row_active ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::enter_confirms_selection_when_explorer_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::e_key_opens_er_table_picker ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::enter_does_nothing_when_inspector_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::esc_in_cell_active_with_draft_returns_discard ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::enter_enters_row_active_when_result_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::esc_in_cell_active_without_draft_returns_exit_to_row_active ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::f_toggles_focus ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::focus_mode_g_scrolls_top::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::esc_returns_escape ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::focus_mode_g_scrolls_top::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::focus_mode_h_scrolls_left::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::focus_mode_h_scrolls_left::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::focus_mode_k_scrolls_up::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::focus_mode_j_scrolls_down::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::focus_mode_j_scrolls_down::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::focus_mode_k_scrolls_up::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::focus_mode_shift_g_scrolls_bottom::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::focus_mode_l_scrolls_right::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::focus_mode_l_scrolls_right::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::g_scrolls_inspector_top::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::focus_mode_shift_g_scrolls_bottom::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::h_key_returns_result_scroll_viewport_top_when_result_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::g_scrolls_inspector_top::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::h_key_returns_select_viewport_top_when_explorer_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::hml_noop_when_inspector_focused::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::hml_noop_when_inspector_focused::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::h_key_scrolls_left_when_explorer_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::hml_noop_when_inspector_focused::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::key_sequence::alt_modifier_cancels_key_sequence ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::i_key_is_noop_without_cell_active ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::i_key_enters_cell_edit_when_cell_active ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::key_sequence::ctrl_modifier_cancels_key_sequence ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::key_sequence::key_sequence_resolved_before_global_actions ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::key_sequence::z_key_returns_begin_key_sequence ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::key_sequence::z_then_b_returns_scroll_cursor_bottom_for_explorer ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::key_sequence::z_key_returns_begin_key_sequence_in_focus_mode ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::key_sequence::z_then_b_returns_result_scroll_cursor_bottom_for_result ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::key_sequence::z_then_unknown_returns_cancel_key_sequence ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::key_sequence::z_then_t_returns_result_scroll_cursor_top_for_result ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::key_sequence::z_then_t_returns_scroll_cursor_top_for_explorer ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::key_sequence::z_then_z_returns_cancel_key_sequence_for_inspector ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::key_sequence::z_then_z_returns_result_scroll_cursor_center_for_result ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::key_sequence::z_then_z_returns_result_scroll_cursor_center_in_focus_mode ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::key_sequence::zt_works_in_history_mode ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::key_sequence::z_then_z_returns_scroll_cursor_center_for_explorer ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::key_sequence::zb_works_in_history_mode ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::l_key_returns_result_scroll_viewport_bottom_when_result_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::l_key_returns_select_viewport_bottom_when_explorer_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::l_key_scrolls_right_when_explorer_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::m_key_returns_result_scroll_middle_in_focus_mode ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::m_key_returns_result_scroll_middle_when_result_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::m_key_returns_select_middle_when_explorer_focused ... 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::navigation_matrix::ends_g_shift_g::case_02 ... 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::navigation_matrix::ends_g_shift_g::case_04 ... 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_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_08 ... 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::ends_g_shift_g::case_10 ... 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_13 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::ends_g_shift_g::case_14 ... 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_h_is_noop ... 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_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_whitelist_asymmetry::end_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::history_whitelist_asymmetry::home_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::up_allowed_in_history ... 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_01 ... 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_07 ... 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_08 ... 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_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_12 ... 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_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::scroll_to_cursor_zztb::case_16 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_19 ... 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_20 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::scroll_to_cursor_zztb::case_21 ... 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_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_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_03 ... 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_08 ... 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::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_13 ... 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_02 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::vertical_jk::case_14 ... 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_05 ... 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_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_07 ... 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::viewport_hml::case_12 ... 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_13 ... 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_14 ... 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_17 ... 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_15 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_20 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::viewport_hml::case_19 ... 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::viewport_hml::case_21 ... 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::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_6 ... 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::navigation_matrix::z_prefix_returns_begin_key_sequence::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_matrix::z_prefix_returns_begin_key_sequence::case_7 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_selects_first::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_selects_first::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_selects_last::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_selects_last::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_selects_next::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_selects_previous::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_selects_next::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::navigation_selects_previous::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pagedown_scrolls_explorer_full_page_down ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pagedown_scrolls_inspector_full_page_down ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pageup_scrolls_result_full_page_up ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::pagedown_scrolls_result_full_page_down ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::q_returns_quit ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::r_reloads_metadata ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::question_mark_opens_help ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_focused_h_scrolls_left ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_focused_navigation_scrolls_result ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_focused_l_scrolls_right ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_history::blocked_keys_are_noop_in_history_mode::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_history::blocked_keys_are_noop_in_history_mode::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_history::blocked_keys_are_noop_in_history_mode::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_history::blocked_keys_are_noop_in_history_mode::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_history::blocked_keys_are_noop_in_history_mode::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_history::blocked_keys_are_noop_in_history_mode::case_6 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_history::bracket_left_navigates_history_older ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_history::blocked_keys_are_noop_in_history_mode::case_7 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_history::bracket_nav_falls_through_when_not_in_history ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_history::ctrl_h_opens_result_history ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_history::ctrl_h_exits_history_when_in_history_mode ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_history::ctrl_o_blocked_in_history_mode ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_history::bracket_right_navigates_history_newer ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_history::ctrl_p_and_ctrl_k_blocked_in_history_mode ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_history::ctrl_scroll_allowed_in_history_mode ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_history::scroll_keys_allowed_in_history_mode ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::result_history::help_allowed_in_history_mode ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::shift_tab_switches_inspector_tab_prev_when_inspector_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::shift_g_scrolls_inspector_bottom::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::shift_g_scrolls_inspector_bottom::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::shift_uppercase_regression::shift_g_key_event_produces_select_last_via_translator ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::tab_does_nothing_when_result_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::tab_does_nothing_when_explorer_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::tab_switches_inspector_tab_when_inspector_focused ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::y_in_scroll_mode_ignored ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::unknown_key_returns_none ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::y_in_cell_active_still_cell_yank ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::y_sets_yank_op_pending_in_row_active ... ok
[INFO] [stdout] test ui::event::handlers::normal::tests::yy_triggers_row_yank_in_row_active ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::confirm_dialog_keys::dialog_keys::case_2 ... 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::overlays::tests::confirm_dialog_keys::non_bound_keys_return_none::case_3 ... 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_5 ... 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::esc_closes_help ... ok
[INFO] [stdout] test ui::event::handlers::overlays::tests::help::question_mark_closes_help ... 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::command_palette_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::command_palette::command_palette_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::command_palette::command_palette_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::command_palette::command_palette_keys::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::command_palette::command_palette_keys::case_5 ... 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::er_table_picker::char_input_returns_er_filter_input ... 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::enter_returns_er_confirm_selection ... 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::up_returns_select_previous ... 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::query_history_picker::picker_keys::case_1 ... 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::table_picker_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::table_picker::table_picker_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::table_picker::table_picker_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::table_picker::table_picker_keys::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::table_picker::table_picker_keys::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::table_picker::table_picker_keys::case_6 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::table_picker::table_picker_keys::case_8 ... ok
[INFO] [stdout] test ui::event::handlers::pickers::tests::table_picker::table_picker_keys::case_7 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::alt_enter_submits_query ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::char_input_inserts_character::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::char_input_inserts_character::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::char_input_inserts_character::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::char_input_inserts_character::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::compare_keybinding_combo_returns_declared_action ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::compare_tab_alt_e_requests_analyze ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::compare_tab_backtab_switches ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::compare_tab_ctrl_e_requests_explain ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::compare_tab_e_edits_query ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::compare_tab_esc_closes_modal ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::compare_tab_read_only_keys_work_in_success_error::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::compare_tab_read_only_keys_work_in_success_error::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::compare_tab_scroll_keys_scroll_comparison::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::compare_tab_scroll_keys_scroll_comparison::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::compare_tab_tab_switches ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::compare_tab_scroll_keys_scroll_comparison::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::compare_tab_unbound_keys_returns_none::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::compare_tab_scroll_keys_scroll_comparison::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::compare_tab_unbound_keys_returns_none::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::compare_tab_y_returns_sql_modal_yank ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::completion_hidden_key_behavior::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::completion_hidden_key_behavior::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::completion_hidden_key_behavior::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::completion_hidden_key_behavior::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::completion_hidden_key_behavior::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::completion_independent_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::completion_independent_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::completion_independent_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::completion_independent_keys::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::completion_independent_keys::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::completion_independent_keys::case_6 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::completion_independent_keys::case_7 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::completion_visible_key_behavior::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::completion_visible_key_behavior::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::completion_visible_key_behavior::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::completion_visible_key_behavior::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::completion_visible_key_behavior::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::confirming_analyze_enter_confirms ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::confirming_analyze_esc_cancels ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::confirming_state_ignores_editing_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::confirming_analyze_other_keys_ignored ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::confirming_state_ignores_alt_enter ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::confirming_state_ignores_editing_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::confirming_state_ignores_editing_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::confirming_state_routes_enter_and_esc::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::confirming_state_routes_enter_and_esc::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::ctrl_o_opens_query_history_picker ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::ctrl_space_triggers_completion ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::delete_key_returns_delete_action ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing_alt_e_requests_analyze ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::editing_mode_ctrl_e_requests_explain ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::enter_without_completion_returns_newline ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal_mode_alt_e_requests_explain_analyze ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal_mode_alt_enter_submits ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal_mode_arrow_keys_move_cursor::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal_mode_arrow_keys_move_cursor::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal_mode_arrow_keys_move_cursor::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal_mode_arrow_keys_move_cursor::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal_mode_backtab_switches_to_prev_tab ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal_mode_ctrl_e_requests_explain ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal_mode_ctrl_l_clears ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal_mode_ctrl_o_opens_history ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal_mode_enter_enters_insert ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal_mode_esc_closes_modal ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal_mode_tab_switches_to_next_tab ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal_mode_unbound_keys_returns_none ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::normal_mode_y_yanks_query ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::plan_keybinding_combo_returns_declared_action ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::plan_tab_alt_e_requests_analyze ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::plan_tab_ctrl_e_requests_explain ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::plan_tab_esc_closes_modal ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::plan_tab_read_only_keys_work_in_success_error::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::plan_tab_read_only_keys_work_in_success_error::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::plan_tab_scroll_keys_scroll_plan::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::plan_tab_scroll_keys_scroll_plan::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::plan_tab_scroll_keys_scroll_plan::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::plan_tab_scroll_keys_scroll_plan::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::plan_tab_unbound_keys_returns_none::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::plan_tab_unbound_keys_returns_none::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::plan_tab_y_returns_sql_modal_yank ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::running_state_compare_tab_suppresses_all_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::running_state_compare_tab_suppresses_all_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::running_state_compare_tab_suppresses_all_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::running_state_compare_tab_suppresses_all_keys::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::running_state_compare_tab_suppresses_all_keys::case_5 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::running_state_compare_tab_suppresses_all_keys::case_6 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::running_state_suppresses_all_keys::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::running_state_suppresses_all_keys::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::running_state_suppresses_all_keys::case_3 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::running_state_suppresses_all_keys::case_6 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::success_error_share_normal_keybindings::case_1 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::running_state_suppresses_all_keys::case_4 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::success_error_share_normal_keybindings::case_2 ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::tab_without_completion_returns_tab ... ok
[INFO] [stdout] test ui::event::handlers::tests::mode_dispatch::normal_mode_routes_to_normal_handler ... ok
[INFO] [stdout] test ui::event::handlers::sql_modal::tests::running_state_suppresses_all_keys::case_5 ... 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::paste_event_in_er_table_picker_returns_paste_action ... ok
[INFO] [stdout] test ui::event::handlers::tests::paste_event::paste_event_in_help_mode_returns_none ... ok
[INFO] [stdout] test ui::event::handlers::tests::paste_event::paste_event_in_query_history_picker_returns_paste_action ... ok
[INFO] [stdout] test ui::event::handlers::tests::paste_event::paste_event_in_normal_mode_returns_none ... ok
[INFO] [stdout] test ui::event::handlers::tests::paste_event::paste_event_in_sql_modal_returns_paste_action ... ok
[INFO] [stdout] test ui::event::handlers::tests::paste_event::paste_event_in_table_picker_returns_paste_action ... ok
[INFO] [stdout] test ui::event::key_translator::tests::alt_enter_translates_to_alt_modifier ... 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::function_key_translates ... ok
[INFO] [stdout] test ui::event::key_translator::tests::lowercase_char_with_shift_preserves_shift ... ok
[INFO] [stdout] test ui::event::key_translator::tests::null_key_translates_to_null ... ok
[INFO] [stdout] test ui::event::key_translator::tests::unknown_key_translates_to_other ... 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::uppercase_char_with_shift_normalizes_to_plain ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::char_count::input_returns_character_count::case_1 ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::char_count::input_returns_character_count::case_2 ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::char_count::input_returns_character_count::case_3 ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::char_count::input_returns_character_count::case_4 ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::truncate_with_offset::ascii_input_returns_expected_substring::case_1 ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::truncate_with_offset::ascii_input_returns_expected_substring::case_2 ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::truncate_with_offset::ascii_input_returns_expected_substring::case_3 ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::truncate_with_offset::ascii_input_returns_expected_substring::case_4 ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::truncate_with_offset::unicode_input_returns_expected_substring::case_2 ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::truncate_with_offset::unicode_input_returns_expected_substring::case_1 ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::truncate_with_offset::unicode_input_returns_expected_substring::case_3 ... ok
[INFO] [stdout] test ui::features::browse::explorer::tests::truncate_with_offset::unicode_input_returns_expected_substring::case_4 ... 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::result::tests::calculate_ideal_widths_tests::handles_multibyte_characters_correctly ... 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::only_considers_first_line_for_multiline_cells ... 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::single_column_uses_header_width_plus_padding ... 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::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::empty_string_returns_empty ... 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_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_1 ... 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::newline_shows_first_line_only ... 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_1 ... 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_2 ... 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::small_max_chars_handles_edge_cases::case_5 ... ok
[INFO] [stdout] test ui::features::browse::result::tests::zero_max_chars_returns_ellipsis_only ... 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::empty_input_returns_non_empty_spans ... 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::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_1 ... 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_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::zero_max_returns_ellipsis ... ok
[INFO] [stdout] test ui::features::sql_modal::status::tests::truncate_with_ellipsis_tests::truncates_long_names::case_6 ... 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_preserves_offset_within_range ... ok
[INFO] [stdout] test ui::primitives::atoms::scroll_indicator::tests::clamp_returns_zero_when_exact_fit ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::all_positions_return_consistent_cursor_style ... ok
[INFO] [stdout] test ui::primitives::atoms::scroll_indicator::tests::clamp_returns_zero_when_content_fits ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::cursor_at_beginning ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::cursor_at_middle ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::cursor_at_end ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::cursor_left_of_viewport_returns_text_only ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::empty_string ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::viewport_offset_positive ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::multibyte_characters ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::viewport_offset_beyond_text_length ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::visible_width_one ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::visible_width_usize_max_sentinel ... ok
[INFO] [stdout] test ui::primitives::atoms::text_cursor::tests::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::returns_expected_count::case_1 ... ok
[INFO] [stdout] test ui::primitives::utils::text_utils::tests::wrapped_line_count_tests::returns_expected_count::case_2 ... ok
[INFO] [stdout] test ui::primitives::utils::text_utils::tests::wrapped_line_count_tests::returns_expected_count::case_3 ... ok
[INFO] [stdout] test ui::primitives::utils::text_utils::tests::wrapped_line_count_tests::returns_expected_count::case_4 ... ok
[INFO] [stdout] test ui::primitives::utils::text_utils::tests::wrapped_line_count_tests::returns_expected_count::case_5 ... ok
[INFO] [stdout] test ui::primitives::utils::text_utils::tests::wrapped_line_count_tests::returns_expected_count::case_7 ... ok
[INFO] [stdout] test ui::primitives::utils::text_utils::tests::wrapped_line_count_tests::returns_expected_count::case_6 ... ok
[INFO] [stdout] test ui::primitives::utils::text_utils::tests::wrapped_line_count_tests::returns_expected_count::case_8 ... 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::trim_does_not_trigger_at_exact_limit ... ok
[INFO] [stdout] test infra::adapters::query_history::tests::append_trims_to_1000_when_exceeded ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2575 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.57s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/sabiql-c666c7b8d1c2ce48)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test tests::disabled_message_contains_version_and_upgrade_guidance ... ok
[INFO] [stdout] test tests::update_subcommand_available_but_self_update_disabled ... ok
[INFO] [stdout] test tests::no_subcommand_returns_none ... 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-4c43b4525e48b0ba)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test error_paths::bad_dsn_returns_connection_or_query_error ... ignored
[INFO] [stdout] test error_paths::timeout_with_pg_sleep_returns_timeout_error ... ignored
[INFO] [stdout] test metadata_fetch::fetch_metadata_returns_schemas ... ignored
[INFO] [stdout] test metadata_fetch::fetch_table_detail_returns_columns ... ignored
[INFO] [stdout] test query_execution::execute_adhoc_select_returns_query_result ... ignored
[INFO] [stdout] test query_execution::execute_preview_returns_columns ... ignored
[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" "7abb71bc04e43d301468e028bdbcda1ec40123276f7c1ce55b305911883946f9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7abb71bc04e43d301468e028bdbcda1ec40123276f7c1ce55b305911883946f9", kill_on_drop: false }`
[INFO] [stdout] 7abb71bc04e43d301468e028bdbcda1ec40123276f7c1ce55b305911883946f9
