[INFO] cloning repository https://github.com/jiaowenjun/weimo
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jiaowenjun/weimo" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjiaowenjun%2Fweimo", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjiaowenjun%2Fweimo'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 3d7cb6ef1eddad70f71e519d9c5e7e0baf857c64
[INFO] testing jiaowenjun/weimo against 1.98.0-beta.1 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjiaowenjun%2Fweimo" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/jiaowenjun/weimo
[INFO] finished tweaking git repo https://github.com/jiaowenjun/weimo
[INFO] tweaked toml for git repo https://github.com/jiaowenjun/weimo written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/jiaowenjun/weimo on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/jiaowenjun/weimo already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 1df40dfced32982001af21596c3b7786aff851857af8bd547186ea0108eb02fd
[INFO] running `Command { std: "docker" "start" "1df40dfced32982001af21596c3b7786aff851857af8bd547186ea0108eb02fd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1df40dfced32982001af21596c3b7786aff851857af8bd547186ea0108eb02fd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1df40dfced32982001af21596c3b7786aff851857af8bd547186ea0108eb02fd" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1df40dfced32982001af21596c3b7786aff851857af8bd547186ea0108eb02fd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1df40dfced32982001af21596c3b7786aff851857af8bd547186ea0108eb02fd" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling num-conv v0.2.1
[INFO] [stderr]    Compiling num_threads v0.1.7
[INFO] [stderr]    Compiling cc v1.2.57
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling unicode-segmentation v1.13.1
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling aws-lc-rs v1.16.2
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling zerocopy v0.8.47
[INFO] [stderr]    Compiling ff v0.13.1
[INFO] [stderr]    Compiling compact_str v0.9.0
[INFO] [stderr]    Compiling group v0.13.0
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling cookie v0.18.1
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling time-macros v0.2.27
[INFO] [stderr]    Compiling der v0.7.10
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling line-clipping v0.3.5
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling iri-string v0.7.11
[INFO] [stderr]    Compiling psl-types v2.0.11
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling lru v0.16.3
[INFO] [stderr]    Compiling spki v0.7.3
[INFO] [stderr]    Compiling cmake v0.1.57
[INFO] [stderr]    Compiling pkcs8 v0.10.2
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling sec1 v0.7.3
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling crypto-bigint v0.5.5
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling signature v2.2.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling inout v0.1.4
[INFO] [stderr]    Compiling ed25519 v2.2.3
[INFO] [stderr]    Compiling hkdf v0.12.4
[INFO] [stderr]    Compiling rfc6979 v0.4.0
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling cipher v0.4.4
[INFO] [stderr]    Compiling pkcs1 v0.7.5
[INFO] [stderr]    Compiling aws-lc-sys v0.39.0
[INFO] [stderr]    Compiling onig_sys v69.9.1
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling rustls-native-certs v0.8.3
[INFO] [stderr]    Compiling headers-core v0.3.0
[INFO] [stderr]    Compiling quick-xml v0.38.4
[INFO] [stderr]    Compiling pinyin v0.11.0
[INFO] [stderr]    Compiling pulldown-cmark v0.13.3
[INFO] [stderr]    Compiling matchit v0.8.4
[INFO] [stderr]    Compiling winnow v1.0.0
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling toml_parser v1.1.0+spec-1.1.0
[INFO] [stderr]    Compiling serde_spanned v1.1.0
[INFO] [stderr]    Compiling toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]    Compiling blowfish v0.9.1
[INFO] [stderr]    Compiling yaml-rust v0.4.5
[INFO] [stderr]    Compiling headers v0.4.1
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling elliptic-curve v0.13.8
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling primeorder v0.13.6
[INFO] [stderr]    Compiling ecdsa v0.16.9
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling getopts v0.2.24
[INFO] [stderr]    Compiling pem v3.0.6
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling nom v8.0.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling pulldown-cmark-escape v0.11.0
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling toml_writer v1.1.0+spec-1.1.0
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling simdutf8 v0.1.5
[INFO] [stderr]    Compiling p384 v0.13.1
[INFO] [stderr]    Compiling p256 v0.13.2
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling uuid v1.22.0
[INFO] [stderr]    Compiling shellexpand v3.1.2
[INFO] [stderr]    Compiling bcrypt v0.18.0
[INFO] [stderr]    Compiling num-bigint-dig v0.8.6
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling kasuari v0.4.12
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling simple_asn1 v0.6.4
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling rsa v0.9.10
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling onig v6.5.1
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling ed25519-dalek v2.2.0
[INFO] [stderr]    Compiling toml v0.9.12+spec-1.1.0
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling ratatui-core v0.1.0
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling plist v1.8.0
[INFO] [stderr]    Compiling bincode v1.3.3
[INFO] [stderr]    Compiling jsonwebtoken v10.3.0
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling publicsuffix v2.3.0
[INFO] [stderr]    Compiling tower-cookies v0.11.0
[INFO] [stderr]    Compiling ansi-to-tui v8.0.1
[INFO] [stderr]    Compiling syntect v5.3.0
[INFO] [stderr]    Compiling cookie_store v0.22.1
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling ratatui-macros v0.7.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling rustls-webpki v0.103.10
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling rustls-platform-verifier v0.6.2
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling reqwest v0.13.2
[INFO] [stderr]    Compiling axum-extra v0.12.5
[INFO] [stderr]    Compiling weimo-server v0.1.8 (/opt/rustwide/workdir/weimo-server)
[INFO] [stderr]    Compiling weimo-cli v0.1.8 (/opt/rustwide/workdir/weimo-cli)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 51s
[INFO] running `Command { std: "docker" "inspect" "1df40dfced32982001af21596c3b7786aff851857af8bd547186ea0108eb02fd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1df40dfced32982001af21596c3b7786aff851857af8bd547186ea0108eb02fd" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling sdd v3.0.10
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling serial_test_derive v3.4.0
[INFO] [stderr]    Compiling scc v2.4.0
[INFO] [stderr]    Compiling serial_test v3.4.0
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling weimo-server v0.1.8 (/opt/rustwide/workdir/weimo-server)
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling weimo-cli v0.1.8 (/opt/rustwide/workdir/weimo-cli)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 28.31s
[INFO] running `Command { std: "docker" "inspect" "1df40dfced32982001af21596c3b7786aff851857af8bd547186ea0108eb02fd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1df40dfced32982001af21596c3b7786aff851857af8bd547186ea0108eb02fd" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.61s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/weimo_cli-6dc4aa5edd504fea)
[INFO] [stdout] 
[INFO] [stdout] running 415 tests
[INFO] [stdout] test api::auth::tests::parse_refresh_token_cookie_accepts_simple_cookie ... ok
[INFO] [stdout] test api::auth::tests::parse_refresh_token_cookie_accepts_cookie_with_attributes ... ok
[INFO] [stdout] test api::auth::tests::extract_refresh_token_from_headers_picks_refresh_token ... ok
[INFO] [stdout] test api::auth::tests::parse_refresh_token_cookie_rejects_empty_token ... ok
[INFO] [stdout] test api::auth::tests::parse_refresh_token_cookie_rejects_other_cookies ... ok
[INFO] [stdout] test api::mapper::tests::format_utc_array_applies_offset_and_converts_to_utc ... ok
[INFO] [stdout] test api::mapper::tests::format_utc_array_formats_utc_time ... ok
[INFO] [stdout] test api::mapper::tests::format_utc_array_returns_none_on_invalid_date ... ok
[INFO] [stdout] test api::mapper::tests::memo_from_dto_defaults_time_to_empty_on_invalid_arrays ... ok
[INFO] [stdout] test api::mapper::tests::format_utc_array_returns_none_on_invalid_time ... ok
[INFO] [stdout] test app::command::tests::run_command_returns_correct_actions ... ok
[INFO] [stdout] test app::command::tests::command_available_respects_workspace_and_editor_state ... ok
[INFO] [stdout] test app::command::tests::shortcuts_for_command_uses_keymap ... ok
[INFO] [stdout] test app::main_focus::tests::memos_jump_top_sequence_can_be_overridden_by_config ... ok
[INFO] [stdout] test app::main_focus::tests::memos_space_opens_preview ... ok
[INFO] [stdout] test app::main_focus::tests::memos_open_docked_preview_focuses_preview ... ok
[INFO] [stdout] test app::main_focus::tests::memo_search_typing_and_enter_apply_search ... ok
[INFO] [stdout] test app::main_focus::tests::memos_enter_does_not_open_preview ... ok
[INFO] [stdout] test app::main_focus::tests::memos_gg_jumps_to_first_row ... ok
[INFO] [stdout] test app::main_focus::tests::memo_search_escape_discards_draft ... ok
[INFO] [stdout] test app::main_focus::tests::tags_uppercase_j_k_move_between_siblings ... ok
[INFO] [stdout] test app::main_focus::tests::memos_pending_g_is_cleared_by_other_keys ... ok
[INFO] [stdout] test api::memo::tests::search_query_serializes_to_search_endpoint_payload ... ok
[INFO] [stdout] test app::main_focus::tests::slash_opens_memo_search_with_existing_query ... ok
[INFO] [stdout] test app::main_focus::tests::tags_ignore_up_down_arrows ... ok
[INFO] [stdout] test app::main_focus::tests::memos_esc_no_longer_focuses_tags_by_default ... ok
[INFO] [stdout] test app::main_focus::tests::memos_page_up_and_down_move_by_visible_rows ... ok
[INFO] [stdout] test app::main_focus::tests::memos_default_arrow_and_home_end_keys_do_not_move ... ok
[INFO] [stdout] test app::main_focus::tests::memos_g_jumps_to_last_loaded_row ... ok
[INFO] [stdout] test app::palette::tests::palette_shows_available_commands ... ok
[INFO] [stdout] test app::screens::login::tests::ctrl_g_switches_to_register ... ok
[INFO] [stdout] test app::screens::editor::tests::backtab_no_longer_cycles_tag_completion ... ok
[INFO] [stdout] test app::screens::main::tests::esc_moves_from_tags_to_memos ... ok
[INFO] [stdout] test app::screens::editor::tests::enter_accepts_nested_tag_completion_after_slash ... ok
[INFO] [stdout] test app::screens::login::tests::enter_enqueues_login_with_trimmed_username ... ok
[INFO] [stdout] test app::screens::editor::tests::up_down_arrows_no_longer_move_editor_cursor ... ok
[INFO] [stdout] test app::screens::main::tests::hidden_sidebar_opens_tag_picker_on_t_and_still_ignores_tab_toggle ... ok
[INFO] [stdout] test app::screens::login::tests::ctrl_d_clears_local_session_and_inputs ... ok
[INFO] [stdout] test app::screens::main::tests::l_logs_out_to_login_screen ... ok
[INFO] [stdout] test app::screens::main::tests::esc_clears_applied_memo_search_before_focus_shortcut ... ok
[INFO] [stdout] test app::screens::login::tests::tab_and_backtab_cycle_focus ... ok
[INFO] [stdout] test app::screens::editor::tests::space_after_auto_appended_slash_removes_the_slash ... ok
[INFO] [stdout] test app::screens::editor::tests::enter_accepts_top_level_tag_completion ... ok
[INFO] [stdout] test app::screens::editor::tests::tab_cycles_then_enter_accepts_next_tag_completion ... ok
[INFO] [stdout] test app::screens::main::tests::esc_from_tags_restores_highlight_to_selected_tag ... ok
[INFO] [stdout] test app::screens::main::tests::memo_list_screen_route_preserves_double_g_navigation ... ok
[INFO] [stdout] test app::tests::core::build_memo_list_entries_matches_by_id_and_fills_missing_as_empty ... ok
[INFO] [stdout] test app::screens::main::tests::r_enqueues_refresh_all ... ok
[INFO] [stdout] test app::tests::core::help_key_matches_ctrl_h_only ... ok
[INFO] [stdout] test app::screens::main::tests::memo_search_editing_swallows_main_screen_single_key_shortcuts ... ok
[INFO] [stdout] test app::tests::core::preview_markdown_source_keeps_final_tag_line_when_content_is_empty ... ok
[INFO] [stdout] test app::tests::core::preview_markdown_source_moves_tags_to_final_editor_style_line ... ok
[INFO] [stdout] test app::tests::core::preview_markdown_source_omits_tag_line_when_no_tags ... ok
[INFO] [stdout] test app::tests::core::preview_markdown_source_supports_slash_tags_and_omits_empty_tag_placeholder ... ok
[INFO] [stdout] test app::screens::main::tests::t_opens_tag_picker_when_sidebar_is_hidden ... ok
[INFO] [stdout] test app::screens::main::tests::t_focuses_tags_when_sidebar_is_visible ... ok
[INFO] [stdout] test app::screens::main::tests::tab_and_backtab_do_not_leave_tags ... ok
[INFO] [stdout] test app::screens::main::tests::p_toggles_sidebar_visibility ... ok
[INFO] [stdout] test app::screens::main::tests::tab_and_backtab_do_not_leave_memos ... ok
[INFO] [stdout] test app::screens::register::tests::esc_returns_to_login ... ok
[INFO] [stdout] test app::screens::main::tests::tag_search_enter_selects_tag_and_moves_focus_to_memos ... ok
[INFO] [stdout] test app::screens::main::tests::t_opens_tag_picker_when_sidebar_is_auto_hidden_by_width ... ok
[INFO] [stdout] test app::tests::core::delete_memo_by_id_enqueues_effect_without_status ... ok
[INFO] [stdout] test app::tests::core::memos_next_enqueues_load_next_page_when_more_ids_exist ... ok
[INFO] [stdout] test app::tests::core::apply_saved_memo_to_local_state_updates_cache_memo_and_list_preview ... ok
[INFO] [stdout] test app::tests::core::apply_command_result_create_update_delete_do_not_emit_result_status ... ok
[INFO] [stdout] test app::screens::main::tests::tag_search_mode_swallows_main_screen_single_key_shortcuts ... ok
[INFO] [stdout] test app::tests::core::toggle_sidebar_changes_focus_without_result_status ... ok
[INFO] [stdout] test app::screens::register::tests::tab_cycles_focus_across_three_fields ... ok
[INFO] [stdout] test app::screens::register::tests::enter_enqueues_register_and_omits_empty_nickname ... ok
[INFO] [stdout] test app::tests::editor::confirm_overlay_y_and_n_no_longer_trigger_default_actions ... ok
[INFO] [stdout] test app::tests::core::set_focus_tags_is_ignored_when_sidebar_is_hidden ... ok
[INFO] [stdout] test app::tests::editor::editor_cmdline_wq_enqueues_save ... ok
[INFO] [stdout] test app::tests::core::stale_command_result_is_ignored_after_logout_bumps_epoch ... ok
[INFO] [stdout] test app::tests::editor::editor_command_quit_from_insert_exits_when_not_dirty ... ok
[INFO] [stdout] test app::tests::editor::editor_gg_and_g_jump_to_first_and_last_line ... ok
[INFO] [stdout] test app::tests::editor::editor_cmdline_q_exits_when_not_dirty ... ok
[INFO] [stdout] test app::tests::editor::editor_esc_in_normal_opens_discard_confirm_when_dirty ... ok
[INFO] [stdout] test app::tests::editor::editor_insert_mode_inserts_question_mark_and_ctrl_h_opens_help ... ok
[INFO] [stdout] test app::tests::editor::confirm_overlay_enter_and_esc_remain_default_actions ... ok
[INFO] [stdout] test app::tests::editor::editor_command_save_from_insert_does_not_insert_cmdline ... ok
[INFO] [stdout] test app::tests::editor::editor_esc_exits_in_normal_when_not_dirty ... ok
[INFO] [stdout] test app::tests::editor::editor_o_inserts_line_below_and_enters_insert ... ok
[INFO] [stdout] test app::tests::editor::editor_cmdline_w_enqueues_save_without_exit_intent ... ok
[INFO] [stdout] test app::tests::editor::editor_esc_does_not_exit_only_switches_mode ... ok
[INFO] [stdout] test app::tests::editor::editor_dd_deletes_current_line_and_sets_dirty ... ok
[INFO] [stdout] test app::tests::editor::editor_command_save_quit_from_insert_does_not_insert_cmdline ... ok
[INFO] [stdout] test app::tests::editor::editor_word_motions_w_and_e_move_within_line ... ok
[INFO] [stdout] test app::tests::editor::start_edit_memo_appends_tags_on_last_paragraph ... ok
[INFO] [stdout] test app::tests::preview::logout_closes_preview ... ok
[INFO] [stdout] test app::tests::preview::command_dock_uses_configured_keymap ... ok
[INFO] [stdout] test app::tests::preview::docked_memo_preview_esc_closes_preview_and_returns_to_memos ... ok
[INFO] [stdout] test app::tests::preview::memo_preview_d_prompts_delete_above_preview ... ok
[INFO] [stdout] test app::tests::preview::memo_preview_e_enters_editor_and_closes_preview ... ok
[INFO] [stdout] test app::tests::preview::memo_preview_h_l_jumps_and_syncs_selection ... ok
[INFO] [stdout] test app::tests::preview::memo_preview_overlay_l_enqueues_load_next_page_when_not_loaded ... ok
[INFO] [stdout] test app::tests::preview::memo_preview_pending_g_is_cleared_by_other_preview_actions ... ok
[INFO] [stdout] test app::tests::preview::memo_preview_ctrl_p_opens_command_dock ... ok
[INFO] [stdout] test app::tests::preview::memo_preview_gg_jumps_to_first_loaded_memo ... ok
[INFO] [stdout] test app::tests::preview::start_edit_memo_closes_preview ... ok
[INFO] [stdout] test app::util::tests::memo_page_size_is_min_20_and_scales_by_1_5x ... ok
[INFO] [stdout] test app::tests::preview::open_memo_preview_opens_preview_and_toggles_fullscreen ... ok
[INFO] [stdout] test app::util::tests::next_page_range_handles_boundaries ... ok
[INFO] [stdout] test application::runtime::tests::load_main_data_propagates_memo_list_errors ... ok
[INFO] [stdout] test application::runtime::tests::memo_list_filter_with_text_uses_search_api ... ok
[INFO] [stdout] test application::runtime::tests::memo_list_filter_without_tag_or_text_uses_empty_search_query ... ok
[INFO] [stdout] test application::runtime::tests::memo_list_filter_without_text_uses_search_api_with_tag_only_filter ... ok
[INFO] [stdout] test app::tests::preview::memo_preview_g_jumps_to_last_loaded_memo ... ok
[INFO] [stdout] test app::tests::tags::activating_selected_tag_preserves_applied_search_filter ... ok
[INFO] [stdout] test application::state::tests::vi_editor_accepts_markdown_format_hook ... ok
[INFO] [stdout] test app::tests::preview::memo_preview_h_l_keeps_fullscreen ... ok
[INFO] [stdout] test app::tests::editor::start_create_memo_includes_selected_tag ... ok
[INFO] [stdout] test app::tests::tags::command_dock_select_tag_closes_preview_and_focuses_tags_when_sidebar_is_visible ... ok
[INFO] [stdout] test config::tests::base_url_normalizes_trailing_slash ... ok
[INFO] [stdout] test application::state::tests::markdown_highlighter_emits_styled_spans ... ok
[INFO] [stdout] test config::tests::base_url_rejects_invalid_url ... ok
[INFO] [stdout] test app::tests::preview::refresh_all_keeps_preview_visible_and_enqueues_cmd ... ok
[INFO] [stdout] test config::tests::load_or_init_migrates_legacy_open_preview_binding ... ok
[INFO] [stdout] test config::tests::config_file_prefers_xdg_config_home ... ok
[INFO] [stdout] test config::tests::default_keymap_prefers_vi_navigation_bindings ... ok
[INFO] [stdout] test domain::memo::tests::memo_date_takes_yyyy_mm_dd ... ok
[INFO] [stdout] test domain::memo::tests::memo_preview_is_single_line_and_truncated ... ok
[INFO] [stdout] test config::tests::load_or_init_merges_defaults_with_partial_file ... ok
[INFO] [stdout] test domain::memo::tests::parse_content_empty_when_input_is_only_tags ... ok
[INFO] [stdout] test domain::memo::tests::parse_default_tag ... ok
[INFO] [stdout] test domain::memo::tests::parse_ignores_non_tag_tokens_on_last_line ... ok
[INFO] [stdout] test domain::memo::tests::parse_tags_from_last_line ... ok
[INFO] [stdout] test domain::memo::tests::tags_line_is_empty_when_no_tags ... ok
[INFO] [stdout] test domain::memo::tests::tags_line_uses_editor_style ... ok
[INFO] [stdout] test domain::tag_completion::tests::accept_space_after_trailing_slash_ignores_non_trailing_prefix_input ... ok
[INFO] [stdout] test domain::tag_completion::tests::accept_space_after_trailing_slash_replaces_slash_with_space ... ok
[INFO] [stdout] test domain::tag_completion::tests::accept_suggestion_appends_slash_for_nodes_with_children ... ok
[INFO] [stdout] test domain::tag_completion::tests::accept_suggestion_reuses_existing_child_separator ... ok
[INFO] [stdout] test domain::tag_completion::tests::apply_suggestion_replaces_only_current_segment ... ok
[INFO] [stdout] test domain::tag_completion::tests::child_completion_requires_exact_parent_match ... ok
[INFO] [stdout] test domain::tag_completion::tests::completion_is_only_active_on_last_line ... ok
[INFO] [stdout] test domain::tag_completion::tests::exact_leaf_match_at_segment_end_does_not_keep_completion_active ... ok
[INFO] [stdout] test domain::tag_completion::tests::exact_non_leaf_match_at_segment_end_keeps_completion_active ... ok
[INFO] [stdout] test domain::tag_completion::tests::exact_top_level_leaf_match_at_segment_end_does_not_keep_completion_active ... ok
[INFO] [stdout] test domain::tag_completion::tests::suggests_current_segment_in_second_tag ... ok
[INFO] [stdout] test domain::tag_completion::tests::suggests_children_after_slash ... ok
[INFO] [stdout] test domain::tag_completion::tests::suggests_top_level_tags_from_hash_prefix ... ok
[INFO] [stdout] test keymap::tests::key_bindings_deserializes_os_table_and_picks_platform ... ok
[INFO] [stdout] test keymap::tests::key_chord_parses_ctrl_letter_case_insensitive ... ok
[INFO] [stdout] test keymap::tests::key_bindings_matches_any_chord ... ok
[INFO] [stdout] test keymap::tests::key_chord_parses_simple_chars ... ok
[INFO] [stdout] test keymap::tests::key_combo_parses_sequence ... ok
[INFO] [stdout] test config::tests::load_or_init_creates_default_config_when_missing ... ok
[INFO] [stdout] test config::tests::load_or_init_preserves_custom_open_preview_binding ... ok
[INFO] [stdout] test app::tests::tags::activate_selected_tag_closes_picker_and_switches_to_memos ... ok
[INFO] [stdout] test tui::ratatui_command_palette::state::tests::input_char_and_backspace_update_query ... ok
[INFO] [stdout] test config::tests::base_url_uses_default_when_env_missing ... ok
[INFO] [stdout] test tui::ratatui_command_palette::state::tests::test_empty_query_returns_all ... ok
[INFO] [stdout] test app::tests::tags::command_dock_select_tag_closes_preview_and_opens_picker_when_sidebar_is_hidden ... ok
[INFO] [stdout] test tui::ratatui_command_palette::state::tests::test_navigation_wraps ... ok
[INFO] [stdout] test tui::ratatui_command_palette::state::tests::test_search_by_initials ... ok
[INFO] [stdout] test tui::ratatui_command_palette::state::tests::test_search_by_initials_with_separator ... ok
[INFO] [stdout] test tui::ratatui_command_palette::state::tests::test_search_by_name ... ok
[INFO] [stdout] test tui::ratatui_command_palette::state::tests::test_search_by_pinyin ... ok
[INFO] [stdout] test tui::ratatui_command_palette::state::tests::test_select_returns_id ... ok
[INFO] [stdout] test tui::ratatui_expanded_clear::tests::clamps_to_bounds_bottom_right ... ok
[INFO] [stdout] test tui::ratatui_expanded_clear::tests::clamps_to_bounds_top_left ... ok
[INFO] [stdout] test tui::ratatui_expanded_clear::tests::expanded_clear_clears_expanded_area_then_renders_inner ... ok
[INFO] [stdout] test config::tests::resolved_base_url_env_overrides_config_file_value ... ok
[INFO] [stdout] test tui::ratatui_expanded_clear::tests::expands_inside_bounds ... ok
[INFO] [stdout] test persist::tests::clear_session_is_idempotent ... ok
[INFO] [stdout] test persist::tests::config_dir_prefers_xdg_config_home ... ok
[INFO] [stdout] test persist::tests::config_dir_falls_back_to_home ... ok
[INFO] [stdout] test tui::ratatui_md::config::toml::tests::parses_render_and_parse_sections ... ok
[INFO] [stdout] test persist::tests::load_session_returns_none_when_missing ... ok
[INFO] [stdout] test tui::ratatui_md::config::toml::tests::resolved_render_config_defaults_and_overrides ... ok
[INFO] [stdout] test tui::ratatui_md::config::toml::tests::table_chars_rounded_charset ... ok
[INFO] [stdout] test tui::ratatui_md::core::ir::tag::tests::allows_wrapping_punctuation ... ok
[INFO] [stdout] test app::tests::tags::tags_left_selects_parent_when_not_collapsing ... ok
[INFO] [stdout] test tui::ratatui_md::core::ir::tag::tests::does_not_accept_empty_segments_or_trailing_slash ... ok
[INFO] [stdout] test tui::ratatui_md::core::ir::tag::tests::builder_emits_inline_tag_tokens ... ok
[INFO] [stdout] test tui::ratatui_md::core::ir::tag::tests::splits_simple_tags ... ok
[INFO] [stdout] test tui::ratatui_md::core::ir::tag::tests::requires_boundary_before_hash ... ok
[INFO] [stdout] test tui::ratatui_md::highlight::parsed::tests::emphasis_does_not_apply_to_inline_code ... ok
[INFO] [stdout] test tui::ratatui_md::highlight::parsed::tests::highlights_definition_list_term ... ok
[INFO] [stdout] test persist::tests::save_and_load_session_roundtrip ... ok
[INFO] [stdout] test app::tests::tags::tags_right_expands_when_collapsed ... ok
[INFO] [stdout] test tui::ratatui_md::highlight::parsed::tests::highlights_footnote_reference_and_definition_label ... ok
[INFO] [stdout] test tui::ratatui_md::highlight::parsed::tests::highlights_inline_emphasis_and_strong_text_only ... ok
[INFO] [stdout] test tui::ratatui_md::highlight::parsed::tests::highlights_link_destination_only ... ok
[INFO] [stdout] test tui::ratatui_md::highlight::parsed::tests::update_from_events_matches_update ... ok
[INFO] [stdout] test tui::ratatui_md::markdown_format::tests::atx_heading_spacing_level_1_is_preserved ... ok
[INFO] [stdout] test tui::ratatui_md::markdown_format::tests::atx_heading_spacing_level_ge_2_is_normalized ... ok
[INFO] [stdout] test tui::ratatui_md::markdown_format::tests::collapses_multiple_blank_lines_outside_code_blocks ... ok
[INFO] [stdout] test tui::ratatui_md::markdown_format::tests::blockquote_spacing_is_normalized ... ok
[INFO] [stdout] test tui::ratatui_md::markdown_format::tests::code_blocks_are_protected ... ok
[INFO] [stdout] test application::runtime::tests::worker_processes_commands_in_fifo_order_even_when_first_is_slow ... ok
[INFO] [stdout] test tui::ratatui_md::style::config::tests::style_override_modifiers_replace_base ... ok
[INFO] [stdout] test tui::ratatui_md::markdown_format::tests::does_not_collapse_blank_lines_inside_code_blocks ... ok
[INFO] [stdout] test tui::ratatui_md::markdown_format::tests::inserts_blank_line_before_table_block ... ok
[INFO] [stdout] test tui::ratatui_md::markdown_format::tests::list_spacing_is_normalized ... ok
[INFO] [stdout] test tui::ratatui_md::markdown_format::tests::non_tables_with_pipes_are_not_reformatted_as_tables ... ok
[INFO] [stdout] test tui::ratatui_md::style::sheet::tests::render_style_sheet_trait_defaults_match_config ... ok
[INFO] [stdout] test tui::ratatui_md::markdown_format::tests::inserts_blank_line_between_adjacent_top_level_blocks ... ok
[INFO] [stdout] test tui::ratatui_tree::search::tests::display_path_omits_redundant_all_root_prefix ... ok
[INFO] [stdout] test tui::ratatui_md::markdown_format::tests::tables_are_formatted_from_parser_events ... ok
[INFO] [stdout] test tui::ratatui_md::config::toml::tests::creates_default_user_config_when_missing_everywhere ... ok
[INFO] [stdout] test tui::ratatui_md::config::toml::tests::default_config_toml_paths_with_xdg_and_home ... ok
[INFO] [stdout] test tui::ratatui_md::config::toml::tests::default_config_toml_paths_without_xdg_and_home ... ok
[INFO] [stdout] test tui::ratatui_md::config::toml::tests::load_default_merges_style_with_built_in_defaults ... ok
[INFO] [stdout] test tui::ratatui_md::style::sheet::tests::resolved_style_sheet_config_is_built_from_config_toml_style ... ok
[INFO] [stdout] test tui::ratatui_tree::search::tests::display_path_keeps_non_all_root_prefix ... ok
[INFO] [stdout] test tui::ratatui_tree::search::tests::normalize_pinyin_term_ignores_visual_separators ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::accepting_search_expands_path_selects_node_and_activates_it ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::backtab_does_not_move_search_selection ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::collapsing_selected_subtree_falls_back_to_visible_ancestor ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::canceling_search_keeps_original_selection ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::expand_collapse_methods_work ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::flatten_visible_hides_collapsed_subtree ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::index_build_sets_parent_and_children ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::next_sibling_moves_within_same_parent ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::handle_default_key_supports_uppercase_sibling_navigation ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::right_expands_when_collapsed ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::search_matches_chinese_full_pinyin_and_initials ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::rebuild_visible_falls_back_to_visible_ancestor ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::handle_default_key_uses_jk_for_vertical_navigation ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::search_path_initials_with_separator_matches_compact_initials ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::index_build_sets_sibling_links ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::prev_sibling_moves_within_same_parent ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::right_selects_first_child_when_expanded ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::left_collapses_when_expanded ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::select_id_works ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::slash_becomes_query_text_when_search_is_active ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::sibling_navigation_stops_at_edges_and_root ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::slash_enters_search_mode ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::tab_does_not_move_search_selection ... ok
[INFO] [stdout] test tui::ratatui_tree::tests::toggle_all_expand_collapses_after_manual_full_expansion ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::backspace_deletes_single_unicode_scalar_value ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::b_moves_to_previous_word_start_small ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::b_skips_punctuation_as_non_word_for_small_word ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::capital_b_treats_non_whitespace_as_word ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::backspace_merges_with_previous_line_at_line_start ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::b_crosses_lines ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::from_text_normalizes_crlf_and_sets_cursor_to_end ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::insert_newline_clamps_cursor_to_utf8_boundary ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::delete_deletes_single_unicode_scalar_value ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::insert_newline_splits_line_at_cursor ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::b_from_word_start_moves_to_previous_word ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::delete_merges_with_next_line_at_line_end ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::e_moves_to_next_word_end_when_already_at_word_end ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::match_pair_fails_when_not_on_bracket ... ok
[INFO] [stdout] test tui::ratatui_vi::ratatui::source_highlight::tests::spans_from_text_tracks_utf8_byte_offsets_and_filters_default_style ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::match_pair_moves_between_matching_parens ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::match_pair_supports_nesting_and_crosses_lines ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::paragraph_forward_skips_to_next_paragraph_start ... ok
[INFO] [stdout] test tui::ratatui_vi::ratatui::source_highlight::tests::update_with_skips_source_allocation_when_revision_is_fresh ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::paragraph_backward_skips_to_previous_paragraph_start ... ok
[INFO] [stdout] test tui::ratatui_vi::ratatui::textarea::tests::render_highlights_find_matches_on_cursor_row ... ok
[INFO] [stdout] test tui::ratatui_vi::core::tests::insert_char_clamps_cursor_to_utf8_boundary ... ok
[INFO] [stdout] test tui::ratatui_vi::search::literal::tests::forward_wraps_to_start ... ok
[INFO] [stdout] test tui::ratatui_vi::search::literal::tests::forward_wrap_can_match_at_first_byte ... ok
[INFO] [stdout] test tui::ratatui_vi::ratatui::textarea::tests::render_highlights_search_matches ... ok
[INFO] [stdout] test tui::ratatui_vi::selection::tests::char_find_forward_is_inclusive_in_selection ... ok
[INFO] [stdout] test tui::ratatui_vi::search::literal::tests::backward_wraps_to_end ... ok
[INFO] [stdout] test tui::ratatui_vi::search::literal::tests::no_match_restores_cursor ... ok
[INFO] [stdout] test app::tests::tags::select_tag_opens_picker_when_sidebar_is_hidden_without_status ... ok
[INFO] [stdout] test tui::ratatui_vi::selection::tests::char_find_backward_is_not_forward_inclusive_in_selection ... ok
[INFO] [stdout] test tui::ratatui_vi::selection::tests::match_pair_returns_none_when_not_on_pair_character ... ok
[INFO] [stdout] test tui::ratatui_vi::selection::tests::paragraph_forward_returns_none_when_no_next_paragraph ... ok
[INFO] [stdout] test tui::ratatui_vi::substitute::parse::tests::partial_substitute_detects_global_only_after_third_delim ... ok
[INFO] [stdout] test tui::ratatui_vi::selection::tests::char_find_returns_none_when_target_missing ... ok
[INFO] [stdout] test tui::ratatui_vi::substitute::parse::tests::partial_substitute_parses_range_and_pattern ... ok
[INFO] [stdout] test tui::ratatui_vi::substitute::parse::tests::partial_substitute_rejects_non_substitute ... ok
[INFO] [stdout] test tui::ratatui_vi::substitute::parse::tests::partial_substitute_unescapes_delimiter ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::ciw_changes_inner_word ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::cmdline_q_when_dirty_requests_confirm_discard ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::count_gg_moves_to_target_line ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::config_deserialize_platform_shortcuts ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::count_hjkl_moves_cursor ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::count_x_deletes_multiple_characters ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::count_s_deletes_multiple_and_enters_insert_mode ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::count_p_repeats_paste ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::count_x_uppercase_deletes_before_cursor ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::count_dd_deletes_multiple_lines_and_creates_single_undo_checkpoint ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::ctrl_f_formats_when_hook_set ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::ctrl_s_requests_save_from_any_mode ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::count_r_replaces_multiple_characters ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::config_default_toml_roundtrip ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::count_before_dot_repeats_change_multiple_times ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::custom_format_shortcut_works ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::ctrl_f_in_insert_mode_does_not_format ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::ctrl_f_without_hook_returns_status ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::d2w_deletes_two_words ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::ctrl_r_redoes_in_normal_mode ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::d_and_y_shortcuts_work ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::d_l_deletes_motion_selection ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::dd_deletes_line_and_creates_undo_checkpoint ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::d_percent_deletes_including_matching_pair ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::d2j_deletes_linewise ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::dfx_deletes_through_found_char ... ok
[INFO] [stdout] test app::tests::tags::tags_left_collapses_when_expanded ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::dg_deletes_to_last_line_linewise ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::default_config_is_created_in_xdg_config_home_when_missing ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::dgg_deletes_to_first_line_linewise ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::dl_and_dh_delete_single_character ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::dot_repeats_simple_change_and_insert_change ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::dot_repeats_insert_paste ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::dot_repeats_substitute_with_count ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::esc_from_insert_does_not_cross_lines ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::esc_from_insert_moves_cursor_left_in_line ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::esc_from_insert_respects_unicode_char_boundaries ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::default_config_is_not_overwritten_if_present ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::esc_in_normal_hides_find_highlight_until_next_find ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::ex_substitute_no_match_does_not_create_undo_checkpoint ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::ex_substitute_same_replacement_does_not_create_undo_checkpoint ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::ex_substitute_accepts_missing_final_delimiter ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::ex_substitute_global_and_undo ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::ex_substitute_with_hash_delimiter ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::ex_substitute_uses_last_search_pattern ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::insert_mode_only_pushes_undo_on_esc_if_changed ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::ex_substitute_once_per_line_without_g ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::dtx_deletes_until_before_found_char ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::j_joins_lines_and_respects_count ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::keychord_meta_roundtrip ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::esc_in_normal_hides_search_highlight_until_next_search ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::normal_f_t_and_semicolon_comma_repeat_last_find ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::load_default_returns_invalid_data_for_bad_toml_and_does_not_overwrite ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::search_slash_and_n_n_repeat ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::search_highlight_does_not_use_ex_cmdline_input ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::v_enters_visual_char_and_v_exits ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::replace_text_creates_undo_checkpoint_and_preserves_cursor ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::paragraph_motions_move_to_paragraph_start ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::search_highlight_cmdline_cancel_does_not_change_last_highlight_state ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::register_select_yanks_into_named_register_and_pastes ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::s_deletes_and_enters_insert_mode ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::percent_motion_jumps_to_matching_pair ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::paste_in_insert_is_single_undo_checkpoint_and_normalizes_crlf ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::v_enters_visual_line_and_esc_exits ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::search_highlight_uses_cmdline_pattern_while_typing ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::vj_c_changes_linewise_and_enters_insert ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::vj_d_deletes_visual_line_selection ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::vj_x_deletes_visual_line_selection ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::vl_x_deletes_visual_char_selection ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::yg_yanks_multiple_lines_and_p_pastes_them ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::vj_y_yanks_linewise_to_register ... ok
[INFO] [stdout] test ui::adapter::tag_tree::tests::rebuild_from_meta_initially_expands_expandable_nodes ... ok
[INFO] [stdout] test ui::adapter::tag_tree::tests::restore_highlight_to_selected_tag_expands_ancestors_and_selects_target ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::vl_y_yanks_charwise_to_register ... ok
[INFO] [stdout] test ui::adapter::tag_tree::tests::rebuild_from_meta_none_clears_tree_and_rows ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::vl_d_deletes_visual_char_selection ... ok
[INFO] [stdout] test tui::ratatui_vi::vi::tests::vl_c_changes_charwise_and_enters_insert ... ok
[INFO] [stdout] test app::tests::tags::select_tag_focuses_tags_when_sidebar_is_visible ... ok
[INFO] [stdout] test ui::components::chrome::tests::focused_border_uses_yellow ... ok
[INFO] [stdout] test ui::components::chrome::tests::focused_title_uses_yellow_bold ... ok
[INFO] [stdout] test ui::components::chrome::tests::selected_style_keeps_cyan_bold_accent ... ok
[INFO] [stdout] test ui::components::editor::tests::draw_highlights_editor_border_and_title_when_directly_focused ... ok
[INFO] [stdout] test ui::components::editor::tests::draw_keeps_editor_unfocused_when_overlay_takes_input ... ok
[INFO] [stdout] test ui::components::editor::tests::editor_footer_shows_cmdline_input_in_ex_mode ... ok
[INFO] [stdout] test ui::components::editor::tests::editor_footer_shows_insert_mode_and_one_based_cursor ... ok
[INFO] [stdout] test app::tests::tags::tags_right_selects_first_child_when_already_expanded ... ok
[INFO] [stdout] test ui::components::editor::tests::popup_flips_above_when_near_bottom ... ok
[INFO] [stdout] test ui::components::editor::tests::popup_prefers_below_cursor_when_space_is_available ... ok
[INFO] [stdout] test ui::components::editor::tests::visible_window_keeps_selected_item_in_view ... ok
[INFO] [stdout] test ui::components::main::tests::memo_list_line_dims_date_prefix ... ok
[INFO] [stdout] test ui::components::main::tests::memo_list_rows_only_depend_on_panel_height ... ok
[INFO] [stdout] test ui::components::main::tests::sidebar_width_is_zero_when_hidden ... ok
[INFO] [stdout] test ui::components::overlay::confirm::tests::delete_memo_confirm_body_omits_memo_id ... ok
[INFO] [stdout] test ui::components::main::tests::sidebar_width_is_zero_when_screen_is_too_narrow ... ok
[INFO] [stdout] test ui::components::overlay::help::tests::help_context_label_reflects_editor_mode ... ok
[INFO] [stdout] test ui::components::markdown_preview::tests::draw_highlights_preview_border_and_title_when_focused ... ok
[INFO] [stdout] test ui::components::main::tests::memo_list_rows_use_full_right_panel_height ... ok
[INFO] [stdout] test ui::components::overlay::help::tests::help_sections_for_editor_insert_show_tag_completion_only_when_active ... ok
[INFO] [stdout] test ui::components::main::tests::memo_list_title_shows_current_selected_tag_and_selection ... ok
[INFO] [stdout] test ui::components::overlay::help::tests::help_sections_for_applied_memo_search_show_space_only_preview_shortcut ... ok
[INFO] [stdout] test ui::components::overlay::help::tests::help_sections_for_editor_normal_do_not_advertise_up_down_arrows ... ok
[INFO] [stdout] test ui::components::overlay::help::tests::help_sections_for_memo_preview_only_show_preview_sections ... ok
[INFO] [stdout] test ui::components::markdown_preview::tests::draw_keeps_preview_border_and_title_unfocused_by_default ... ok
[INFO] [stdout] test ui::components::overlay::help::tests::help_sections_for_active_memo_search_focus_on_search_controls ... ok
[INFO] [stdout] test ui::components::overlay::help::tests::help_sections_for_memos_use_t_for_tags_without_workspace_pane_cycle ... ok
[INFO] [stdout] test ui::components::overlay::help::tests::help_two_columns_require_enough_width_height_and_sections ... ok
[INFO] [stdout] test ui::components::tag_view::tests::block_titles_match_between_panel_and_overlay_states ... ok
[INFO] [stdout] test ui::components::overlay::help::tests::help_sections_for_tags_include_escape_back_to_memos ... ok
[INFO] [stdout] test ui::components::overlay::help::tests::help_sections_for_tag_tree_use_j_k_without_up_down ... ok
[INFO] [stdout] test ui::components::overlay::help::tests::help_sections_for_tag_search_hide_main_actions ... ok
[INFO] [stdout] test ui::components::tag_view::tests::overlay_footer_reuses_shared_tag_copy ... ok
[INFO] [stdout] test ui::interaction::tests::applied_memo_search_prioritizes_search_hint_before_list_navigation ... ok
[INFO] [stdout] test ui::interaction::tests::main_tag_search_keeps_help_focused_but_retains_back_hint_for_dock ... ok
[INFO] [stdout] test ui::layout::tests::centered_rect_max_width_caps_height_to_two_thirds ... ok
[INFO] [stdout] test ui::components::overlay::tag_picker::tests::tag_picker_border_and_title_highlight_when_focused ... ok
[INFO] [stdout] test ui::layout::tests::centered_rect_max_width_caps_width_to_two_thirds ... ok
[INFO] [stdout] test ui::layout::tests::centered_rect_max_width_caps_height_to_two_thirds_on_small_bounds ... ok
[INFO] [stdout] test ui::layout::tests::centered_rect_max_width_respects_cfg_max_height_when_smaller ... ok
[INFO] [stdout] test ui::layout::tests::centered_rect_max_width_respects_cfg_max_width_when_smaller ... ok
[INFO] [stdout] test ui::layout::tests::fullscreen_memo_preview_uses_content_area ... ok
[INFO] [stdout] test ui::components::overlay::tag_picker::tests::tag_picker_border_and_title_remain_gray_when_unfocused ... ok
[INFO] [stdout] test ui::vm::tests::cursor_blinks_every_500ms ... ok
[INFO] [stdout] test ui::vm::tests::cursor_blinks_in_insert_mode ... ok
[INFO] [stdout] test ui::vm::tests::cursor_is_hidden_when_overlay_active ... ok
[INFO] [stdout] test tui::ratatui_md::highlight::parsed::tests::highlights_code_fences_and_code_lines ... ok
[INFO] [stdout] test ui::command_dock::tests::docked_preview_with_focus_uses_preview_hints ... ok
[INFO] [stdout] test ui::vm::tests::login_vm_counts_password_len_in_chars ... ok
[INFO] [stdout] test ui::command_dock::tests::memo_list_dock_shows_focus_and_navigation ... ok
[INFO] [stdout] test ui::vm::tests::register_vm_counts_password_len_in_chars ... ok
[INFO] [stdout] test ui::command_dock::tests::login_dock_shows_screen_and_minimal_shortcuts ... ok
[INFO] [stdout] test ui::workspace::tests::memo_preview_title_uses_created_time_in_top_border ... ok
[INFO] [stdout] test ui::command_dock::tests::memo_search_dock_shows_query_in_status_bar ... ok
[INFO] [stdout] test ui::command_dock::tests::editor_dock_shows_current_ex_command ... ok
[INFO] [stdout] test ui::command_dock::tests::expanded_command_dock_hint_uses_j_k_navigation ... ok
[INFO] [stdout] test ui::controller::tests::esc_closes_tag_picker_and_restores_selected_highlight ... ok
[INFO] [stdout] test ui::command_dock::tests::preview_dock_shows_h_l_navigation ... ok
[INFO] [stdout] test ui::controller::tests::tag_picker_ignores_up_down_arrows ... ok
[INFO] [stdout] test ui::command_dock::tests::editor_dock_in_insert_mode_shows_mode_and_exit_only ... ok
[INFO] [stdout] test ui::command_dock::tests::applied_memo_search_dock_shows_clear_and_edit_hints ... ok
[INFO] [stdout] test ui::vm::tests::help_vm_marks_memo_search_state_when_search_is_active ... ok
[INFO] [stdout] test ui::vm::tests::help_vm_uses_tag_picker_context_when_help_is_open_above_it ... ok
[INFO] [stdout] test ui::vm::tests::help_vm_uses_memo_preview_context_when_help_is_open_above_it ... ok
[INFO] [stdout] test ui::vm::tests::help_vm_detects_editor_tag_completion_without_overlay_blocking ... ok
[INFO] [stdout] test ui::workspace::tests::focused_tag_picker_suppresses_background_memo_panel_highlight ... ok
[INFO] [stdout] test ui::vm::tests::help_vm_uses_memo_preview_context_for_focused_docked_preview ... ok
[INFO] [stdout] test ui::vm::tests::palette_hint_follows_keymap ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 415 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.88s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/health.rs (/opt/rustwide/target/debug/deps/health-a71209c903af2fa3)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test health_ok ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/weimo_server-d3cee2b86aa4f1b9)
[INFO] [stdout] 
[INFO] [stdout] running 171 tests
[INFO] [stdout] test config::tests::bind_addr_formats_host_and_port ... ok
[INFO] [stdout] test data::db::driver::md::tests::test_delete_nonexistent_user ... ok
[INFO] [stdout] test data::db::driver::md::tests::test_create_memo_for_nonexistent_user ... ok
[INFO] [stdout] test data::db::driver::md::tests::test_new_db ... ok
[INFO] [stdout] test data::db::driver::md::tests::test_search_memo_ids_for_nonexistent_user ... ok
[INFO] [stdout] test data::db::driver::md::tests::test_update_nonexistent_user ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_delete_nonexistent_memo ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_create_memo ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_exists ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_delete_memo ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_get_nonexistent_memo ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_get_memo ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_new_creates_directory ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_get_ids ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_multi_user_isolation ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_search_ids_by_month ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_search_ids_by_day ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_search_ids_by_year ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_search_ids_by_text ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_search_ids_rejects_invalid_query ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_search_ids_orders_by_create_time_then_id_desc ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_search_ids_returns_empty_for_empty_candidates ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_search_ids_with_combined_filters ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_update_memo ... ok
[INFO] [stdout] test data::db::memo::md::tests::test_update_memo_tags ... ok
[INFO] [stdout] test data::db::user::json::tests::test_empty_username ... ok
[INFO] [stdout] test data::db::driver::md::tests::test_persistence ... ok
[INFO] [stdout] test data::db::driver::md::tests::test_create_memo ... ok
[INFO] [stdout] test data::db::driver::md::tests::test_delete_nonexistent_memo ... ok
[INFO] [stdout] test data::db::driver::md::tests::test_create_user ... ok
[INFO] [stdout] test data::db::driver::md::tests::test_memo_ids ... ok
[INFO] [stdout] test data::db::user::json::tests::test_invalid_json_format ... ok
[INFO] [stdout] test data::db::driver::md::tests::test_update_user_nickname ... ok
[INFO] [stdout] test data::db::driver::md::tests::test_get_memos ... ok
[INFO] [stdout] test data::models::claims::tests::test_create_refresh_token ... ok
[INFO] [stdout] test data::models::claims::tests::test_create_access_token ... ok
[INFO] [stdout] test data::models::claims::tests::test_encode_decode ... ok
[INFO] [stdout] test data::models::claims::tests::test_invalid_token ... ok
[INFO] [stdout] test data::db::driver::md::tests::test_delete_memo ... ok
[INFO] [stdout] test data::models::claims::tests::test_new_claims ... ok
[INFO] [stdout] test data::db::driver::md::tests::test_get_memo ... ok
[INFO] [stdout] test data::models::memo::tests::test_add_memo_info_serialization ... ok
[INFO] [stdout] test data::models::memo::tests::test_create_t ... ok
[INFO] [stdout] test data::models::memo::tests::test_from_add_info ... ok
[INFO] [stdout] test data::models::memo::tests::test_markdown_roundtrip_with_tags ... ok
[INFO] [stdout] test data::models::memo::tests::test_markdown_roundtrip_without_tags ... ok
[INFO] [stdout] test data::models::memo::tests::test_memo_serialization ... ok
[INFO] [stdout] test data::models::memo::tests::test_modify_t ... ok
[INFO] [stdout] test data::models::memo::tests::test_parse_invalid_markdown ... ok
[INFO] [stdout] test data::models::memo::tests::test_parse_markdown_with_tags ... ok
[INFO] [stdout] test data::models::memo::tests::test_parse_markdown_without_tags ... ok
[INFO] [stdout] test data::models::claims::tests::test_is_expired ... ok
[INFO] [stdout] test data::models::memo::tests::test_set_content ... ok
[INFO] [stdout] test data::models::memo::tests::test_to_markdown_with_tags ... ok
[INFO] [stdout] test data::models::memo::tests::test_to_markdown_without_tags ... ok
[INFO] [stdout] test data::models::memo::tests::test_upd_memo_info_serialization ... ok
[INFO] [stdout] test data::models::memo::tests::test_set_tags ... ok
[INFO] [stdout] test data::models::memo::tests::test_word_cnt ... ok
[INFO] [stdout] test data::models::memo_search::tests::test_combined_filters_use_and ... ok
[INFO] [stdout] test data::models::memo_search::tests::test_day_filter_matches ... ok
[INFO] [stdout] test data::models::memo_search::tests::test_empty_query_matches_all ... ok
[INFO] [stdout] test data::models::memo_search::tests::test_empty_text_filter_is_ignored ... ok
[INFO] [stdout] test data::models::memo_search::tests::test_month_filter_matches ... ok
[INFO] [stdout] test data::db::user::json::tests::test_add_user ... ok
[INFO] [stdout] test data::models::memo_search::tests::test_request_clamps_page_size ... ok
[INFO] [stdout] test data::models::memo_search::tests::test_paginate_uses_cursor ... ok
[INFO] [stdout] test data::models::memo_search::tests::test_tag_filter_matches_nested_tags ... ok
[INFO] [stdout] test data::models::memo_search::tests::test_text_filter_is_case_insensitive ... ok
[INFO] [stdout] test data::models::memo_search::tests::test_validate_rejects_invalid_cursor ... ok
[INFO] [stdout] test data::models::memo_search::tests::test_validate_rejects_invalid_day ... ok
[INFO] [stdout] test data::models::memo_search::tests::test_validate_rejects_invalid_month ... ok
[INFO] [stdout] test data::models::memo_search::tests::test_year_filter_matches ... ok
[INFO] [stdout] test data::models::user::tests::test_create_user_info_serialization ... ok
[INFO] [stdout] test data::models::memo::tests::test_update_memo ... ok
[INFO] [stdout] test data::db::user::json::tests::test_exists ... ok
[INFO] [stdout] test data::db::driver::md::tests::test_update_memo ... ok
[INFO] [stdout] test data::db::driver::md::tests::test_delete_user ... ok
[INFO] [stdout] test data::models::user::tests::test_validate_username_accepts_safe_ascii_names ... ok
[INFO] [stdout] test data::models::user::tests::test_validate_username_rejects_unsafe_names ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_add_memo ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_add_memo_no_tags ... ok
[INFO] [stdout] test data::db::driver::md::tests::test_update_nonexistent_memo ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_add_same_memo_multiple_times ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_complex_tag_hierarchy ... ok
[INFO] [stdout] test data::db::user::json::tests::test_delete_user ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_del_memo ... ok
[INFO] [stdout] test data::db::driver::md::tests::test_create_duplicate_user ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_get_memo_ids ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_get_memo_tags ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_get_tags ... ok
[INFO] [stdout] test data::db::user::json::tests::test_get_user ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_multiple_tag_deletion ... ok
[INFO] [stdout] test data::db::user::json::tests::test_update_nickname ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_new_tag_tree ... ok
[INFO] [stdout] test data::db::user::json::tests::test_file_persistence ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_upd_memo ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_upd_memo_no_change ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_upd_memo_to_no_tags ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_upd_tag ... ok
[INFO] [stdout] test data::db::user::json::tests::test_new_user_file ... ok
[INFO] [stdout] test data::models::user::tests::test_set_nickname ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_upd_tag_nonexistent ... ok
[INFO] [stdout] test data::models::user::tests::test_user_view_hides_password_hash ... ok
[INFO] [stdout] test data::models::user::tests::test_serialization ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_nested_tag_operations ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_empty_tags_handling ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_concurrent_tag_operations ... ok
[INFO] [stdout] test data::models::user::tests::test_create_user_without_nickname ... ok
[INFO] [stdout] test data::models::user::tests::test_create_user_with_nickname ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_save_async ... ok
[INFO] [stdout] test data::db::user::json::tests::test_get_all_users ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_build_async ... ok
[INFO] [stdout] test treebag::node::tests::test_bag_operations ... ok
[INFO] [stdout] test treebag::node::tests::test_child_management ... ok
[INFO] [stdout] test treebag::node::tests::test_comprehensive_tag_tree_scenario ... ok
[INFO] [stdout] test treebag::node::tests::test_duplicate_items_in_bag ... ok
[INFO] [stdout] test treebag::node::tests::test_empty_bag_operations ... ok
[INFO] [stdout] test treebag::node::tests::test_merge_bag ... ok
[INFO] [stdout] test treebag::node::tests::test_multiple_children_management ... ok
[INFO] [stdout] test treebag::node::tests::test_new_node ... ok
[INFO] [stdout] test treebag::node::tests::test_new_root ... ok
[INFO] [stdout] test treebag::node::tests::test_set_parent_id ... ok
[INFO] [stdout] test treebag::node::tests::test_take_bag ... ok
[INFO] [stdout] test treebag::tree::tests::test_add_item_creates_path ... ok
[INFO] [stdout] test treebag::tree::tests::test_add_item_multiple_paths ... ok
[INFO] [stdout] test treebag::tree::tests::test_add_item_single_path ... ok
[INFO] [stdout] test treebag::tree::tests::test_default_tree ... ok
[INFO] [stdout] test treebag::tree::tests::test_delete_item_nonexistent_item_is_noop ... ok
[INFO] [stdout] test treebag::tree::tests::test_delete_item_nonexistent_path ... ok
[INFO] [stdout] test treebag::tree::tests::test_delete_item_single_path ... ok
[INFO] [stdout] test treebag::tree::tests::test_get_bag_only_returns_current_node_items ... ok
[INFO] [stdout] test treebag::tree::tests::test_get_item_paths_multiple ... ok
[INFO] [stdout] test treebag::tree::tests::test_get_item_paths_nonexistent ... ok
[INFO] [stdout] test treebag::tree::tests::test_get_item_paths_returns_root_name_for_root_items ... ok
[INFO] [stdout] test treebag::tree::tests::test_get_item_paths_single ... ok
[INFO] [stdout] test treebag::tree::tests::test_get_items_includes_descendants ... ok
[INFO] [stdout] test treebag::tree::tests::test_get_items_nonexistent_path ... ok
[INFO] [stdout] test treebag::tree::tests::test_get_items_success ... ok
[INFO] [stdout] test treebag::tree::tests::test_merge_existing_paths_combines_items_and_children ... ok
[INFO] [stdout] test treebag::tree::tests::test_move_path_makes_old_path_unreachable ... ok
[INFO] [stdout] test treebag::tree::tests::test_move_path_recreate_old_path_does_not_alias ... ok
[INFO] [stdout] test treebag::tree::tests::test_new_tree ... ok
[INFO] [stdout] test treebag::tree::tests::test_path_multi_level ... ok
[INFO] [stdout] test routers::memo::tests::test_search_memo_ids_rejects_invalid_cursor ... ok
[INFO] [stdout] test treebag::tree::tests::test_path_root ... ok
[INFO] [stdout] test treebag::tree::tests::test_path_normalization_ignores_empty_segments ... ok
[INFO] [stdout] test treebag::tree::tests::test_path_single_level ... ok
[INFO] [stdout] test treebag::tree::tests::test_root_path_listed_when_root_bag_non_empty ... ok
[INFO] [stdout] test treebag::tree::tests::test_update_path_nonexistent ... ok
[INFO] [stdout] test treebag::tree::tests::test_update_path_to_ancestor ... ok
[INFO] [stdout] test treebag::tree::tests::test_update_path_to_descendant ... ok
[INFO] [stdout] test treebag::tree::tests::test_update_path_to_root ... ok
[INFO] [stdout] test treebag::tree::tests::test_update_path_success ... ok
[INFO] [stdout] test treebag::treeview::tests::test_empty_tree_view ... ok
[INFO] [stdout] test treebag::treeview::tests::test_tree_view_formatting ... ok
[INFO] [stdout] test treebag::treeview::tests::test_tree_view_structure ... ok
[INFO] [stdout] test treebag::treeview::tests::test_tree_view_deduplication ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_upd_tag_failure ... ok
[INFO] [stdout] test routers::memo::tests::test_search_memo_ids_rejects_invalid_query ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_upd_tag_and_save_async ... ok
[INFO] [stdout] test routers::memo::tests::test_search_memo_ids_returns_cursor_page ... ok
[INFO] [stdout] test routers::memo::tests::test_search_memo_ids_returns_matching_ids ... ok
[INFO] [stdout] test data::tagtree::tags::tests::test_large_tag_tree_performance ... ok
[INFO] [stdout] test routers::tests::patch_me_legacy_route_returns_not_found ... ok
[INFO] [stdout] test routers::tests::delete_me_removes_user_storage_directory ... ok
[INFO] [stdout] test routers::tests::register_login_me_and_refresh_flow_works ... ok
[INFO] [stdout] test routers::tests::put_tag_accepts_structured_payload ... ok
[INFO] [stdout] test routers::tests::patch_me_accepts_structured_json_body ... ok
[INFO] [stdout] test routers::tests::put_tag_rejects_legacy_string_payload ... ok
[INFO] [stdout] test data::models::claims::tests::test_different_tokens_for_same_user ... ok
[INFO] [stdout] test data::models::claims::tests::test_token_expiration ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 171 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.14s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "1df40dfced32982001af21596c3b7786aff851857af8bd547186ea0108eb02fd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1df40dfced32982001af21596c3b7786aff851857af8bd547186ea0108eb02fd", kill_on_drop: false }`
[INFO] [stdout] 1df40dfced32982001af21596c3b7786aff851857af8bd547186ea0108eb02fd
