[INFO] cloning repository https://github.com/wiseyoungbuck/supervillain-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/wiseyoungbuck/supervillain-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwiseyoungbuck%2Fsupervillain-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwiseyoungbuck%2Fsupervillain-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c85333ff3c844182ec3cf2a8c0f20e2048ad3c70
[INFO] testing wiseyoungbuck/supervillain-rs against try#28f95933dc0727396c07b48d0a8cb5211b7fb472 for pr-154065-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwiseyoungbuck%2Fsupervillain-rs" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/wiseyoungbuck/supervillain-rs
[INFO] finished tweaking git repo https://github.com/wiseyoungbuck/supervillain-rs
[INFO] tweaked toml for git repo https://github.com/wiseyoungbuck/supervillain-rs written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/wiseyoungbuck/supervillain-rs on toolchain 28f95933dc0727396c07b48d0a8cb5211b7fb472
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/wiseyoungbuck/supervillain-rs 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" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c656e1851dd98146f4e2365dd6bc095001892d6b8e93fe43bcaab4d3a4488e63
[INFO] running `Command { std: "docker" "start" "-a" "c656e1851dd98146f4e2365dd6bc095001892d6b8e93fe43bcaab4d3a4488e63", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c656e1851dd98146f4e2365dd6bc095001892d6b8e93fe43bcaab4d3a4488e63", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c656e1851dd98146f4e2365dd6bc095001892d6b8e93fe43bcaab4d3a4488e63", kill_on_drop: false }`
[INFO] [stdout] c656e1851dd98146f4e2365dd6bc095001892d6b8e93fe43bcaab4d3a4488e63
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ac83841091b0a5aa40a38015ddb9c20d4c4fc0e10ef381cde278d4ae50d63e05
[INFO] running `Command { std: "docker" "start" "-a" "ac83841091b0a5aa40a38015ddb9c20d4c4fc0e10ef381cde278d4ae50d63e05", kill_on_drop: false }`
[INFO] [stderr]    Compiling unicode-ident v1.0.23
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling zerocopy v0.8.47
[INFO] [stderr]    Compiling rustls v0.23.36
[INFO] [stderr]    Compiling parse-zoneinfo v0.3.1
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling regex-syntax v0.8.9
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling dtoa v1.0.11
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling webpki-roots v1.0.7
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]    Compiling phf v0.11.3
[INFO] [stderr]    Compiling dtoa-short v0.3.5
[INFO] [stderr]    Compiling iri-string v0.7.10
[INFO] [stderr]    Compiling phf_codegen v0.11.3
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling maplit v1.0.2
[INFO] [stderr]    Compiling matchit v0.8.4
[INFO] [stderr]    Compiling chrono-tz-build v0.3.0
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling syn v2.0.115
[INFO] [stderr]    Compiling string_cache_codegen v0.5.4
[INFO] [stderr]    Compiling chrono-tz v0.9.0
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling mail-builder v0.4.4
[INFO] [stderr]    Compiling web_atoms v0.1.3
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling uuid v1.23.1
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling rustls-webpki v0.103.9
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling rand v0.9.2
[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 displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling phf_macros v0.11.3
[INFO] [stderr]    Compiling match_token v0.35.0
[INFO] [stderr]    Compiling cssparser-macros v0.6.1
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling cssparser v0.35.0
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling string_cache v0.8.9
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling chrono v0.4.43
[INFO] [stderr]    Compiling markup5ever v0.35.0
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling html5ever v0.35.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling ammonia v4.1.2
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling vimmail v0.2.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 05s
[INFO] running `Command { std: "docker" "inspect" "ac83841091b0a5aa40a38015ddb9c20d4c4fc0e10ef381cde278d4ae50d63e05", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ac83841091b0a5aa40a38015ddb9c20d4c4fc0e10ef381cde278d4ae50d63e05", kill_on_drop: false }`
[INFO] [stdout] ac83841091b0a5aa40a38015ddb9c20d4c4fc0e10ef381cde278d4ae50d63e05
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c432701c278abf5baca0cd135c6889a667d9d3c69136b49565447e43611cd88b
[INFO] running `Command { std: "docker" "start" "-a" "c432701c278abf5baca0cd135c6889a667d9d3c69136b49565447e43611cd88b", kill_on_drop: false }`
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling tempfile v3.25.0
[INFO] [stderr]    Compiling mail-builder v0.4.4
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling vimmail v0.2.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: function `loadEmails_renders_cached_snapshot_before_network_refresh` should have a snake case name
[INFO] [stdout]     --> src/routes.rs:1614:8
[INFO] [stdout]      |
[INFO] [stdout] 1614 |     fn loadEmails_renders_cached_snapshot_before_network_refresh() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `load_emails_renders_cached_snapshot_before_network_refresh`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 54.34s
[INFO] running `Command { std: "docker" "inspect" "c432701c278abf5baca0cd135c6889a667d9d3c69136b49565447e43611cd88b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c432701c278abf5baca0cd135c6889a667d9d3c69136b49565447e43611cd88b", kill_on_drop: false }`
[INFO] [stdout] c432701c278abf5baca0cd135c6889a667d9d3c69136b49565447e43611cd88b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 0d9c415ee82c36729d052be7e13bb39da7f7e0085e023c9b76580a9b6eb25a39
[INFO] running `Command { std: "docker" "start" "-a" "0d9c415ee82c36729d052be7e13bb39da7f7e0085e023c9b76580a9b6eb25a39", kill_on_drop: false }`
[INFO] [stderr] warning: function `loadEmails_renders_cached_snapshot_before_network_refresh` should have a snake case name
[INFO] [stderr]     --> src/routes.rs:1614:8
[INFO] [stderr]      |
[INFO] [stderr] 1614 |     fn loadEmails_renders_cached_snapshot_before_network_refresh() {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `load_emails_renders_cached_snapshot_before_network_refresh`
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `vimmail` (lib test) generated 1 warning
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.39s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/vimmail-1eecbde8a0057900)
[INFO] [stdout] 
[INFO] [stdout] running 884 tests
[INFO] [stdout] test accounts::tests::delete_last_account_clears_default ... ok
[INFO] [stdout] test accounts::tests::delete_promotes_first_remaining_account_to_default ... ok
[INFO] [stdout] test accounts::tests::parse_hostile_provider_string_does_not_reach_ui ... ok
[INFO] [stdout] test accounts::tests::parse_rejects_path_traversal_section_names ... ok
[INFO] [stdout] test accounts::tests::parse_missing_provider_key_is_reported_distinctly ... ok
[INFO] [stdout] test accounts::tests::parse_reports_typoed_key_as_missing_field ... ok
[INFO] [stdout] test accounts::tests::parse_skips_account_with_missing_required_fields ... ok
[INFO] [stdout] test accounts::tests::parse_then_serialize_idempotent ... ok
[INFO] [stdout] test accounts::tests::registry_promote_default_when_empty_helper_idempotent ... ok
[INFO] [stdout] test accounts::tests::delete_non_default_account_leaves_default_alone ... ok
[INFO] [stdout] test accounts::tests::parse_unknown_provider_is_reported_with_placeholder ... ok
[INFO] [stdout] test accounts::tests::serialize_emits_default_account_before_sections ... ok
[INFO] [stdout] test accounts::tests::serialize_round_trips_all_three_providers ... ok
[INFO] [stdout] test accounts::tests::atomic_write_creates_file_with_mode_600 ... ok
[INFO] [stdout] test accounts::tests::serialize_sorts_sections_and_keys_for_diff_stability ... ok
[INFO] [stdout] test accounts::tests::set_default_rejects_unknown_account ... ok
[INFO] [stdout] test accounts::tests::registry_snapshot_roundtrips_through_disk ... ok
[INFO] [stdout] test accounts::tests::atomic_write_does_not_leave_tmp_on_success ... ok
[INFO] [stdout] test accounts::tests::startup_errors_mixed_sources_preserve_order ... ok
[INFO] [stdout] test accounts::tests::serde_rejects_unknown_provider_and_missing_required_fields ... ok
[INFO] [stdout] test accounts::tests::set_default_idempotent_returns_ok ... ok
[INFO] [stdout] test accounts::tests::startup_errors_combine_all_three_sources_with_resolved_paths ... ok
[INFO] [stdout] test accounts::tests::startup_errors_empty_when_everything_is_clean ... ok
[INFO] [stdout] test accounts::tests::authorize_releases_lock_on_oauth_error ... ok
[INFO] [stdout] test accounts::tests::authorize_acquires_global_lock_then_releases ... ok
[INFO] [stdout] test accounts::tests::upsert_update_preserves_secrets_when_field_absent ... ok
[INFO] [stdout] test accounts::tests::authorize_returns_409_when_already_in_progress ... ok
[INFO] [stdout] test accounts::tests::validate_account_aggregates_field_errors_in_dom_order ... ok
[INFO] [stdout] test accounts::tests::validate_email_accepts_simple_rejects_missing_at_and_whitespace ... ok
[INFO] [stdout] test accounts::tests::validate_section_name_rejects_brackets_newlines_and_empty ... ok
[INFO] [stdout] test accounts::tests::upsert_update_path_rejects_provider_change_via_id ... ok
[INFO] [stdout] test calendar::tests::decline_rsvp_still_contains_event_metadata ... ok
[INFO] [stdout] test calendar::tests::datetime_property_prefix_not_confused ... ok
[INFO] [stdout] test calendar::tests::cancel_method_parsed_correctly ... ok
[INFO] [stdout] test calendar::tests::invite_emits_tzid_dtstart_and_vtimezone ... ok
[INFO] [stdout] test calendar::tests::invite_quotes_cn_containing_param_terminators ... ok
[INFO] [stdout] test calendar::tests::invite_roundtrips_through_parser ... ok
[INFO] [stdout] test calendar::tests::invite_with_crlf_in_attendee_name_does_not_inject_property ... ok
[INFO] [stdout] test calendar::tests::lifecycle_cancel_method_not_request ... ok
[INFO] [stdout] test accounts::tests::atomic_write_replaces_existing_atomically ... ok
[INFO] [stdout] test calendar::tests::no_method_defaults_not_request ... ok
[INFO] [stdout] test calendar::tests::no_status_preserves_method ... ok
[INFO] [stdout] test calendar::tests::parse_all_day_event ... ok
[INFO] [stdout] test calendar::tests::parse_attendee_without_cn ... ok
[INFO] [stdout] test calendar::tests::lifecycle_rsvp_reply_never_triggers_auto_add ... ok
[INFO] [stdout] test calendar::tests::parse_attendees ... ok
[INFO] [stdout] test calendar::tests::parse_dtstart_value ... ok
[INFO] [stdout] test calendar::tests::parse_invalid_ics_returns_none ... ok
[INFO] [stdout] test calendar::tests::parse_method ... ok
[INFO] [stdout] test calendar::tests::parse_basic_event ... ok
[INFO] [stdout] test calendar::tests::parse_floating_time_uses_local_tz ... ok
[INFO] [stdout] test calendar::tests::parse_missing_location ... ok
[INFO] [stdout] test calendar::tests::parse_no_uid_returns_none ... ok
[INFO] [stdout] test calendar::tests::parse_organizer_name ... ok
[INFO] [stdout] test calendar::tests::parse_preserves_raw_ics ... ok
[INFO] [stdout] test calendar::tests::parse_missing_dtend ... ok
[INFO] [stdout] test calendar::tests::parse_tzid_converts_to_utc ... ok
[INFO] [stdout] test calendar::tests::parse_no_vevent_returns_none ... ok
[INFO] [stdout] test calendar::tests::parse_organizer_email ... ok
[INFO] [stdout] test accounts::tests::atomic_write_seq_disambiguates_concurrent_tmpfiles ... ok
[INFO] [stdout] test calendar::tests::parse_tzid_positive_offset ... ok
[INFO] [stdout] test calendar::tests::parse_utc_offset_various_formats ... ok
[INFO] [stdout] test calendar::tests::parse_tzid_uses_dst_when_event_in_summer ... ok
[INFO] [stdout] test calendar::tests::parse_tzid_uses_standard_when_event_in_winter ... ok
[INFO] [stdout] test calendar::tests::parse_utc_z_suffix_unchanged ... ok
[INFO] [stdout] test calendar::tests::reply_method_not_request ... ok
[INFO] [stdout] test calendar::tests::parse_vtimezone_offsets_extracts_multiple ... ok
[INFO] [stdout] test calendar::tests::rsvp_always_produces_reply_method ... ok
[INFO] [stdout] test calendar::tests::property_prefix_not_confused_with_longer_name ... ok
[INFO] [stdout] test calendar::tests::rsvp_attendee_accepted ... ok
[INFO] [stdout] test calendar::tests::rsvp_declined ... ok
[INFO] [stdout] test calendar::tests::rsvp_is_parseable ... ok
[INFO] [stdout] test calendar::tests::rsvp_includes_uid ... ok
[INFO] [stdout] test calendar::tests::rsvp_includes_organizer ... ok
[INFO] [stdout] test calendar::tests::rsvp_method_reply ... ok
[INFO] [stdout] test calendar::tests::rsvp_no_dtend ... ok
[INFO] [stdout] test calendar::tests::rsvp_preserves_cn ... ok
[INFO] [stdout] test calendar::tests::rsvp_unknown_attendee ... ok
[INFO] [stdout] test calendar::tests::rsvp_with_tz_emits_tzid_not_z ... ok
[INFO] [stdout] test calendar::tests::rsvp_tentative ... ok
[INFO] [stdout] test calendar::tests::rsvp_with_crlf_in_organizer_does_not_inject_property ... ok
[INFO] [stdout] test calendar::tests::parse_user_rsvp_status_is_none ... ok
[INFO] [stdout] test calendar::tests::status_cancelled_normalizes_method_to_cancel ... ok
[INFO] [stdout] test calendar::tests::rsvp_with_tz_roundtrip_preserves_instant ... ok
[INFO] [stdout] test calendar::tests::strip_method_crlf_line_endings ... ok
[INFO] [stdout] test calendar::tests::strip_method_no_method_unchanged ... ok
[INFO] [stdout] test calendar::tests::strip_method_removes_method_request ... ok
[INFO] [stdout] test calendar::tests::uid_with_special_chars_survives_rsvp ... ok
[INFO] [stdout] test calendar::tests::status_confirmed_preserves_method ... ok
[INFO] [stdout] test calendar::tests::uid_stable_through_full_rsvp_lifecycle ... ok
[INFO] [stdout] test calendar::tests::vtimezone_includes_x_lic_location ... ok
[INFO] [stdout] test error::tests::auth_error_does_not_leak_token ... ok
[INFO] [stdout] test error::tests::auth_error_returns_401 ... ok
[INFO] [stdout] test calendar::tests::update_partstat_no_match_returns_unchanged ... ok
[INFO] [stdout] test error::tests::internal_error_does_not_leak_details ... ok
[INFO] [stdout] test error::tests::bad_request_returns_400 ... ok
[INFO] [stdout] test error::tests::internal_error_returns_500 ... ok
[INFO] [stdout] test error::tests::network_error_returns_500 ... ok
[INFO] [stdout] test error::tests::network_error_does_not_leak_details ... ok
[INFO] [stdout] test error::tests::not_found_returns_404 ... ok
[INFO] [stdout] test error::tests::not_connected_returns_503 ... ok
[INFO] [stdout] test error::tests::rate_limited_echoes_retry_after_header ... ok
[INFO] [stdout] test error::tests::rate_limited_no_retry_after_omits_header ... ok
[INFO] [stdout] test glob::tests::case_insensitive ... ok
[INFO] [stdout] test error::tests::rate_limited_returns_429 ... ok
[INFO] [stdout] test glob::tests::empty_pattern_does_not_match_nonempty ... ok
[INFO] [stdout] test glob::tests::empty_pattern_matches_empty_string ... ok
[INFO] [stdout] test glob::tests::exact_match ... ok
[INFO] [stdout] test glob::tests::nested_star_wildcard ... ok
[INFO] [stdout] test glob::tests::no_match ... ok
[INFO] [stdout] test glob::tests::prefix_star_matches ... ok
[INFO] [stdout] test glob::tests::question_mark_matches_single_char ... ok
[INFO] [stdout] test glob::tests::star_at_domain_does_not_match_other ... ok
[INFO] [stdout] test glob::tests::star_at_domain_matches ... ok
[INFO] [stdout] test glob::tests::star_matches_anything ... ok
[INFO] [stdout] test gmail::tests::auth_url_lists_exactly_three_scopes ... ok
[INFO] [stdout] test gmail::tests::auth_url_contains_required_params ... ok
[INFO] [stdout] test gmail::tests::batch_modify_body_includes_ids ... ok
[INFO] [stdout] test gmail::tests::build_mailboxes_excludes_starred_and_important ... ok
[INFO] [stdout] test gmail::tests::build_mailboxes_nested_orphan_no_parent ... ok
[INFO] [stdout] test gmail::tests::build_mailboxes_nested_user_label_gets_parent_id ... ok
[INFO] [stdout] test gmail::tests::build_rfc822_multiple_recipients ... ok
[INFO] [stdout] test gmail::tests::build_rfc822_bcc_included_in_headers ... ok
[INFO] [stdout] test gmail::tests::build_rfc822_reply_includes_in_reply_to_and_references ... ok
[INFO] [stdout] test gmail::tests::build_rfc822_text_and_html_uses_alternative ... ok
[INFO] [stdout] test calendar::tests::update_partstat_handles_folded_attendee ... ok
[INFO] [stdout] test calendar::tests::update_partstat_case_insensitive_email ... ok
[INFO] [stdout] test gmail::tests::classify_401_returns_bad_request ... ok
[INFO] [stdout] test gmail::tests::classify_403_returns_bad_request ... ok
[INFO] [stdout] test gmail::tests::classify_503_returns_internal ... ok
[INFO] [stdout] test gmail::tests::classify_5xx_returns_internal ... ok
[INFO] [stdout] test gmail::tests::build_rfc822_text_only_has_required_headers ... ok
[INFO] [stdout] test gmail::tests::build_rfc822_with_attachment_becomes_multipart_mixed ... ok
[INFO] [stdout] test gmail::tests::classify_includes_operation_status_and_body ... ok
[INFO] [stdout] test gmail::tests::classify_4xx_returns_bad_request ... ok
[INFO] [stdout] test gmail::tests::classify_rate_limit_returns_rate_limited_variant ... ok
[INFO] [stdout] test gmail::tests::clear_stored_tokens_removes_from_store ... ok
[INFO] [stdout] test gmail::tests::exclude_system_keyword_labels ... ok
[INFO] [stdout] test gmail::tests::drain_consumed_synthetic_blobs_removes_only_synthetic_entries ... ok
[INFO] [stdout] test gmail::tests::download_blob_rejects_synthetic_blob_ref ... ok
[INFO] [stdout] test gmail::tests::extract_message_id_bracketed ... ok
[INFO] [stdout] test gmail::tests::extract_message_id_unbracketed_passes_through ... ok
[INFO] [stdout] test gmail::tests::find_calendar_ics_at_root ... ok
[INFO] [stdout] test gmail::tests::extract_message_id_with_whitespace_and_comment ... ok
[INFO] [stdout] test gmail::tests::find_calendar_ics_case_insensitive_mime ... ok
[INFO] [stdout] test gmail::tests::find_calendar_ics_nested_in_multipart ... ok
[INFO] [stdout] test gmail::tests::find_calendar_ics_returns_none_when_absent ... ok
[INFO] [stdout] test gmail::tests::find_calendar_ics_pre_order_returns_first_when_siblings_match ... ok
[INFO] [stdout] test gmail::tests::gmail_limiter_is_configured_for_per_user_throttling ... ok
[INFO] [stdout] test gmail::tests::google_json_attendee_status_translated ... ok
[INFO] [stdout] test gmail::tests::google_json_defaults_end_to_one_hour_when_missing ... ok
[INFO] [stdout] test gmail::tests::google_json_has_required_fields ... ok
[INFO] [stdout] test gmail::tests::google_json_includes_location_when_set ... ok
[INFO] [stdout] test gmail::tests::google_json_omits_attendees_when_empty ... ok
[INFO] [stdout] test gmail::tests::google_json_omits_empty_description ... ok
[INFO] [stdout] test gmail::tests::google_json_omits_empty_location ... ok
[INFO] [stdout] test gmail::tests::google_json_omits_organizer_display_name_when_absent ... ok
[INFO] [stdout] test gmail::tests::extract_message_id_empty ... ok
[INFO] [stdout] test gmail::tests::google_json_omits_organizer_display_name_when_empty_string ... ok
[INFO] [stdout] test calendar::tests::update_partstat_preserves_other_attendees ... ok
[INFO] [stdout] test gmail::tests::google_to_ics_status_mapping ... ok
[INFO] [stdout] test gmail::tests::ics_to_google_status_mapping ... ok
[INFO] [stdout] test gmail::tests::include_system_folder_labels ... ok
[INFO] [stdout] test gmail::tests::find_calendar_ics_handles_deep_nesting_without_stack_overflow ... ok
[INFO] [stdout] test gmail::tests::is_displayable_label_id_predicate ... ok
[INFO] [stdout] test gmail::tests::include_user_labels_always ... ok
[INFO] [stdout] test calendar::tests::update_partstat_changes_matching_attendee ... ok
[INFO] [stdout] test gmail::tests::label_to_role_system_inbox ... ok
[INFO] [stdout] test gmail::tests::label_to_role_system_sent ... ok
[INFO] [stdout] test gmail::tests::label_to_role_system_trash ... ok
[INFO] [stdout] test gmail::tests::label_to_role_user_label_no_role ... ok
[INFO] [stdout] test gmail::tests::looks_like_message_id_canonical_form ... ok
[INFO] [stdout] test gmail::tests::looks_like_message_id_empty_rejected ... ok
[INFO] [stdout] test gmail::tests::looks_like_message_id_handles_leading_whitespace ... ok
[INFO] [stdout] test gmail::tests::looks_like_message_id_gmail_id_rejected ... ok
[INFO] [stdout] test gmail::tests::looks_like_message_id_unbracketed_rejected ... ok
[INFO] [stdout] test gmail::tests::mailbox_ids_excludes_category_labels ... ok
[INFO] [stdout] test gmail::tests::label_to_role_system_starred_no_role ... ok
[INFO] [stdout] test gmail::tests::mailbox_ids_excludes_starred_pseudo_label ... ok
[INFO] [stdout] test gmail::tests::mailbox_ids_excludes_important_and_chat ... ok
[INFO] [stdout] test gmail::tests::mailbox_ids_includes_user_labels ... ok
[INFO] [stdout] test gmail::tests::mailbox_ids_excludes_unread_pseudo_label ... ok
[INFO] [stdout] test gmail::tests::label_to_role_system_spam ... ok
[INFO] [stdout] test gmail::tests::mime_path_renders_nested_tree_with_siblings ... ok
[INFO] [stdout] test gmail::tests::mime_path_renders_flat_leaf ... ok
[INFO] [stdout] test gmail::tests::modify_body_with_empty_add_or_remove_keeps_empty_array ... ok
[INFO] [stdout] test gmail::tests::move_plan_rejects_draft_and_sent ... ok
[INFO] [stdout] test gmail::tests::move_plan_rejects_spam ... ok
[INFO] [stdout] test gmail::tests::move_plan_trash_routes_to_trash_endpoint ... ok
[INFO] [stdout] test gmail::tests::move_plan_user_label_adds_target_removes_inbox ... ok
[INFO] [stdout] test gmail::tests::mutate_attendee_status_preserves_other_fields ... ok
[INFO] [stdout] test gmail::tests::modify_body_includes_both_label_arrays ... ok
[INFO] [stdout] test gmail::tests::mutate_attendee_status_case_insensitive_match ... ok
[INFO] [stdout] test calendar::tests::lifecycle_parse_never_sets_user_rsvp_status ... ok
[INFO] [stdout] test calendar::tests::lifecycle_rsvp_response_matches_persisted_status ... ok
[INFO] [stdout] test calendar::tests::lifecycle_re_rsvp_decline_then_accept ... ok
[INFO] [stdout] test calendar::tests::update_partstat_preserves_full_ics ... ok
[INFO] [stdout] test calendar::tests::lifecycle_rsvp_does_not_clobber_other_attendees ... ok
[INFO] [stdout] test gmail::tests::mutate_attendee_status_returns_false_when_email_absent ... ok
[INFO] [stdout] test calendar::tests::lifecycle_accept_persists_and_reads_back ... ok
[INFO] [stdout] test gmail::tests::parse_address_with_name ... ok
[INFO] [stdout] test gmail::tests::mutate_attendee_status_updates_match ... ok
[INFO] [stdout] test gmail::tests::parse_address_with_quoted_name ... ok
[INFO] [stdout] test calendar::tests::lifecycle_change_accept_to_decline ... ok
[INFO] [stdout] test gmail::tests::next_page_start_none_yields_end ... ok
[INFO] [stdout] test gmail::tests::parse_address_quoted_comma_is_currently_mis_parsed ... ok
[INFO] [stdout] test gmail::tests::parse_google_event_handles_all_day_date ... ok
[INFO] [stdout] test calendar::tests::lifecycle_uid_stable_through_rsvp_changes ... ok
[INFO] [stdout] test gmail::tests::parse_address_bare_email ... ok
[INFO] [stdout] test gmail::tests::parse_google_event_full ... ok
[INFO] [stdout] test gmail::tests::parse_google_event_attendee_missing_email_skipped ... ok
[INFO] [stdout] test gmail::tests::parse_message_attachment_in_mixed_not_skipped_even_if_inline ... ok
[INFO] [stdout] test gmail::tests::parse_message_inline_image_in_related_skipped ... ok
[INFO] [stdout] test gmail::tests::parse_message_nested_related_alternative_extracts_both_bodies ... ok
[INFO] [stdout] test gmail::tests::parse_google_event_empty_optional_fields_treated_as_none ... ok
[INFO] [stdout] test gmail::tests::parse_message_internal_date_parses_to_received_at ... ok
[INFO] [stdout] test gmail::tests::parse_message_starred_label_sets_flagged ... ok
[INFO] [stdout] test gmail::tests::next_page_start_some_token_yields_with ... ok
[INFO] [stdout] test gmail::tests::move_plan_inbox_restores_by_removing_trash_and_spam ... ok
[INFO] [stdout] test gmail::tests::parse_google_event_maps_all_attendee_statuses ... ok
[INFO] [stdout] test accounts::tests::registry_delete_then_snapshot_promotes_first_remaining ... ok
[INFO] [stdout] test gmail::tests::parse_address_list_multiple ... ok
[INFO] [stdout] test gmail::tests::parse_google_event_missing_start_returns_none ... ok
[INFO] [stdout] test gmail::tests::parse_message_text_and_html_alternative ... ok
[INFO] [stdout] test gmail::tests::parse_message_with_attachment ... ok
[INFO] [stdout] test gmail::tests::parse_message_with_calendar_invite ... ok
[INFO] [stdout] test gmail::tests::q_translator_combined_query_space_joined ... ok
[INFO] [stdout] test gmail::tests::parse_message_text_only ... ok
[INFO] [stdout] test gmail::tests::peek_blob_bytes_does_not_consume_synthetic ... ok
[INFO] [stdout] test gmail::tests::q_translator_dates_use_slashes_not_dashes ... ok
[INFO] [stdout] test gmail::tests::q_translator_empty ... ok
[INFO] [stdout] test gmail::tests::q_translator_email_with_plus_unquoted ... ok
[INFO] [stdout] test gmail::tests::q_translator_free_text_passthrough ... ok
[INFO] [stdout] test gmail::tests::q_translator_escapes_inner_quote ... ok
[INFO] [stdout] test gmail::tests::q_translator_is_unread ... ok
[INFO] [stdout] test gmail::tests::q_translator_has_attachment ... ok
[INFO] [stdout] test gmail::tests::q_translator_quotes_subject_with_colon ... ok
[INFO] [stdout] test gmail::tests::q_translator_multiple_from_ands ... ok
[INFO] [stdout] test gmail::tests::q_translator_quotes_whitespace_value ... ok
[INFO] [stdout] test gmail::tests::rate_limited_detects_403_quota_body ... ok
[INFO] [stdout] test gmail::tests::rate_limited_ignores_plain_403 ... ok
[INFO] [stdout] test gmail::tests::rate_limited_detects_429 ... ok
[INFO] [stdout] test gmail::tests::q_translator_single_from ... ok
[INFO] [stdout] test gmail::tests::record_page_fetched_overwrites_existing_slot ... ok
[INFO] [stdout] test gmail::tests::record_page_fetched_seeds_next_slot_with_token ... ok
[INFO] [stdout] test gmail::tests::status_mapping_round_trips_for_known_values ... ok
[INFO] [stdout] test jmap::tests::attendee_status_case_insensitive_email ... ok
[INFO] [stdout] test jmap::tests::attendee_status_finds_accepted ... ok
[INFO] [stdout] test gmail::tests::upload_blob_roundtrips_through_blob_ref ... ok
[INFO] [stdout] test gmail::tests::upload_blob_cap_rejects_after_32_entries ... ok
[INFO] [stdout] test gmail::tests::record_page_fetched_grows_cache_with_end_padding ... ok
[INFO] [stdout] test gmail::tests::record_page_fetched_none_yields_end_sentinel_not_first ... ok
[INFO] [stdout] test jmap::tests::attendee_status_finds_needs_action ... ok
[INFO] [stdout] test gmail::tests::rate_limited_ignores_other_4xx ... ok
[INFO] [stdout] test jmap::tests::collect_inline_cids_finds_cid_parts ... ok
[INFO] [stdout] test gmail::tests::upload_blob_rejects_oversized_per_blob ... ok
[INFO] [stdout] test jmap::tests::attendee_status_finds_tentative ... ok
[INFO] [stdout] test jmap::tests::collect_inline_cids_null_returns_empty ... ok
[INFO] [stdout] test jmap::tests::collect_inline_cids_skips_parts_without_cid ... ok
[INFO] [stdout] test jmap::tests::attendee_status_invalid_ics_returns_none ... ok
[INFO] [stdout] test jmap::tests::attendee_status_unknown_email_returns_none ... ok
[INFO] [stdout] test jmap::tests::body_structure_part_defaults_on_missing_fields ... ok
[INFO] [stdout] test jmap::tests::body_structure_part_from_jmap ... ok
[INFO] [stdout] test jmap::tests::body_structure_part_handles_null_size_and_sub_parts ... ok
[INFO] [stdout] test jmap::tests::case_insensitive_filename ... ok
[INFO] [stdout] test jmap::tests::case_insensitive_mime ... ok
[INFO] [stdout] test jmap::tests::detect_nested_calendar ... ok
[INFO] [stdout] test jmap::tests::detect_text_calendar_mime ... ok
[INFO] [stdout] test jmap::tests::draft_calendar_body_value_contains_ics ... ok
[INFO] [stdout] test jmap::tests::draft_calendar_with_attachment_appends ... ok
[INFO] [stdout] test jmap::tests::draft_forward_includes_mailbox_ids ... ok
[INFO] [stdout] test jmap::tests::collect_inline_cids_defaults_name_to_inline ... ok
[INFO] [stdout] test jmap::tests::detect_ics_filename ... ok
[INFO] [stdout] test jmap::tests::draft_multiple_attachments ... ok
[INFO] [stdout] test jmap::tests::draft_no_attachments_unchanged ... ok
[INFO] [stdout] test jmap::tests::draft_omits_empty_cc_and_bcc ... ok
[INFO] [stdout] test jmap::tests::draft_includes_mailbox_ids ... ok
[INFO] [stdout] test jmap::tests::draft_reply_includes_mailbox_ids ... ok
[INFO] [stdout] test jmap::tests::draft_sets_from_to_subject_body ... ok
[INFO] [stdout] test jmap::tests::draft_text_only_when_no_html_body ... ok
[INFO] [stdout] test jmap::tests::draft_html_with_attachment_wraps_in_mixed ... ok
[INFO] [stdout] test jmap::tests::draft_includes_cc_and_bcc_when_present ... ok
[INFO] [stdout] test jmap::tests::draft_text_with_attachment_wraps_in_mixed ... ok
[INFO] [stdout] test jmap::tests::draft_with_calendar_ics_has_multipart_mixed ... ok
[INFO] [stdout] test jmap::tests::drafts_mailbox_lookup_succeeds ... ok
[INFO] [stdout] test jmap::tests::empty_object_returns_none ... ok
[INFO] [stdout] test jmap::tests::find_attachments_inline_in_mixed_included ... ok
[INFO] [stdout] test jmap::tests::find_attachments_leaf_with_empty_subparts ... ok
[INFO] [stdout] test jmap::tests::find_attachments_by_filename_without_disposition ... ok
[INFO] [stdout] test jmap::tests::draft_multipart_when_html_body_present ... ok
[INFO] [stdout] test jmap::tests::find_attachments_deeply_nested ... ok
[INFO] [stdout] test jmap::tests::find_attachments_inline_skipped_in_related ... ok
[INFO] [stdout] test jmap::tests::find_attachments_mixed_inside_related_not_suppressed ... ok
[INFO] [stdout] test jmap::tests::find_attachments_no_blob_id_skipped ... ok
[INFO] [stdout] test jmap::tests::find_attachments_pdf_with_disposition ... ok
[INFO] [stdout] test jmap::tests::find_attachments_nested_multipart ... ok
[INFO] [stdout] test jmap::tests::find_attachments_null_returns_empty ... ok
[INFO] [stdout] test jmap::tests::jmap_email_raw_deserializes_with_only_split_count_properties ... ok
[INFO] [stdout] test jmap::tests::jmap_email_raw_handles_explicit_null_fields ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_attachment ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_date_after ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_date_before ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_unread ... ok
[INFO] [stdout] test jmap::tests::no_calendar_returns_none ... ok
[INFO] [stdout] test jmap::tests::null_body_returns_none ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_empty ... ok
[INFO] [stdout] test jmap::tests::drafts_mailbox_lookup_fails_when_missing ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_flagged ... ok
[INFO] [stdout] test jmap::tests::draft_without_calendar_ics_unchanged ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_mailbox_only ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_multiple_conditions_uses_and ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_from ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_text ... ok
[INFO] [stdout] test jmap::tests::parse_both_text_and_html_single_parts ... ok
[INFO] [stdout] test jmap::tests::parse_email_no_cid_unchanged ... ok
[INFO] [stdout] test jmap::tests::parse_multiple_html_body_parts_concatenated ... ok
[INFO] [stdout] test jmap::tests::parse_email_resolves_cid_urls ... ok
[INFO] [stdout] test jmap::tests::parse_email_cid_with_special_filename ... ok
[INFO] [stdout] test jmap::tests::parse_single_text_body_part ... ok
[INFO] [stdout] test jmap::tests::parse_multiple_text_body_parts_concatenated ... ok
[INFO] [stdout] test jmap::tests::parse_no_body_when_fetch_body_false ... ok
[INFO] [stdout] test jmap::tests::percent_encode_path_passes_safe_chars ... ok
[INFO] [stdout] test jmap::tests::percent_encode_path_encodes_spaces_and_special ... ok
[INFO] [stdout] test jmap::tests::parse_single_html_body_part ... ok
[INFO] [stdout] test jmap::tests::replace_case_insensitive_basic ... ok
[INFO] [stdout] test jmap::tests::replace_case_insensitive_mixed_case ... ok
[INFO] [stdout] test jmap::tests::replace_case_insensitive_multiple_occurrences ... ok
[INFO] [stdout] test jmap::tests::top_level_calendar ... ok
[INFO] [stdout] test jmap::tests::replace_case_insensitive_no_match ... ok
[INFO] [stdout] test jmap::tests::uuid_v4_format ... ok
[INFO] [stdout] test jmap::tests::uuid_v4_variant_bits ... ok
[INFO] [stdout] test jmap::tests::uuid_v4_unique ... ok
[INFO] [stdout] test jmap::tests::uuid_v4_version_bits ... ok
[INFO] [stdout] test oauth::tests::code_challenge_rfc7636_appendix_b ... ok
[INFO] [stdout] test oauth::tests::code_challenge_is_base64url ... ok
[INFO] [stdout] test oauth::tests::sha256_empty ... ok
[INFO] [stdout] test oauth::tests::sha256_hello ... ok
[INFO] [stdout] test outlook::tests::build_graph_event_basic ... ok
[INFO] [stdout] test oauth::tests::sha256_multiblock ... ok
[INFO] [stdout] test oauth::tests::code_verifier_length_and_charset ... ok
[INFO] [stdout] test outlook::tests::build_graph_event_no_location_omits_field ... ok
[INFO] [stdout] test outlook::tests::auth_url_contains_required_params ... ok
[INFO] [stdout] test outlook::tests::chunk_batch_21_spans_two_chunks ... ok
[INFO] [stdout] test outlook::tests::build_graph_event_with_attendees ... ok
[INFO] [stdout] test outlook::tests::chunk_batch_50_spans_three_chunks ... ok
[INFO] [stdout] test outlook::tests::chunk_batch_exactly_20_returns_one_chunk ... ok
[INFO] [stdout] test outlook::tests::chunk_batch_empty_returns_no_chunks ... ok
[INFO] [stdout] test outlook::tests::classify_outlook_404_returns_bad_request ... ok
[INFO] [stdout] test outlook::tests::classify_outlook_429_returns_rate_limited ... ok
[INFO] [stdout] test outlook::tests::build_graph_event_no_end_defaults_to_one_hour ... ok
[INFO] [stdout] test outlook::tests::classify_outlook_401_returns_bad_request ... ok
[INFO] [stdout] test outlook::tests::classify_outlook_4xx_returns_bad_request ... ok
[INFO] [stdout] test outlook::tests::classify_outlook_503_returns_rate_limited ... ok
[INFO] [stdout] test outlook::tests::classify_outlook_5xx_returns_internal ... ok
[INFO] [stdout] test outlook::tests::classify_outlook_includes_operation_and_status_in_message ... ok
[INFO] [stdout] test outlook::tests::cleanup_already_gone_message_warns_about_sent_items ... ok
[INFO] [stdout] test outlook::tests::cleanup_deleted_returns_original_send_error_unchanged ... ok
[INFO] [stdout] test outlook::tests::graph_message_html_body_uses_html_contenttype ... ok
[INFO] [stdout] test outlook::tests::graph_message_includes_bcc_recipients_when_set ... ok
[INFO] [stdout] test outlook::tests::flag_body_not_flagged ... ok
[INFO] [stdout] test outlook::tests::flag_body_flagged ... ok
[INFO] [stdout] test outlook::tests::drain_consumed_synthetic_blobs_removes_only_synthetic_entries ... ok
[INFO] [stdout] test outlook::tests::cleanup_failed_message_names_the_orphan_draft ... ok
[INFO] [stdout] test outlook::tests::graph_message_includes_from_name_when_provided ... ok
[INFO] [stdout] test outlook::tests::graph_message_includes_from_when_provided ... ok
[INFO] [stdout] test outlook::tests::graph_message_inlines_attachments_as_file_attachment ... ok
[INFO] [stdout] test outlook::tests::graph_message_multiple_to_recipients ... ok
[INFO] [stdout] test outlook::tests::graph_message_omits_attachments_when_resolved_empty ... ok
[INFO] [stdout] test outlook::tests::graph_message_omits_bcc_when_none ... ok
[INFO] [stdout] test outlook::tests::graph_message_omits_from_name_when_none ... ok
[INFO] [stdout] test outlook::tests::graph_message_includes_cc_recipients ... ok
[INFO] [stdout] test gmail::tests::label_to_role_system_draft ... ok
[INFO] [stdout] test jmap::tests::find_attachments_text_plain_skipped ... ok
[INFO] [stdout] test oauth::tests::state_is_hex_and_correct_length ... ok
[INFO] [stdout] test outlook::tests::graph_message_omits_from_when_none ... ok
[INFO] [stdout] test outlook::tests::clear_stored_tokens_is_idempotent_if_file_missing ... ok
[INFO] [stdout] test outlook::tests::graph_message_omits_from_when_empty_string ... ok
[INFO] [stdout] test outlook::tests::graph_message_text_only_has_required_fields ... ok
[INFO] [stdout] test outlook::tests::clear_stored_tokens_deletes_token_file ... ok
[INFO] [stdout] test outlook::tests::load_tokens_corrupted_json_returns_none ... ok
[INFO] [stdout] test outlook::tests::load_tokens_missing_file_returns_none ... ok
[INFO] [stdout] test outlook::tests::mark_read_body_shape ... ok
[INFO] [stdout] test outlook::tests::me_response_falls_back_to_other_mails_when_mail_and_upn_null ... ok
[INFO] [stdout] test outlook::tests::me_response_prefers_mail_when_populated ... ok
[INFO] [stdout] test outlook::tests::move_body_shape ... ok
[INFO] [stdout] test outlook::tests::move_plan_outlook_archive_routes_to_archive_folder ... ok
[INFO] [stdout] test outlook::tests::move_plan_outlook_rejects_drafts ... ok
[INFO] [stdout] test outlook::tests::move_plan_outlook_trash_routes_to_deleteditems ... ok
[INFO] [stdout] test outlook::tests::move_plan_outlook_rejects_junkemail ... ok
[INFO] [stdout] test outlook::tests::move_plan_outlook_rejects_sentitems ... ok
[INFO] [stdout] test outlook::tests::me_response_returns_none_when_all_absent ... ok
[INFO] [stdout] test outlook::tests::me_response_skips_empty_other_mails_entries ... ok
[INFO] [stdout] test outlook::tests::me_response_falls_back_to_upn_when_mail_null ... ok
[INFO] [stdout] test outlook::tests::me_response_skips_empty_string_mail ... ok
[INFO] [stdout] test outlook::tests::move_plan_outlook_inbox_restores_from_trash_and_junk ... ok
[INFO] [stdout] test outlook::tests::move_plan_outlook_user_folder_passes_through ... ok
[INFO] [stdout] test outlook::tests::odata_translator_after_routes_to_filter_with_rfc3339 ... ok
[INFO] [stdout] test outlook::tests::odata_translator_before_routes_to_filter_with_rfc3339 ... ok
[INFO] [stdout] test outlook::tests::odata_translator_combined_filter_plus_search ... ok
[INFO] [stdout] test outlook::tests::odata_translator_combined_filter_uses_and ... ok
[INFO] [stdout] test outlook::tests::odata_translator_empty_query_is_empty ... ok
[INFO] [stdout] test outlook::tests::odata_translator_escapes_single_quote_in_filter_value ... ok
[INFO] [stdout] test outlook::tests::odata_translator_free_text_routes_to_search ... ok
[INFO] [stdout] test outlook::tests::odata_translator_is_read_routes_to_filter ... ok
[INFO] [stdout] test outlook::tests::odata_translator_is_starred_routes_to_filter ... ok
[INFO] [stdout] test outlook::tests::odata_translator_is_unread_routes_to_filter ... ok
[INFO] [stdout] test outlook::tests::odata_translator_multi_from_uses_and ... ok
[INFO] [stdout] test outlook::tests::odata_translator_search_escapes_backslash ... ok
[INFO] [stdout] test outlook::tests::odata_translator_search_escapes_inner_double_quote ... ok
[INFO] [stdout] test outlook::tests::odata_translator_single_from_routes_to_filter ... ok
[INFO] [stdout] test outlook::tests::odata_translator_subject_and_free_text_concatenate_in_search ... ok
[INFO] [stdout] test outlook::tests::odata_translator_subject_routes_to_search_not_filter ... ok
[INFO] [stdout] test outlook::tests::odata_translator_subject_single_word_no_quoting ... ok
[INFO] [stdout] test outlook::tests::odata_translator_subject_with_spaces_wraps_value_in_kql_quotes ... ok
[INFO] [stdout] test outlook::tests::odata_translator_to_routes_to_filter ... ok
[INFO] [stdout] test outlook::tests::outlook_folder_role_archive ... ok
[INFO] [stdout] test outlook::tests::outlook_folder_role_case_sensitive_well_known ... ok
[INFO] [stdout] test outlook::tests::outlook_folder_role_inbox ... ok
[INFO] [stdout] test outlook::tests::outlook_folder_role_junk ... ok
[INFO] [stdout] test outlook::tests::outlook_folder_role_drafts ... ok
[INFO] [stdout] test outlook::tests::outlook_folder_role_user_folder ... ok
[INFO] [stdout] test outlook::tests::parse_batch_response_204_no_content_counts_as_success ... ok
[INFO] [stdout] test outlook::tests::parse_batch_response_all_succeed ... ok
[INFO] [stdout] test outlook::tests::parse_batch_response_count_mismatch_is_error ... ok
[INFO] [stdout] test outlook::tests::outlook_folder_role_sent ... ok
[INFO] [stdout] test outlook::tests::parse_graph_attachments_skips_msg_id_with_colon ... ok
[INFO] [stdout] test outlook::tests::outlook_folder_role_trash ... ok
[INFO] [stdout] test outlook::tests::parse_batch_response_404_is_archive_friendly_flag ... ok
[INFO] [stdout] test outlook::tests::parse_batch_response_partial_failure_collects_all_errors ... ok
[INFO] [stdout] test outlook::tests::odata_translator_has_attachment_routes_to_filter ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_attendee_missing_email_skipped ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_empty_body_treated_as_none ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_empty_location_treated_as_none ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_missing_optional_fields ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_maps_response_statuses ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_fractional_seconds ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_full ... ok
[INFO] [stdout] test outlook::tests::parse_graph_attachments_accepts_normal_graph_ids ... ok
[INFO] [stdout] test outlook::tests::parse_graph_attachments_skips_att_id_with_colon ... ok
[INFO] [stdout] test outlook::tests::parse_batch_response_missing_responses_array_is_error ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_missing_start_returns_none ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_missing_response_field_maps_to_needs_action ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_preserves_attendee_names ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_unknown_response_maps_to_needs_action ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_no_attendees ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_attachments_expanded ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_flagged_state ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_received_datetime_parses_to_utc ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_html_body_from_contenttype_html ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_no_body_when_fetch_body_false ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_not_flagged_state ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_parent_folder_id_into_mailbox_ids ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_read_state_via_isread ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_no_attachments_no_calendar ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_unread_state ... ok
[INFO] [stdout] test outlook::tests::peek_blob_bytes_does_not_consume_synthetic ... ok
[INFO] [stdout] test outlook::tests::peek_blob_bytes_rejects_gmail_blob_ref ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_text_body_from_contenttype_text ... ok
[INFO] [stdout] test outlook::tests::pick_from_name_honors_override_on_new_mail ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_calendar_invite_sets_has_calendar ... ok
[INFO] [stdout] test outlook::tests::pick_from_name_invokes_picker_on_new_mail_with_from_addr ... ok
[INFO] [stdout] test outlook::tests::pick_from_name_skips_picker_on_reply_one_shot ... ok
[INFO] [stdout] test outlook::tests::pick_from_name_skips_picker_on_reply_with_attachments ... ok
[INFO] [stdout] test outlook::tests::pick_from_name_skips_picker_when_from_addr_is_none ... ok
[INFO] [stdout] test outlook::tests::pick_send_path_no_reply_with_attachments_is_new_mail ... ok
[INFO] [stdout] test outlook::tests::pick_send_path_reply_plain_text_no_attachments_uses_three_call ... ok
[INFO] [stdout] test outlook::tests::picker_match_is_case_insensitive_on_from_addr ... ok
[INFO] [stdout] test outlook::tests::picker_override_email_match_is_case_insensitive ... ok
[INFO] [stdout] test outlook::tests::picker_returns_name_when_override_matches_identity_id ... ok
[INFO] [stdout] test outlook::tests::picker_returns_none_when_identity_has_empty_name ... ok
[INFO] [stdout] test outlook::tests::picker_returns_none_when_override_id_matches_but_from_addr_differs ... ok
[INFO] [stdout] test outlook::tests::pick_send_path_no_reply_no_attachments_is_new_mail ... ok
[INFO] [stdout] test outlook::tests::picker_returns_none_when_override_id_unknown ... ok
[INFO] [stdout] test outlook::tests::pick_send_path_reply_html_only_no_attachments_is_one_call ... ok
[INFO] [stdout] test outlook::tests::pick_send_path_reply_with_attachments_is_three_call_create_reply ... ok
[INFO] [stdout] test outlook::tests::pick_send_path_reply_with_empty_attachments_vec_but_html_is_one_shot ... ok
[INFO] [stdout] test outlook::tests::picker_returns_none_for_empty_identities ... ok
[INFO] [stdout] test outlook::tests::picker_returns_none_when_from_addr_does_not_match_and_no_override ... ok
[INFO] [stdout] test outlook::tests::picker_uses_identity_name_when_from_addr_matches ... ok
[INFO] [stdout] test outlook::tests::reply_patch_body_includes_added_cc_bcc ... ok
[INFO] [stdout] test outlook::tests::reply_patch_body_includes_html_body_when_set ... ok
[INFO] [stdout] test outlook::tests::role_does_not_reject_inbox_archive_trash_user ... ok
[INFO] [stdout] test outlook::tests::reply_patch_body_includes_attachments ... ok
[INFO] [stdout] test outlook::tests::reply_patch_body_omits_subject_and_to ... ok
[INFO] [stdout] test outlook::tests::reply_patch_body_uses_text_contenttype_for_plain_text ... ok
[INFO] [stdout] test outlook::tests::role_rejects_drafts ... ok
[INFO] [stdout] test outlook::tests::role_rejects_junk ... ok
[INFO] [stdout] test outlook::tests::role_rejects_sent ... ok
[INFO] [stdout] test outlook::tests::build_graph_event_no_description_empty_body ... ok
[INFO] [stdout] test outlook::tests::chunk_batch_one_message_returns_one_chunk ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_basic_fields ... ok
[INFO] [stdout] test outlook::tests::token_save_load_roundtrip ... ok
[INFO] [stdout] test outlook::tests::truncate_error_body_passthrough_when_small ... ok
[INFO] [stdout] test outlook::tests::truncate_error_body_truncates_long_input ... ok
[INFO] [stdout] test outlook::tests::url_builder_includes_orderby_when_no_search ... ok
[INFO] [stdout] test outlook::tests::url_builder_includes_top_and_skip ... ok
[INFO] [stdout] test outlook::tests::url_builder_omits_orderby_when_search_present ... ok
[INFO] [stdout] test outlook::tests::url_builder_uses_me_messages_when_folder_none ... ok
[INFO] [stdout] test gmail::tests::upload_blob_rejects_aggregate_overflow ... ok
[INFO] [stdout] test platform::desktop::tests::fs_token_store_delete_missing_is_ok ... ok
[INFO] [stdout] test outlook::tests::url_builder_omits_skip_when_position_zero ... ok
[INFO] [stdout] test platform::desktop::tests::fs_token_store_load_missing_returns_none ... ok
[INFO] [stdout] test platform::desktop::tests::fs_token_store_load_corrupted_returns_none ... ok
[INFO] [stdout] test outlook::tests::upload_blob_rejects_after_count_cap ... ok
[INFO] [stdout] test outlook::tests::truncate_error_body_respects_utf8_char_boundaries ... ok
[INFO] [stdout] test platform::desktop::tests::fs_token_store_delete ... ok
[INFO] [stdout] test platform::desktop::tests::fs_token_store_creates_tokens_dir ... ok
[INFO] [stdout] test platform::desktop::tests::fs_token_store_dir_is_chmod_0700 ... ok
[INFO] [stdout] test platform::desktop::tests::fs_token_store_file_is_chmod_0600 ... ok
[INFO] [stdout] test outlook::tests::url_builder_uses_folder_path_when_id_given ... ok
[INFO] [stdout] test outlook::tests::url_builder_omits_orderby_when_filter_and_search_both_present ... ok
[INFO] [stdout] test outlook::tests::upload_blob_rejects_oversized_per_blob ... ok
[INFO] [stdout] test platform::desktop::tests::validate_callback_error_takes_precedence_over_state_mismatch ... ok
[INFO] [stdout] test platform::desktop::tests::validate_callback_missing_code_and_error_returns_auth_error ... ok
[INFO] [stdout] test platform::desktop::tests::validate_callback_state_mismatch_returns_auth_error ... ok
[INFO] [stdout] test platform::desktop::tests::validate_callback_error_redirect_returns_auth_error ... ok
[INFO] [stdout] test platform::desktop::tests::fs_token_store_roundtrip ... ok
[INFO] [stdout] test platform::desktop::tests::validate_callback_success_returns_code ... ok
[INFO] [stdout] test prefetch::tests::account_a_does_not_leak_into_account_b ... ok
[INFO] [stdout] test prefetch::tests::get_mailboxes_returns_none_on_empty_cache ... ok
[INFO] [stdout] test prefetch::tests::inbox_list_keyed_by_mailbox_and_limit ... ok
[INFO] [stdout] test prefetch::tests::account_a_lock_does_not_block_account_b_read ... ok
[INFO] [stdout] test prefetch::tests::invalidate_clears_all_fields_and_bumps_version ... ok
[INFO] [stdout] test prefetch::tests::body_cache_roundtrip ... ok
[INFO] [stdout] test prefetch::tests::invalidate_forces_next_or_fetch_call_to_refetch ... ok
[INFO] [stdout] test prefetch::tests::body_or_fetch_skips_fallback_on_hit ... ok
[INFO] [stdout] test prefetch::tests::inbox_list_or_fetch_keyed_miss_and_hit ... ok
[INFO] [stdout] test prefetch::tests::invalidate_clears_lists_and_counts_but_not_bodies ... ok
[INFO] [stdout] test prefetch::tests::identities_or_fetch_hit_and_miss ... ok
[INFO] [stdout] test prefetch::tests::mailboxes_or_fetch_populates_cache_on_miss ... ok
[INFO] [stdout] test prefetch::tests::inbox_lists_holds_two_mailbox_entries_simultaneously ... ok
[INFO] [stdout] test prefetch::tests::mailboxes_or_fetch_returns_cached_without_calling_fetch ... ok
[INFO] [stdout] test accounts::tests::authorize_slot_released_on_panic ... ok
[INFO] [stdout] test prefetch::tests::set_then_get_inbox_list_roundtrip ... ok
[INFO] [stdout] test prefetch::tests::split_counts_or_fetch_hit_and_miss ... ok
[INFO] [stdout] test prefetch::tests::invalidate_full_clears_everything_including_bodies ... ok
[INFO] [stdout] test prefetch::tests::try_set_inbox_list_skips_when_version_changed ... ok
[INFO] [stdout] test prefetch::tests::body_or_fetch_populates_on_miss ... ok
[INFO] [stdout] test prefetch::tests::set_then_get_mailboxes_roundtrip ... ok
[INFO] [stdout] test prefetch::tests::set_then_get_split_counts_roundtrip ... ok
[INFO] [stdout] test prefetch::tests::try_set_mailboxes_skips_when_version_changed ... ok
[INFO] [stdout] test prefetch::tests::set_then_get_identities_roundtrip ... ok
[INFO] [stdout] test prefetch::tests::warmer_inbox_key_matches_route_handler_key ... ok
[INFO] [stdout] test prefetch::tests::try_set_mailboxes_succeeds_when_version_matches ... ok
[INFO] [stdout] test prefetch::tests::warm_loop_runs_initial_pass_then_repeats_each_interval ... ok
[INFO] [stdout] test provider_utils::tests::encode_path_segment_encodes_query_and_fragment_chars ... ok
[INFO] [stdout] test provider_utils::tests::encode_path_segment_encodes_slash ... ok
[INFO] [stdout] test provider_utils::tests::encode_path_segment_passes_alphanumeric_through ... ok
[INFO] [stdout] test provider::tests::provider_name_gmail ... ok
[INFO] [stdout] test provider_utils::tests::encode_path_segment_encodes_path_traversal_separators ... ok
[INFO] [stdout] test provider_utils::tests::mime_calendar ... ok
[INFO] [stdout] test provider::tests::username_returns_outlook_email ... ok
[INFO] [stdout] test provider::tests::sends_rsvp_automatically_false_for_fastmail ... ok
[INFO] [stdout] test provider::tests::sends_rsvp_automatically_true_for_gmail ... ok
[INFO] [stdout] test provider::tests::sends_rsvp_automatically_true_for_outlook ... ok
[INFO] [stdout] test provider::tests::username_returns_fastmail_username ... ok
[INFO] [stdout] test prefetch::tests::warm_loop_warms_every_account_each_pass_even_when_one_logs_an_error ... ok
[INFO] [stdout] test provider_utils::tests::mime_common_image_and_av_extensions ... ok
[INFO] [stdout] test provider_utils::tests::mime_pdf ... ok
[INFO] [stdout] test provider_utils::tests::mime_office_docx ... ok
[INFO] [stdout] test provider_utils::tests::mime_unknown_extension_falls_back_to_octet_stream ... ok
[INFO] [stdout] test provider_utils::tests::should_clear_tokens_on_invalid_grant ... ok
[INFO] [stdout] test provider_utils::tests::mime_double_extension_uses_last ... ok
[INFO] [stdout] test provider_utils::tests::should_clear_tokens_on_invalid_grant_401 ... ok
[INFO] [stdout] test provider_utils::tests::mime_case_insensitive_extension ... ok
[INFO] [stdout] test provider_utils::tests::mime_no_extension_falls_back_to_octet_stream ... ok
[INFO] [stdout] test provider_utils::tests::should_not_clear_on_4xx_without_invalid_grant ... ok
[INFO] [stdout] test rate_limit::tests::backoff_with_jitter_respects_bounds ... ok
[INFO] [stdout] test provider_utils::tests::should_not_clear_on_empty_body ... ok
[INFO] [stdout] test provider_utils::tests::should_not_clear_on_transient_5xx ... ok
[INFO] [stdout] test provider_utils::tests::mime_common_text_and_data_extensions ... ok
[INFO] [stdout] test provider_utils::tests::mime_dot_at_start_treated_as_extension ... ok
[INFO] [stdout] test provider_utils::tests::mime_jpeg_both_extensions ... ok
[INFO] [stdout] test rate_limit::tests::limiter_exposes_configuration ... ok
[INFO] [stdout] test rate_limit::tests::backoff_with_jitter_handles_arbitrary_attempt_without_panic ... ok
[INFO] [stdout] test rate_limit::tests::parse_retry_after_garbage_returns_none ... ok
[INFO] [stdout] test rate_limit::tests::jmap_response_detector_ignores_normal_responses ... ok
[INFO] [stdout] test rate_limit::tests::parse_retry_after_missing_returns_none ... ok
[INFO] [stdout] test rate_limit::tests::jmap_response_detector_matches_limit_error ... ok
[INFO] [stdout] test rate_limit::tests::parse_retry_after_http_date ... ok
[INFO] [stdout] test rate_limit::tests::parse_retry_after_past_http_date_returns_none ... ok
[INFO] [stdout] test rate_limit::tests::spacer_first_call_is_immediate ... ok
[INFO] [stdout] test routes::tests::api_helper_excludes_settings_from_account_param ... ok
[INFO] [stdout] test rate_limit::tests::gmail_body_detector_matches_known_strings ... ok
[INFO] [stdout] test rate_limit::tests::execute_returns_non_throttle_4xx_to_caller ... ok
[INFO] [stdout] test rate_limit::tests::execute_returns_2xx_immediately ... ok
[INFO] [stdout] test rate_limit::tests::parse_retry_after_delta_seconds ... ok
[INFO] [stdout] test provider::tests::username_returns_gmail_email ... ok
[INFO] [stdout] test routes::tests::app_js_blocks_send_during_upload ... ok
[INFO] [stdout] test routes::tests::app_js_has_abort_controller ... ok
[INFO] [stdout] test routes::tests::app_js_contains_javascript ... ok
[INFO] [stdout] test routes::tests::app_js_has_attachment_size_validation ... ok
[INFO] [stdout] test routes::tests::app_js_has_rsvp_button_enter_passthrough ... ok
[INFO] [stdout] test routes::tests::app_js_has_attachment_list_rendering ... ok
[INFO] [stdout] test routes::tests::app_js_has_optimistic_user_rsvp_status ... ok
[INFO] [stdout] test routes::tests::app_js_has_attachment_upload ... ok
[INFO] [stdout] test routes::tests::app_js_has_attach_keyboard_shortcut ... ok
[INFO] [stdout] test routes::tests::app_js_has_rsvp_keyboard_shortcuts ... ok
[INFO] [stdout] test routes::tests::app_js_has_same_status_guard ... ok
[INFO] [stdout] test routes::tests::app_js_has_drag_and_drop ... ok
[INFO] [stdout] test routes::tests::app_js_has_clipboard_paste ... ok
[INFO] [stdout] test routes::tests::app_js_has_user_rsvp_status_preference ... ok
[INFO] [stdout] test routes::tests::app_js_has_upload_progress ... ok
[INFO] [stdout] test routes::tests::app_js_has_segment_urls_helper ... ok
[INFO] [stdout] test routes::tests::app_js_clears_attachments_on_cancel ... ok
[INFO] [stdout] test routes::tests::app_js_hides_rsvp_actions_for_cancelled_events ... ok
[INFO] [stdout] test routes::tests::app_js_keyboard_y_only_in_detail_view_with_calendar ... ok
[INFO] [stdout] test routes::tests::app_js_iframe_sandbox_never_allows_scripts ... ok
[INFO] [stdout] test routes::tests::app_js_keyboard_n_only_in_detail_view_with_calendar ... ok
[INFO] [stdout] test routes::tests::app_js_linkify_text_escapes_non_url_text ... ok
[INFO] [stdout] test routes::tests::app_js_optimistic_update_reverts_on_error ... ok
[INFO] [stdout] test routes::tests::app_js_rsvp_buttons_toggle_active_class ... ok
[INFO] [stdout] test routes::tests::app_js_hides_status_label_for_needs_action ... ok
[INFO] [stdout] test routes::tests::app_js_segment_urls_trims_trailing_punctuation ... ok
[INFO] [stdout] test routes::tests::app_js_loads_accounts_from_envelope ... ok
[INFO] [stdout] test routes::tests::app_js_linkify_text_no_bulk_escape ... ok
[INFO] [stdout] test routes::tests::app_js_has_rsvp_status_label ... ok
[INFO] [stdout] test routes::tests::app_js_show_account_errors_escapes_html ... ok
[INFO] [stdout] test routes::tests::app_js_renders_email_body_in_sandboxed_iframe ... ok
[INFO] [stdout] test jmap::tests::draft_rejects_calendar_ics_with_html_body - should panic ... ok
[INFO] [stdout] test routes::tests::calendar_event_serializes_user_rsvp_status_as_null_when_none ... ok
[INFO] [stdout] test routes::tests::calendar_event_serializes_user_rsvp_status_when_some ... ok
[INFO] [stdout] test routes::tests::determine_attendee_email_matches_to ... ok
[INFO] [stdout] test routes::tests::determine_attendee_email_falls_back_to_username ... ok
[INFO] [stdout] test routes::tests::determine_attendee_email_empty_recipients ... ok
[INFO] [stdout] test routes::tests::determine_attendee_email_case_insensitive ... ok
[INFO] [stdout] test routes::tests::determine_attendee_email_matches_cc ... ok
[INFO] [stdout] test routes::tests::determine_attendee_email_prefers_to_over_cc ... ok
[INFO] [stdout] test routes::tests::compose_defaults_to_first_identity ... ok
[INFO] [stdout] test routes::tests::app_js_updates_cache_after_rsvp ... ok
[INFO] [stdout] test routes::tests::app_js_user_status_not_block_scoped ... ok
[INFO] [stdout] test routes::tests::app_js_linkify_text_uses_segment_urls ... ok
[INFO] [stdout] test routes::tests::dismiss_timezone_body_accepts_missing_seen_system ... ok
[INFO] [stdout] test routes::tests::get_email_response_includes_calendar_event_key ... ok
[INFO] [stdout] test routes::tests::dismiss_timezone_body_accepts_seen_system ... ok
[INFO] [stdout] test routes::tests::frontend_sends_seen_system_on_dismiss ... ok
[INFO] [stdout] test routes::tests::favicon_32_serves_png ... ok
[INFO] [stdout] test routes::tests::app_js_renders_you_responded_for_each_status ... ok
[INFO] [stdout] test routes::tests::identity_serialization_preserves_email_field ... ok
[INFO] [stdout] test routes::tests::icon_180_serves_png ... ok
[INFO] [stdout] test routes::tests::help_overlay_documents_new_shortcuts ... ok
[INFO] [stdout] test routes::tests::icon_512_serves_png ... ok
[INFO] [stdout] test routes::tests::email_caches_are_account_scoped ... ok
[INFO] [stdout] test routes::tests::index_html_has_account_error_banner ... ok
[INFO] [stdout] test routes::tests::index_html_contains_html ... ok
[INFO] [stdout] test routes::tests::index_html_sets_restrictive_csp ... ok
[INFO] [stdout] test routes::tests::frontend_renders_multi_tz_event_card ... ok
[INFO] [stdout] test routes::tests::index_html_has_rsvp_keyboard_help ... ok
[INFO] [stdout] test routes::tests::mobile_app_js_has_email_list_rendering ... ok
[INFO] [stdout] test routes::tests::index_html_has_rsvp_status_label ... ok
[INFO] [stdout] test routes::tests::icon_192_serves_png ... ok
[INFO] [stdout] test routes::tests::mobile_app_js_serves_es_module ... ok
[INFO] [stdout] test routes::tests::mobile_html_has_email_list_structure ... ok
[INFO] [stdout] test routes::tests::mobile_html_sets_restrictive_csp ... ok
[INFO] [stdout] test routes::tests::mobile_html_has_touch_optimized_styles ... ok
[INFO] [stdout] test routes::tests::mobile_app_js_renders_email_body_in_sandboxed_iframe ... ok
[INFO] [stdout] test routes::tests::mobile_app_js_has_pull_to_refresh ... ok
[INFO] [stdout] test routes::tests::mobile_jmap_js_handles_auth_errors ... ok
[INFO] [stdout] test routes::tests::mobile_jmap_js_has_error_types ... ok
[INFO] [stdout] test routes::tests::mobile_jmap_js_has_blob_url_builder ... ok
[INFO] [stdout] test routes::tests::mobile_jmap_js_parses_email_keywords ... ok
[INFO] [stdout] test routes::tests::mobile_html_imports_app_module ... ok
[INFO] [stdout] test routes::tests::mobile_app_js_has_infinite_scroll ... ok
[INFO] [stdout] test routes::tests::mobile_jmap_module_handles_offline_errors ... ok
[INFO] [stdout] test routes::tests::mobile_jmap_module_has_session_discovery ... ok
[INFO] [stdout] test routes::tests::mobile_jmap_js_has_data_functions ... ok
[INFO] [stdout] test routes::tests::mobile_jmap_js_serves_es_module ... ok
[INFO] [stdout] test routes::tests::mobile_jmap_js_uses_jmap_capabilities ... ok
[INFO] [stdout] test routes::tests::mobile_manifest_serves_json ... ok
[INFO] [stdout] test routes::tests::mobile_html_serves_pwa_shell ... ok
[INFO] [stdout] test routes::tests::mobile_sw_caches_app_shell ... ok
[INFO] [stdout] test routes::tests::safe_path_segment_accepts_valid ... ok
[INFO] [stdout] test routes::tests::sanitize_filename_empty ... ok
[INFO] [stdout] test routes::tests::safe_path_segment_rejects_traversal ... ok
[INFO] [stdout] test routes::tests::rsvp_response_wraps_in_calendar_event_key ... ok
[INFO] [stdout] test routes::tests::rsvp_response_includes_updated_attendee_status ... ok
[INFO] [stdout] test routes::tests::rsvp_response_user_rsvp_status_set_for_all_statuses ... ok
[INFO] [stdout] test routes::tests::sanitize_filename_null_bytes ... ok
[INFO] [stdout] test routes::tests::mobile_sw_serves_javascript_with_scope_header ... ok
[INFO] [stdout] test routes::tests::sanitize_filename_strips_dangerous_chars ... ok
[INFO] [stdout] test routes::tests::sanitize_filename_unicode ... ok
[INFO] [stdout] test routes::tests::outgoing_html_bypass_via_whitespace_prefix_is_blocked ... ok
[INFO] [stdout] test routes::tests::loadEmails_renders_cached_snapshot_before_network_refresh ... ok
[INFO] [stdout] test routes::tests::send_email_body_deserializes_with_attachments ... ok
[INFO] [stdout] test routes::tests::outgoing_html_strips_scripts_and_javascript_urls ... ok
[INFO] [stdout] test routes::tests::send_invite_rejects_end_at_or_before_start ... ok
[INFO] [stdout] test routes::tests::send_invite_body_minimal ... ok
[INFO] [stdout] test routes::tests::send_invite_passes_attachments_through ... ok
[INFO] [stdout] test outlook::tests::upload_blob_rejects_aggregate_overflow ... ok
[INFO] [stdout] test routes::tests::send_email_body_deserializes_without_attachments ... ok
[INFO] [stdout] test routes::tests::settings_first_run_auto_routes ... ok
[INFO] [stdout] test routes::tests::settings_authorize_uses_long_poll_not_polling ... ok
[INFO] [stdout] test routes::tests::settings_form_uses_data_provider_attribute ... ok
[INFO] [stdout] test routes::tests::settings_view_present_in_html ... ok
[INFO] [stdout] test routes::tests::style_css_email_links_underline_on_hover ... ok
[INFO] [stdout] test routes::tests::style_css_has_drag_over_style ... ok
[INFO] [stdout] test routes::tests::style_css_contains_css ... ok
[INFO] [stdout] test routes::tests::style_css_email_links_no_underline_by_default ... ok
[INFO] [stdout] test routes::tests::settings_styles_present ... ok
[INFO] [stdout] test routes::tests::style_css_has_error_banner_styles ... ok
[INFO] [stdout] test routes::tests::style_css_has_rsvp_status_label ... ok
[INFO] [stdout] test routes::tests::style_css_no_undefined_variables ... ok
[INFO] [stdout] test routes::tests::timezone_body_deserializes_full ... ok
[INFO] [stdout] test routes::tests::theme_endpoint_returns_css_content_type ... ok
[INFO] [stdout] test routes::tests::upload_max_size_constant ... ok
[INFO] [stdout] test routes::tests::timezone_routes_are_registered ... ok
[INFO] [stdout] test search::tests::parse_free_text_only ... ok
[INFO] [stdout] test routes::tests::timezone_body_deserializes_with_defaults ... ok
[INFO] [stdout] test routes::tests::supervillain_jpg_serves_jpeg ... ok
[INFO] [stdout] test search::tests::parse_after_date ... ok
[INFO] [stdout] test routes::tests::theme_fallback_generates_css_from_ghostty ... ok
[INFO] [stdout] test routes::tests::theme_fallback_generates_css_from_alacritty ... ok
[INFO] [stdout] test search::tests::parse_from_operator ... ok
[INFO] [stdout] test routes::tests::theme_light_mode_detected_from_file ... ok
[INFO] [stdout] test search::tests::parse_combined_operators_and_freetext ... ok
[INFO] [stdout] test search::tests::parse_is_starred ... ok
[INFO] [stdout] test search::tests::parse_is_flagged ... ok
[INFO] [stdout] test search::tests::parse_newer_than_absolute_mm_dd_yy ... ok
[INFO] [stdout] test search::tests::parse_is_read ... ok
[INFO] [stdout] test search::tests::parse_has_attachment ... ok
[INFO] [stdout] test search::tests::parse_multiple_from_values ... ok
[INFO] [stdout] test search::tests::parse_is_unread ... ok
[INFO] [stdout] test search::tests::parse_newer_than_days ... ok
[INFO] [stdout] test search::tests::parse_newer_than_invalid_absolute_date ... ok
[INFO] [stdout] test search::tests::parse_newer_than_invalid_unit ... ok
[INFO] [stdout] test search::tests::parse_newer_than_relative_still_works ... ok
[INFO] [stdout] test search::tests::parse_newer_than_absolute_mm_dd_yyyy ... ok
[INFO] [stdout] test search::tests::parse_newer_than_weeks ... ok
[INFO] [stdout] test search::tests::parse_newer_than_zero_ignored ... ok
[INFO] [stdout] test search::tests::parse_newer_than_zero_weeks_ignored ... ok
[INFO] [stdout] test search::tests::parse_older_than_absolute_mm_dd_yyyy ... ok
[INFO] [stdout] test search::tests::parse_older_than_months ... ok
[INFO] [stdout] test search::tests::parse_older_than_absolute_mm_dd_yy ... ok
[INFO] [stdout] test search::tests::parse_older_than_negative_ignored ... ok
[INFO] [stdout] test search::tests::parse_subject_quoted ... ok
[INFO] [stdout] test search::tests::parse_subject_operator ... ok
[INFO] [stdout] test splits::tests::calendar_filter_no_match_without_calendar ... ok
[INFO] [stdout] test search::tests::parse_to_operator ... ok
[INFO] [stdout] test splits::tests::calendar_filter_matches_has_calendar ... ok
[INFO] [stdout] test splits::tests::filter_by_split_returns_matching ... ok
[INFO] [stdout] test splits::tests::filter_by_split_primary_returns_non_matching ... ok
[INFO] [stdout] test splits::tests::forwarded_o365_mail_rewritten_to_does_not_match ... ok
[INFO] [stdout] test splits::tests::forwarded_o365_mail_matches_split_by_to ... ok
[INFO] [stdout] test splits::tests::from_filter_case_insensitive ... ok
[INFO] [stdout] test splits::tests::from_filter_wildcard_domain ... ok
[INFO] [stdout] test splits::tests::from_filter_wildcard_user ... ok
[INFO] [stdout] test splits::tests::generate_splits_case_insensitive_domains ... ok
[INFO] [stdout] test splits::tests::generate_splits_conflicting_short_names_uses_full_domain ... ok
[INFO] [stdout] test splits::tests::generate_splits_multiple_domains ... ok
[INFO] [stdout] test splits::tests::generate_splits_skips_malformed_email ... ok
[INFO] [stdout] test splits::tests::header_filter_matches_has_calendar ... ok
[INFO] [stdout] test splits::tests::generate_splits_single_domain_returns_empty ... ok
[INFO] [stdout] test splits::tests::load_complex_config ... ok
[INFO] [stdout] test splits::tests::load_nonexistent_returns_empty ... ok
[INFO] [stdout] test splits::tests::matches_any_split_false_with_no_splits ... ok
[INFO] [stdout] test splits::tests::generate_splits_deduplicates_domains ... ok
[INFO] [stdout] test splits::tests::generate_splits_empty_identities_returns_empty ... ok
[INFO] [stdout] test splits::tests::from_filter_glob_match ... ok
[INFO] [stdout] test splits::tests::load_env_takes_precedence ... ok
[INFO] [stdout] test splits::tests::matches_any_split_true_when_matching ... ok
[INFO] [stdout] test splits::tests::generate_splits_fastmail_plus_o365 ... ok
[INFO] [stdout] test splits::tests::from_filter_no_match ... ok
[INFO] [stdout] test splits::tests::load_from_file ... ok
[INFO] [stdout] test splits::tests::matches_split_any_mode ... ok
[INFO] [stdout] test splits::tests::primary_split_excludes_o365_mail ... ok
[INFO] [stdout] test splits::tests::seed_skips_single_domain ... ok
[INFO] [stdout] test splits::tests::save_load_roundtrip ... ok
[INFO] [stdout] test search::tests::parse_before_date ... ok
[INFO] [stdout] test splits::tests::seed_skips_when_splits_exist ... ok
[INFO] [stdout] test search::tests::parse_empty_string ... ok
[INFO] [stdout] test splits::tests::save_creates_directory ... ok
[INFO] [stdout] test splits::tests::seed_creates_splits_when_no_config ... ok
[INFO] [stdout] test splits::tests::save_preserves_filter_details ... ok
[INFO] [stdout] test splits::tests::save_overwrites_existing ... ok
[INFO] [stdout] test splits::tests::to_filter_glob_wildcard ... ok
[INFO] [stdout] test splits::tests::to_filter_exact_match ... ok
[INFO] [stdout] test splits::tests::subject_filter_invalid_regex_falls_back_to_substring ... ok
[INFO] [stdout] test splits::tests::to_filter_matches_cc ... ok
[INFO] [stdout] test splits::tests::to_filter_case_insensitive ... ok
[INFO] [stdout] test splits::tests::try_load_missing_file_is_ok_none ... ok
[INFO] [stdout] test theme::tests::alacritty_parse_hash_prefix ... ok
[INFO] [stdout] test splits::tests::try_load_invalid_json_returns_err ... ok
[INFO] [stdout] test theme::tests::alacritty_returns_none_when_bright_missing ... ok
[INFO] [stdout] test splits::tests::try_load_valid_file_returns_config ... ok
[INFO] [stdout] test theme::tests::alacritty_returns_none_for_empty ... ok
[INFO] [stdout] test theme::tests::alacritty_handles_extra_whitespace ... ok
[INFO] [stdout] test theme::tests::alacritty_returns_none_for_garbage ... ok
[INFO] [stdout] test theme::tests::alacritty_parse_0x_prefix ... ok
[INFO] [stdout] test theme::tests::alacritty_returns_none_when_color_missing ... ok
[INFO] [stdout] test theme::tests::generate_css_dark_mode_no_marker ... ok
[INFO] [stdout] test theme::tests::generate_css_light_mode_has_marker ... ok
[INFO] [stdout] test theme::tests::generate_css_contains_all_variables ... ok
[INFO] [stdout] test theme::tests::generate_css_falls_back_to_bright_black_for_selection ... ok
[INFO] [stdout] test theme::tests::ghostty_ignores_comments ... ok
[INFO] [stdout] test theme::tests::generate_css_overlay_uses_bg_rgba ... ok
[INFO] [stdout] test theme::tests::generate_css_uses_selection_bg_when_present ... ok
[INFO] [stdout] test theme::tests::ghostty_returns_none_for_empty ... ok
[INFO] [stdout] test theme::tests::ghostty_returns_none_for_missing_palette ... ok
[INFO] [stdout] test theme::tests::hex_to_rgb_converts_correctly ... ok
[INFO] [stdout] test theme::tests::ghostty_parse_full_palette ... ok
[INFO] [stdout] test theme::tests::load_from_theme_dir_falls_back_to_alacritty ... ok
[INFO] [stdout] test theme::tests::load_from_theme_dir_prefers_ghostty ... ok
[INFO] [stdout] test theme::tests::is_light_theme_detects_light_mode_file ... ok
[INFO] [stdout] test theme::tests::normalize_hex_0x_prefix ... ok
[INFO] [stdout] test theme::tests::normalize_hex_hash_prefix ... ok
[INFO] [stdout] test theme::tests::normalize_hex_rejects_invalid ... ok
[INFO] [stdout] test theme::tests::normalize_hex_bare_hash ... ok
[INFO] [stdout] test timezone::tests::detect_system_tz_returns_something ... ok
[INFO] [stdout] test timezone::tests::load_default_when_missing ... ok
[INFO] [stdout] test theme::tests::normalize_hex_strips_inline_comments ... ok
[INFO] [stdout] test theme::tests::load_from_theme_dir_returns_none_when_empty ... ok
[INFO] [stdout] test timezone::tests::resolve_invalid_manual_falls_back_to_system ... ok
[INFO] [stdout] test timezone::tests::resolve_dedups_additional ... ok
[INFO] [stdout] test timezone::tests::resolve_manual_overrides_when_use_system_false ... ok
[INFO] [stdout] test timezone::tests::resolve_skips_invalid_additional ... ok
[INFO] [stdout] test timezone::tests::resolve_use_system_uses_detected ... ok
[INFO] [stdout] test timezone::tests::system_changed_false_when_no_last_known ... ok
[INFO] [stdout] test timezone::tests::system_changed_false_when_dismissed ... ok
[INFO] [stdout] test timezone::tests::system_changed_true_when_last_differs ... ok
[INFO] [stdout] test timezone::tests::try_load_missing_file_is_ok_none ... ok
[INFO] [stdout] test timezone::tests::validate_iana_accepts_known_names ... ok
[INFO] [stdout] test timezone::tests::validate_iana_rejects_garbage ... ok
[INFO] [stdout] test types::tests::account_error_json_has_expected_keys ... ok
[INFO] [stdout] test types::tests::account_error_serde_roundtrip ... ok
[INFO] [stdout] test types::tests::blob_ref_outlook_accepts_graph_id_chars ... ok
[INFO] [stdout] test types::tests::blob_ref_gmail_roundtrip ... ok
[INFO] [stdout] test types::tests::blob_ref_outlook_attachment_roundtrip ... ok
[INFO] [stdout] test types::tests::blob_ref_outlook_parse_rejects_empty_components ... ok
[INFO] [stdout] test types::tests::blob_ref_outlook_prefix_disambiguates_from_gmail ... ok
[INFO] [stdout] test types::tests::blob_ref_outlook_parse_rejects_path_traversal ... ok
[INFO] [stdout] test types::tests::blob_ref_parse_rejects_bad_synth_uuid ... ok
[INFO] [stdout] test types::tests::blob_ref_parse_rejects_empty ... ok
[INFO] [stdout] test types::tests::blob_ref_parse_rejects_empty_components ... ok
[INFO] [stdout] test types::tests::blob_ref_parse_rejects_no_separator ... ok
[INFO] [stdout] test types::tests::blob_ref_parse_rejects_path_traversal ... ok
[INFO] [stdout] test types::tests::blob_ref_parse_rejects_slash ... ok
[INFO] [stdout] test types::tests::blob_ref_parse_rejects_url_special_chars ... ok
[INFO] [stdout] test types::tests::blob_ref_synth_prefix_takes_precedence ... ok
[INFO] [stdout] test types::tests::blob_ref_synthetic_roundtrip ... ok
[INFO] [stdout] test splits::tests::subject_filter_no_match ... ok
[INFO] [stdout] test types::tests::calendar_event_user_rsvp_status_none_serializes_as_null ... ok
[INFO] [stdout] test types::tests::calendar_event_user_rsvp_status_serializes ... ok
[INFO] [stdout] test types::tests::calendar_event_user_rsvp_status_skip_deserializing ... ok
[INFO] [stdout] test types::tests::email_address_serde_roundtrip ... ok
[INFO] [stdout] test types::tests::email_is_flagged_when_flagged_keyword_present ... ok
[INFO] [stdout] test types::tests::email_is_read_when_seen_keyword_present ... ok
[INFO] [stdout] test types::tests::email_is_unread_when_no_seen_keyword ... ok
[INFO] [stdout] test timezone::tests::load_env_override_wins ... ok
[INFO] [stdout] test types::tests::email_not_flagged_by_default ... ok
[INFO] [stdout] test types::tests::email_serde_roundtrip ... ok
[INFO] [stdout] test types::tests::email_submission_with_all_optional_fields ... ok
[INFO] [stdout] test types::tests::email_submission_with_none_optional_fields ... ok
[INFO] [stdout] test types::tests::filter_type_serializes_to_lowercase ... ok
[INFO] [stdout] test types::tests::mailbox_from_jmap_camel_case ... ok
[INFO] [stdout] test timezone::tests::load_save_roundtrip ... ok
[INFO] [stdout] test timezone::tests::try_load_invalid_json_returns_err ... ok
[INFO] [stdout] test types::tests::mailbox_from_snake_case_still_works ... ok
[INFO] [stdout] test timezone::tests::try_load_valid_file_returns_config ... ok
[INFO] [stdout] test types::tests::rsvp_status_as_ics_roundtrip ... ok
[INFO] [stdout] test types::tests::rsvp_status_deserializes_accepted ... ok
[INFO] [stdout] test types::tests::rsvp_status_deserializes_declined ... ok
[INFO] [stdout] test types::tests::rsvp_status_deserializes_tentative ... ok
[INFO] [stdout] test splits::tests::subject_filter_case_insensitive ... ok
[INFO] [stdout] test types::tests::mailbox_serde_roundtrip ... ok
[INFO] [stdout] test types::tests::rsvp_status_rejects_invalid ... ok
[INFO] [stdout] test types::tests::split_filter_from_json_all_fields ... ok
[INFO] [stdout] test types::tests::split_filter_from_json_no_name ... ok
[INFO] [stdout] test types::tests::match_mode_serializes_to_lowercase ... ok
[INFO] [stdout] test types::tests::split_inbox_default_filters_empty ... ok
[INFO] [stdout] test types::tests::split_inbox_default_match_mode ... ok
[INFO] [stdout] test types::tests::split_inbox_icon_defaults_to_none ... ok
[INFO] [stdout] test types::tests::split_inbox_icon_from_json ... ok
[INFO] [stdout] test types::tests::split_inbox_icon_none_omitted_from_json ... ok
[INFO] [stdout] test types::tests::splits_config_empty_default ... ok
[INFO] [stdout] test types::tests::split_inbox_icon_present_in_json ... ok
[INFO] [stdout] test types::tests::splits_config_serde_roundtrip ... ok
[INFO] [stdout] test splits::tests::matches_split_all_mode_requires_all ... ok
[INFO] [stdout] test splits::tests::subject_filter_regex_match ... ok
[INFO] [stdout] test types::tests::blob_ref_parse_accepts_base64url_components ... ok
[INFO] [stdout] test rate_limit::tests::spacer_enforces_interval_under_contention ... ok
[INFO] [stdout] test rate_limit::tests::execute_gives_up_after_max_attempts_with_rate_limited_error ... ok
[INFO] [stdout] test rate_limit::tests::execute_honors_retry_after_seconds ... ok
[INFO] [stdout] test rate_limit::tests::execute_releases_permit_during_backoff ... ok
[INFO] [stdout] test rate_limit::tests::execute_surfaces_most_recent_retry_after_after_exhaustion ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 884 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.18s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test tests::resolve_default_account_empty_sessions ... ok
[INFO] [stdout] test tests::resolve_default_account_present ... ok
[INFO] [stdout] test tests::resolve_default_account_empty_preferred_picks_first ... ok
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/supervillain-2c41ea5c06a2de71)
[INFO] [stdout] test tests::resolve_default_account_missing_falls_back ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/infra_test.rs (/opt/rustwide/target/debug/deps/infra_test-e9e8e2dca8d36a07)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test infra_bootstrap_behavior_tests_pass ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.51s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests vimmail
[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" "0d9c415ee82c36729d052be7e13bb39da7f7e0085e023c9b76580a9b6eb25a39", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0d9c415ee82c36729d052be7e13bb39da7f7e0085e023c9b76580a9b6eb25a39", kill_on_drop: false }`
[INFO] [stdout] 0d9c415ee82c36729d052be7e13bb39da7f7e0085e023c9b76580a9b6eb25a39
