[INFO] cloning repository https://github.com/abdulwahed-sweden/rustio-admin [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/abdulwahed-sweden/rustio-admin" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fabdulwahed-sweden%2Frustio-admin", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fabdulwahed-sweden%2Frustio-admin'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] f0ba53c165af694e3c6b1cb3f88de55e93537478 [INFO] testing abdulwahed-sweden/rustio-admin against 1.97.0-beta.6 for beta-1.98-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fabdulwahed-sweden%2Frustio-admin" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/abdulwahed-sweden/rustio-admin [INFO] finished tweaking git repo https://github.com/abdulwahed-sweden/rustio-admin [INFO] tweaked toml for git repo https://github.com/abdulwahed-sweden/rustio-admin written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/abdulwahed-sweden/rustio-admin on toolchain 1.97.0-beta.6 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/abdulwahed-sweden/rustio-admin 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.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.125 [INFO] [stderr] Downloaded wasm-bindgen v0.2.125 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.125 [INFO] [stderr] Downloaded hashlink v0.11.1 [INFO] [stderr] Downloaded block-buffer v0.12.1 [INFO] [stderr] Downloaded js-sys v0.3.102 [INFO] [stderr] Downloaded borsh-derive v1.7.0 [INFO] [stderr] Downloaded arrayvec v0.7.7 [INFO] [stderr] Downloaded time-core v0.1.9 [INFO] [stderr] Downloaded parse-display v0.9.1 [INFO] [stderr] Downloaded wasm-bindgen-macro-support v0.2.125 [INFO] [stderr] Downloaded borsh v1.7.0 [INFO] [stderr] Downloaded structmeta v0.3.0 [INFO] [stderr] Downloaded structmeta-derive v0.3.0 [INFO] [stderr] Downloaded time-macros v0.2.30 [INFO] [stderr] Downloaded serde_with_macros v3.21.0 [INFO] [stderr] Downloaded parse-display-derive v0.9.1 [INFO] [stderr] Downloaded docker_credential v1.4.0 [INFO] [stderr] Downloaded ferroid v2.0.0 [INFO] [stderr] Downloaded rustls-native-certs v0.8.4 [INFO] [stderr] Downloaded tonic-prost v0.14.6 [INFO] [stderr] Downloaded prost-derive v0.14.4 [INFO] [stderr] Downloaded prost v0.14.4 [INFO] [stderr] Downloaded wasip2 v1.0.4+wasi-0.2.12 [INFO] [stderr] Downloaded rust_decimal v1.42.1 [INFO] [stderr] Downloaded testcontainers v0.27.3 [INFO] [stderr] Downloaded prost-types v0.14.4 [INFO] [stderr] Downloaded tonic v0.14.6 [INFO] [stderr] Downloaded bollard v0.20.2 [INFO] [stderr] Downloaded bollard-buildkit-proto v0.7.0 [INFO] [stderr] Downloaded astral-tokio-tar v0.6.2 [INFO] [stderr] Downloaded testcontainers-modules v0.15.0 [INFO] [stderr] Downloaded bollard-stubs v1.52.1-rc.29.1.3 [INFO] [stderr] Downloaded rtoolbox v0.0.5 [INFO] [stderr] Downloaded hostname v0.4.2 [INFO] [stderr] Downloaded rpassword v7.5.4 [INFO] [stderr] Downloaded quoted_printable v0.5.2 [INFO] [stderr] Downloaded bitvec v1.1.1 [INFO] [stderr] Downloaded serde_with v3.21.0 [INFO] [stderr] Downloaded time v0.3.51 [INFO] [stderr] Downloaded pulldown-cmark v0.13.4 [INFO] [stderr] Downloaded minijinja v2.21.0 [INFO] [stderr] Downloaded lettre v0.11.22 [INFO] [stderr] Downloaded webpki-roots v1.0.8 [INFO] [stderr] Downloaded rustls v0.23.41 [INFO] [stderr] Downloaded defmt-macros v1.1.0 [INFO] [stderr] Downloaded defmt v1.1.0 [INFO] [stderr] Downloaded jiff-static v0.2.29 [INFO] [stderr] Downloaded jiff v0.2.29 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] 08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5 [INFO] running `Command { std: "docker" "start" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5", 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" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5", 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" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling quote v1.0.46 [INFO] [stderr] Compiling libc v0.2.186 [INFO] [stderr] Compiling typenum v1.20.1 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling litemap v0.8.2 [INFO] [stderr] Compiling writeable v0.6.3 [INFO] [stderr] Compiling icu_normalizer_data v2.2.0 [INFO] [stderr] Compiling bytes v1.12.0 [INFO] [stderr] Compiling cpufeatures v0.2.17 [INFO] [stderr] Compiling memchr v2.8.2 [INFO] [stderr] Compiling icu_properties_data v2.2.0 [INFO] [stderr] Compiling autocfg v1.5.1 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling futures-sink v0.3.32 [INFO] [stderr] Compiling cmov v0.5.4 [INFO] [stderr] Compiling rand_core v0.10.1 [INFO] [stderr] Compiling getrandom v0.4.3 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling ctutils v0.4.2 [INFO] [stderr] Compiling serde_json v1.0.150 [INFO] [stderr] Compiling hashbrown v0.17.1 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling zerocopy v0.8.52 [INFO] [stderr] Compiling foldhash v0.2.0 [INFO] [stderr] Compiling arrayvec v0.7.7 [INFO] [stderr] Compiling tinyvec v1.11.0 [INFO] [stderr] Compiling futures-io v0.3.32 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling log v0.4.33 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling syn v2.0.118 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling cpufeatures v0.3.0 [INFO] [stderr] Compiling crc-catalog v2.5.0 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling unicode-normalization v0.1.25 [INFO] [stderr] Compiling crc v3.4.0 [INFO] [stderr] Compiling rust_decimal v1.42.1 [INFO] [stderr] Compiling chacha20 v0.10.0 [INFO] [stderr] Compiling concurrent-queue v2.5.0 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling dotenvy v0.15.7 [INFO] [stderr] Compiling unicode-properties v0.1.4 [INFO] [stderr] Compiling hashlink v0.11.1 [INFO] [stderr] Compiling bitflags v2.13.0 [INFO] [stderr] Compiling unicode-bidi v0.3.18 [INFO] [stderr] Compiling event-listener v5.4.1 [INFO] [stderr] Compiling crossbeam-queue v0.3.12 [INFO] [stderr] Compiling uuid v1.23.3 [INFO] [stderr] Compiling whoami v2.1.2 [INFO] [stderr] Compiling indexmap v2.14.0 [INFO] [stderr] Compiling base64 v0.22.1 [INFO] [stderr] Compiling byteorder v1.5.0 [INFO] [stderr] Compiling http v1.4.2 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling mio v1.2.1 [INFO] [stderr] Compiling socket2 v0.6.4 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling hybrid-array v0.4.12 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling atoi v2.0.0 [INFO] [stderr] Compiling rand v0.10.1 [INFO] [stderr] Compiling stringprep v0.1.5 [INFO] [stderr] Compiling tokio v1.52.3 [INFO] [stderr] Compiling chrono v0.4.45 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling regex-syntax v0.8.11 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling inout v0.1.4 [INFO] [stderr] Compiling universal-hash v0.5.1 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling block-buffer v0.12.1 [INFO] [stderr] Compiling crypto-common v0.2.2 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling cipher v0.4.4 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling portable-atomic v1.13.1 [INFO] [stderr] Compiling polyval v0.6.2 [INFO] [stderr] Compiling pulldown-cmark v0.13.4 [INFO] [stderr] Compiling winnow v1.0.3 [INFO] [stderr] Compiling base64ct v1.8.3 [INFO] [stderr] Compiling console v0.16.3 [INFO] [stderr] Compiling aes v0.8.4 [INFO] [stderr] Compiling ghash v0.5.1 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling ctr v0.9.2 [INFO] [stderr] Compiling digest v0.11.3 [INFO] [stderr] Compiling password-hash v0.5.0 [INFO] [stderr] Compiling hmac v0.13.0 [INFO] [stderr] Compiling sha2 v0.11.0 [INFO] [stderr] Compiling md-5 v0.11.0 [INFO] [stderr] Compiling hkdf v0.13.0 [INFO] [stderr] Compiling blake2 v0.10.6 [INFO] [stderr] Compiling aead v0.5.2 [INFO] [stderr] Compiling rustio-admin-assets v0.33.0 (/opt/rustwide/workdir/crates/rustio-admin-assets) [INFO] [stderr] Compiling pulldown-cmark-escape v0.11.0 [INFO] [stderr] Compiling unit-prefix v0.5.2 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling memo-map v0.3.3 [INFO] [stderr] Compiling jiff v0.2.29 [INFO] [stderr] Compiling toml_datetime v1.1.1+spec-1.1.0 [INFO] [stderr] Compiling toml_writer v1.1.1+spec-1.1.0 [INFO] [stderr] Compiling aes-gcm v0.10.3 [INFO] [stderr] Compiling indicatif v0.18.4 [INFO] [stderr] Compiling argon2 v0.5.3 [INFO] [stderr] Compiling hmac v0.12.1 [INFO] [stderr] Compiling sha1 v0.10.6 [INFO] [stderr] Compiling toml_parser v1.1.2+spec-1.1.0 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling rio-theme v0.33.0 (/opt/rustwide/workdir/crates/rio-theme) [INFO] [stderr] Compiling urlencoding v2.1.3 [INFO] [stderr] Compiling toml_edit v0.25.12+spec-1.1.0 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling zerovec-derive v0.11.3 [INFO] [stderr] Compiling displaydoc v0.2.6 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling tokio-macros v2.7.0 [INFO] [stderr] Compiling clap_derive v4.6.1 [INFO] [stderr] Compiling rustio-admin-macros v0.33.0 (/opt/rustwide/workdir/crates/rustio-admin-macros) [INFO] [stderr] Compiling zerofrom-derive v0.1.7 [INFO] [stderr] Compiling yoke-derive v0.8.2 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling tokio-stream v0.1.18 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling regex v1.12.4 [INFO] [stderr] Compiling rand v0.9.4 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling zerofrom v0.1.8 [INFO] [stderr] Compiling env_filter v1.0.1 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling rand v0.8.6 [INFO] [stderr] Compiling yoke v0.8.3 [INFO] [stderr] Compiling ulid v1.2.1 [INFO] [stderr] Compiling zerovec v0.11.6 [INFO] [stderr] Compiling zerotrie v0.2.4 [INFO] [stderr] Compiling clap v4.6.1 [INFO] [stderr] Compiling tinystr v0.8.3 [INFO] [stderr] Compiling potential_utf v0.1.5 [INFO] [stderr] Compiling icu_locale_core v2.2.0 [INFO] [stderr] Compiling icu_collections v2.2.0 [INFO] [stderr] Compiling env_logger v0.11.10 [INFO] [stderr] Compiling smallvec v1.15.2 [INFO] [stderr] Compiling either v1.16.0 [INFO] [stderr] Compiling minijinja v2.21.0 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling icu_provider v2.2.0 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling dashmap v6.2.1 [INFO] [stderr] Compiling icu_properties v2.2.0 [INFO] [stderr] Compiling icu_normalizer v2.2.0 [INFO] [stderr] Compiling futures-intrusive v0.5.0 [INFO] [stderr] Compiling rustio-admin-cli v0.33.0 (/opt/rustwide/workdir/crates/rustio-admin-cli) [INFO] [stderr] Compiling idna_adapter v1.2.2 [INFO] [stderr] Compiling hyper v1.10.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling sqlx-core v0.9.0 [INFO] [stderr] Compiling sqlx-postgres v0.9.0 [INFO] [stderr] Compiling sqlx-macros-core v0.9.0 [INFO] [stderr] Compiling sqlx-macros v0.9.0 [INFO] [stderr] Compiling sqlx v0.9.0 [INFO] [stderr] Compiling rustio-admin v0.33.0 (/opt/rustwide/workdir/crates/rustio-admin) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 49s [INFO] running `Command { std: "docker" "inspect" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5", 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" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling rustio-admin-macros v0.33.0 (/opt/rustwide/workdir/crates/rustio-admin-macros) [INFO] [stderr] Compiling rio-theme v0.33.0 (/opt/rustwide/workdir/crates/rio-theme) [INFO] [stderr] Compiling rustio-admin-assets v0.33.0 (/opt/rustwide/workdir/crates/rustio-admin-assets) [INFO] [stderr] Compiling rustio-admin-cli v0.33.0 (/opt/rustwide/workdir/crates/rustio-admin-cli) [INFO] [stderr] Compiling rustio-admin v0.33.0 (/opt/rustwide/workdir/crates/rustio-admin) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 31.37s [INFO] running `Command { std: "docker" "inspect" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5", 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" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.67s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rio_theme-7a411924ebdf363d) [INFO] [stdout] [INFO] [stdout] running 49 tests [INFO] [stdout] test adaptive::tests::adjustment_flag_separates_attempted_from_succeeded ... ok [INFO] [stdout] test color::tests::hue_distance_wraps_correctly ... ok [INFO] [stdout] test color::tests::bad_input_returns_error_no_panic ... ok [INFO] [stdout] test adaptive::tests::very_dark_navy_lightens_for_dark_mode_only ... ok [INFO] [stdout] test color::tests::mix_halfway_is_perceptually_centered ... ok [INFO] [stdout] test color::tests::parse_three_digit_hex_expands ... ok [INFO] [stdout] test color::tests::out_of_gamut_clamps_not_wraps ... ok [INFO] [stdout] test color::tests::parse_six_digit_hex ... ok [INFO] [stdout] test color::tests::mix_self_is_self ... ok [INFO] [stdout] test color::tests::round_trip_hex_to_hex ... ok [INFO] [stdout] test contrast::tests::ratio_is_symmetric ... ok [INFO] [stdout] test contrast::tests::identical_colors_yield_one ... ok [INFO] [stdout] test derive::tests::bg_is_almost_white_and_border_is_lighter_than_brand ... ok [INFO] [stdout] test derive::tests::hover_is_darker_than_brand_and_active_darker_still ... ok [INFO] [stdout] test derive::tests::muted_has_brand_temperature_not_pure_gray ... ok [INFO] [stdout] test derive::tests::tint_is_lighter_than_brand ... ok [INFO] [stdout] test emit::tests::dark_explicit_uses_supplied_accent ... ok [INFO] [stdout] test emit::tests::soft_bg_always_clears_aa_non_text_against_its_foreground ... ok [INFO] [stdout] test engine::tests::neon_input_trips_vivid_taming_and_guards_accent ... ok [INFO] [stdout] test emit::tests::emit_contains_every_canonical_brand_token ... ok [INFO] [stdout] test adaptive::tests::mid_tone_passes_both_modes_unchanged ... ok [INFO] [stdout] test emit::tests::accent_rgb_triple_agrees_with_accent_hex ... ok [INFO] [stdout] test emit::tests::dark_block_is_always_emitted ... ok [INFO] [stdout] test emit::tests::chart_tokens_index_from_one ... ok [INFO] [stdout] test emit::tests::emit_contains_every_live_template_token ... ok [INFO] [stdout] test emit::tests::dark_emits_both_explicit_and_auto_blocks ... ok [INFO] [stdout] test contrast::tests::black_on_white_is_twenty_one ... ok [INFO] [stdout] test emit::tests::dark_never_leaks_light_background ... ok [INFO] [stdout] test emit::tests::dark_auto_accent_clears_aa_on_dark_surface ... ok [INFO] [stdout] test engine::tests::two_color_input_populates_brand_secondary_distinctly ... ok [INFO] [stdout] test guard::tests::near_black_surface_with_dark_gray_text_falls_back_to_light ... ok [INFO] [stdout] test guard::tests::white_surface_with_dark_text_passes_through ... ok [INFO] [stdout] test engine::tests::report_contrast_fields_are_populated ... ok [INFO] [stdout] test semantic::tests::brand_at_gap_boundary_does_get_capped_rotation ... ok [INFO] [stdout] test semantic::tests::grey_brand_leaves_all_three_unshifted ... ok [INFO] [stdout] test semantic::tests::purple_brand_leaves_all_three_unshifted ... ok [INFO] [stdout] test semantic::tests::red_brand_keeps_danger_at_anchor_for_family_coexistence ... ok [INFO] [stdout] test guard::tests::readable_text_picks_higher_ratio ... ok [INFO] [stdout] test semantic::tests::rotation_direction_actually_moves_anchor_away ... ok [INFO] [stdout] test hierarchy::tests::five_inputs_yield_one_primary_one_secondary_three_chart ... ok [INFO] [stdout] test engine::tests::brand_text_always_clears_aa_on_bg ... ok [INFO] [stdout] test emit::tests::dark_light_only_pins_framework_accent ... ok [INFO] [stdout] test hierarchy::tests::one_input_uses_sentinel_secondary_equal_to_primary ... ok [INFO] [stdout] test engine::tests::empty_input_uses_default_brand ... ok [INFO] [stdout] test hierarchy::tests::two_inputs_yield_empty_chart ... ok [INFO] [stdout] test semantic::tests::neon_green_brand_keeps_success_in_green_family ... ok [INFO] [stdout] test semantic::tests::signed_hue_diff_handles_wraparound ... ok [INFO] [stdout] test vivid::tests::calm_blue_passes_through_untamed ... ok [INFO] [stdout] test vivid::tests::neon_lime_is_tamed_and_hue_is_preserved ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 49 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/engine.rs (/opt/rustwide/target/debug/deps/engine-7af62b327b3dbeda) [INFO] [stdout] [INFO] [stdout] running 9 tests [INFO] [stdout] test dark_auto_derived ... ok [INFO] [stdout] test dark_explicit ... ok [INFO] [stdout] test dark_light_only ... ok [INFO] [stdout] test pipeline_is_deterministic ... ok [INFO] [stdout] test five_color_palette ... ok [INFO] [stdout] test empty_input_uses_default_brand ... ok [INFO] [stdout] test single_calm_brand ... ok [INFO] [stdout] test single_neon_brand_is_split_and_tamed ... ok [INFO] [stdout] test two_near_identical_darks ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rustio_admin-f95adcd29fdb0807) [INFO] [stdout] [INFO] [stdout] running 486 tests [INFO] [stdout] test admin::admin_recovery_handlers::tests::malformed_inputs_are_rejected ... ok [INFO] [stdout] test admin::admin_recovery_handlers::tests::parse_lock_duration_accepts_locked_presets ... ok [INFO] [stdout] test admin::admin_recovery_handlers::tests::external_urls_are_rejected ... ok [INFO] [stdout] test admin::admin_recovery_handlers::tests::parse_lock_duration_freeform_accepts_positive_minutes ... ok [INFO] [stdout] test admin::admin_recovery_handlers::tests::parse_lock_duration_freeform_rejects_zero_negative_garbage ... ok [INFO] [stdout] test admin::admin_recovery_handlers::tests::parse_lock_duration_rejects_unknown_preset ... ok [INFO] [stdout] test admin::admin_recovery_handlers::tests::path_traversal_is_rejected ... ok [INFO] [stdout] test admin::admin_recovery_handlers::tests::redirect_collapses_invalid_to_admin_dashboard ... ok [INFO] [stdout] test admin::admin_recovery_handlers::tests::paths_outside_admin_surface_are_rejected ... ok [INFO] [stdout] test admin::admin_recovery_handlers::tests::redirect_passes_valid_internal_paths ... ok [INFO] [stdout] test admin::admin_recovery_handlers::tests::valid_internal_admin_paths_are_accepted ... ok [INFO] [stdout] test admin::audit::tests::action_type_and_audit_event_vocabularies_dont_collide ... ok [INFO] [stdout] test admin::audit::tests::audit_event_existing_variants_have_stable_strings ... ok [INFO] [stdout] test admin::audit::tests::audit_event_strings_are_snake_case ... ok [INFO] [stdout] test admin::audit::tests::audit_event_password_changed_self_maps_correctly ... ok [INFO] [stdout] test admin::audit::tests::audit_event_strings_are_unique ... ok [INFO] [stdout] test admin::audit::tests::legacy_action_type_parser_returns_none_on_unknown_strings ... ok [INFO] [stdout] test admin::audit::tests::log_entry_default_actor_user_id_is_none ... ok [INFO] [stdout] test admin::audit::tests::log_entry_with_actor_sets_field ... ok [INFO] [stdout] test admin::audit::tests::log_entry_default_event_is_none ... ok [INFO] [stdout] test admin::audit::tests::log_entry_with_event_overrides_action_type_persistence ... ok [INFO] [stdout] test admin::audit::tests::merge_inserts_into_existing_object ... ok [INFO] [stdout] test admin::audit::tests::merge_passes_through_non_object_metadata_with_warning ... ok [INFO] [stdout] test admin::audit::tests::merge_returns_metadata_unchanged_when_no_actor ... ok [INFO] [stdout] test admin::audit::tests::merge_synthesizes_object_when_metadata_is_none ... ok [INFO] [stdout] test admin::audit::tests::merge_typed_actor_wins_over_existing_metadata_key ... ok [INFO] [stdout] test admin::builtin::tests::html_escape_handles_each_entity ... ok [INFO] [stdout] test admin::builtin::tests::humanize_email_capitalises_local_part ... ok [INFO] [stdout] test admin::builtin::tests::humanize_email_falls_back_to_full_string ... ok [INFO] [stdout] test admin::builtin::tests::looks_like_email_accepts_simple ... ok [INFO] [stdout] test admin::builtin::tests::looks_like_email_rejects_malformed ... ok [INFO] [stdout] test admin::bulk::tests::default_is_zero_result ... ok [INFO] [stdout] test admin::bulk::tests::failure_new_owns_reason ... ok [INFO] [stdout] test admin::bulk::tests::ok_constructs_clean_result ... ok [INFO] [stdout] test admin::bulk::tests::partial_carries_failures_into_total ... ok [INFO] [stdout] test admin::csv_export::tests::cells_with_comma_are_quoted ... ok [INFO] [stdout] test admin::csv_export::tests::cells_with_newlines_are_quoted ... ok [INFO] [stdout] test admin::csv_export::tests::row_quotes_only_offending_cells ... ok [INFO] [stdout] test admin::csv_export::tests::row_uses_crlf_and_comma ... ok [INFO] [stdout] test admin::csv_export::tests::simple_cells_are_unquoted ... ok [INFO] [stdout] test admin::csv_import::tests::empty_header_column_errors ... ok [INFO] [stdout] test admin::csv_import::tests::handles_crlf_line_endings ... ok [INFO] [stdout] test admin::csv_import::tests::parses_simple_header_and_two_rows ... ok [INFO] [stdout] test admin::docs::tests::embedded_doc_slugs_are_unique ... ok [INFO] [stdout] test admin::docs::tests::render_markdown_escapes_html_in_source ... ok [INFO] [stdout] test admin::docs::tests::render_markdown_strips_non_navigable_links_to_text ... ok [INFO] [stdout] test admin::docs::tests::render_markdown_keeps_external_and_anchor_links ... ok [INFO] [stdout] test admin::csv_export::tests::wants_csv_accept_header_precedence ... ok [INFO] [stdout] test admin::bulk::tests::with_message_attaches_summary ... ok [INFO] [stdout] test admin::docs::tests::find_returns_none_for_unknown_slug ... ok [INFO] [stdout] test admin::feature_flags::tests::flag_cache_ttl_is_60_seconds ... ok [INFO] [stdout] test admin::filters::tests::classify_id_email_status_bool_timestamp ... ok [INFO] [stdout] test admin::filters::tests::empty_choices_slice_falls_back_to_role_based_kind ... ok [INFO] [stdout] test admin::filters::tests::declared_choices_promote_field_to_multi_select ... ok [INFO] [stdout] test admin::filters::tests::fk_only_for_integer_id_columns ... ok [INFO] [stdout] test admin::feature_flags::tests::invalidate_cache_clears_every_entry ... ok [INFO] [stdout] test admin::csv_export::tests::cells_with_double_quote_double_the_quote ... ok [INFO] [stdout] test admin::csv_import::tests::trailing_blank_line_is_dropped ... ok [INFO] [stdout] test admin::filters::tests::infer_with_registry_choices_still_win_over_fk_promotion ... ok [INFO] [stdout] test admin::filters::tests::format_relation_cell_with_and_without_target ... ok [INFO] [stdout] test admin::docs::tests::render_markdown_emits_html_for_headings_and_code ... ok [INFO] [stdout] test admin::csv_import::tests::empty_body_errors ... ok [INFO] [stdout] test admin::filters::tests::infer_with_registry_falls_back_to_numeric_when_no_relation_resolved ... ok [INFO] [stdout] test admin::csv_import::tests::handles_quoted_fields_with_commas_and_doubled_quotes ... ok [INFO] [stdout] test admin::filters::tests::relation_label_overrides_role ... ok [INFO] [stdout] test admin::docs::tests::embedded_docs_have_non_empty_sources ... ok [INFO] [stdout] test admin::handlers::csv_escape_tests::no_quote_added_when_only_safe_punctuation ... ok [INFO] [stdout] test admin::handlers::csv_escape_tests::plain_text_passes_through_unquoted ... ok [INFO] [stdout] test admin::filters::tests::mask_pii_keeps_prefix_and_replaces_with_bullets ... ok [INFO] [stdout] test admin::filters::tests::infer_filters_skips_id_and_picks_kinds ... ok [INFO] [stdout] test admin::handlers::login_flash_tests::logout_flag_produces_signed_out_flash ... ok [INFO] [stdout] test admin::handlers::compute_row_diff_tests::diff_handles_unset_to_set_transition ... ok [INFO] [stdout] test admin::handlers::compute_row_diff_tests::diff_empty_when_nothing_changed ... ok [INFO] [stdout] test admin::handlers::login_flash_tests::logout_takes_precedence_over_password_reset_when_both_present ... ok [INFO] [stdout] test admin::handlers::compute_row_diff_tests::diff_skips_non_editable_fields ... ok [INFO] [stdout] test admin::handlers::csv_escape_tests::comma_triggers_quoting ... ok [INFO] [stdout] test admin::handlers::csv_escape_tests::embedded_quote_is_doubled_inside_quoted_field ... ok [INFO] [stdout] test admin::handlers::csv_escape_tests::newline_triggers_quoting ... ok [INFO] [stdout] test admin::handlers::csv_escape_tests::unicode_passes_through_unchanged_when_no_special_chars ... ok [INFO] [stdout] test admin::handlers::login_flash_tests::no_query_params_produces_no_flash ... ok [INFO] [stdout] test admin::handlers::login_flash_tests::unknown_password_reset_value_falls_through_silently ... ok [INFO] [stdout] test admin::handlers::login_flash_tests::password_reset_success_produces_locked_flash_copy ... ok [INFO] [stdout] test admin::handlers::parse_date_yyyy_mm_dd_tests::rejects_empty_and_garbage ... ok [INFO] [stdout] test admin::handlers::compute_row_diff_tests::diff_reports_changed_fields_only ... ok [INFO] [stdout] test admin::handlers::revoke_session_verdict_tests::blocks_revoking_current_session ... ok [INFO] [stdout] test admin::handlers::revoke_session_verdict_tests::error_message_directs_user_to_revoke_all ... ok [INFO] [stdout] test admin::admin_recovery_handlers::tests::parse_lock_duration_freeform_overflow_rejected ... ok [INFO] [stdout] test admin::handlers::sanitise_upload_filename_tests::caps_length ... ok [INFO] [stdout] test admin::handlers::sanitise_upload_filename_tests::empty_or_pathological_falls_back_to_file ... ok [INFO] [stdout] test admin::handlers::sanitise_upload_filename_tests::plain_ascii_name_passes_through ... ok [INFO] [stdout] test admin::handlers::sanitise_upload_filename_tests::strips_unix_and_windows_path_components ... ok [INFO] [stdout] test admin::handlers::sanitise_upload_filename_tests::trims_leading_dots ... ok [INFO] [stdout] test admin::handlers::view_designer_tests::default_mode_always_allowed_even_when_unchecked ... ok [INFO] [stdout] test admin::handlers::view_designer_tests::parses_a_composition_slot_and_ignores_empty_ones ... ok [INFO] [stdout] test admin::handlers::view_designer_tests::parses_roles_priority_filter_and_mode ... ok [INFO] [stdout] test admin::handlers::view_designer_tests::unknown_role_and_mode_fall_back_to_defaults ... ok [INFO] [stdout] test admin::handlers::view_designer_tests::parses_allowed_modes_only_checked_plus_default ... ok [INFO] [stdout] test admin::health_dashboard::tests::status_as_str_is_snake_case_and_stable ... ok [INFO] [stdout] test admin::handlers::parse_date_yyyy_mm_dd_tests::trims_whitespace ... ok [INFO] [stdout] test admin::healthz::tests::down_response_is_503_with_db_down ... ok [INFO] [stdout] test admin::handlers::revoke_session_verdict_tests::allows_revoking_different_session ... ok [INFO] [stdout] test admin::handlers::view_designer_tests::composition_with_unknown_primary_is_dropped ... ok [INFO] [stdout] test admin::handlers::parse_date_yyyy_mm_dd_tests::accepts_canonical_form ... ok [INFO] [stdout] test admin::healthz::tests::ok_response_is_200_with_db_up ... ok [INFO] [stdout] test admin::handlers::revoke_session_verdict_tests::allows_when_no_current_session_resolved ... ok [INFO] [stdout] test admin::handlers::parse_date_yyyy_mm_dd_tests::normalises_unpadded_input_to_canonical_form ... ok [INFO] [stdout] test admin::icons::tests::directional_icon_appends_marker_class ... ok [INFO] [stdout] test admin::icons::tests::directional_icon_with_empty_class_still_marked ... ok [INFO] [stdout] test admin::icons::tests::symbol_icon_does_not_get_directional_marker ... ok [INFO] [stdout] test admin::icons::tests::known_icons_render ... ok [INFO] [stdout] test admin::healthz::tests::response_headers_carry_json_and_no_store ... ok [INFO] [stdout] test admin::icons::tests::unknown_icon_returns_empty_not_panic ... ok [INFO] [stdout] test admin::json_api::tests::json_error_redacts_internal_message ... ok [INFO] [stdout] test admin::json_api::tests::mutation_ok_envelope_supports_ok_status_for_update_delete ... ok [INFO] [stdout] test admin::json_api::tests::typed_cell_bool_round_trips ... ok [INFO] [stdout] test admin::icons::tests::vertical_chevron_is_not_directional ... ok [INFO] [stdout] test admin::json_api::tests::json_error_carries_status_code_and_content_type ... ok [INFO] [stdout] test admin::json_api::tests::json_error_envelope_shape_is_error_plus_status ... ok [INFO] [stdout] test admin::json_api::tests::mutation_ok_envelope_carries_admin_name_id_and_status ... ok [INFO] [stdout] test admin::json_api::tests::json_error_maps_each_status_variant ... ok [INFO] [stdout] test admin::csv_import::tests::oversized_body_errors ... ok [INFO] [stdout] test admin::json_api::tests::typed_cell_filepath_returns_string_or_null ... ok [INFO] [stdout] test admin::json_api::tests::typed_cell_garbage_in_int_column_surfaces_as_string ... ok [INFO] [stdout] test admin::json_api::tests::typed_cell_integers_parse ... ok [INFO] [stdout] test admin::json_api::tests::typed_cell_optional_strings_null_on_empty ... ok [INFO] [stdout] test admin::json_api::tests::typed_cell_required_strings_stay_string ... ok [INFO] [stdout] test admin::json_api::tests::validation_errors_envelope_shape_and_status ... ok [INFO] [stdout] test admin::modeladmin::tests::parse_order_spec_handles_leading_minus ... ok [INFO] [stdout] test admin::modeladmin::tests::search_index_column_default_is_none ... ok [INFO] [stdout] test admin::modeladmin::tests::sort_dir_sql_is_stable ... ok [INFO] [stdout] test admin::openapi::tests::schema_for_field_maps_field_types ... ok [INFO] [stdout] test admin::openapi::tests::empty_admin_has_no_project_paths ... ok [INFO] [stdout] test admin::notifications::tests::create_table_sql_is_idempotent_shape ... ok [INFO] [stdout] test admin::openapi::tests::spec_carries_openapi_version_and_info ... ok [INFO] [stdout] test admin::openapi::tests::schemas_section_is_object ... ok [INFO] [stdout] test admin::ops::flatten_validation_tests::field_attached_error_prefixes_with_field_label ... ok [INFO] [stdout] test admin::ops::flatten_validation_tests::global_error_passes_through_unchanged ... ok [INFO] [stdout] test admin::ops::flatten_validation_tests::unknown_field_name_falls_through_to_banner ... ok [INFO] [stdout] test admin::ops::flatten_validation_tests::mixed_errors_preserve_order ... ok [INFO] [stdout] test admin::ops::select_projection_tests::drops_the_fts_column_from_the_projection ... ok [INFO] [stdout] test admin::ops::select_projection_tests::no_op_when_fts_column_is_not_a_real_column ... ok [INFO] [stdout] test admin::ops::select_projection_tests::keeps_all_columns_when_no_fts_column ... ok [INFO] [stdout] test admin::recovery_handlers::tests::recovery_state_constructs_from_default_admin ... ok [INFO] [stdout] test admin::recovery_handlers::tests::reset_password_form_routes_field_errors_to_named_field ... ok [INFO] [stdout] test admin::redact::tests::redact_backup_code_is_constant ... ok [INFO] [stdout] test admin::recovery_handlers::tests::render_contexts_tolerate_absent_correlation_id ... ok [INFO] [stdout] test admin::recovery_handlers::tests::render_password_policy_error_does_not_leak_plaintext ... ok [INFO] [stdout] test admin::recovery_handlers::tests::reset_password_form_renders_live_policy_minimum ... ok [INFO] [stdout] test admin::redact::tests::redact_mfa_secret_is_constant ... ok [INFO] [stdout] test admin::redact::tests::redact_password_returns_fixed_placeholder ... ok [INFO] [stdout] test admin::redact::tests::redact_token_format_is_recognizable ... ok [INFO] [stdout] test admin::redact::tests::redact_token_changes_per_token ... ok [INFO] [stdout] test admin::recovery_handlers::tests::forgot_password_form_has_only_email_field ... ok [INFO] [stdout] test admin::redact::tests::redact_token_is_deterministic ... ok [INFO] [stdout] test admin::redact::tests::redact_token_reveals_no_substring_of_input ... ok [INFO] [stdout] test admin::handlers::view_designer_tests::editor_template_renders_with_real_context ... ok [INFO] [stdout] test admin::render::acronym_lockstep_tests::macro_crate_mirror_is_identical ... ok [INFO] [stdout] test admin::render::tests::action_label_covers_every_audit_event_string ... ok [INFO] [stdout] test admin::render::adaptive_list_tests::cards_mode_builds_adaptive_with_ids_and_hides_secret ... ok [INFO] [stdout] test admin::render::adaptive_list_tests::adaptive_partial_renders_clickable_rows_without_hidden ... ok [INFO] [stdout] test admin::render::tests::extract_changes_round_trips_full_entry ... ok [INFO] [stdout] test admin::render::tests::extract_changes_skips_malformed_entries ... ok [INFO] [stdout] test admin::render::tests::fieldsets_drive_section_order_and_titles ... ok [INFO] [stdout] test admin::render::adaptive_list_tests::table_mode_keeps_legacy_table_but_offers_switcher ... ok [INFO] [stdout] test admin::render::tests::extract_changes_returns_empty_when_changes_key_missing ... ok [INFO] [stdout] test admin::render::tests::extract_changes_returns_empty_when_changes_not_array ... ok [INFO] [stdout] test admin::render::tests::action_pill_class_returns_known_classes ... ok [INFO] [stdout] test admin::render::tests::extract_changes_falls_back_to_field_when_label_missing ... ok [INFO] [stdout] test admin::render::tests::extract_changes_returns_empty_when_metadata_is_none ... ok [INFO] [stdout] test admin::render::tests::highlight_escapes_inside_mark_when_term_contains_specials ... ok [INFO] [stdout] test admin::render::tests::fieldsets_with_unknown_field_names_skip_silently ... ok [INFO] [stdout] test admin::render::tests::highlight_escapes_html_around_marks ... ok [INFO] [stdout] test admin::render::tests::highlight_handles_adjacent_matches ... ok [INFO] [stdout] test admin::render::tests::highlight_returns_none_when_no_match ... ok [INFO] [stdout] test admin::render::tests::highlight_wraps_ascii_case_insensitive ... ok [INFO] [stdout] test admin::render::tests::highlight_wraps_every_occurrence ... ok [INFO] [stdout] test admin::render::tests::humanise_field_acronym_substrings_left_alone ... ok [INFO] [stdout] test admin::render::tests::humanise_field_edge_cases ... ok [INFO] [stdout] test admin::render::tests::humanise_field_plain_snake_case ... ok [INFO] [stdout] test admin::render::tests::humanise_field_compound_acronyms ... ok [INFO] [stdout] test admin::render::tests::humanise_field_standalone_acronyms ... ok [INFO] [stdout] test admin::render::tests::sort_direction_label_numerics_read_highest_lowest ... ok [INFO] [stdout] test admin::render::tests::password_change_form_sections_only_new_password_carries_hint ... ok [INFO] [stdout] test admin::render::tests::trust_label_strings ... ok [INFO] [stdout] test admin::render::tests::highlight_preserves_non_ascii_bytes_around_match ... ok [INFO] [stdout] test admin::render::tests::sort_direction_label_bools_read_off_on ... ok [INFO] [stdout] test admin::render::tests::sort_direction_label_datetimes_read_chronological ... ok [INFO] [stdout] test admin::render::tests::ua_summary_android_chrome ... ok [INFO] [stdout] test admin::render::tests::sort_direction_label_strings_read_alphabetical ... ok [INFO] [stdout] test admin::render::tests::password_change_form_sections_renders_live_min_length ... ok [INFO] [stdout] test admin::render::tests::ua_summary_curl_falls_through_to_unknown_os ... ok [INFO] [stdout] test admin::render::adaptive_list_tests::list_html_adaptive_branch_swaps_table_for_cards ... ok [INFO] [stdout] test admin::render::tests::sort_direction_label_filepaths_read_alphabetical ... ok [INFO] [stdout] test admin::render::tests::ua_summary_ios_safari ... ok [INFO] [stdout] test admin::render::tests::ua_summary_linux_firefox ... ok [INFO] [stdout] test admin::render::tests::ua_summary_unknown_returns_truncated ... ok [INFO] [stdout] test admin::render::tests::ua_summary_none_returns_dash ... ok [INFO] [stdout] test admin::render::tests::ua_summary_windows_chrome ... ok [INFO] [stdout] test admin::render::tests::ua_summary_macos_safari ... ok [INFO] [stdout] test admin::routes::css_lockstep_tests::import_manifest_matches_concat_bundle ... ok [INFO] [stdout] test admin::routes::tests::admin_css_payload_appends_override_after_baked_bundle ... ok [INFO] [stdout] test admin::routes::tests::dark_leak_detector_clears_media_block_alone ... ok [INFO] [stdout] test admin::routes::tests::dark_leak_detector_clears_explicit_dark_block_alone ... ok [INFO] [stdout] test admin::render::tests::highlight_returns_none_for_empty_term ... ok [INFO] [stdout] test admin::routes::tests::dark_leak_detector_warns_on_shop_light_only_override ... ok [INFO] [stdout] test admin::routes::tests::extract_admin_name_parses_slug_segment ... ok [INFO] [stdout] test admin::routes::tests::extract_admin_name_rejects_root_reserved_and_non_admin ... ok [INFO] [stdout] test admin::routes::tests::is_mutating_method_recognises_write_verbs ... ok [INFO] [stdout] test admin::routes::tests::admin_css_payload_none_is_the_baked_bundle_verbatim ... ok [INFO] [stdout] test admin::routes::tests::dark_leak_detector_ignores_override_with_no_color_tokens ... ok [INFO] [stdout] test admin::routes::tests::font_routes_serve_shipped_and_404_retired ... ok [INFO] [stdout] test admin::routes::tests::dark_leak_detector_clears_rio_theme_dual_block_output ... ok [INFO] [stdout] test admin::routes::tests::perm_guard_admin_short_circuits_without_perm ... ok [INFO] [stdout] test admin::routes::tests::perm_guard_developer_short_circuits_without_perm ... ok [INFO] [stdout] test admin::routes::tests::perm_guard_inactive_admin_denies_even_with_bypass ... ok [INFO] [stdout] test admin::routes::tests::perm_guard_staff_without_perm_denies ... ok [INFO] [stdout] test admin::routes::tests::perm_guard_staff_with_perm_passes ... ok [INFO] [stdout] test admin::routes::tests::perm_guard_supervisor_without_perm_denies ... ok [INFO] [stdout] test admin::routes::tests::read_only_allows_prefix_paths ... ok [INFO] [stdout] test admin::routes::tests::read_only_blocks_project_data_mutations ... ok [INFO] [stdout] test admin::routes::tests::read_only_allows_auth_flow_exact_paths ... ok [INFO] [stdout] test admin::render::adaptive_list_tests::list_html_legacy_branch_unchanged_when_no_spec ... ok [INFO] [stdout] test admin::routes::tests::read_only_model_builder_and_accessor_round_trip ... ok [INFO] [stdout] test admin::routes::tests::read_only_blocks_random_paths_outside_admin_surface ... ok [INFO] [stdout] test admin::handlers::sanitise_upload_filename_tests::replaces_unsafe_chars_with_underscore ... ok [INFO] [stdout] test admin::audit::tests::emergency_recovery_is_cli_only ... ok [INFO] [stdout] test admin::routes::tests::role_guard_decision_admin_meets_staff_floor ... ok [INFO] [stdout] test admin::routes::tests::role_guard_decision_administrator_does_not_meet_developer ... ok [INFO] [stdout] test admin::routes::tests::role_guard_decision_developer_meets_everything ... ok [INFO] [stdout] test admin::routes::tests::role_guard_decision_user_does_not_meet_staff ... ok [INFO] [stdout] test admin::routes::tests::strict_mailer_guard_fails_when_required_but_default_mailer ... ok [INFO] [stdout] test admin::routes::tests::strict_mailer_guard_passes_for_default_admin ... ok [INFO] [stdout] test admin::routes::tests::strict_mailer_guard_passes_when_mailer_was_explicitly_overridden ... ok [INFO] [stdout] test admin::routes::tests::strict_mailer_guard_passes_when_strict_mode_disabled ... ok [INFO] [stdout] test admin::routes::tests::whitelist_accepts_the_three_locked_paths ... ok [INFO] [stdout] test admin::routes::tests::whitelist_rejects_paths_outside_admin_surface ... ok [INFO] [stdout] test admin::routes::tests::whitelist_rejects_subpaths_of_account_sessions ... ok [INFO] [stdout] test admin::saved_filters::tests::sanitise_name_handles_unicode_chars_correctly ... ok [INFO] [stdout] test admin::saved_filters::tests::sanitise_name_trims_surrounding_whitespace ... ok [INFO] [stdout] test admin::saved_filters::tests::sanitise_name_truncates_at_cap ... ok [INFO] [stdout] test admin::saved_filters::tests::sanitise_query_allows_empty_for_default_view ... ok [INFO] [stdout] test admin::saved_filters::tests::sanitise_name_rejects_empty_and_whitespace ... ok [INFO] [stdout] test admin::sdk_gen::tests::empty_admin_emits_header_and_no_interfaces ... ok [INFO] [stdout] test admin::sdk_gen::tests::header_carries_branded_app_name ... ok [INFO] [stdout] test admin::sdk_gen::tests::ts_type_for_maps_each_field_type ... ok [INFO] [stdout] test admin::types::scalar_field_type_tests::choice_field_populates_adminfield_choices ... ok [INFO] [stdout] test admin::types::scalar_field_type_tests::classify_maps_each_rust_type_to_its_field_type ... ok [INFO] [stdout] test admin::saved_filters::tests::sanitise_query_caps_long_input ... ok [INFO] [stdout] test admin::types::scalar_field_type_tests::display_values_use_html_roundtrip_formats ... ok [INFO] [stdout] test admin::types::scalar_field_type_tests::choice_from_form_accepts_in_set_rejects_out_of_set ... ok [INFO] [stdout] test admin::types::scalar_field_type_tests::from_form_rejects_invalid_scalars ... ok [INFO] [stdout] test admin::types::scalar_field_type_tests::from_form_parses_valid_scalars ... ok [INFO] [stdout] test admin::types::scalar_field_type_tests::widgets_follow_html_input_types ... ok [INFO] [stdout] test admin::routes::tests::whitelist_rejects_other_admin_paths ... ok [INFO] [stdout] test admin::types::tests::admin_mailer_builder_flips_override_flag ... ok [INFO] [stdout] test admin::types::tests::admin_new_has_no_custom_mailer ... ok [INFO] [stdout] test admin::types::tests::admin_password_policy_overrides_default ... ok [INFO] [stdout] test admin::types::tests::admin_recovery_policy_overrides_default ... ok [INFO] [stdout] test admin::validation::tests::email_accepts_typical_addresses ... ok [INFO] [stdout] test admin::validation::tests::phone_accepts_common_shapes ... ok [INFO] [stdout] test admin::validation::tests::email_rejects_obvious_typos ... ok [INFO] [stdout] test auth::guards::tests::ceiling_allows_assigning_equal_or_below ... ok [INFO] [stdout] test admin::validation::tests::phone_rejects_letters_and_bad_lengths ... ok [INFO] [stdout] test auth::guards::tests::ceiling_supervisor_cannot_create_administrator ... ok [INFO] [stdout] test admin::types::tests::admin_new_installs_default_password_policy ... ok [INFO] [stdout] test auth::guards::tests::ceiling_developer_can_assign_anything_inclusive ... ok [INFO] [stdout] test admin::types::tests::admin_new_installs_default_recovery_policy ... ok [INFO] [stdout] test auth::guards::tests::cross_rank_blocks_editing_equal ... ok [INFO] [stdout] test auth::guards::tests::ceiling_blocks_promote_above_self ... ok [INFO] [stdout] test auth::guards::tests::cross_rank_allows_editing_lower ... ok [INFO] [stdout] test auth::guards::tests::cross_rank_allows_editing_self ... ok [INFO] [stdout] test auth::guards::tests::cross_rank_blocks_editing_higher ... ok [INFO] [stdout] test auth::guards::tests::cross_rank_developer_can_edit_administrator ... ok [INFO] [stdout] test auth::guards::tests::self_demote_allows_self_keep_rank ... ok [INFO] [stdout] test auth::guards::tests::self_demote_blocks_self_deactivate ... ok [INFO] [stdout] test auth::guards::tests::self_demote_blocks_role_drop ... ok [INFO] [stdout] test auth::guards::tests::self_demote_ignores_other_targets ... ok [INFO] [stdout] test auth::mfa::tests::alphabet_is_31_chars_no_ambiguous ... ok [INFO] [stdout] test auth::mfa::tests::base32_decode_rejects_non_alphabet_chars ... ok [INFO] [stdout] test auth::mfa::tests::base32_decode_tolerates_hyphens_spaces_padding_and_lowercase ... ok [INFO] [stdout] test auth::mfa::tests::base32_decode_rfc4648_round_trips_progressive_vectors ... ok [INFO] [stdout] test auth::mfa::tests::base32_rfc4648_progressive_test_vectors ... ok [INFO] [stdout] test auth::mfa::tests::build_otpauth_url_matches_google_authenticator_format ... ok [INFO] [stdout] test auth::mfa::tests::default_is_optional ... ok [INFO] [stdout] test auth::mfa::tests::current_step_at_canonical_30s_interval ... ok [INFO] [stdout] test auth::mfa::tests::each_code_is_xxxx_dash_xxxx_shape ... ok [INFO] [stdout] test auth::mfa::tests::normalise_strips_hyphens_and_uppercases ... ok [INFO] [stdout] test auth::mfa::tests::policy_is_copy ... ok [INFO] [stdout] test auth::mfa::tests::truncated_input_rejects_explicitly ... ok [INFO] [stdout] test auth::mfa::tests::rfc6238_appendix_b_test_vectors_truncated_to_6_digits ... ok [INFO] [stdout] test auth::mfa::tests::provision_secret_returns_20_bytes ... ok [INFO] [stdout] test auth::mfa::tests::generate_totp_returns_six_digit_range ... ok [INFO] [stdout] test auth::mfa::tests::generated_codes_are_unique_within_batch ... ok [INFO] [stdout] test auth::mfa::tests::tampered_ciphertext_fails_aead_verification ... ok [INFO] [stdout] test auth::mfa::tests::totp_verify_rejects_wrong_code ... ok [INFO] [stdout] test auth::mfa::tests::provision_secret_base32_length_matches_secret ... ok [INFO] [stdout] test auth::mfa::tests::provision_secret_each_call_yields_different_secret ... ok [INFO] [stdout] test auth::mfa::tests::generate_returns_count_codes ... ok [INFO] [stdout] test auth::mfa::tests::verify_accepts_one_step_skew ... ok [INFO] [stdout] test auth::mfa::tests::normalise_is_idempotent ... ok [INFO] [stdout] test auth::mfa::tests::verify_accepts_current_step ... ok [INFO] [stdout] test auth::permissions::tests::cache_ttl_is_one_minute ... ok [INFO] [stdout] test auth::mfa::tests::verify_rejects_invalid_phc_string ... ok [INFO] [stdout] test auth::mfa::tests::verify_does_not_underflow_at_t_zero ... ok [INFO] [stdout] test auth::permissions::tests::administrator_and_developer_bypass_group_checks ... ok [INFO] [stdout] test auth::mfa::tests::verify_rejects_two_step_skew_when_window_is_one ... ok [INFO] [stdout] test auth::mfa::tests::wrap_unwrap_round_trip_recovers_plaintext ... ok [INFO] [stdout] test auth::mfa::tests::wrap_uses_fresh_nonce_per_call ... ok [INFO] [stdout] test auth::mfa::tests::wrong_key_fails_decryption ... ok [INFO] [stdout] test auth::recovery::tests::consume_outcome_debug_never_carries_plaintext_token ... ok [INFO] [stdout] test auth::recovery::tests::default_policy_accepts_password_at_floor ... ok [INFO] [stdout] test auth::recovery::tests::default_policy_counts_chars_not_bytes ... ok [INFO] [stdout] test auth::recovery::tests::default_policy_floor_is_ten ... ok [INFO] [stdout] test auth::recovery::tests::default_policy_with_min_len_overrides_floor ... ok [INFO] [stdout] test auth::recovery::tests::default_policy_rejects_empty_password ... ok [INFO] [stdout] test auth::recovery::tests::default_recovery_policy_consume_rate_limit_is_ten_per_five_min ... ok [INFO] [stdout] test auth::recovery::tests::default_recovery_policy_login_throttle_is_default ... ok [INFO] [stdout] test auth::recovery::tests::default_policy_rejects_short_password ... ok [INFO] [stdout] test auth::recovery::tests::custom_error_renders_message_verbatim ... ok [INFO] [stdout] test auth::recovery::tests::default_recovery_policy_mfa_step_seconds_is_thirty ... ok [INFO] [stdout] test auth::recovery::tests::default_recovery_policy_reauth_window_is_fifteen_minutes ... ok [INFO] [stdout] test auth::recovery::tests::default_recovery_policy_strict_mailer_required_is_false ... ok [INFO] [stdout] test auth::recovery::tests::default_recovery_policy_mfa_skew_steps_is_one ... ok [INFO] [stdout] test auth::recovery::tests::default_recovery_policy_ttl_is_one_hour ... ok [INFO] [stdout] test auth::recovery::tests::error_renderings_do_not_leak_plaintext ... ok [INFO] [stdout] test auth::recovery::tests::humanize_ttl_one_hour_default ... ok [INFO] [stdout] test auth::recovery::tests::humanize_ttl_minutes ... ok [INFO] [stdout] test auth::recovery::tests::humanize_ttl_seconds_for_short_windows ... ok [INFO] [stdout] test auth::mfa::tests::base32_rfc4648_test_vector_foobar ... ok [INFO] [stdout] test auth::recovery::tests::default_recovery_policy_request_rate_limit_is_five_per_fifteen_min ... ok [INFO] [stdout] test auth::recovery::tests::default_recovery_policy_scope_for_returns_none ... ok [INFO] [stdout] test auth::recovery::tests::humanize_ttl_two_hours_pluralises ... ok [INFO] [stdout] test auth::recovery::tests::humanize_ttl_zero_or_negative_returns_safe_string ... ok [INFO] [stdout] test auth::recovery::tests::issue_outcome_debug_never_carries_plaintext_token ... ok [INFO] [stdout] test auth::recovery::tests::login_throttle_default_is_five_ten_fifteen ... ok [INFO] [stdout] test auth::recovery::tests::login_throttle_is_send_sync_copy ... ok [INFO] [stdout] test auth::recovery::tests::mailer_email_status_round_trip_strings ... ok [INFO] [stdout] test auth::recovery::tests::malformed_forwarded_inputs_never_panic ... ok [INFO] [stdout] test auth::recovery::tests::reset_token_retention_window_is_seven_days ... ok [INFO] [stdout] test auth::recovery::tests::shared_password_policy_is_send_sync ... ok [INFO] [stdout] test auth::recovery::tests::site_url_handles_ipv6_bracketed_host ... ok [INFO] [stdout] test auth::recovery::tests::shared_recovery_policy_is_send_sync ... ok [INFO] [stdout] test auth::recovery::tests::site_url_prefers_rfc7239_forwarded_first_hop ... ok [INFO] [stdout] test auth::recovery::tests::site_url_handles_quoted_forwarded_values ... ok [INFO] [stdout] test auth::recovery::tests::site_url_returns_none_when_no_headers_resolve ... ok [INFO] [stdout] test auth::recovery::tests::site_url_x_forwarded_takes_first_csv_entry ... ok [INFO] [stdout] test auth::recovery_admin::tests::actor_email_fingerprint_differs_for_different_emails ... ok [INFO] [stdout] test auth::recovery_admin::tests::actor_email_fingerprint_is_eight_chars ... ok [INFO] [stdout] test auth::recovery_admin::tests::actor_email_fingerprint_does_not_leak_plaintext ... ok [INFO] [stdout] test auth::recovery_admin::tests::admin_outcome_types_are_send ... ok [INFO] [stdout] test auth::recovery_admin::tests::lock_duration_minutes_zero_is_a_past_no_op ... ok [INFO] [stdout] test auth::recovery_admin::tests::lock_duration_presets_are_relative_to_now ... ok [INFO] [stdout] test auth::recovery_admin::tests::lock_duration_indefinite_is_year_9999 ... ok [INFO] [stdout] test auth::recovery::tests::site_url_falls_through_to_x_forwarded_pair ... ok [INFO] [stdout] test auth::recovery::tests::site_url_falls_back_to_host_header_with_http ... ok [INFO] [stdout] test auth::recovery_admin::tests::actor_email_fingerprint_is_deterministic ... ok [INFO] [stdout] test auth::recovery::tests::site_url_rejects_non_http_proto ... ok [INFO] [stdout] test auth::recovery::tests::site_url_rejects_host_with_whitespace_or_control ... ok [INFO] [stdout] test auth::recovery_admin::tests::random_temp_password_distinct_across_calls ... ok [INFO] [stdout] test auth::recovery_admin::tests::lock_state_variants_round_trip ... ok [INFO] [stdout] test auth::recovery_admin::tests::random_temp_password_is_sixteen_chars ... ok [INFO] [stdout] test auth::role::tests::bypasses_group_checks_only_admin_and_dev ... ok [INFO] [stdout] test auth::recovery_admin::tests::random_temp_password_is_url_safe_base64 ... ok [INFO] [stdout] test auth::role::tests::can_access_panel_gates_at_staff ... ok [INFO] [stdout] test auth::role::tests::parse_rejects_unknown ... ok [INFO] [stdout] test auth::role::tests::parse_round_trips_for_every_variant ... ok [INFO] [stdout] test auth::sessions::tests::extracts_token_from_cookie_header ... ok [INFO] [stdout] test auth::sessions::tests::hash_token_output_is_url_safe_base64 ... ok [INFO] [stdout] test auth::sessions::tests::hash_token_is_deterministic ... ok [INFO] [stdout] test auth::sessions::tests::hash_token_does_not_leak_plaintext ... ok [INFO] [stdout] test auth::sessions::tests::invalidation_reason_strings_are_distinct ... ok [INFO] [stdout] test auth::sessions::tests::returns_none_when_cookie_missing ... ok [INFO] [stdout] test auth::sessions::tests::session_trust_parse_defaults_safely_on_unknown ... ok [INFO] [stdout] test auth::sessions::tests::session_trust_round_trips_through_sql ... ok [INFO] [stdout] test auth::sessions::tests::random_token_has_reasonable_entropy ... ok [INFO] [stdout] test auth::users::tests::verdict_blocks_when_last_member_deactivating ... ok [INFO] [stdout] test auth::users::tests::user_profile_derives_debug_and_clone ... ok [INFO] [stdout] test auth::users::tests::verdict_blocks_when_last_member_deleting ... ok [INFO] [stdout] test auth::users::tests::verdict_blocks_when_last_member_demoting ... ok [INFO] [stdout] test auth::users::tests::verdict_safe_when_more_than_one_member ... ok [INFO] [stdout] test auth::users::tests::verdict_safe_when_target_not_in_protected_pool ... ok [INFO] [stdout] test auth::recovery::tests::default_recovery_policy_with_overrides_apply_field_by_field ... ok [INFO] [stdout] test auth::users::tests::verdict_safe_when_last_member_keeps_role ... ok [INFO] [stdout] test email::tests::framework_envelope_appends_security_footer ... ok [INFO] [stdout] test auth::role::tests::includes_matrix_is_strict_ladder ... ok [INFO] [stdout] test email::tests::framework_envelope_omits_missing_fields ... ok [INFO] [stdout] test email::tests::mailer_error_display ... ok [INFO] [stdout] test email::tests::recovery_html_escapes_html_in_inputs ... ok [INFO] [stdout] test email::tests::log_mailer_send_is_ok ... ok [INFO] [stdout] test email::tests::recovery_html_contains_required_markers_and_escapes ... ok [INFO] [stdout] test auth::sessions::tests::hash_token_differs_per_token ... ok [INFO] [stdout] test email::tests::redact_likely_tokens_keeps_short_words ... ok [INFO] [stdout] test email::tests::with_html_attaches_alternative_body ... ok [INFO] [stdout] test http::formdata_tests::duplicate_keys_collapse_for_get_but_preserved_in_get_all ... ok [INFO] [stdout] test http::formdata_tests::get_all_returns_empty_slice_for_missing_key ... ok [INFO] [stdout] test email::tests::recovery_html_powered_by_appears_only_when_opted_in ... ok [INFO] [stdout] test email::tests::redact_likely_tokens_redacts_long_alnum_strings ... ok [INFO] [stdout] test auth::role::tests::label_is_capitalized_human_form ... ok [INFO] [stdout] test http::formdata_tests::set_resets_multi_view_to_single_entry ... ok [INFO] [stdout] test auth::recovery::tests::purge_query_includes_retention_window_and_table ... ok [INFO] [stdout] test auth::recovery_admin::tests::throttle_outcome_variants_are_distinct ... ok [INFO] [stdout] test auth::sessions::tests::session_trust_orders_correctly ... ok [INFO] [stdout] test http::formdata_tests::single_submission_is_visible_via_both_views ... ok [INFO] [stdout] test middleware::correlation_id::tests::fresh_id_is_uuid_v7_shape ... ok [INFO] [stdout] test middleware::correlation_id::tests::fresh_ids_are_unique ... ok [INFO] [stdout] test middleware::correlation_id::tests::inbound_too_long_is_replaced ... ok [INFO] [stdout] test middleware::correlation_id::tests::inbound_too_short_is_replaced ... ok [INFO] [stdout] test middleware::correlation_id::tests::inbound_with_control_chars_is_replaced ... ok [INFO] [stdout] test middleware::csrf::tests::is_safe_recognises_read_methods ... ok [INFO] [stdout] test middleware::correlation_id::tests::inbound_safe_value_is_kept ... ok [INFO] [stdout] test middleware::correlation_id::tests::inbound_with_whitespace_is_trimmed ... ok [INFO] [stdout] test middleware::locale::tests::first_tag_wins_in_comma_separated_list ... ok [INFO] [stdout] test middleware::locale::tests::header_with_only_invalid_tags_returns_none ... ok [INFO] [stdout] test middleware::locale::tests::arabic_and_cjk_tags_are_accepted ... ok [INFO] [stdout] test middleware::locale::tests::invalid_first_tag_falls_through_to_next ... ok [INFO] [stdout] test middleware::locale::tests::missing_header_returns_none ... ok [INFO] [stdout] test middleware::locale::tests::locale_as_str_round_trips ... ok [INFO] [stdout] test middleware::locale::tests::oversized_tag_is_rejected ... ok [INFO] [stdout] test middleware::locale::tests::q_value_is_stripped_from_the_tag ... ok [INFO] [stdout] test migrations::tests::slugify_lowercases_and_replaces ... ok [INFO] [stdout] test middleware::rate_limit::tests::different_keys_tracked_separately ... ok [INFO] [stdout] test middleware::locale::tests::single_tag_returned_as_is ... ok [INFO] [stdout] test migrations::tests::split_ignores_line_comments ... ok [INFO] [stdout] test migrations::tests::split_ignores_semicolon_in_string ... ok [INFO] [stdout] test middleware::csrf::tests::constant_time_eq_basic ... ok [INFO] [stdout] test middleware::locale::tests::whitespace_between_tags_is_tolerated ... ok [INFO] [stdout] test multipart::tests::boundary_case_insensitive_prefix ... ok [INFO] [stdout] test multipart::tests::parse_rejects_no_opening_boundary ... ok [INFO] [stdout] test multipart::tests::boundary_extracts_quoted ... ok [INFO] [stdout] test multipart::tests::boundary_extracts_simple ... ok [INFO] [stdout] test multipart::tests::boundary_rejects_non_multipart ... ok [INFO] [stdout] test multipart::tests::extract_param_handles_quotes_and_unquoted ... ok [INFO] [stdout] test multipart::tests::parse_file_part ... ok [INFO] [stdout] test multipart::tests::parse_mixed_text_and_file ... ok [INFO] [stdout] test orm::value_conversion_tests::scalar_from_impls_map_to_their_variants ... ok [INFO] [stdout] test multipart::tests::parse_rejects_unterminated_headers ... ok [INFO] [stdout] test multipart::tests::parse_simple_text_field ... ok [INFO] [stdout] test router::tests::root_path_still_matches_after_trailing_slash_normalisation ... ok [INFO] [stdout] test router::tests::captures_param ... ok [INFO] [stdout] test router::tests::distinguishes_404_from_405 ... ok [INFO] [stdout] test router::tests::matches_static_path ... ok [INFO] [stdout] test middleware::rate_limit::tests::bucket_allows_burst_then_blocks ... ok [INFO] [stdout] test router::tests::trailing_slash_is_normalised_for_static_and_param_routes ... ok [INFO] [stdout] test view_layer::compose::tests::style_slug_roundtrips_and_matches_serde ... ok [INFO] [stdout] test admin::audit::tests::model_name_uses_admin_slug_not_struct_name ... ok [INFO] [stdout] test templates::tests::render_for_model_prefers_per_model_override ... ok [INFO] [stdout] test templates::tests::missing_template_errors_cleanly ... ok [INFO] [stdout] test templates::tests::sidebar_marks_active_nav_item ... ok [INFO] [stdout] test templates::tests::disk_loader_finds_project_template ... ok [INFO] [stdout] test view_layer::infer::tests::audit_timestamps_are_detail_only ... ok [INFO] [stdout] test view_layer::infer::tests::enums_become_filterable_badges ... ok [INFO] [stdout] test view_layer::infer::tests::bookings_example_spec ... ok [INFO] [stdout] test view_layer::infer::tests::first_text_becomes_primary ... ok [INFO] [stdout] test view_layer::infer::tests::from_admin_field_maps_relation_and_choices ... ok [INFO] [stdout] test view_layer::infer::tests::id_is_detail_only ... ok [INFO] [stdout] test view_layer::infer::tests::inference_is_deterministic ... ok [INFO] [stdout] test view_layer::infer::tests::nullable_secondary_text_is_demoted ... ok [INFO] [stdout] test view_layer::render::tests::badge_carries_semantic_class ... ok [INFO] [stdout] test view_layer::render::tests::cell_serializes_with_kind_tag ... ok [INFO] [stdout] test view_layer::render::tests::composed_field_not_rendered_twice ... ok [INFO] [stdout] test view_layer::render::tests::detail_only_excluded_from_list ... ok [INFO] [stdout] test view_layer::render::tests::humanize_handles_snake_case ... ok [INFO] [stdout] test view_layer::render::tests::render_view_with_ids_sets_row_ids_and_still_drops_hidden ... ok [INFO] [stdout] test view_layer::render::tests::hidden_field_value_never_rendered ... ok [INFO] [stdout] test view_layer::render::tests::shipped_partials_switch_on_kind_and_drop_hidden ... ok [INFO] [stdout] test view_layer::roles::tests::role_slug_matches_serde_repr ... ok [INFO] [stdout] test view_layer::roles::tests::role_slug_roundtrips_for_every_variant ... ok [INFO] [stdout] test view_layer::roles::tests::unknown_role_slug_is_none ... ok [INFO] [stdout] test view_layer::safety_tests::tests::sensitive_values_never_reach_rendered_cells ... ok [INFO] [stdout] test view_layer::safety_tests::tests::all_sensitive_names_infer_as_hidden ... ok [INFO] [stdout] test view_layer::safety_tests::tests::redacted_fields_lists_every_sensitive_column ... ok [INFO] [stdout] test view_layer::spec::tests::enums_serialize_as_snake_case ... ok [INFO] [stdout] test view_layer::spec::tests::list_fields_skip_hidden_and_sort_by_priority ... ok [INFO] [stdout] test view_layer::spec::tests::resolve_mode_rejects_disallowed ... ok [INFO] [stdout] test view_layer::infer::tests::customers_example_spec ... ok [INFO] [stdout] test view_layer::spec::tests::version_defaults_when_missing ... ok [INFO] [stdout] test view_layer::spec::tests::roundtrips_through_json ... ok [INFO] [stdout] test middleware::locale::tests::empty_header_returns_none ... ok [INFO] [stdout] test templates::tests::render_for_model_falls_through_to_framework_default ... ok [INFO] [stdout] test templates::tests::every_embedded_template_loads ... ok [INFO] [stdout] test templates::tests::every_handler_rendered_template_resolves ... ok [INFO] [stdout] test auth::mfa::tests::hash_uses_argon2id_low_memory_params ... ok [INFO] [stdout] test auth::mfa::tests::verify_rejects_wrong_code ... ok [INFO] [stdout] test auth::mfa::tests::hash_verify_round_trip ... ok [INFO] [stdout] test auth::users::tests::password_round_trip ... ok [INFO] [stdout] test auth::mfa::tests::separate_hash_calls_yield_different_phc_strings ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 486 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.04s [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Running tests/cascade_lockstep.rs (/opt/rustwide/target/debug/deps/cascade_lockstep-d766e46940e79817) [INFO] [stdout] running 1 test [INFO] [stderr] Running tests/integration_emergency.rs (/opt/rustwide/target/debug/deps/integration_emergency-00c1bb82d5cfdbb4) [INFO] [stdout] test admin_css_import_order_matches_routes_concat_order ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/integration_mfa.rs (/opt/rustwide/target/debug/deps/integration_mfa-2894ca982e4564bb) [INFO] [stdout] [INFO] [stderr] Running tests/integration_recovery.rs (/opt/rustwide/target/debug/deps/integration_recovery-7f1d2f8feb263dbd) [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] [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] [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] [stderr] Running tests/integration_view_specs.rs (/opt/rustwide/target/debug/deps/integration_view_specs-aff0931dce3c0b88) [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] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rustio_admin_assets-6cafe59471c63f6b) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test tests::every_embedded_template_has_bytes ... ok [INFO] [stdout] test tests::accessors_round_trip ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rustio_admin-42a94b9d5f6f8265) [INFO] [stdout] [INFO] [stdout] running 204 tests [INFO] [stdout] test app_fields::tests::parse_rejects_empty_field_name ... ok [INFO] [stdout] test app_fields::tests::parse_rejects_field_name_starting_with_digit ... ok [INFO] [stdout] test app_fields::tests::parse_choice_with_values ... ok [INFO] [stdout] test app_fields::tests::parse_rejects_choice_empty_value ... ok [INFO] [stdout] test app_fields::tests::parse_choice_single_value_ok ... ok [INFO] [stdout] test app_fields::tests::parse_fk_target_can_have_digits ... ok [INFO] [stdout] test app_fields::tests::parse_fk_with_camelcase_target ... ok [INFO] [stdout] test app_fields::tests::parse_each_simple_type ... ok [INFO] [stdout] test app_fields::tests::parse_choice_allows_underscore_and_dash ... ok [INFO] [stdout] test app_fields::tests::parse_rejects_bare_choice ... ok [INFO] [stdout] test app_fields::tests::parse_rejects_bare_fk ... ok [INFO] [stdout] test app_fields::tests::parse_rejects_choice_bad_chars ... ok [INFO] [stdout] test app_fields::tests::parse_rejects_choice_duplicate ... ok [INFO] [stdout] test app_fields::tests::parse_rejects_field_name_with_dash ... ok [INFO] [stdout] test app_fields::tests::parse_rejects_fk_with_empty_target ... ok [INFO] [stdout] test app_fields::tests::parse_rejects_fk_with_extra_segment ... ok [INFO] [stdout] test app_fields::tests::parse_rejects_fk_with_lowercase_target ... ok [INFO] [stdout] test app_fields::tests::parse_rejects_missing_colon ... ok [INFO] [stdout] test app_fields::tests::parse_rejects_rust_keyword ... ok [INFO] [stdout] test app_fields::tests::parse_rejects_underscore_only_name ... ok [INFO] [stdout] test app_fields::tests::parse_rejects_unknown_type ... ok [INFO] [stdout] test app_fields::tests::pluralise_snake_ch_sh_take_es ... ok [INFO] [stdout] test app_fields::tests::pluralise_snake_default_adds_s ... ok [INFO] [stdout] test app_fields::tests::pluralise_snake_empty_returns_empty ... ok [INFO] [stdout] test app_fields::tests::pluralise_snake_sxz_take_es ... ok [INFO] [stdout] test app_fields::tests::pluralise_handles_common_shapes ... ok [INFO] [stdout] test app_fields::tests::render_email_and_phone_carry_format_attribute ... ok [INFO] [stdout] test app_fields::tests::render_decimal_and_uuid_types ... ok [INFO] [stdout] test app_fields::tests::render_quotes_reserved_keyword_columns ... ok [INFO] [stdout] test app_fields::tests::render_sql_decls_for_every_kind ... ok [INFO] [stdout] test app_fields::tests::parse_rejects_field_name_with_uppercase ... ok [INFO] [stdout] test app_fields::tests::render_new_scalar_types_float_date_time ... ok [INFO] [stdout] test app_fields::tests::render_search_fields_empty_when_no_text_kinds ... ok [INFO] [stdout] test app_fields::tests::render_choice_emits_check_and_attribute ... ok [INFO] [stdout] test app_fields::tests::pluralise_snake_vowel_y_keeps_y ... ok [INFO] [stdout] test app_fields::tests::render_imports_include_chrono_only_when_timestamp_present ... ok [INFO] [stdout] test app_fields::tests::render_search_fields_only_text_kinds ... ok [INFO] [stdout] test app_fields::tests::pluralise_snake_consonant_y_becomes_ies ... ok [INFO] [stdout] test app_fields::tests::render_from_row_uses_correct_getter_per_type ... ok [INFO] [stdout] test app_fields::tests::render_insert_values_clones_string_and_json_only ... ok [INFO] [stdout] test app_fields::tests::validate_unique_passes_for_distinct ... ok [INFO] [stdout] test app_fields::tests::render_columns_literal_includes_id_first ... ok [INFO] [stdout] test builder::canonical::tests::final_newline_enforced ... ok [INFO] [stdout] test builder::canonical::tests::empty_input_stays_empty ... ok [INFO] [stdout] test app_fields::tests::validate_unique_catches_duplicates ... ok [INFO] [stdout] test builder::canonical::tests::nfc_normalizes_combining_marks ... ok [INFO] [stdout] test builder::canonical::tests::trailing_blank_lines_collapsed ... ok [INFO] [stdout] test builder::canonical::tests::lone_cr_becomes_lf ... ok [INFO] [stdout] test builder::canonical::tests::crlf_collapses_to_lf ... ok [INFO] [stdout] test builder::canonical::tests::idempotent ... ok [INFO] [stdout] test app_fields::tests::render_struct_fields_in_declared_order ... ok [INFO] [stdout] test builder::canonical::tests::trailing_whitespace_stripped_per_line ... ok [INFO] [stdout] test builder::cmd::tests::field_name_validator_refuses_reserved_names ... ok [INFO] [stdout] test builder::cmd::tests::add_field_refuses_unknown_model ... ok [INFO] [stdout] test builder::cmd::tests::plural_snake_handles_common_cases ... ok [INFO] [stdout] test builder::codegen::tests::snake_helper_matches_macro_convention ... ok [INFO] [stdout] test builder::codegen::tests::output_is_canonical_text ... ok [INFO] [stdout] test builder::cmd::tests::import_rejects_bad_type_and_records_nothing ... ok [INFO] [stdout] test builder::cmd::tests::model_name_validator_requires_camel_case ... ok [INFO] [stdout] test builder::codegen::tests::initial_migration_creates_each_table ... ok [INFO] [stdout] test builder::draft::tests::duplicate_table_names_refused ... ok [INFO] [stdout] test builder::draft::tests::empty_draft_round_trips ... ok [INFO] [stdout] test builder::draft::tests::keys_sorted_in_output ... ok [INFO] [stdout] test builder::codegen::tests::long_field_names_keep_separator_from_type_column ... ok [INFO] [stdout] test builder::codegen::tests::model_file_includes_field_columns ... ok [INFO] [stdout] test builder::codegen::tests::unique_modifier_emits_sql_constraint ... ok [INFO] [stdout] test builder::cmd::tests::project_name_validator_refuses_garbage ... ok [INFO] [stdout] test builder::draft::tests::duplicate_model_names_refused ... ok [INFO] [stdout] test builder::codegen::tests::admin_file_registers_each_model ... ok [INFO] [stdout] test builder::codegen::tests::generation_is_deterministic ... ok [INFO] [stdout] test builder::codegen::tests::every_emitted_file_carries_doctrine_header ... ok [INFO] [stdout] test builder::draft::tests::unknown_schema_version_refused ... ok [INFO] [stdout] test builder::hash::tests::admin_hash_ignores_unrelated_model_fields ... ok [INFO] [stdout] test builder::draft::tests::unknown_field_type_refused ... ok [INFO] [stdout] test builder::draft::tests::serialized_output_is_byte_stable ... ok [INFO] [stdout] test builder::draft::tests::round_trip_via_canonical_toml ... ok [INFO] [stdout] test builder::hash::tests::hashes_differ_across_projections ... ok [INFO] [stdout] test builder::hash::tests::model_hash_changes_when_field_added ... ok [INFO] [stdout] test builder::history::tests::append_emits_required_fields_in_order ... ok [INFO] [stdout] test builder::hash::tests::model_hash_returns_none_for_absent_model ... ok [INFO] [stdout] test builder::history::tests::append_is_append_only ... ok [INFO] [stdout] test builder::history::tests::append_writes_one_line_per_call ... ok [INFO] [stdout] test builder::history::tests::op_enum_matches_serialized ... ok [INFO] [stdout] test builder::history::tests::append_refuses_oversized_lines ... ok [INFO] [stdout] test builder::hash::tests::hashes_share_sha256_prefix ... ok [INFO] [stdout] test builder::history::tests::append_uses_second_precision_timestamps ... ok [INFO] [stdout] test builder::hash::tests::hashes_are_deterministic ... ok [INFO] [stdout] test builder::lifecycle::tests::find_project_root_refuses_symlinked_rustio ... ok [INFO] [stdout] test builder::lifecycle::tests::find_project_root_walks_up ... ok [INFO] [stdout] test builder::lifecycle::tests::parse_header_hash_only_first_20_lines ... ok [INFO] [stdout] test builder::lifecycle::tests::parse_header_hash_refuses_malformed_hash ... ok [INFO] [stdout] test builder::lifecycle::tests::parse_header_hash_refuses_nested_prefix ... ok [INFO] [stdout] test builder::lifecycle::tests::lockfile_version_mismatch_refused ... ok [INFO] [stdout] test builder::lockfile::tests::current_pins_running_version ... ok [INFO] [stdout] test builder::lifecycle::tests::parse_header_hash_accepts_canonical_only ... ok [INFO] [stdout] test builder::lockfile::tests::round_trip ... ok [INFO] [stdout] test builder::lockfile::tests::verify_passes_on_match ... ok [INFO] [stdout] test builder::lockfile::tests::unknown_schema_version_refused ... ok [INFO] [stdout] test builder::lockfile::tests::verify_refuses_on_mismatch ... ok [INFO] [stdout] test builder::redact::tests::is_secret_field_type_detects_category ... ok [INFO] [stdout] test builder::redact::tests::no_4char_input_substring_leaks ... ok [INFO] [stdout] test builder::redact::tests::redact_changes_with_input ... ok [INFO] [stdout] test builder::redact::tests::redact_format_matches_design ... ok [INFO] [stdout] test builder::redact::tests::secret_field_categories_are_closed ... ok [INFO] [stdout] test builder::replay::tests::add_field_on_unknown_model_refused ... ok [INFO] [stdout] test builder::redact::tests::redact_is_deterministic ... ok [INFO] [stdout] test builder::lifecycle::tests::plan_on_fresh_project_lists_all_creates ... ok [INFO] [stdout] test builder::replay::tests::empty_history_produces_empty_draft ... ok [INFO] [stdout] test builder::replay::tests::duplicate_add_model_refused ... ok [INFO] [stdout] test builder::replay::tests::replay_rebuilds_draft ... ok [INFO] [stdout] test builder::replay::tests::unknown_op_refused ... ok [INFO] [stdout] test builder::toml_canon::tests::array_of_tables_preserves_insertion_order ... ok [INFO] [stdout] test builder::toml_canon::tests::empty_document_round_trips ... ok [INFO] [stdout] test builder::toml_canon::tests::canonical_round_trip ... ok [INFO] [stdout] test builder::toml_canon::tests::keys_sorted_within_table ... ok [INFO] [stdout] test builder::lifecycle::tests::commit_is_idempotent ... ok [INFO] [stdout] test builder::toml_canon::tests::output_ends_with_single_lf ... ok [INFO] [stdout] test builder::ulid_gen::tests::new_ulid_is_26_chars_crockford_base32 ... ok [INFO] [stdout] test builder::ulid_gen::tests::parse_round_trip ... ok [INFO] [stdout] test builder::ulid_gen::tests::ulids_are_distinct_within_process ... ok [INFO] [stdout] test docs::tests::health_probe_classifies_500_as_not_running ... ok [INFO] [stdout] test docs::tests::health_probe_recognises_rustio_200_with_correlation_id ... ok [INFO] [stdout] test docs::tests::health_probe_recognises_303_with_correlation_id ... ok [INFO] [stdout] test docs::tests::health_probe_rejects_foreign_server_without_correlation_id ... ok [INFO] [stdout] test builder::toml_canon::tests::output_uses_lf_line_endings_only ... ok [INFO] [stdout] test docs::tests::health_probe_returns_false_when_nothing_listening ... ok [INFO] [stdout] test builder::lifecycle::tests::commit_refuses_mismatched_generated_file_without_force ... ok [INFO] [stdout] test docs::tests::health_probe_rejects_non_http_response ... ok [INFO] [stdout] test progress::tests::configure_short_circuits_animation ... ok [INFO] [stdout] test builder::lifecycle::tests::force_overwrite_quarantines_prior_content ... ok [INFO] [stdout] test progress::tests::start_then_clear_is_safe_in_non_tty_mode ... ok [INFO] [stdout] test scaffold::tests::blog_preset_templates_are_non_empty ... ok [INFO] [stdout] test progress::tests::start_then_done_with_in_non_tty_does_not_panic ... ok [INFO] [stdout] test scaffold::tests::camel_case_handles_single_word_and_snake ... ok [INFO] [stdout] test builder::replay::tests::missing_history_file_produces_empty_draft ... ok [INFO] [stdout] test scaffold::tests::clinic_preset_templates_are_non_empty ... ok [INFO] [stdout] test scaffold::tests::ecommerce_preset_templates_are_non_empty ... ok [INFO] [stdout] test progress::tests::start_then_failed_with_in_non_tty_does_not_panic ... ok [INFO] [stdout] test scaffold::tests::invalid_names_rejected ... ok [INFO] [stdout] test scaffold::tests::humanise_name_capitalises_words_and_splits_on_separators ... ok [INFO] [stdout] test scaffold::tests::every_template_carries_at_least_one_placeholder_or_fixed_content ... ok [INFO] [stdout] test builder::history::tests::no_other_writer_to_history_jsonl_in_cli_crate ... ok [INFO] [stdout] test builder::lifecycle::tests::find_project_root_refuses_outside ... ok [INFO] [stdout] test scaffold::tests::project_rejects_unknown_preset_with_valid_list_in_message ... ok [INFO] [stdout] test builder::lifecycle::tests::commit_then_replan_is_no_op ... ok [INFO] [stdout] test scaffold::tests::project_translation_agency_wires_models_and_seeded_migrations ... ok [INFO] [stdout] test scaffold::tests::project_and_project_with_db_share_the_same_file_set ... ok [INFO] [stdout] test scaffold::tests::translation_agency_preset_templates_are_non_empty ... ok [INFO] [stdout] test scaffold::tests::project_blog_ships_post_comment_and_both_migrations ... ok [INFO] [stdout] test builder::lifecycle::tests::commit_writes_every_generated_file ... ok [INFO] [stdout] test scaffold::tests::project_ecommerce_wires_models_and_seeded_migrations ... ok [INFO] [stdout] test scaffold::tests::validate_app_name_accepts_typical_names ... ok [INFO] [stdout] test scaffold::tests::validate_app_name_rejects_capitals_and_dashes ... ok [INFO] [stdout] test template_override::tests::refuses_path_traversal ... ok [INFO] [stdout] test template_override::tests::unknown_template_returns_clear_error ... ok [INFO] [stdout] test template_override::tests::copies_known_template_and_writes_correct_bytes ... ok [INFO] [stdout] test scaffold::tests::valid_names_accepted ... ok [INFO] [stdout] test test_init::tests::run_refuses_to_clobber_without_force ... ok [INFO] [stdout] test test_init::tests::run_writes_smoke_rs_to_default_out_under_force ... ok [INFO] [stdout] test theme::tests::every_preset_has_six_normalised_hex_fields ... ok [INFO] [stdout] test test_init::tests::smoke_template_is_a_valid_rust_test_skeleton ... ok [INFO] [stdout] test theme::tests::four_named_presets_ship ... ok [INFO] [stdout] test scaffold::tests::project_clinic_wires_models_and_seeded_migrations ... ok [INFO] [stdout] test theme::tests::show_is_case_insensitive ... ok [INFO] [stdout] test theme::tests::show_unknown_preset_returns_helpful_error ... ok [INFO] [stdout] test theme::tests::snippet_compiles_against_admintheme_builder_surface ... ok [INFO] [stdout] test ui::tests::classify_connect_db_missing_wins_over_pool_timeout_phrasing ... ok [INFO] [stdout] test scaffold::tests::project_minimal_is_neutral_with_no_domain_models ... ok [INFO] [stdout] test ui::tests::classify_connect_falls_through_to_generic ... ok [INFO] [stdout] test ui::tests::classify_connect_recognises_bad_credentials ... ok [INFO] [stdout] test ui::tests::classify_connect_recognises_missing_database ... ok [INFO] [stdout] test scaffold::tests::project_with_db_writes_env_with_chosen_db_name ... ok [INFO] [stdout] test ui::tests::classify_connect_recognises_pool_timeout_as_service_unreachable ... ok [INFO] [stdout] test ui::tests::classify_connect_recognises_refused ... ok [INFO] [stdout] test ui::tests::classify_migration_extracts_stem_and_body ... ok [INFO] [stdout] test ui::tests::classify_migration_falls_through_when_shape_unknown ... ok [INFO] [stdout] test ui::tests::classify_migration_handles_500_internal_wrap_layer ... ok [INFO] [stdout] test ui::tests::details_block_indents_and_separates ... ok [INFO] [stdout] test ui::tests::format_carries_four_parts_in_order ... ok [INFO] [stdout] test ui::tests::details_omitted_when_none ... ok [INFO] [stdout] test ui::tests::parse_migration_rejects_multi_word_stem ... ok [INFO] [stdout] test ui::tests::invalid_value_for_non_role_uses_generic_phrasing ... ok [INFO] [stdout] test ui::tests::invalid_value_for_role_includes_known_list ... ok [INFO] [stdout] test ui::tests::parse_missing_database_handles_typical_shape ... ok [INFO] [stdout] test ui::tests::sentinel_matches_format_prefix ... ok [INFO] [stdout] test scaffold::tests::project_minimal_writes_homepage_and_migrations_placeholder ... ok [INFO] [stdout] test wizard::tests::default_db_name_is_always_valid_including_hyphens ... ok [INFO] [stdout] test wizard::tests::project_types_list_starts_with_custom ... ok [INFO] [stdout] test wizard::tests::should_run_respects_no_interactive_flag ... ok [INFO] [stdout] test wizard::tests::validate_db_name_enforces_63_byte_limit ... ok [INFO] [stdout] test scaffold::tests::project_with_db_also_writes_env_example_for_team_sharing ... ok [INFO] [stdout] test wizard::tests::validate_db_name_rejects_bad_names ... ok [INFO] [stdout] test wizard::tests::validate_project_name_mirrors_scaffold_semantics ... ok [INFO] [stdout] test wizard::tests::validate_db_name_accepts_typical_names ... ok [INFO] [stdout] test template_override::tests::refuses_to_clobber_without_force ... ok [INFO] [stdout] test wizard::tests::default_db_name_respects_63_byte_limit ... ok [INFO] [stdout] test ui::tests::parse_missing_database_returns_none_when_no_match ... ok [INFO] [stdout] test scaffold::tests::homepage_substitutes_type_phrase_per_project_type ... ok [INFO] [stdout] test builder::lifecycle::tests::incremental_migration_refused ... ok [INFO] [stdout] test builder::cmd::tests::add_field_refuses_unknown_type ... ok [INFO] [stdout] test builder::cmd::tests::new_refuses_existing_directory ... ok [INFO] [stdout] test builder::cmd::tests::add_field_refuses_secret_category_types ... ok [INFO] [stdout] test builder::cmd::tests::end_to_end_lifecycle ... ok [INFO] [stdout] test builder::cmd::tests::import_loads_models_and_fields ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 204 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.39s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rustio_admin_macros-9da10394b9455b0b) [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test humanise_field_tests::acronym_substrings_are_not_uppercased ... ok [INFO] [stdout] test humanise_field_tests::datetime_suffixes_preserved ... ok [INFO] [stdout] test humanise_field_tests::empty_and_trivial_inputs_are_safe ... ok [INFO] [stdout] test humanise_field_tests::snake_case_to_title_case ... ok [INFO] [stdout] test plural_snake_tests::trailing_s_left_alone ... ok [INFO] [stdout] test humanise_field_tests::acronyms_inside_compound_names_are_uppercased ... ok [INFO] [stdout] test plural_snake_tests::regular_plurals ... ok [INFO] [stdout] test plural_snake_tests::consonant_y_becomes_ies_vowel_y_keeps_s ... ok [INFO] [stderr] Doc-tests rio_theme [INFO] [stdout] test humanise_field_tests::standalone_acronyms_are_uppercased ... ok [INFO] [stdout] test plural_snake_tests::ch_sh_x_z_suffixes_take_es ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stderr] Doc-tests rustio_admin [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] [stdout] [INFO] [stdout] running 21 tests [INFO] [stdout] test crates/rustio-admin/src/admin/audit.rs - admin::audit::LogEntry<'a>::with_actor (line 262) ... ignored [INFO] [stdout] test crates/rustio-admin/src/admin/audit.rs - admin::audit::LogEntry<'a>::with_event (line 284) ... ignored [INFO] [stdout] test crates/rustio-admin/src/admin/bulk.rs - admin::bulk::BulkActionResult::with_message (line 139) ... ignored [INFO] [stdout] test crates/rustio-admin/src/admin/modeladmin.rs - admin::modeladmin (line 17) ... ignored [INFO] [stdout] test crates/rustio-admin/src/admin/modeladmin.rs - admin::modeladmin (line 8) ... ignored [INFO] [stdout] test crates/rustio-admin/src/admin/modeladmin.rs - admin::modeladmin::Inline (line 67) ... ignored [INFO] [stdout] test crates/rustio-admin/src/admin/modeladmin.rs - admin::modeladmin::ModelAdmin::execute_bulk_action (line 333) ... ignored [INFO] [stdout] test crates/rustio-admin/src/admin/modeladmin.rs - admin::modeladmin::ModelAdmin::search_index_column (line 186) ... ignored [INFO] [stdout] test crates/rustio-admin/src/admin/modeladmin.rs - admin::modeladmin::ModelAdmin::validate (line 272) ... ignored [INFO] [stdout] test crates/rustio-admin/src/admin/types.rs - admin::types::Admin::mailer (line 867) ... ignored [INFO] [stdout] test crates/rustio-admin/src/admin/types.rs - admin::types::Admin::password_policy (line 921) ... ignored [INFO] [stdout] test crates/rustio-admin/src/admin/types.rs - admin::types::Admin::recovery_policy (line 952) ... ignored [INFO] [stdout] test crates/rustio-admin/src/admin/types.rs - admin::types::Admin::require_mfa (line 997) ... ignored [INFO] [stdout] test crates/rustio-admin/src/auth/mfa.rs - auth::mfa::MfaPolicy (line 1821) ... ignored [INFO] [stdout] test crates/rustio-admin/src/auth/mfa.rs - auth::mfa::generate_backup_codes (line 412) ... ignored [INFO] [stdout] test crates/rustio-admin/src/auth/recovery.rs - auth::recovery::PasswordPolicy (line 163) ... ignored [INFO] [stdout] test crates/rustio-admin/src/auth/recovery.rs - auth::recovery::RecoveryPolicy::scope_for (line 526) ... ignored [INFO] [stdout] test crates/rustio-admin/src/email/mod.rs - email (line 25) ... ignored [INFO] [stdout] test crates/rustio-admin/src/middleware/correlation_id.rs - middleware::correlation_id (line 23) ... ignored [INFO] [stdout] test crates/rustio-admin/src/middleware/correlation_id.rs - middleware::correlation_id (line 33) ... ignored [INFO] [stdout] test crates/rustio-admin/src/middleware/locale.rs - middleware::locale (line 47) ... ignored [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 21 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Doc-tests rustio_admin_assets [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] [stderr] Doc-tests rustio_admin_macros [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test crates/rustio-admin-macros/src/lib.rs - StructOverrides (line 872) ... ignored [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5", kill_on_drop: false }` [INFO] [stdout] 08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5