[INFO] cloning repository https://github.com/marmosyn/marmosyn [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/marmosyn/marmosyn" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmarmosyn%2Fmarmosyn", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmarmosyn%2Fmarmosyn'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] a728a34c2d0b2c3d1b67c0acb6a4170ad15b43a6 [INFO] testing marmosyn/marmosyn against 1.99.0-beta.1+cargoflags=--release for beta-release-1.99-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmarmosyn%2Fmarmosyn" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/marmosyn/marmosyn [INFO] finished tweaking git repo https://github.com/marmosyn/marmosyn [INFO] tweaked toml for git repo https://github.com/marmosyn/marmosyn written to /workspace/builds/worker-0-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/marmosyn/marmosyn on toolchain 1.99.0-beta.1 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/marmosyn/marmosyn 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.99.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] f8268f366bf7cc2a5924aa7fb0621253bf7778d7cd962f94d5b7c84514a31c3c [INFO] running `Command { std: "docker" "start" "f8268f366bf7cc2a5924aa7fb0621253bf7778d7cd962f94d5b7c84514a31c3c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f8268f366bf7cc2a5924aa7fb0621253bf7778d7cd962f94d5b7c84514a31c3c", 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" "f8268f366bf7cc2a5924aa7fb0621253bf7778d7cd962f94d5b7c84514a31c3c" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f8268f366bf7cc2a5924aa7fb0621253bf7778d7cd962f94d5b7c84514a31c3c", 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" "f8268f366bf7cc2a5924aa7fb0621253bf7778d7cd962f94d5b7c84514a31c3c" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.182 [INFO] [stderr] Compiling cfg-if v1.0.4 [INFO] [stderr] Compiling once_cell v1.21.3 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling pin-project-lite v0.2.17 [INFO] [stderr] Compiling subtle v2.6.1 [INFO] [stderr] Compiling typenum v1.19.0 [INFO] [stderr] Compiling bytes v1.11.1 [INFO] [stderr] Compiling itoa v1.0.17 [INFO] [stderr] Compiling stable_deref_trait v1.2.1 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling futures-core v0.3.32 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling zeroize v1.8.2 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling scopeguard v1.2.0 [INFO] [stderr] Compiling dunce v1.0.5 [INFO] [stderr] Compiling fs_extra v1.3.0 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling zerocopy v0.8.40 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling lock_api v0.4.14 [INFO] [stderr] Compiling cpufeatures v0.2.17 [INFO] [stderr] Compiling writeable v0.6.2 [INFO] [stderr] Compiling litemap v0.8.1 [INFO] [stderr] Compiling aws-lc-rs v1.16.1 [INFO] [stderr] Compiling rustls-pki-types v1.14.0 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling tower-service v0.3.3 [INFO] [stderr] Compiling percent-encoding v2.3.2 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Compiling icu_properties_data v2.1.2 [INFO] [stderr] Compiling icu_normalizer_data v2.1.1 [INFO] [stderr] Compiling try-lock v0.2.5 [INFO] [stderr] Compiling same-file v1.0.6 [INFO] [stderr] Compiling untrusted v0.9.0 [INFO] [stderr] Compiling want v0.3.1 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling walkdir v2.5.0 [INFO] [stderr] Compiling zmij v1.0.21 [INFO] [stderr] Compiling sync_wrapper v1.0.2 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling tower-layer v0.3.3 [INFO] [stderr] Compiling rustls v0.23.37 [INFO] [stderr] Compiling option-ext v0.2.0 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling pin-utils v0.1.0 [INFO] [stderr] Compiling httpdate v1.0.3 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling atomic-waker v1.1.2 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling ipnet v2.12.0 [INFO] [stderr] Compiling base64 v0.22.1 [INFO] [stderr] Compiling utf8parse v0.2.2 [INFO] [stderr] Compiling vcpkg v0.2.15 [INFO] [stderr] Compiling anstyle-parse v0.2.7 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling socket2 v0.6.2 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling inout v0.1.4 [INFO] [stderr] Compiling jobserver v0.1.34 [INFO] [stderr] Compiling dirs-sys v0.5.0 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling dirs v6.0.0 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling inotify-sys v0.1.5 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling cc v1.2.56 [INFO] [stderr] Compiling webpki-roots v1.0.6 [INFO] [stderr] Compiling is_terminal_polyfill v1.70.2 [INFO] [stderr] Compiling colorchoice v1.0.4 [INFO] [stderr] Compiling utf8_iter v1.0.4 [INFO] [stderr] Compiling equivalent v1.0.2 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling anstyle-query v1.1.5 [INFO] [stderr] Compiling anstyle v1.0.13 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling ryu v1.0.23 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling rust-embed-utils v8.11.0 [INFO] [stderr] Compiling crossbeam-epoch v0.9.18 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling anstream v0.6.21 [INFO] [stderr] Compiling inotify v0.11.0 [INFO] [stderr] Compiling shellexpand v3.1.2 [INFO] [stderr] Compiling universal-hash v0.5.1 [INFO] [stderr] Compiling cipher v0.4.4 [INFO] [stderr] Compiling bstr v1.12.1 [INFO] [stderr] Compiling notify-types v2.1.0 [INFO] [stderr] Compiling iana-time-zone v0.1.65 [INFO] [stderr] Compiling clap_lex v1.0.0 [INFO] [stderr] Compiling minimal-lexical v0.2.1 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling winnow v0.7.15 [INFO] [stderr] Compiling toml_write v0.1.2 [INFO] [stderr] Compiling indexmap v2.13.0 [INFO] [stderr] Compiling mime v0.3.17 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Compiling opaque-debug v0.3.1 [INFO] [stderr] Compiling base64ct v1.8.3 [INFO] [stderr] Compiling iri-string v0.7.10 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Compiling cmake v0.1.57 [INFO] [stderr] Compiling clap_builder v4.5.60 [INFO] [stderr] Compiling password-hash v0.5.0 [INFO] [stderr] Compiling poly1305 v0.8.0 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling sharded-slab v0.1.7 [INFO] [stderr] Compiling notify v8.2.0 [INFO] [stderr] Compiling serde_path_to_error v0.1.20 [INFO] [stderr] Compiling anyhow v1.0.102 [INFO] [stderr] Compiling crossbeam-deque v0.8.6 [INFO] [stderr] Compiling chacha20 v0.9.1 [INFO] [stderr] Compiling aws-lc-sys v0.38.0 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling libsqlite3-sys v0.30.1 [INFO] [stderr] Compiling blake3 v1.8.3 [INFO] [stderr] Compiling blake2 v0.10.6 [INFO] [stderr] Compiling aead v0.5.2 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling rtoolbox v0.0.3 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling thread_local v1.1.9 [INFO] [stderr] Compiling marmosyn v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Compiling file-id v0.2.3 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling arrayvec v0.7.6 [INFO] [stderr] Compiling fastrand v2.3.0 [INFO] [stderr] Compiling futures-sink v0.3.32 [INFO] [stderr] Compiling fallible-streaming-iterator v0.1.9 [INFO] [stderr] Compiling arrayref v0.3.9 [INFO] [stderr] Compiling constant_time_eq v0.4.2 [INFO] [stderr] Compiling matchit v0.8.4 [INFO] [stderr] Compiling fallible-iterator v0.3.0 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling hashlink v0.9.1 [INFO] [stderr] Compiling notify-debouncer-full v0.7.0 [INFO] [stderr] Compiling rpassword v7.4.0 [INFO] [stderr] Compiling chacha20poly1305 v0.10.1 [INFO] [stderr] Compiling argon2 v0.5.3 [INFO] [stderr] Compiling tempfile v3.26.0 [INFO] [stderr] Compiling webpki-roots v0.26.11 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling globset v0.4.18 [INFO] [stderr] Compiling humantime v2.3.0 [INFO] [stderr] Compiling ignore v0.4.25 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling tokio-macros v2.6.1 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling axum-macros v0.5.0 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling tokio v1.50.0 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling rust-embed-impl v8.11.0 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling yoke v0.8.1 [INFO] [stderr] Compiling axum-core v0.5.6 [INFO] [stderr] Compiling zerovec v0.11.5 [INFO] [stderr] Compiling zerotrie v0.2.3 [INFO] [stderr] Compiling rust-embed v8.11.0 [INFO] [stderr] Compiling clap v4.5.60 [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 icu_normalizer v2.1.1 [INFO] [stderr] Compiling icu_properties v2.1.2 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling tracing-serde v0.2.0 [INFO] [stderr] Compiling tracing-subscriber v0.3.22 [INFO] [stderr] Compiling bytesize v1.3.3 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling cron v0.13.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-util v0.7.18 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling axum v0.8.8 [INFO] [stderr] Compiling rustls-webpki v0.103.9 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling hyper-rustls v0.27.7 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling rusqlite v0.32.1 [INFO] [stderr] Finished `release` profile [optimized] target(s) in 3m 57s [INFO] running `Command { std: "docker" "inspect" "f8268f366bf7cc2a5924aa7fb0621253bf7778d7cd962f94d5b7c84514a31c3c", 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" "f8268f366bf7cc2a5924aa7fb0621253bf7778d7cd962f94d5b7c84514a31c3c" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling tokio v1.50.0 [INFO] [stderr] Compiling predicates-core v1.0.10 [INFO] [stderr] Compiling doc-comment v0.3.4 [INFO] [stderr] Compiling float-cmp v0.10.0 [INFO] [stderr] Compiling difflib v0.4.0 [INFO] [stderr] Compiling termtree v0.5.1 [INFO] [stderr] Compiling normalize-line-endings v0.3.0 [INFO] [stderr] Compiling predicates-tree v1.0.13 [INFO] [stderr] Compiling regex-automata v0.4.14 [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 tokio-stream v0.1.18 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling globset v0.4.18 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling tokio-test v0.4.5 [INFO] [stderr] Compiling tracing-subscriber v0.3.22 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling ignore v0.4.25 [INFO] [stderr] Compiling predicates v3.1.4 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling globwalk v0.9.1 [INFO] [stderr] Compiling assert_fs v1.1.3 [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 marmosyn v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 2m 13s [INFO] running `Command { std: "docker" "inspect" "f8268f366bf7cc2a5924aa7fb0621253bf7778d7cd962f94d5b7c84514a31c3c", 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" "f8268f366bf7cc2a5924aa7fb0621253bf7778d7cd962f94d5b7c84514a31c3c" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }` [INFO] [stderr] Finished `release` profile [optimized] target(s) in 0.28s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/release/deps/marmosyn-2202a729588c8d57) [INFO] [stdout] [INFO] [stdout] running 636 tests [INFO] [stdout] test api::auth::tests::test_unauthorized_response_format ... ok [INFO] [stdout] test api::handlers::config::tests::test_sanitize_config_no_encryption ... ok [INFO] [stdout] test api::handlers::config::tests::test_sanitize_config_no_receiver ... ok [INFO] [stdout] test api::handlers::config::tests::test_sanitize_config_sync_without_exclude ... ok [INFO] [stdout] test api::handlers::health::tests::test_health_returns_ok ... ok [INFO] [stdout] test api::handlers::config::tests::test_sanitize_config_server_section ... ok [INFO] [stdout] test api::auth::tests::test_malformed_auth_header ... ok [INFO] [stdout] test api::handlers::config::tests::test_get_config_full_secrets_redacted ... ok [INFO] [stdout] test api::auth::tests::test_health_endpoint_bypasses_auth ... ok [INFO] [stdout] test api::auth::tests::test_missing_auth_header ... ok [INFO] [stdout] test api::handlers::config::tests::test_get_config_minimal ... ok [INFO] [stdout] test api::auth::tests::test_no_auth_token_configured_allows_all ... ok [INFO] [stdout] test api::auth::tests::test_valid_bearer_token ... ok [INFO] [stdout] test api::auth::tests::test_invalid_bearer_token ... ok [INFO] [stdout] test api::handlers::config::tests::test_reload_no_config_file ... ok [INFO] [stdout] test api::handlers::jobs::tests::test_list_jobs ... ok [INFO] [stdout] test api::handlers::jobs::tests::test_get_job_not_found ... ok [INFO] [stdout] test api::handlers::jobs::tests::test_get_job_found ... ok [INFO] [stdout] test api::handlers::jobs::tests::test_history_not_found ... ok [INFO] [stdout] test api::handlers::jobs::tests::test_list_jobs_empty ... ok [INFO] [stdout] test api::handlers::jobs::tests::test_history_with_limit ... ok [INFO] [stdout] test api::handlers::jobs::tests::test_list_jobs_status_field ... ok [INFO] [stdout] test api::handlers::jobs::tests::test_get_job_photos ... ok [INFO] [stdout] test api::handlers::jobs::tests::test_trigger_sync_not_found ... ok [INFO] [stdout] test api::handlers::jobs::tests::test_stop_not_found ... ok [INFO] [stdout] test api::handlers::receiver::tests::test_receiver_totals_empty_db ... ok [INFO] [stdout] test api::handlers::jobs::tests::test_stop_not_running ... ok [INFO] [stdout] test api::handlers::receiver::tests::test_receiver_status_disabled ... ok [INFO] [stdout] test api::handlers::receiver::tests::test_receiver_connections_empty ... ok [INFO] [stdout] test api::handlers::jobs::tests::test_history_empty ... ok [INFO] [stdout] test api::handlers::receiver::tests::test_receiver_status_does_not_leak_auth_token ... ok [INFO] [stdout] test api::handlers::remotes::tests::test_list_remotes_empty ... ok [INFO] [stdout] test api::handlers::receiver::tests::test_receiver_status_enabled_false ... ok [INFO] [stdout] test api::handlers::remotes::tests::test_ping_remote_unreachable ... ok [INFO] [stdout] test api::handlers::status::tests::test_status_uptime_is_reasonable ... ok [INFO] [stdout] test api::handlers::receiver::tests::test_receiver_totals_from_db ... ok [INFO] [stdout] test cli::api_client::tests::test_api_client_from_token ... ok [INFO] [stdout] test api::handlers::remotes::tests::test_ping_remote_not_found ... ok [INFO] [stdout] test api::handlers::remotes::tests::test_list_remotes_does_not_leak_tokens ... ok [INFO] [stdout] test api::handlers::remotes::tests::test_list_remotes_with_entries ... ok [INFO] [stdout] test api::handlers::remotes::tests::test_remote_summary_fields ... ok [INFO] [stdout] test api::handlers::receiver::tests::test_receiver_status_enabled_with_paths ... ok [INFO] [stdout] test api::handlers::status::tests::test_status_empty_config ... ok [INFO] [stdout] test cli::api_client::tests::test_api_error_display ... ok [INFO] [stdout] test cli::api_client::tests::test_encode_path_simple ... ok [INFO] [stdout] test cli::api_client::tests::test_encode_path_with_special_chars ... ok [INFO] [stdout] test cli::api_client::tests::test_format_connection_error_unreachable ... ok [INFO] [stdout] test cli::api_client::tests::test_format_connection_error_unauthorized ... ok [INFO] [stdout] test cli::api_client::tests::test_resolve_server_url_default ... ok [INFO] [stdout] test cli::api_client::tests::test_resolve_server_url_explicit ... ok [INFO] [stdout] test cli::api_client::tests::test_resolve_server_url_strips_trailing_slash ... ok [INFO] [stdout] test cli::api_client::tests::test_truncate_body_long ... ok [INFO] [stdout] test cli::api_client::tests::test_truncate_body_short ... ok [INFO] [stdout] test cli::config_cmd::tests::test_config_check_nonexistent_file ... ok [INFO] [stdout] test cli::config_cmd::tests::test_config_check_invalid_toml ... ok [INFO] [stdout] test cli::config_cmd::tests::test_config_init_refuses_overwrite ... ok [INFO] [stdout] test cli::config_cmd::tests::test_config_init_creates_file ... ok [INFO] [stdout] test cli::config_cmd::tests::test_config_check_valid_file ... ok [INFO] [stdout] test cli::config_cmd::tests::test_config_show_nonexistent ... ok [INFO] [stdout] test api::tests::test_protected_endpoint_requires_auth_when_token_set ... ok [INFO] [stdout] test api::tests::test_nonexistent_route_returns_404 ... ok [INFO] [stdout] test cli::api_client::tests::test_api_client_debug_hides_token ... ok [INFO] [stdout] test cli::config_cmd::tests::test_redact_key_source_file ... ok [INFO] [stdout] test cli::config_cmd::tests::test_redact_key_source_raw ... ok [INFO] [stdout] test cli::config_cmd::tests::test_config_template_is_valid_toml_structure ... ok [INFO] [stdout] test cli::config_cmd::tests::test_redact_key_source_env ... ok [INFO] [stdout] test cli::jobs::tests::test_build_client_default ... ok [INFO] [stdout] test cli::jobs::tests::test_build_client_with_params ... ok [INFO] [stdout] test cli::jobs::tests::test_format_bytes_kb ... ok [INFO] [stdout] test cli::jobs::tests::test_format_bytes_b ... ok [INFO] [stdout] test cli::config_cmd::tests::test_config_show_valid_file ... ok [INFO] [stdout] test cli::jobs::tests::test_print_job_detail_full ... ok [INFO] [stdout] test cli::jobs::tests::test_format_bytes_gb ... ok [INFO] [stdout] test cli::jobs::tests::test_format_bytes_mb ... ok [INFO] [stdout] test api::tests::test_status_endpoint_no_auth_when_token_not_set ... ok [INFO] [stdout] test cli::jobs::tests::test_print_job_history_empty ... ok [INFO] [stdout] test cli::config_cmd::tests::test_config_template_parses_as_toml ... ok [INFO] [stdout] test cli::jobs::tests::test_print_job_list_empty ... ok [INFO] [stdout] test cli::jobs::tests::test_print_job_list_with_entries ... ok [INFO] [stdout] test cli::jobs::tests::test_print_stop_response ... ok [INFO] [stdout] test cli::jobs::tests::test_print_job_detail_minimal ... ok [INFO] [stdout] test cli::jobs::tests::test_print_job_history_with_entries ... ok [INFO] [stdout] test cli::config_cmd::tests::test_config_init_force_overwrites ... ok [INFO] [stdout] test cli::jobs::tests::test_print_sync_response_failure ... ok [INFO] [stdout] test cli::jobs::tests::test_truncate_str_edge ... ok [INFO] [stdout] test cli::jobs::tests::test_truncate_str_long ... ok [INFO] [stdout] test cli::jobs::tests::test_print_sync_response_success ... ok [INFO] [stdout] test cli::jobs::tests::test_truncate_str_short ... ok [INFO] [stdout] test cli::log_cmd::tests::test_follow_poll_interval ... ok [INFO] [stdout] test cli::log_cmd::tests::test_log_options_construction ... ok [INFO] [stdout] test cli::log_cmd::tests::test_log_options_defaults ... ok [INFO] [stdout] test cli::log_cmd::tests::test_handle_log_no_job_no_server ... ok [INFO] [stdout] test cli::login::tests::test_print_login_result_plain ... ok [INFO] [stdout] test api::tests::test_protected_endpoint_with_valid_token ... ok [INFO] [stdout] test cli::remotes::tests::test_build_client_default ... ok [INFO] [stdout] test cli::remotes::tests::test_format_status_reachable ... ok [INFO] [stdout] test cli::remotes::tests::test_build_client_with_params ... ok [INFO] [stdout] test cli::remotes::tests::test_format_status_other ... ok [INFO] [stdout] test cli::remotes::tests::test_format_status_unreachable ... ok [INFO] [stdout] test cli::remotes::tests::test_format_status_unknown ... ok [INFO] [stdout] test cli::remotes::tests::test_print_ping_result_reachable_no_latency ... ok [INFO] [stdout] test cli::remotes::tests::test_print_ping_result_reachable ... ok [INFO] [stdout] test cli::login::tests::test_print_login_result_encrypted ... ok [INFO] [stdout] test cli::remotes::tests::test_print_ping_result_unreachable_no_error ... ok [INFO] [stdout] test cli::log_cmd::tests::test_handle_log_json_no_job_no_server ... ok [INFO] [stdout] test api::tests::test_health_endpoint_no_auth ... ok [INFO] [stdout] test cli::remotes::tests::test_print_ping_result_unreachable ... ok [INFO] [stdout] test api::handlers::status::tests::test_status_with_jobs_and_remotes ... ok [INFO] [stdout] test cli::login::tests::test_creates_parent_directories ... ok [INFO] [stdout] test cli::login::tests::test_save_plain_token ... ok [INFO] [stdout] test cli::remotes::tests::test_truncate_str_short ... ok [INFO] [stdout] test cli::remotes::tests::test_truncate_str_edge ... ok [INFO] [stdout] test cli::remotes::tests::test_truncate_str_long ... ok [INFO] [stdout] test cli::server::tests::test_server_options_daemon_only ... ok [INFO] [stdout] test cli::remotes::tests::test_print_remote_list_empty ... ok [INFO] [stdout] test cli::login::tests::test_overwrite_existing_profile ... ok [INFO] [stdout] test cli::login::tests::test_save_multiple_profiles ... ok [INFO] [stdout] test cli::remotes::tests::test_print_remote_list_long_names ... ok [INFO] [stdout] test cli::remotes::tests::test_print_remote_list_with_entries ... ok [INFO] [stdout] test cli::server::tests::test_server_options_no_config ... ok [INFO] [stdout] test cli::status::tests::test_build_client_default ... ok [INFO] [stdout] test cli::status::tests::test_build_client_with_token ... ok [INFO] [stdout] test cli::server::tests::test_server_options_construction ... ok [INFO] [stdout] test cli::status::tests::test_format_uptime_days ... ok [INFO] [stdout] test cli::status::tests::test_format_uptime_hours ... ok [INFO] [stdout] test cli::status::tests::test_format_uptime_minutes ... ok [INFO] [stdout] test cli::status::tests::test_format_uptime_seconds ... ok [INFO] [stdout] test cli::status::tests::test_print_status_text_receiver_disabled ... ok [INFO] [stdout] test cli::status::tests::test_print_status_text_does_not_panic ... ok [INFO] [stdout] test cli::sync_cmd::tests::test_format_bytes_b ... ok [INFO] [stdout] test cli::sync_cmd::tests::test_format_bytes_kb ... ok [INFO] [stdout] test cli::sync_cmd::tests::test_format_bytes_gb ... ok [INFO] [stdout] test cli::sync_cmd::tests::test_format_bytes_mb ... ok [INFO] [stdout] test cli::sync_cmd::tests::test_select_jobs_all ... ok [INFO] [stdout] test cli::sync_cmd::tests::test_select_jobs_by_name ... ok [INFO] [stdout] test cli::sync_cmd::tests::test_select_jobs_none_specified ... ok [INFO] [stdout] test cli::sync_cmd::tests::test_select_jobs_not_found ... ok [INFO] [stdout] test cli::sync_cmd::tests::test_select_jobs_empty_config ... ok [INFO] [stdout] test cli::tests::test_cli_global_server_and_token ... ok [INFO] [stdout] test cli::tests::test_cli_parse_config_show ... ok [INFO] [stdout] test cli::tests::test_cli_format_json ... ok [INFO] [stdout] test cli::tests::test_cli_global_config_flag ... ok [INFO] [stdout] test cli::tests::test_cli_parse_config_check ... ok [INFO] [stdout] test cli::tests::test_cli_no_args_fails ... ok [INFO] [stdout] test cli::tests::test_cli_parse_config_init ... ok [INFO] [stdout] test cli::tests::test_cli_parse_config_init_with_output ... ok [INFO] [stdout] test cli::tests::test_cli_parse_jobs_history_default ... ok [INFO] [stdout] test cli::tests::test_cli_parse_log_with_options ... ok [INFO] [stdout] test cli::tests::test_cli_parse_log ... ok [INFO] [stdout] test cli::tests::test_cli_parse_jobs_sync ... ok [INFO] [stdout] test cli::tests::test_cli_parse_jobs_stop ... ok [INFO] [stdout] test cli::tests::test_cli_parse_remotes_list ... ok [INFO] [stdout] test cli::tests::test_cli_parse_login ... ok [INFO] [stdout] test cli::tests::test_cli_parse_remotes_ping ... ok [INFO] [stdout] test cli::tests::test_cli_parse_jobs_list ... ok [INFO] [stdout] test cli::tests::test_cli_parse_status_json ... ok [INFO] [stdout] test cli::tests::test_cli_parse_sync_with_job ... ok [INFO] [stdout] test cli::tests::test_cli_parse_login_with_profile ... ok [INFO] [stdout] test cli::tests::test_cli_parse_version ... ok [INFO] [stdout] test cli::tests::test_cli_parse_sync_all_dry_run ... ok [INFO] [stdout] test cli::tests::test_cli_parse_status ... ok [INFO] [stdout] test cli::tests::test_cli_parse_server ... ok [INFO] [stdout] test cli::tests::test_cli_parse_server_daemon ... ok [INFO] [stdout] test cli::tests::test_cli_verbose_flag ... ok [INFO] [stdout] test cli::tests::test_cli_parses_version ... ok [INFO] [stdout] test cli::version::tests::test_pkg_name ... ok [INFO] [stdout] test config::dest_parser::tests::test_collect_empty_when_neither_set ... ok [INFO] [stdout] test config::dest_parser::tests::test_collect_multiple_dests ... ok [INFO] [stdout] test config::dest_parser::tests::test_collect_single_dest ... ok [INFO] [stdout] test cli::version::tests::test_version_is_not_empty ... ok [INFO] [stdout] test config::dest_parser::tests::test_parse_ignores_slash_in_prefix ... ok [INFO] [stdout] test config::dest_parser::tests::test_parse_local_absolute_unix ... ok [INFO] [stdout] test config::dest_parser::tests::test_parse_local_windows_drive ... ok [INFO] [stdout] test config::dest_parser::tests::test_parse_local_relative ... ok [INFO] [stdout] test cli::version::tests::test_handle_version_does_not_panic ... ok [INFO] [stdout] test config::dest_parser::tests::test_parse_remote_absolute_path ... ok [INFO] [stdout] test config::dest_parser::tests::test_parse_remote_empty_path ... ok [INFO] [stdout] test cli::tests::test_cli_parse_jobs_info ... ok [INFO] [stdout] test config::dest_parser::tests::test_parse_remote_with_alias ... ok [INFO] [stdout] test config::loader::tests::test_discover_config_not_found ... ok [INFO] [stdout] test config::dest_parser::tests::test_parse_remote_with_alias_and_subpath ... ok [INFO] [stdout] test config::loader::tests::test_load_config_from_path_not_found ... ok [INFO] [stdout] test config::paths::tests::test_config_file_ends_with_toml ... ok [INFO] [stdout] test config::paths::tests::test_detect_returns_valid_paths ... ok [INFO] [stdout] test config::paths::tests::test_is_root_returns_bool ... ok [INFO] [stdout] test config::paths::tests::test_credentials_file_ends_with_toml ... ok [INFO] [stdout] test config::paths::tests::test_user_paths_are_under_home ... ok [INFO] [stdout] test config::types::tests::test_deserialize_full_config ... ok [INFO] [stdout] test config::types::tests::test_deserialize_minimal_config ... ok [INFO] [stdout] test config::loader::tests::test_discover_config_explicit_path ... ok [INFO] [stdout] test config::loader::tests::test_load_config_invalid_toml ... ok [INFO] [stdout] test config::types::tests::test_safety_config_default ... ok [INFO] [stdout] test config::types::tests::test_secret_debug_does_not_leak ... ok [INFO] [stdout] test config::types::tests::test_secret_display_does_not_leak ... ok [INFO] [stdout] test config::loader::tests::test_load_config_from_valid_toml ... ok [INFO] [stdout] test config::types::tests::test_secret_expose_returns_value ... ok [INFO] [stdout] test config::types::tests::test_sync_job_destinations_empty ... ok [INFO] [stdout] test config::types::tests::test_sync_job_destinations_multiple ... ok [INFO] [stdout] test config::types::tests::test_sync_job_destinations_single ... ok [INFO] [stdout] test config::types::tests::test_sync_mode_display ... ok [INFO] [stdout] test config::validation::tests::test_duplicate_alias_in_receiver ... ok [INFO] [stdout] test config::validation::tests::test_duplicate_job_names ... ok [INFO] [stdout] test config::validation::tests::test_encrypt_with_encryption_section ... ok [INFO] [stdout] test config::validation::tests::test_invalid_safety_retention ... ok [INFO] [stdout] test config::validation::tests::test_encrypt_without_encryption_section ... ok [INFO] [stdout] test config::validation::tests::test_neither_dest_nor_dests ... ok [INFO] [stdout] test config::validation::tests::test_parse_duration_str ... ok [INFO] [stdout] test config::validation::tests::test_parse_size_str ... ok [INFO] [stdout] test config::validation::tests::test_receiver_relative_path ... ok [INFO] [stdout] test config::validation::tests::test_schedule_mode_without_cron ... ok [INFO] [stdout] test config::validation::tests::test_both_dest_and_dests ... ok [INFO] [stdout] test config::validation::tests::test_valid_minimal_config ... ok [INFO] [stdout] test config::validation::tests::test_valid_remote_in_dest ... ok [INFO] [stdout] test config::validation::tests::test_valid_safety_config ... ok [INFO] [stdout] test config::validation::tests::test_unknown_remote_in_dest ... ok [INFO] [stdout] test core::dest_router::tests::test_build_safety_handler_enabled ... ok [INFO] [stdout] test core::dest_router::tests::test_build_safety_handler_invalid_max_size ... ok [INFO] [stdout] test core::dest_router::tests::test_build_safety_handler_invalid_retention ... ok [INFO] [stdout] test core::dest_router::tests::test_build_safety_handler_disabled ... ok [INFO] [stdout] test core::dest_router::tests::test_build_safety_handler_none_config ... ok [INFO] [stdout] test core::dest_router::tests::test_dest_router_known_remote_succeeds ... ok [INFO] [stdout] test core::dest_router::tests::test_dest_router_execute_delete_plan ... ok [INFO] [stdout] test core::dest_router::tests::test_dest_router_unknown_remote_fails ... ok [INFO] [stdout] test core::dest_router::tests::test_dest_router_execute_update_plan ... ok [INFO] [stdout] test core::diff::tests::test_both_empty ... ok [INFO] [stdout] test core::diff::tests::test_changed_hash_triggers_update ... ok [INFO] [stdout] test core::dest_router::tests::test_dest_router_local_executor ... ok [INFO] [stdout] test core::diff::tests::test_changed_mtime_with_no_hash_triggers_update ... ok [INFO] [stdout] test core::diff::tests::test_changed_size_triggers_update ... ok [INFO] [stdout] test core::diff::tests::test_copy_list_is_sorted ... ok [INFO] [stdout] test core::diff::tests::test_delete_order_files_before_dirs ... ok [INFO] [stdout] test core::diff::tests::test_directories_are_ignored_in_source ... ok [INFO] [stdout] test core::diff::tests::test_directory_not_deleted_if_source_files_remain ... ok [INFO] [stdout] test core::dest_router::tests::test_dest_router_stop_on_error ... ok [INFO] [stdout] test core::diff::tests::test_dry_run_empty_plan ... ok [INFO] [stdout] test core::diff::tests::test_files_differ_by_hash ... ok [INFO] [stdout] test core::diff::tests::test_dry_run_with_operations ... ok [INFO] [stdout] test core::diff::tests::test_files_differ_by_size ... ok [INFO] [stdout] test core::diff::tests::test_files_differ_mtime_fallback ... ok [INFO] [stdout] test core::diff::tests::test_files_identical ... ok [INFO] [stdout] test core::diff::tests::test_identical_files_are_skipped ... ok [INFO] [stdout] test core::diff::tests::test_mixed_copy_update_delete ... ok [INFO] [stdout] test core::diff::tests::test_format_bytes ... ok [INFO] [stdout] test core::diff::tests::test_nested_dirs_deleted_deepest_first ... ok [INFO] [stdout] test core::diff::tests::test_new_files_are_copied ... ok [INFO] [stdout] test core::diff::tests::test_nested_new_file ... ok [INFO] [stdout] test core::dest_router::tests::test_from_executor ... ok [INFO] [stdout] test core::dest_router::tests::test_execute_empty_plan ... ok [INFO] [stdout] test core::diff::tests::test_orphan_deletion_disabled ... ok [INFO] [stdout] test core::diff::tests::test_orphan_directory_deleted_when_all_contents_removed ... ok [INFO] [stdout] test core::diff::tests::test_orphan_files_are_deleted ... ok [INFO] [stdout] test core::dest_router::tests::test_dest_router_skip_on_error ... ok [INFO] [stdout] test core::diff::tests::test_size_only_comparison_same_size_different_mtime ... ok [INFO] [stdout] test core::excluder::tests::test_bare_pattern_matches_in_subdirs ... ok [INFO] [stdout] test core::excluder::tests::test_directory_pattern ... ok [INFO] [stdout] test core::excluder::tests::test_empty_excluder_matches_nothing ... ok [INFO] [stdout] test core::excluder::tests::test_deep_glob_pattern ... ok [INFO] [stdout] test core::excluder::tests::test_invalid_pattern_returns_error ... ok [INFO] [stdout] test core::dest_router::tests::test_dest_router_execute_copy_plan ... ok [INFO] [stdout] test core::excluder::tests::test_multiple_patterns ... ok [INFO] [stdout] test core::excluder::tests::test_node_modules_pattern ... ok [INFO] [stdout] test core::excluder::tests::test_pattern_count ... ok [INFO] [stdout] test core::excluder::tests::test_simple_extension_pattern ... ok [INFO] [stdout] test core::dest_router::tests::test_dest_router_progress_callback ... ok [INFO] [stdout] test core::executor::tests::test_encrypting_executor_description ... ok [INFO] [stdout] test core::diff::tests::test_large_tree_diff ... ok [INFO] [stdout] test core::diff::tests::test_size_only_comparison_same_everything ... ok [INFO] [stdout] test core::dest_router::tests::test_dest_router_with_safety ... ok [INFO] [stdout] test core::executor::tests::test_local_executor_description ... ok [INFO] [stdout] test core::file_tree::tests::test_dirs_sorted ... ok [INFO] [stdout] test core::file_tree::tests::test_files_sorted ... ok [INFO] [stdout] test core::dest_router::tests::test_dest_router_multiple_local_dests ... ok [INFO] [stdout] test core::file_tree::tests::test_insert_and_get ... ok [INFO] [stdout] test core::file_tree::tests::test_from_entries ... ok [INFO] [stdout] test core::file_tree::tests::test_into_iterator ... ok [INFO] [stdout] test core::file_tree::tests::test_new_is_empty ... ok [INFO] [stdout] test core::file_tree::tests::test_rel_path_str ... ok [INFO] [stdout] test core::executor::tests::test_encrypting_executor_delegates_delete ... ok [INFO] [stdout] test core::executor::tests::test_local_executor_copy_creates_parent_dirs ... ok [INFO] [stdout] test core::file_tree::tests::test_total_size ... ok [INFO] [stdout] test core::hasher::tests::test_hash_bytes_different_input ... ok [INFO] [stdout] test core::hasher::tests::test_hash_bytes_deterministic ... ok [INFO] [stdout] test core::hasher::tests::test_hash_bytes_empty ... ok [INFO] [stdout] test core::executor::tests::test_local_executor_delete_file ... ok [INFO] [stdout] test core::executor::tests::test_encrypting_executor_delegates_create_dir ... ok [INFO] [stdout] test core::hasher::tests::test_hash_file_blocking_not_found ... ok [INFO] [stdout] test core::executor::tests::test_local_executor_copy_file ... ok [INFO] [stdout] test core::hasher::tests::test_hash_file_blocking_large ... ok [INFO] [stdout] test core::executor::tests::test_local_executor_create_dir ... ok [INFO] [stdout] test core::hasher::tests::test_hash_file_blocking ... ok [INFO] [stdout] test core::remote_executor::tests::test_remote_executor_description ... ok [INFO] [stdout] test core::hasher::tests::test_hash_file_async ... ok [INFO] [stdout] test core::remote_executor::tests::test_remote_executor_connection_failure ... ok [INFO] [stdout] test core::remote_executor::tests::test_remote_executor_create_dir_is_noop ... ok [INFO] [stdout] test core::remote_executor::tests::test_remote_executor_auth_failure ... ok [INFO] [stdout] test core::executor::tests::test_encrypting_executor_decrypt_roundtrip ... ok [INFO] [stdout] test core::safety::tests::test_dir_total_size_nonexistent ... ok [INFO] [stdout] test core::safety::tests::test_format_timestamp ... ok [INFO] [stdout] test core::safety::tests::test_format_timestamp_epoch ... ok [INFO] [stdout] test core::safety::tests::test_parse_max_size ... ok [INFO] [stdout] test core::safety::tests::test_parse_retention ... ok [INFO] [stdout] test core::executor::tests::test_encrypting_executor_copy_file ... ok [INFO] [stdout] test core::safety::tests::test_dir_total_size ... ok [INFO] [stdout] test core::safety::tests::test_dir_total_size_empty ... ok [INFO] [stdout] test core::safety::tests::test_dir_file_count ... ok [INFO] [stdout] test core::safety::tests::test_safety_handler_backup_nonexistent_is_noop ... ok [INFO] [stdout] test core::safety::tests::test_safety_handler_cleanup_empty_dir ... ok [INFO] [stdout] test core::safety::tests::test_safety_handler_backup_file ... ok [INFO] [stdout] test core::scanner::tests::test_build_cache_map ... ok [INFO] [stdout] test core::safety::tests::test_safety_handler_cleanup_no_limits ... ok [INFO] [stdout] test core::scanner::tests::test_scan_empty_directory ... ok [INFO] [stdout] test core::safety::tests::test_safety_handler_total_size ... ok [INFO] [stdout] test core::scanner::tests::test_cache_scan_results_match_full_scan ... ok [INFO] [stdout] test core::scanner::tests::test_scan_flat_directory ... ok [INFO] [stdout] test core::scanner::tests::test_scan_nonexistent_directory ... ok [INFO] [stdout] test core::safety::tests::test_safety_handler_cleanup_by_max_size ... ok [INFO] [stdout] test core::scanner::tests::test_scan_records_hash ... ok [INFO] [stdout] test core::scanner::tests::test_scan_nested_directory ... ok [INFO] [stdout] test core::safety::tests::test_safety_handler_backup_nested_path ... ok [INFO] [stdout] test core::scanner::tests::test_scan_records_size ... ok [INFO] [stdout] test core::scanner::tests::test_scan_with_cache_size_change_triggers_rehash ... ok [INFO] [stdout] test core::scanner::tests::test_scan_with_cache_no_hashes_skips_cache ... ok [INFO] [stdout] test core::scanner::tests::test_scan_with_cache_all_hits ... ok [INFO] [stdout] test core::sync_plan::tests::test_empty_plan ... ok [INFO] [stdout] test core::sync_plan::tests::test_plan_display ... ok [INFO] [stdout] test core::sync_plan::tests::test_plan_with_entries ... ok [INFO] [stdout] test core::scanner::tests::test_scan_without_hashes ... ok [INFO] [stdout] test core::scanner::tests::test_scan_with_empty_cache ... ok [INFO] [stdout] test core::sync_plan::tests::test_sync_progress_fraction ... ok [INFO] [stdout] test core::sync_plan::tests::test_sync_progress_fraction_zero_bytes ... ok [INFO] [stdout] test core::sync_plan::tests::test_sync_progress_fraction_zero_total ... ok [INFO] [stdout] test core::sync_plan::tests::test_sync_result_default ... ok [INFO] [stdout] test core::scanner::tests::test_scan_with_excluder ... ok [INFO] [stdout] test cli::sync_cmd::tests::test_open_database_creates_dirs ... ok [INFO] [stdout] test credentials::encrypt::tests::test_invalid_base64 ... ok [INFO] [stdout] test credentials::encrypt::tests::test_truncated_data ... ok [INFO] [stdout] test cli::sync_cmd::tests::test_end_to_end_local_sync ... ok [INFO] [stdout] test cli::sync_cmd::tests::test_sync_with_excludes ... ok [INFO] [stdout] test credentials::store::tests::test_check_permissions_insecure ... ok [INFO] [stdout] test credentials::store::tests::test_check_permissions_nonexistent_ok ... ok [INFO] [stdout] test credentials::store::tests::test_check_permissions_secure ... ok [INFO] [stdout] test credentials::store::tests::test_credential_entry_encrypted ... ok [INFO] [stdout] test credentials::store::tests::test_credential_entry_no_prefix ... ok [INFO] [stdout] test credentials::store::tests::test_credential_entry_plain ... ok [INFO] [stdout] test credentials::store::tests::test_load_nonexistent_returns_empty ... ok [INFO] [stdout] test cli::sync_cmd::tests::test_end_to_end_dry_run ... ok [INFO] [stdout] test credentials::store::tests::test_save_and_load_roundtrip ... ok [INFO] [stdout] test crypto::cipher::tests::test_decrypt_corrupted_ciphertext ... ok [INFO] [stdout] test crypto::cipher::tests::test_decrypt_invalid_magic ... ok [INFO] [stdout] test crypto::cipher::tests::test_decrypt_too_short ... ok [INFO] [stdout] test crypto::cipher::tests::test_decrypt_with_wrong_key_fails ... ok [INFO] [stdout] test crypto::cipher::tests::test_decrypt_wrong_version ... ok [INFO] [stdout] test crypto::cipher::tests::test_derive_nonce_deterministic ... ok [INFO] [stdout] test crypto::cipher::tests::test_derive_nonce_different_blocks ... ok [INFO] [stdout] test crypto::cipher::tests::test_derive_nonce_zero_block ... ok [INFO] [stdout] test crypto::cipher::tests::test_encrypt_decrypt_binary_content ... ok [INFO] [stdout] test crypto::cipher::tests::test_encrypt_decrypt_empty ... ok [INFO] [stdout] test crypto::cipher::tests::test_encrypt_decrypt_exact_block_size ... ok [INFO] [stdout] test crypto::cipher::tests::test_encrypt_decrypt_file ... ok [INFO] [stdout] test crypto::cipher::tests::test_encrypt_decrypt_large ... ok [INFO] [stdout] test credentials::store::tests::test_save_sets_0600_permissions ... ok [INFO] [stdout] test crypto::cipher::tests::test_encrypt_decrypt_roundtrip_small ... ok [INFO] [stdout] test crypto::cipher::tests::test_encrypt_decrypt_multi_block ... ok [INFO] [stdout] test crypto::cipher::tests::test_encrypt_nondeterministic ... ok [INFO] [stdout] test crypto::cipher::tests::test_header_structure ... ok [INFO] [stdout] test crypto::cipher::tests::test_is_encrypted_file_false_for_nonexistent ... ok [INFO] [stdout] test crypto::cipher::tests::test_encrypt_file_nonexistent_source ... ok [INFO] [stdout] test crypto::cipher::tests::test_is_encrypted_file_false_for_short ... ok [INFO] [stdout] test core::scanner::tests::test_scan_with_cache_some_misses ... ok [INFO] [stdout] test crypto::cipher::tests::test_is_encrypted_file_false_for_plain ... ok [INFO] [stdout] test crypto::cipher::tests::test_read_full_empty ... ok [INFO] [stdout] test crypto::cipher::tests::test_read_full_short ... ok [INFO] [stdout] test crypto::cipher::tests::test_is_encrypted_file_true ... ok [INFO] [stdout] test crypto::key::tests::test_debug_does_not_leak ... ok [INFO] [stdout] test crypto::cipher::tests::test_read_full_exact ... ok [INFO] [stdout] test crypto::key::tests::test_from_bytes_valid ... ok [INFO] [stdout] test crypto::key::tests::test_from_bytes_wrong_length ... ok [INFO] [stdout] test crypto::key::tests::test_load_key_dispatch_env ... ok [INFO] [stdout] test crypto::key::tests::test_load_key_dispatch_unknown ... ok [INFO] [stdout] test crypto::key::tests::test_load_key_dispatch_raw ... ok [INFO] [stdout] test crypto::key::tests::test_load_key_from_base64_invalid ... ok [INFO] [stdout] test crypto::key::tests::test_load_key_from_env_missing ... ok [INFO] [stdout] test core::remote_executor::tests::test_remote_executor_delete_file ... ok [INFO] [stdout] test crypto::key::tests::test_load_key_from_file_base64 ... ok [INFO] [stdout] test crypto::key::tests::test_load_key_from_file_not_found ... ok [INFO] [stdout] test crypto::key::tests::test_load_key_from_base64 ... ok [INFO] [stdout] test crypto::key::tests::test_load_key_from_env ... ok [INFO] [stdout] test crypto::key::tests::test_load_key_from_file_too_short ... ok [INFO] [stdout] test crypto::key::tests::test_load_key_from_file_raw ... ok [INFO] [stdout] test core::remote_executor::tests::test_remote_executor_list_files ... ok [INFO] [stdout] test db::file_meta::tests::test_delete_file_meta ... ok [INFO] [stdout] test core::remote_executor::tests::test_remote_executor_copy_nested_file ... ok [INFO] [stdout] test db::file_meta::tests::test_system_time_roundtrip ... ok [INFO] [stdout] test db::file_meta::tests::test_count_file_meta ... ok [INFO] [stdout] test core::remote_executor::tests::test_remote_executor_copy_file ... ok [INFO] [stdout] test db::file_meta::tests::test_delete_all_file_meta ... ok [INFO] [stdout] test db::file_meta::tests::test_upsert_and_get ... ok [INFO] [stdout] test db::file_meta::tests::test_system_time_epoch ... ok [INFO] [stdout] test db::history::tests::test_delete_job_history ... ok [INFO] [stdout] test db::file_meta::tests::test_upsert_updates_existing ... ok [INFO] [stdout] test db::file_meta::tests::test_get_nonexistent ... ok [INFO] [stdout] test db::file_meta::tests::test_list_file_meta ... ok [INFO] [stdout] test db::history::tests::test_count_job_history ... ok [INFO] [stdout] test db::history::tests::test_finish_sync_success ... ok [INFO] [stdout] test db::history::tests::test_fail_stale_running ... ok [INFO] [stdout] test db::history::tests::test_finished_at_is_valid_rfc3339 ... ok [INFO] [stdout] test db::history::tests::test_get_by_id_nonexistent ... ok [INFO] [stdout] test db::history::tests::test_fail_stale_running_no_running ... ok [INFO] [stdout] test db::history::tests::test_get_job_history_isolates_jobs ... ok [INFO] [stdout] test db::history::tests::test_get_job_history_with_limit ... ok [INFO] [stdout] test db::history::tests::test_get_job_history_ordering ... ok [INFO] [stdout] test db::history::tests::test_finish_sync_failed ... ok [INFO] [stdout] test db::history::tests::test_get_last_sync ... ok [INFO] [stdout] test db::history::tests::test_start_sync_creates_running_entry ... ok [INFO] [stdout] test db::history::tests::test_get_last_sync_empty ... ok [INFO] [stdout] test db::history::tests::test_get_running_syncs ... ok [INFO] [stdout] test db::migrations::tests::test_run_migrations_creates_tables ... ok [INFO] [stdout] test db::history::tests::test_started_at_is_valid_rfc3339 ... ok [INFO] [stdout] test db::migrations::tests::test_file_metadata_unique_constraint ... ok [INFO] [stdout] test db::migrations::tests::test_schema_version_is_recorded ... ok [INFO] [stdout] test db::history::tests::test_finish_sync_nonexistent_id_fails ... ok [INFO] [stdout] test db::history::tests::test_get_job_history_empty ... ok [INFO] [stdout] test db::migrations::tests::test_run_migrations_idempotent ... ok [INFO] [stdout] test db::receiver_stats::tests::test_delete_all ... ok [INFO] [stdout] test core::safety::tests::test_safety_handler_cleanup_by_retention ... ok [INFO] [stdout] test db::receiver_stats::tests::test_delete_by_sender ... ok [INFO] [stdout] test db::receiver_stats::tests::test_delete_all_empty ... ok [INFO] [stdout] test db::receiver_stats::tests::test_get_by_id ... ok [INFO] [stdout] test db::receiver_stats::tests::test_delete_by_sender_nonexistent ... ok [INFO] [stdout] test db::receiver_stats::tests::test_get_by_id_nonexistent ... ok [INFO] [stdout] test db::history::tests::test_delete_old_history ... ok [INFO] [stdout] test db::receiver_stats::tests::test_get_all ... ok [INFO] [stdout] test db::receiver_stats::tests::test_get_all_empty ... ok [INFO] [stdout] test db::receiver_stats::tests::test_get_by_dest_path ... ok [INFO] [stdout] test db::receiver_stats::tests::test_get_by_sender_empty ... ok [INFO] [stdout] test db::receiver_stats::tests::test_get_by_sender ... ok [INFO] [stdout] test db::receiver_stats::tests::test_record_reception_updates_existing_row ... ok [INFO] [stdout] test db::receiver_stats::tests::test_reset_stats_nonexistent ... ok [INFO] [stdout] test db::receiver_stats::tests::test_get_by_sender_and_path_nonexistent ... ok [INFO] [stdout] test server::daemon::daemon_tests::test_daemonize_function_exists ... ok [INFO] [stdout] test db::receiver_stats::tests::test_last_received_at_is_valid_rfc3339 ... ok [INFO] [stdout] test db::receiver_stats::tests::test_record_reception_creates_new_row ... ok [INFO] [stdout] test server::daemon::tests::test_is_process_running_nonexistent ... ok [INFO] [stdout] test server::daemon::tests::test_is_process_running_self ... ok [INFO] [stdout] test db::receiver_stats::tests::test_record_reception_different_pairs_are_isolated ... ok [INFO] [stdout] test db::receiver_stats::tests::test_reset_stats ... ok [INFO] [stdout] test server::daemon::tests::test_remove_pid_file_nonexistent ... ok [INFO] [stdout] test server::daemon::tests::test_create_server_directories_idempotent ... ok [INFO] [stdout] test db::receiver_stats::tests::test_total_files_received ... ok [INFO] [stdout] test server::daemon::tests::test_create_server_directories ... ok [INFO] [stdout] test server::daemon::tests::test_server_options_debug ... ok [INFO] [stdout] test server::daemon::tests::test_server_paths_db_file ... ok [INFO] [stdout] test server::daemon::tests::test_server_paths_resolve_custom ... ok [INFO] [stdout] test db::receiver_stats::tests::test_total_bytes_received ... ok [INFO] [stdout] test server::daemon::tests::test_write_and_remove_pid_file ... ok [INFO] [stdout] test server::job_manager::tests::test_job_manager_get_history_nonexistent ... ok [INFO] [stdout] test server::daemon::tests::test_write_pid_file_stale ... ok [INFO] [stdout] test server::job_manager::tests::test_job_manager_get_job ... ok [INFO] [stdout] test db::receiver_stats::tests::test_record_reception_updates_timestamp ... ok [INFO] [stdout] test server::job_manager::tests::test_job_manager_list_jobs ... ok [INFO] [stdout] test cli::sync_cmd::tests::test_incremental_sync ... ok [INFO] [stdout] test server::job_manager::tests::test_job_manager_stop_not_running ... ok [INFO] [stdout] test server::daemon::tests::test_write_pid_file_self_running ... ok [INFO] [stdout] test server::job_manager::tests::test_job_status_label ... ok [INFO] [stdout] test server::job_manager::tests::test_job_manager_reload_config ... ok [INFO] [stdout] test server::job_manager::tests::test_load_last_result_empty ... ok [INFO] [stdout] test server::job_manager::tests::test_job_manager_trigger_nonexistent ... ok [INFO] [stdout] test server::job_manager::tests::test_job_manager_stop_all ... ok [INFO] [stdout] test server::scheduler::tests::test_next_run_time_at_midnight ... ok [INFO] [stdout] test server::scheduler::tests::test_next_run_time_every_5_minutes ... ok [INFO] [stdout] test server::scheduler::tests::test_next_run_time_invalid_expression ... ok [INFO] [stdout] test server::scheduler::tests::test_next_run_time_is_in_the_future ... ok [INFO] [stdout] test server::scheduler::tests::test_next_run_time_valid_expression ... ok [INFO] [stdout] test server::scheduler::tests::test_next_run_time_standard_cron ... ok [INFO] [stdout] test server::scheduler::tests::test_scheduler_service_new ... ok [INFO] [stdout] test server::scheduler::tests::test_next_run_time_weekly ... ok [INFO] [stdout] test server::scheduler::tests::test_scheduler_service_stop_all_empty ... ok [INFO] [stdout] test server::job_manager::tests::test_load_last_result_with_history ... ok [INFO] [stdout] test server::watcher::tests::test_process_event_deleted_file ... ok [INFO] [stdout] test server::watcher::tests::test_process_event_excluded_file ... ok [INFO] [stdout] test server::watcher::tests::test_process_event_included_file ... ok [INFO] [stdout] test server::watcher::tests::test_process_event_root_path_ignored ... ok [INFO] [stdout] test server::watcher::tests::test_watcher_service_new ... ok [INFO] [stdout] test server::job_manager::tests::test_job_manager_init ... ok [INFO] [stdout] test transport::client::tests::test_client_debug_format ... ok [INFO] [stdout] test transport::client::tests::test_connect_and_handshake ... ok [INFO] [stdout] test transport::client::tests::test_connect_timeout_invalid_host ... ok [INFO] [stdout] test transport::client::tests::test_default_transport_config ... ok [INFO] [stdout] test server::watcher::tests::test_process_event_multiple_paths ... ok [INFO] [stdout] test transport::client::tests::test_disconnect ... ok [INFO] [stdout] test server::watcher::tests::test_process_event_nested_file ... ok [INFO] [stdout] test transport::client::tests::test_handshake_wrong_token ... ok [INFO] [stdout] test transport::client::tests::test_ensure_handshake_fails_without_connect ... ok [INFO] [stdout] test server::daemon::tests::test_open_database ... ok [INFO] [stdout] test server::daemon::tests::test_server_paths_resolve_defaults ... ok [INFO] [stdout] test server::watcher::tests::test_process_event_outside_source ... ok [INFO] [stdout] test transport::codec::tests::test_all_message_types_roundtrip_through_codec ... ok [INFO] [stdout] test transport::codec::tests::test_codec_custom_max_size ... ok [INFO] [stdout] test transport::codec::tests::test_codec_decode_frame_too_large ... ok [INFO] [stdout] test transport::codec::tests::test_codec_decode_frame_too_small ... ok [INFO] [stdout] test transport::codec::tests::test_codec_decode_partial_body ... ok [INFO] [stdout] test transport::codec::tests::test_codec_decode_partial_header ... ok [INFO] [stdout] test transport::codec::tests::test_codec_decode_unknown_message_type ... ok [INFO] [stdout] test transport::codec::tests::test_codec_default ... ok [INFO] [stdout] test transport::codec::tests::test_codec_encode_decode_empty_payload ... ok [INFO] [stdout] test transport::codec::tests::test_codec_encode_decode_with_payload ... ok [INFO] [stdout] test transport::codec::tests::test_codec_encode_frame_too_large ... ok [INFO] [stdout] test credentials::encrypt::tests::test_wrong_password_fails ... ok [INFO] [stdout] test transport::codec::tests::test_codec_multiple_frames ... ok [INFO] [stdout] test transport::codec::tests::test_frame_clone ... ok [INFO] [stdout] test transport::codec::tests::test_frame_debug ... ok [INFO] [stdout] test transport::codec::tests::test_frame_decode_payload_wrong_type ... ok [INFO] [stdout] test transport::codec::tests::test_frame_equality ... ok [INFO] [stdout] test transport::codec::tests::test_frame_from_payload_and_decode ... ok [INFO] [stdout] test transport::codec::tests::test_frame_wire_size ... ok [INFO] [stdout] test transport::codec::tests::test_frame_wire_size_empty ... ok [INFO] [stdout] test transport::codec::tests::test_read_frame_too_large ... ok [INFO] [stdout] test transport::codec::tests::test_read_frame_too_small ... ok [INFO] [stdout] test transport::codec::tests::test_read_write_empty_payload ... ok [INFO] [stdout] test transport::client::tests::test_list_files ... ok [INFO] [stdout] test transport::codec::tests::test_read_write_frame_async ... ok [INFO] [stdout] test transport::client::tests::test_resolve_alias ... ok [INFO] [stdout] test transport::client::tests::test_delete_file_with_allowed_path ... ok [INFO] [stdout] test transport::codec::tests::test_read_write_multiple_frames ... ok [INFO] [stdout] test transport::codec::tests::test_write_frame_too_large ... ok [INFO] [stdout] test transport::client::tests::test_push_data ... ok [INFO] [stdout] test transport::delta::tests::test_apply_delta_appended_data ... ok [INFO] [stdout] test transport::delta::tests::test_apply_delta_block_ref_out_of_range ... ok [INFO] [stdout] test transport::delta::tests::test_apply_delta_identical_files ... ok [INFO] [stdout] test transport::delta::tests::test_compute_signatures_block_size_clamping ... ok [INFO] [stdout] test transport::delta::tests::test_apply_delta_empty_new_file ... ok [INFO] [stdout] test transport::delta::tests::test_compute_signatures_from_data_empty ... ok [INFO] [stdout] test transport::delta::tests::test_apply_delta_to_file ... ok [INFO] [stdout] test transport::delta::tests::test_apply_delta_completely_different ... ok [INFO] [stdout] test transport::delta::tests::test_compute_signatures_from_data_exact_multiple ... ok [INFO] [stdout] test transport::client::tests::test_push_file_with_allowed_path ... ok [INFO] [stdout] test transport::delta::tests::test_compute_signatures_from_data_multiple_blocks ... ok [INFO] [stdout] test transport::delta::tests::test_compute_signatures_from_data_single_block ... ok [INFO] [stdout] test transport::delta::tests::test_compute_signatures_nonexistent_file ... ok [INFO] [stdout] test transport::delta::tests::test_delta_block_size_equals_file_size ... ok [INFO] [stdout] test transport::delta::tests::test_apply_delta_nonexistent_old_with_literals_only ... ok [INFO] [stdout] test transport::delta::tests::test_compute_signatures_from_file ... ok [INFO] [stdout] test transport::delta::tests::test_delta_empty_new_file ... ok [INFO] [stdout] test transport::delta::tests::test_delta_empty_old_file ... ok [INFO] [stdout] test transport::delta::tests::test_delta_estimated_transfer_size ... ok [INFO] [stdout] test transport::delta::tests::test_delta_identical_files ... ok [INFO] [stdout] test transport::delta::tests::test_delta_from_file ... ok [INFO] [stdout] test transport::delta::tests::test_delta_middle_insertion ... ok [INFO] [stdout] test transport::delta::tests::test_delta_op_count ... ok [INFO] [stdout] test transport::delta::tests::test_delta_new_file_smaller_than_old ... ok [INFO] [stdout] test transport::delta::tests::test_delta_new_file_larger_than_old ... ok [INFO] [stdout] test transport::delta::tests::test_delta_completely_different ... ok [INFO] [stdout] test transport::delta::tests::test_delta_appended_data ... ok [INFO] [stdout] test transport::client::tests::test_resolve_alias_forbidden ... ok [INFO] [stdout] test transport::delta::tests::test_delta_prepended_data ... ok [INFO] [stdout] test transport::delta::tests::test_delta_serde_roundtrip ... ok [INFO] [stdout] test transport::delta::tests::test_file_signature_serde_roundtrip ... ok [INFO] [stdout] test transport::delta::tests::test_read_full_exact ... ok [INFO] [stdout] test transport::delta::tests::test_read_full_short_read ... ok [INFO] [stdout] test transport::delta::tests::test_rolling_checksum_different_data ... ok [INFO] [stdout] test transport::delta::tests::test_rolling_checksum_empty ... ok [INFO] [stdout] test transport::delta::tests::test_rolling_checksum_default ... ok [INFO] [stdout] test transport::delta::tests::test_rolling_checksum_from_block ... ok [INFO] [stdout] test transport::delta::tests::test_rolling_checksum_push ... ok [INFO] [stdout] test transport::delta::tests::test_rolling_checksum_deterministic ... ok [INFO] [stdout] test transport::client::tests::test_status ... ok [INFO] [stdout] test transport::delta::tests::test_delta_single_byte_file ... ok [INFO] [stdout] test transport::delta::tests::test_rolling_checksum_roll ... ok [INFO] [stdout] test transport::codec::tests::test_codec_error_display ... ok [INFO] [stdout] test transport::delta::tests::test_rolling_checksum_single_byte_window ... ok [INFO] [stdout] test transport::delta::tests::test_roundtrip_real_text_file ... ok [INFO] [stdout] test transport::delta::tests::test_roundtrip_simple_modification ... ok [INFO] [stdout] test transport::delta::tests::test_roundtrip_large_file_small_change ... ok [INFO] [stdout] test transport::delta::tests::test_rolling_checksum_roll_multiple_steps ... ok [INFO] [stdout] test transport::delta::tests::test_rolling_checksum_reset ... ok [INFO] [stdout] test transport::protocol::tests::test_handshake_payload_serde ... ok [INFO] [stdout] test transport::protocol::tests::test_protocol_magic ... ok [INFO] [stdout] test transport::protocol::tests::test_message_type_roundtrip ... ok [INFO] [stdout] test transport::protocol::tests::test_unknown_message_type ... ok [INFO] [stdout] test transport::receiver::tests::test_dotdot_within_allowed_is_ok ... ok [INFO] [stdout] test transport::receiver::tests::test_normalize_path ... ok [INFO] [stdout] test transport::receiver::tests::test_path_traversal_absolute ... ok [INFO] [stdout] test transport::receiver::tests::test_path_traversal_via_dotdot ... ok [INFO] [stdout] test transport::receiver::tests::test_reject_absolute_outside_allowed ... ok [INFO] [stdout] test transport::receiver::tests::test_reject_empty_path ... ok [INFO] [stdout] test transport::receiver::tests::test_reject_unknown_alias ... ok [INFO] [stdout] test transport::receiver::tests::test_resolve_absolute_within_allowed ... ok [INFO] [stdout] test transport::receiver::tests::test_resolve_absolute_shared_no_alias ... ok [INFO] [stdout] test transport::receiver::tests::test_resolve_alias_method ... ok [INFO] [stdout] test transport::receiver::tests::test_resolve_alias_simple ... ok [INFO] [stdout] test transport::server::tests::test_connection_info_clone ... ok [INFO] [stdout] test transport::receiver::tests::test_resolve_alias_root ... ok [INFO] [stdout] test transport::receiver::tests::test_resolve_alias_nested ... ok [INFO] [stdout] test transport::protocol::tests::test_error_payload_serde ... ok [INFO] [stdout] test transport::server::tests::test_transport_server_state_new ... ok [INFO] [stdout] test transport::tls::tests::test_build_client_config_allow_self_signed ... ok [INFO] [stdout] test transport::server::tests::test_handshake_wrong_token ... ok [INFO] [stdout] test transport::server::tests::test_handshake_valid_token ... ok [INFO] [stdout] test transport::tls::tests::test_build_client_config_custom_ca_nonexistent ... ok [INFO] [stdout] test transport::server::tests::test_scan_directory_for_list_nonexistent ... ok [INFO] [stdout] test transport::server::tests::test_handshake_wrong_version ... ok [INFO] [stdout] test transport::tls::tests::test_build_client_config_default ... ok [INFO] [stdout] test transport::receiver::tests::test_has_alias ... ok [INFO] [stdout] test transport::server::tests::test_scan_directory_for_list_with_files ... ok [INFO] [stdout] test transport::tls::tests::test_build_server_config_with_fixtures ... ok [INFO] [stdout] test transport::tls::tests::test_check_server_tls_config_both_exist ... ok [INFO] [stdout] test transport::tls::tests::test_check_server_tls_config_both_none ... ok [INFO] [stdout] test transport::tls::tests::test_check_server_tls_config_cert_missing ... ok [INFO] [stdout] test transport::tls::tests::test_check_server_tls_config_cert_only ... ok [INFO] [stdout] test transport::tls::tests::test_check_server_tls_config_key_missing ... ok [INFO] [stdout] test transport::tls::tests::test_check_server_tls_config_key_only ... ok [INFO] [stdout] test transport::tls::tests::test_load_certs_from_valid_pem ... ok [INFO] [stdout] test transport::tls::tests::test_load_certs_empty_file ... ok [INFO] [stdout] test transport::tls::tests::test_load_certs_invalid_pem ... ok [INFO] [stdout] test transport::tls::tests::test_load_certs_nonexistent ... ok [INFO] [stdout] test transport::tls::tests::test_load_private_key_from_valid_pem ... ok [INFO] [stdout] test transport::tls::tests::test_load_private_key_empty_file ... ok [INFO] [stdout] test transport::tls::tests::test_load_private_key_nonexistent ... ok [INFO] [stdout] test web::tests::test_embedded_index_html_content ... ok [INFO] [stdout] test web::tests::test_embedded_index_html_exists ... ok [INFO] [stdout] test web::tests::test_mime_type_css ... ok [INFO] [stdout] test web::tests::test_mime_type_fonts ... ok [INFO] [stdout] test transport::tls::tests::test_load_private_key_invalid_pem ... ok [INFO] [stdout] test web::tests::test_mime_type_for_nested_path ... ok [INFO] [stdout] test web::tests::test_mime_type_html ... ok [INFO] [stdout] test web::tests::test_mime_type_images ... ok [INFO] [stdout] test web::tests::test_mime_type_js ... ok [INFO] [stdout] test web::tests::test_mime_type_json ... ok [INFO] [stdout] test web::tests::test_mime_type_unknown ... ok [INFO] [stdout] test cli::login::tests::test_save_encrypted_token_via_env ... ok [INFO] [stdout] test credentials::encrypt::tests::test_different_encryptions_produce_different_output ... ok [INFO] [stdout] test credentials::encrypt::tests::test_encrypt_decrypt_roundtrip ... ok [INFO] [stdout] test credentials::encrypt::tests::test_empty_token ... ok [INFO] [stdout] test credentials::encrypt::tests::test_corrupted_ciphertext ... ok [INFO] [stdout] test credentials::encrypt::tests::test_unicode_token_and_password ... ok [INFO] [stdout] test server::job_manager::tests::test_job_manager_trigger_sync ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 636 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.23s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "f8268f366bf7cc2a5924aa7fb0621253bf7778d7cd962f94d5b7c84514a31c3c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f8268f366bf7cc2a5924aa7fb0621253bf7778d7cd962f94d5b7c84514a31c3c", kill_on_drop: false }` [INFO] [stdout] f8268f366bf7cc2a5924aa7fb0621253bf7778d7cd962f94d5b7c84514a31c3c