[INFO] fetching crate hydra-amm 0.1.2... [INFO] testing hydra-amm-0.1.2 against master#562dee4820c458d823175268e41601d4c060588a for pr-154210-1 [INFO] extracting crate hydra-amm 0.1.2 into /workspace/builds/worker-3-tc1/source [INFO] started tweaking crates.io crate hydra-amm 0.1.2 [INFO] removed 0 missing examples [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate hydra-amm 0.1.2 [INFO] tweaked toml for crates.io crate hydra-amm 0.1.2 written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate hydra-amm 0.1.2 on toolchain 562dee4820c458d823175268e41601d4c060588a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate hydra-amm 0.1.2 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" "+562dee4820c458d823175268e41601d4c060588a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded crossbeam-skiplist v0.1.3 [INFO] [stderr] Downloaded orderbook-rs v0.6.0 [INFO] [stderr] Downloaded pricelevel v0.7.0 [INFO] [stderr] Downloaded fixed v1.30.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] b3190a08640770a4994fc9183c83b919cf722d5fb4d2127528292874dbf5387d [INFO] running `Command { std: "docker" "start" "-a" "b3190a08640770a4994fc9183c83b919cf722d5fb4d2127528292874dbf5387d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "b3190a08640770a4994fc9183c83b919cf722d5fb4d2127528292874dbf5387d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b3190a08640770a4994fc9183c83b919cf722d5fb4d2127528292874dbf5387d", kill_on_drop: false }` [INFO] [stdout] b3190a08640770a4994fc9183c83b919cf722d5fb4d2127528292874dbf5387d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] ff8c0891bce8cd8c5335d4a655ca88b4c8ef29c746f6b326a58bbdbd2920e9a7 [INFO] running `Command { std: "docker" "start" "-a" "ff8c0891bce8cd8c5335d4a655ca88b4c8ef29c746f6b326a58bbdbd2920e9a7", kill_on_drop: false }` [INFO] [stderr] Compiling zerocopy v0.8.42 [INFO] [stderr] Compiling sha1_smol v1.0.1 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling crossbeam-deque v0.8.6 [INFO] [stderr] Compiling tracing-subscriber v0.3.22 [INFO] [stderr] Compiling crossbeam-skiplist v0.1.3 [INFO] [stderr] Compiling tokio v1.50.0 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling uuid v1.22.0 [INFO] [stderr] Compiling crossbeam v0.8.4 [INFO] [stderr] Compiling dashmap v6.1.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling ulid v1.2.1 [INFO] [stderr] Compiling pricelevel v0.7.0 [INFO] [stderr] Compiling orderbook-rs v0.6.0 [INFO] [stderr] Compiling hydra-amm v0.1.2 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 22.34s [INFO] running `Command { std: "docker" "inspect" "ff8c0891bce8cd8c5335d4a655ca88b4c8ef29c746f6b326a58bbdbd2920e9a7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ff8c0891bce8cd8c5335d4a655ca88b4c8ef29c746f6b326a58bbdbd2920e9a7", kill_on_drop: false }` [INFO] [stdout] ff8c0891bce8cd8c5335d4a655ca88b4c8ef29c746f6b326a58bbdbd2920e9a7 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] b9ac671c23baeeb1c7c86830badafab1b35b1919274ae8326dd923a79d61fdb2 [INFO] running `Command { std: "docker" "start" "-a" "b9ac671c23baeeb1c7c86830badafab1b35b1919274ae8326dd923a79d61fdb2", kill_on_drop: false }` [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling bit-vec v0.8.0 [INFO] [stderr] Compiling rand_xorshift v0.4.0 [INFO] [stderr] Compiling unarray v0.1.4 [INFO] [stderr] Compiling orderbook-rs v0.6.0 [INFO] [stderr] Compiling bit-set v0.8.0 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling rusty-fork v0.3.1 [INFO] [stderr] Compiling hydra-amm v0.1.2 (/opt/rustwide/workdir) [INFO] [stderr] Compiling proptest v1.10.0 [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 14.25s [INFO] running `Command { std: "docker" "inspect" "b9ac671c23baeeb1c7c86830badafab1b35b1919274ae8326dd923a79d61fdb2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b9ac671c23baeeb1c7c86830badafab1b35b1919274ae8326dd923a79d61fdb2", kill_on_drop: false }` [INFO] [stdout] b9ac671c23baeeb1c7c86830badafab1b35b1919274ae8326dd923a79d61fdb2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 547ce1e14f3383668f5a795e33e5bcd98970b0501f0857342ab5f2420f925405 [INFO] running `Command { std: "docker" "start" "-a" "547ce1e14f3383668f5a795e33e5bcd98970b0501f0857342ab5f2420f925405", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.28s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/hydra_amm-40f8bbef5134fbd8) [INFO] [stdout] [INFO] [stdout] running 805 tests [INFO] [stdout] test config::amm_config::tests::clmm_variant ... ok [INFO] [stdout] test config::amm_config::tests::constant_product_variant ... ok [INFO] [stdout] test config::amm_config::tests::display_variants ... ok [INFO] [stdout] test config::amm_config::tests::dynamic_variant ... ok [INFO] [stdout] test config::clmm::tests::accessors ... ok [INFO] [stdout] test config::clmm::tests::accessors_empty_positions ... ok [INFO] [stdout] test config::clmm::tests::clone_equality ... ok [INFO] [stdout] test config::clmm::tests::current_tick_not_aligned_rejected ... ok [INFO] [stdout] test config::clmm::tests::current_tick_off_by_one_rejected ... ok [INFO] [stdout] test config::amm_config::tests::hybrid_variant ... ok [INFO] [stdout] test config::clmm::tests::different_tick_spacing_not_equal ... ok [INFO] [stdout] test config::clmm::tests::fee_exceeding_100_percent_rejected ... ok [INFO] [stdout] test config::clmm::tests::fee_way_above_range_rejected ... ok [INFO] [stdout] test config::amm_config::tests::order_book_variant ... ok [INFO] [stdout] test config::clmm::tests::negative_current_tick_not_aligned_rejected ... ok [INFO] [stdout] test config::clmm::tests::position_lower_tick_not_aligned_rejected ... ok [INFO] [stdout] test config::clmm::tests::position_negative_ticks_not_aligned_rejected ... ok [INFO] [stdout] test config::clmm::tests::second_position_misaligned_rejected ... ok [INFO] [stdout] test config::clmm::tests::valid_config_no_positions ... ok [INFO] [stdout] test config::clmm::tests::valid_config_with_aligned_positions ... ok [INFO] [stdout] test config::clmm::tests::valid_with_max_valid_fee ... ok [INFO] [stdout] test config::clmm::tests::position_upper_tick_not_aligned_rejected ... ok [INFO] [stdout] test config::clmm::tests::valid_with_negative_current_tick_aligned ... ok [INFO] [stdout] test config::amm_config::tests::weighted_variant ... ok [INFO] [stdout] test config::clmm::tests::valid_with_spacing_200 ... ok [INFO] [stdout] test config::clmm::tests::valid_with_spacing_60 ... ok [INFO] [stdout] test config::clmm::tests::valid_with_spacing_one ... ok [INFO] [stdout] test config::clmm::tests::valid_with_standard_fee_tiers ... ok [INFO] [stdout] test config::clmm::tests::valid_with_zero_fee ... ok [INFO] [stdout] test config::clmm::tests::validate_on_valid_config_succeeds ... ok [INFO] [stdout] test config::clmm::tests::zero_tick_spacing_rejected ... ok [INFO] [stdout] test config::constant_product::tests::accessors ... ok [INFO] [stdout] test config::constant_product::tests::clone_equality ... ok [INFO] [stdout] test config::constant_product::tests::debug_format_contains_struct_name ... ok [INFO] [stdout] test config::constant_product::tests::different_reserves_not_equal ... ok [INFO] [stdout] test config::constant_product::tests::fee_exceeding_100_percent_rejected ... ok [INFO] [stdout] test config::constant_product::tests::fee_way_above_range_rejected ... ok [INFO] [stdout] test config::constant_product::tests::large_reserves_accepted ... ok [INFO] [stdout] test config::constant_product::tests::minimum_reserves_accepted ... ok [INFO] [stdout] test config::constant_product::tests::valid_config ... ok [INFO] [stdout] test config::dynamic::tests::fee_exceeding_100_percent_rejected ... ok [INFO] [stdout] test config::dynamic::tests::k_nan_rejected ... ok [INFO] [stdout] test config::constant_product::tests::zero_reserve_a_rejected ... ok [INFO] [stdout] test config::constant_product::tests::zero_reserve_b_rejected ... ok [INFO] [stdout] test config::dynamic::tests::fee_way_above_range_rejected ... ok [INFO] [stdout] test config::dynamic::tests::k_above_one_rejected ... ok [INFO] [stdout] test config::dynamic::tests::k_negative_infinity_rejected ... ok [INFO] [stdout] test config::dynamic::tests::k_typical_values_valid ... ok [INFO] [stdout] test config::dynamic::tests::k_negative_rejected ... ok [INFO] [stdout] test config::dynamic::tests::k_zero_valid ... ok [INFO] [stdout] test config::dynamic::tests::k_one_valid ... ok [INFO] [stdout] test config::dynamic::tests::valid_config ... ok [INFO] [stdout] test config::dynamic::tests::k_positive_infinity_rejected ... ok [INFO] [stdout] test config::dynamic::tests::valid_with_large_reserves ... ok [INFO] [stdout] test config::constant_product::tests::valid_with_max_valid_fee ... ok [INFO] [stdout] test config::constant_product::tests::valid_with_standard_fee_tiers ... ok [INFO] [stdout] test config::constant_product::tests::valid_with_zero_fee ... ok [INFO] [stdout] test config::constant_product::tests::validate_on_valid_config_succeeds ... ok [INFO] [stdout] test config::dynamic::tests::accessors ... ok [INFO] [stdout] test config::dynamic::tests::clone_equality ... ok [INFO] [stdout] test config::dynamic::tests::debug_format_contains_struct_name ... ok [INFO] [stdout] test config::dynamic::tests::different_k_not_equal ... ok [INFO] [stdout] test config::constant_product::tests::both_reserves_zero_rejected ... ok [INFO] [stdout] test config::dynamic::tests::valid_with_max_valid_fee ... ok [INFO] [stdout] test config::dynamic::tests::valid_with_zero_fee ... ok [INFO] [stdout] test config::dynamic::tests::zero_base_reserve_rejected ... ok [INFO] [stdout] test config::dynamic::tests::validate_on_valid_config_succeeds ... ok [INFO] [stdout] test config::hybrid::tests::amplification_exceeding_max_rejected ... ok [INFO] [stdout] test config::hybrid::tests::both_reserves_zero_rejected ... ok [INFO] [stdout] test config::dynamic::tests::valid_with_standard_fee_tiers ... ok [INFO] [stdout] test config::hybrid::tests::clone_equality ... ok [INFO] [stdout] test config::hybrid::tests::valid_with_max_valid_fee ... ok [INFO] [stdout] test config::hybrid::tests::valid_with_minimum_reserves ... ok [INFO] [stdout] test config::hybrid::tests::valid_with_standard_fee_tiers ... ok [INFO] [stdout] test config::hybrid::tests::valid_with_typical_stablecoin_amplification ... ok [INFO] [stdout] test config::hybrid::tests::valid_with_zero_fee ... ok [INFO] [stdout] test config::hybrid::tests::accessors ... ok [INFO] [stdout] test config::hybrid::tests::debug_format_contains_struct_name ... ok [INFO] [stdout] test config::dynamic::tests::zero_quote_reserve_rejected ... ok [INFO] [stdout] test config::hybrid::tests::different_amplification_not_equal ... ok [INFO] [stdout] test config::hybrid::tests::amplification_way_above_max_rejected ... ok [INFO] [stdout] test config::hybrid::tests::fee_exceeding_100_percent_rejected ... ok [INFO] [stdout] test config::hybrid::tests::fee_way_above_range_rejected ... ok [INFO] [stdout] test config::hybrid::tests::valid_config ... ok [INFO] [stdout] test config::hybrid::tests::valid_with_amplification_one ... ok [INFO] [stdout] test config::hybrid::tests::valid_with_large_reserves ... ok [INFO] [stdout] test config::hybrid::tests::zero_reserve_b_rejected ... ok [INFO] [stdout] test config::order_book::tests::accessors ... ok [INFO] [stdout] test config::order_book::tests::clone_equality ... ok [INFO] [stdout] test config::hybrid::tests::validate_on_valid_config_succeeds ... ok [INFO] [stdout] test config::order_book::tests::different_tick_size_not_equal ... ok [INFO] [stdout] test config::hybrid::tests::zero_reserve_a_rejected ... ok [INFO] [stdout] test config::hybrid::tests::valid_with_max_amplification ... ok [INFO] [stdout] test config::order_book::tests::fee_exceeding_100_percent_rejected ... ok [INFO] [stdout] test config::order_book::tests::debug_format_contains_struct_name ... ok [INFO] [stdout] test config::order_book::tests::valid_config ... ok [INFO] [stdout] test config::order_book::tests::fee_way_above_range_rejected ... ok [INFO] [stdout] test config::order_book::tests::different_lot_size_not_equal ... ok [INFO] [stdout] test config::order_book::tests::valid_with_standard_fee_tiers ... ok [INFO] [stdout] test config::order_book::tests::valid_with_zero_fee ... ok [INFO] [stdout] test config::order_book::tests::valid_with_large_tick_and_lot ... ok [INFO] [stdout] test config::order_book::tests::both_sizes_zero_rejected ... ok [INFO] [stdout] test config::order_book::tests::validate_on_valid_config_succeeds ... ok [INFO] [stdout] test config::order_book::tests::valid_with_max_valid_fee ... ok [INFO] [stdout] test config::order_book::tests::zero_tick_size_rejected ... ok [INFO] [stdout] test config::weighted::tests::accessors ... ok [INFO] [stdout] test config::order_book::tests::zero_lot_size_rejected ... ok [INFO] [stdout] test config::weighted::tests::duplicate_tokens_rejected ... ok [INFO] [stdout] test config::weighted::tests::fee_exceeding_100_percent_rejected ... ok [INFO] [stdout] test config::weighted::tests::fee_way_above_range_rejected ... ok [INFO] [stdout] test config::weighted::tests::fewer_than_two_tokens_rejected ... ok [INFO] [stdout] test config::weighted::tests::second_weight_zero_rejected ... ok [INFO] [stdout] test config::weighted::tests::mismatched_weights_length_rejected ... ok [INFO] [stdout] test config::weighted::tests::mismatched_balances_length_rejected ... ok [INFO] [stdout] test config::weighted::tests::valid_asymmetric_weights ... ok [INFO] [stdout] test config::weighted::tests::valid_three_token_pool ... ok [INFO] [stdout] test config::weighted::tests::valid_with_large_balances ... ok [INFO] [stdout] test config::weighted::tests::valid_two_token_pool ... ok [INFO] [stdout] test config::weighted::tests::valid_with_standard_fee_tiers ... ok [INFO] [stdout] test config::hybrid::tests::zero_amplification_rejected ... ok [INFO] [stdout] test config::order_book::tests::valid_with_minimum_sizes ... ok [INFO] [stdout] test config::weighted::tests::valid_with_max_valid_fee ... ok [INFO] [stdout] test config::weighted::tests::valid_with_zero_fee ... ok [INFO] [stdout] test config::dynamic::tests::both_reserves_zero_rejected ... ok [INFO] [stdout] test config::weighted::tests::validate_on_valid_config_succeeds ... ok [INFO] [stdout] test config::weighted::tests::clone_equality ... ok [INFO] [stdout] test config::weighted::tests::debug_format_contains_struct_name ... ok [INFO] [stdout] test config::weighted::tests::different_weights_not_equal ... ok [INFO] [stdout] test config::weighted::tests::empty_tokens_rejected ... ok [INFO] [stdout] test config::clmm::tests::debug_format_contains_struct_name ... ok [INFO] [stdout] test config::weighted::tests::weights_exceeding_10000_rejected ... ok [INFO] [stdout] test config::weighted::tests::weights_not_summing_to_10000_rejected ... ok [INFO] [stdout] test config::weighted::tests::zero_balance_first_rejected ... ok [INFO] [stdout] test config::weighted::tests::zero_balance_second_rejected ... ok [INFO] [stdout] test config::weighted::tests::zero_weight_rejected ... ok [INFO] [stdout] test domain::amount::tests::add_normal ... ok [INFO] [stdout] test domain::amount::tests::add_overflow ... ok [INFO] [stdout] test domain::amount::tests::add_zero ... ok [INFO] [stdout] test domain::amount::tests::constants ... ok [INFO] [stdout] test domain::amount::tests::copy_semantics ... ok [INFO] [stdout] test domain::amount::tests::debug_format ... ok [INFO] [stdout] test domain::amount::tests::div_by_one ... ok [INFO] [stdout] test domain::amount::tests::display ... ok [INFO] [stdout] test domain::amount::tests::div_exact_round_down ... ok [INFO] [stdout] test domain::amount::tests::div_larger_divisor_round_up ... ok [INFO] [stdout] test domain::amount::tests::div_remainder_round_down ... ok [INFO] [stdout] test domain::amount::tests::div_larger_divisor_round_down ... ok [INFO] [stdout] test domain::amount::tests::div_remainder_round_up ... ok [INFO] [stdout] test domain::amount::tests::div_max_by_max ... ok [INFO] [stdout] test domain::amount::tests::div_zero_numerator ... ok [INFO] [stdout] test domain::amount::tests::div_exact_round_up ... ok [INFO] [stdout] test domain::amount::tests::hash_consistency ... ok [INFO] [stdout] test domain::amount::tests::mul_by_zero ... ok [INFO] [stdout] test domain::amount::tests::is_zero_true ... ok [INFO] [stdout] test domain::amount::tests::mul_by_one ... ok [INFO] [stdout] test domain::amount::tests::is_zero_false ... ok [INFO] [stdout] test domain::amount::tests::mul_identity ... ok [INFO] [stdout] test domain::amount::tests::mul_normal ... ok [INFO] [stdout] test domain::amount::tests::new_and_get ... ok [INFO] [stdout] test domain::amount::tests::div_max_round_up_overflow_path ... ok [INFO] [stdout] test domain::amount::tests::mul_overflow ... ok [INFO] [stdout] test domain::basis_points::tests::apply_100_percent ... ok [INFO] [stdout] test domain::basis_points::tests::apply_50_percent ... ok [INFO] [stdout] test domain::amount::tests::ordering ... ok [INFO] [stdout] test domain::amount::tests::sub_normal ... ok [INFO] [stdout] test domain::basis_points::tests::apply_round_down ... ok [INFO] [stdout] test domain::basis_points::tests::apply_overflow ... ok [INFO] [stdout] test domain::basis_points::tests::apply_round_down_remainder ... ok [INFO] [stdout] test domain::basis_points::tests::apply_round_up_remainder ... ok [INFO] [stdout] test domain::basis_points::tests::apply_round_up_exact ... ok [INFO] [stdout] test domain::amount::tests::sub_to_zero ... ok [INFO] [stdout] test domain::amount::tests::sub_underflow ... ok [INFO] [stdout] test domain::basis_points::tests::apply_zero_amount ... ok [INFO] [stdout] test domain::basis_points::tests::is_valid_percent_in_range ... ok [INFO] [stdout] test domain::basis_points::tests::apply_zero_bp ... ok [INFO] [stdout] test domain::basis_points::tests::is_valid_percent_out_of_range ... ok [INFO] [stdout] test domain::basis_points::tests::new_and_get ... ok [INFO] [stdout] test domain::basis_points::tests::as_percent_one_hundred ... ok [INFO] [stdout] test domain::basis_points::tests::as_percent_thirty_bp ... ok [INFO] [stdout] test domain::basis_points::tests::as_percent_zero ... ok [INFO] [stdout] test domain::basis_points::tests::constants ... ok [INFO] [stdout] test domain::basis_points::tests::copy_semantics ... ok [INFO] [stdout] test domain::basis_points::tests::debug_format ... ok [INFO] [stdout] test domain::basis_points::tests::default_is_zero ... ok [INFO] [stdout] test domain::basis_points::tests::display ... ok [INFO] [stdout] test domain::basis_points::tests::hash_consistency ... ok [INFO] [stdout] test domain::amount::tests::default_is_zero ... ok [INFO] [stdout] test domain::basis_points::tests::ordering ... ok [INFO] [stdout] test domain::decimals::tests::copy_semantics ... ok [INFO] [stdout] test domain::decimals::tests::debug_format ... ok [INFO] [stdout] test domain::decimals::tests::default_is_zero ... ok [INFO] [stdout] test domain::decimals::tests::hash_consistency ... ok [INFO] [stdout] test domain::decimals::tests::constants ... ok [INFO] [stdout] test domain::decimals::tests::invalid_nineteen ... ok [INFO] [stdout] test domain::decimals::tests::ordering ... ok [INFO] [stdout] test domain::amount::tests::div_by_zero ... ok [INFO] [stdout] test domain::decimals::tests::scale_down_large_value_overflows ... ok [INFO] [stdout] test domain::decimals::tests::scale_up_eth ... ok [INFO] [stdout] test domain::decimals::tests::scale_down_usdc ... ok [INFO] [stdout] test domain::decimals::tests::scale_down_zero ... ok [INFO] [stdout] test domain::decimals::tests::scale_round_trip ... ok [INFO] [stdout] test domain::decimals::tests::invalid_max_u8 ... ok [INFO] [stdout] test domain::decimals::tests::valid_eighteen ... ok [INFO] [stdout] test domain::decimals::tests::valid_six ... ok [INFO] [stdout] test domain::decimals::tests::scale_down_with_remainder_truncates ... ok [INFO] [stdout] test domain::decimals::tests::scale_up_zero_amount ... ok [INFO] [stdout] test domain::decimals::tests::scale_up_zero_decimals ... ok [INFO] [stdout] test domain::amount::tests::sub_zero_identity ... ok [INFO] [stdout] test domain::fee_tier::tests::apply_1bp_round_up_remainder ... ok [INFO] [stdout] test domain::decimals::tests::scale_up_usdc ... ok [INFO] [stdout] test domain::decimals::tests::valid_zero ... ok [INFO] [stdout] test domain::decimals::tests::scale_up_max_u64 ... ok [INFO] [stdout] test domain::fee_tier::tests::apply_30bp_round_down ... ok [INFO] [stdout] test domain::fee_tier::tests::apply_overflow ... ok [INFO] [stdout] test domain::fee_tier::tests::apply_zero_amount ... ok [INFO] [stdout] test domain::fee_tier::tests::hash_consistency ... ok [INFO] [stdout] test domain::fee_tier::tests::new_and_basis_points ... ok [INFO] [stdout] test domain::fee_tier::tests::non_standard_tier ... ok [INFO] [stdout] test domain::fee_tier::tests::ordering ... ok [INFO] [stdout] test domain::fee_tier::tests::preset_values ... ok [INFO] [stdout] test domain::fee_tier::tests::standard_tiers ... ok [INFO] [stdout] test domain::liquidity::tests::add_normal ... ok [INFO] [stdout] test domain::fee_tier::tests::apply_1bp_round_down_small_amount ... ok [INFO] [stdout] test domain::liquidity::tests::add_overflow ... ok [INFO] [stdout] test domain::liquidity::tests::copy_semantics ... ok [INFO] [stdout] test domain::liquidity::tests::default_is_zero ... ok [INFO] [stdout] test domain::liquidity::tests::add_zero ... ok [INFO] [stdout] test domain::liquidity::tests::hash_consistency ... ok [INFO] [stdout] test domain::liquidity::tests::is_zero_false ... ok [INFO] [stdout] test domain::liquidity::tests::debug_format ... ok [INFO] [stdout] test domain::liquidity::tests::mul_amount_by_one ... ok [INFO] [stdout] test domain::liquidity::tests::mul_amount_normal ... ok [INFO] [stdout] test domain::liquidity::tests::mul_amount_overflow ... ok [INFO] [stdout] test domain::liquidity::tests::display ... ok [INFO] [stdout] test domain::liquidity::tests::new_and_get ... ok [INFO] [stdout] test domain::liquidity::tests::ordering ... ok [INFO] [stdout] test domain::liquidity::tests::sub_normal ... ok [INFO] [stdout] test domain::liquidity::tests::mul_amount_zero ... ok [INFO] [stdout] test domain::liquidity::tests::sub_to_zero ... ok [INFO] [stdout] test domain::liquidity_change::tests::add_valid_both ... ok [INFO] [stdout] test domain::liquidity::tests::sub_to_zero_is_zero ... ok [INFO] [stdout] test domain::liquidity_change::tests::add_valid_only_b ... ok [INFO] [stdout] test domain::liquidity::tests::sub_underflow ... ok [INFO] [stdout] test domain::liquidity_change::tests::copy_semantics ... ok [INFO] [stdout] test domain::liquidity_change::tests::add_affects_both ... ok [INFO] [stdout] test domain::liquidity::tests::zero_constant ... ok [INFO] [stdout] test domain::liquidity_change::tests::debug_format_add ... ok [INFO] [stdout] test domain::liquidity_change::tests::debug_format_remove ... ok [INFO] [stdout] test domain::fee_tier::tests::display ... ok [INFO] [stdout] test domain::liquidity_change::tests::add_both_zero_rejected ... ok [INFO] [stdout] test domain::liquidity_change::tests::display_add ... ok [INFO] [stdout] test domain::liquidity_change::tests::display_change_type ... ok [INFO] [stdout] test domain::liquidity_change::tests::display_rebalance ... ok [INFO] [stdout] test domain::liquidity_change::tests::display_remove ... ok [INFO] [stdout] test domain::liquidity_change::tests::hash_consistency ... ok [INFO] [stdout] test domain::liquidity_change::tests::rebalance_affects_both ... ok [INFO] [stdout] test domain::liquidity_change::tests::rebalance_change_type ... ok [INFO] [stdout] test domain::liquidity_change::tests::rebalance_equal_ticks_rejected ... ok [INFO] [stdout] test domain::liquidity_change::tests::rebalance_inverted_ticks_rejected ... ok [INFO] [stdout] test domain::liquidity_change::tests::add_valid_only_a ... ok [INFO] [stdout] test domain::liquidity_change::tests::debug_format_rebalance ... ok [INFO] [stdout] test domain::liquidity_change::tests::remove_change_type ... ok [INFO] [stdout] test domain::liquidity_change::tests::remove_valid ... ok [INFO] [stdout] test domain::liquidity_change::tests::remove_zero_rejected ... ok [INFO] [stdout] test domain::position::tests::debug_format ... ok [INFO] [stdout] test domain::position::tests::display ... ok [INFO] [stdout] test domain::position::tests::hash_consistency ... ok [INFO] [stdout] test domain::position::tests::in_range_middle ... ok [INFO] [stdout] test domain::position::tests::in_range_upper_exclusive ... ok [INFO] [stdout] test domain::position::tests::in_range_lower_inclusive ... ok [INFO] [stdout] test domain::position::tests::invalid_equal_ticks ... ok [INFO] [stdout] test domain::position::tests::out_of_range_below ... ok [INFO] [stdout] test domain::position::tests::tick_range ... ok [INFO] [stdout] test domain::position::tests::valid_position ... ok [INFO] [stdout] test domain::position::tests::copy_semantics ... ok [INFO] [stdout] test domain::position::tests::valid_zero_liquidity ... ok [INFO] [stdout] test domain::position::tests::invalid_inverted_ticks ... ok [INFO] [stdout] test domain::position::tests::width_full_range ... ok [INFO] [stdout] test domain::position::tests::width_narrow ... ok [INFO] [stdout] test domain::price::tests::constants ... ok [INFO] [stdout] test domain::price::tests::constants_are_finite ... ok [INFO] [stdout] test domain::position::tests::is_in_range_at_boundary_minus_one ... ok [INFO] [stdout] test domain::price::tests::from_amounts_large_values ... ok [INFO] [stdout] test domain::price::tests::from_amounts_normal ... ok [INFO] [stdout] test domain::price::tests::from_amounts_zero_denominator ... ok [INFO] [stdout] test domain::position::tests::width ... ok [INFO] [stdout] test domain::price::tests::copy_semantics ... ok [INFO] [stdout] test domain::liquidity_change::tests::rebalance_valid ... ok [INFO] [stdout] test domain::price::tests::inverse_round_trip ... ok [INFO] [stdout] test domain::liquidity_change::tests::remove_affects_both ... ok [INFO] [stdout] test domain::price::tests::display ... ok [INFO] [stdout] test domain::price::tests::from_amounts_zero_numerator ... ok [INFO] [stdout] test domain::price::tests::inverse_normal ... ok [INFO] [stdout] test domain::price::tests::inverse_zero ... ok [INFO] [stdout] test domain::price::tests::inverse_one ... ok [INFO] [stdout] test domain::price::tests::is_finite_always_true_for_valid ... ok [INFO] [stdout] test domain::price::tests::multiply_round_up ... ok [INFO] [stdout] test domain::price::tests::multiply_fractional_rounding_difference ... ok [INFO] [stdout] test domain::price::tests::multiply_round_down ... ok [INFO] [stdout] test domain::price::tests::multiply_zero_amount ... ok [INFO] [stdout] test domain::price::tests::multiply_zero_price ... ok [INFO] [stdout] test domain::price::tests::new_infinity ... ok [INFO] [stdout] test domain::price::tests::new_nan ... ok [INFO] [stdout] test domain::price::tests::new_neg_infinity ... ok [INFO] [stdout] test domain::price::tests::new_negative ... ok [INFO] [stdout] test domain::price::tests::new_valid ... ok [INFO] [stdout] test domain::price::tests::new_very_small_positive ... ok [INFO] [stdout] test domain::price::tests::ordering ... ok [INFO] [stdout] test domain::rounding::tests::copy_semantics ... ok [INFO] [stdout] test domain::rounding::tests::debug_format ... ok [INFO] [stdout] test domain::rounding::tests::description_down ... ok [INFO] [stdout] test domain::rounding::tests::description_up ... ok [INFO] [stdout] test domain::rounding::tests::down_is_down ... ok [INFO] [stdout] test domain::rounding::tests::equality ... ok [INFO] [stdout] test domain::price::tests::new_zero ... ok [INFO] [stdout] test domain::rounding::tests::hash_consistency ... ok [INFO] [stdout] test domain::rounding::tests::up_is_up ... ok [INFO] [stdout] test domain::swap_result::tests::copy_semantics ... ok [INFO] [stdout] test domain::swap_result::tests::display ... ok [INFO] [stdout] test domain::swap_result::tests::debug_format ... ok [INFO] [stdout] test domain::swap_result::tests::fee_boundary_one_less_than_amount_in ... ok [INFO] [stdout] test domain::swap_result::tests::effective_price_round_up ... ok [INFO] [stdout] test domain::swap_result::tests::hash_consistency ... ok [INFO] [stdout] test domain::swap_result::tests::invalid_fee_exceeds_amount_in ... ok [INFO] [stdout] test domain::swap_result::tests::invalid_fee_equals_amount_in ... ok [INFO] [stdout] test domain::swap_result::tests::invalid_zero_amount_out ... ok [INFO] [stdout] test domain::swap_result::tests::invalid_zero_amount_in ... ok [INFO] [stdout] test domain::swap_result::tests::slippage_large_deviation ... ok [INFO] [stdout] test domain::swap_result::tests::slippage_zero_reference_rejected ... ok [INFO] [stdout] test domain::swap_result::tests::valid_zero_fee ... ok [INFO] [stdout] test domain::swap_result::tests::valid_result ... ok [INFO] [stdout] test domain::swap_spec::tests::amount_extraction_exact_out ... ok [INFO] [stdout] test domain::swap_spec::tests::copy_semantics ... ok [INFO] [stdout] test domain::swap_spec::tests::display_exact_in ... ok [INFO] [stdout] test domain::swap_result::tests::slippage_zero_when_price_matches ... ok [INFO] [stdout] test domain::swap_spec::tests::exact_in_and_exact_out_not_equal ... ok [INFO] [stdout] test domain::swap_spec::tests::display_exact_out ... ok [INFO] [stdout] test domain::swap_spec::tests::exact_in_valid ... ok [INFO] [stdout] test domain::swap_spec::tests::display_swap_type ... ok [INFO] [stdout] test domain::swap_spec::tests::exact_out_valid ... ok [INFO] [stdout] test domain::swap_spec::tests::swap_type_exact_out ... ok [INFO] [stdout] test domain::tick::tests::add_exceeds_max ... ok [INFO] [stdout] test domain::tick::tests::add_exceeds_min ... ok [INFO] [stdout] test domain::tick::tests::add_negative_delta ... ok [INFO] [stdout] test domain::tick::tests::add_normal ... ok [INFO] [stdout] test domain::tick::tests::add_stays_at_max ... ok [INFO] [stdout] test domain::tick::tests::add_zero ... ok [INFO] [stdout] test domain::tick::tests::checked_add_i32_overflow ... ok [INFO] [stdout] test domain::swap_spec::tests::hash_consistency ... ok [INFO] [stdout] test domain::tick::tests::checked_sub_i32_overflow ... ok [INFO] [stdout] test domain::tick::tests::constants_are_valid ... ok [INFO] [stdout] test domain::tick::tests::copy_semantics ... ok [INFO] [stdout] test domain::swap_spec::tests::debug_format ... ok [INFO] [stdout] test domain::tick::tests::invalid_above_max ... ok [INFO] [stdout] test domain::tick::tests::display ... ok [INFO] [stdout] test domain::swap_result::tests::effective_price_normal ... ok [INFO] [stdout] test domain::tick::tests::invalid_below_min ... ok [INFO] [stdout] test domain::swap_result::tests::slippage_positive_when_price_differs ... ok [INFO] [stdout] test domain::tick::tests::invalid_i32_max ... ok [INFO] [stdout] test domain::swap_spec::tests::exact_in_zero_rejected ... ok [INFO] [stdout] test domain::swap_spec::tests::swap_type_exact_in ... ok [INFO] [stdout] test domain::swap_spec::tests::exact_out_zero_rejected ... ok [INFO] [stdout] test domain::tick::tests::display_negative ... ok [INFO] [stdout] test domain::tick::tests::constants ... ok [INFO] [stdout] test domain::tick::tests::hash_consistency ... ok [INFO] [stdout] test domain::tick::tests::invalid_i32_min ... ok [INFO] [stdout] test domain::tick::tests::ordering ... ok [INFO] [stdout] test domain::tick::tests::spacing_max_u16_valid ... ok [INFO] [stdout] test domain::tick::tests::spacing_valid ... ok [INFO] [stdout] test domain::tick::tests::spacing_zero_invalid ... ok [INFO] [stdout] test domain::tick::tests::sub_exceeds_max ... ok [INFO] [stdout] test domain::tick::tests::sub_exceeds_min ... ok [INFO] [stdout] test domain::tick::tests::sub_negative_delta ... ok [INFO] [stdout] test domain::tick::tests::sub_normal ... ok [INFO] [stdout] test domain::tick::tests::sub_zero ... ok [INFO] [stdout] test domain::tick::tests::valid_max ... ok [INFO] [stdout] test domain::tick::tests::valid_min ... ok [INFO] [stdout] test domain::tick::tests::valid_positive ... ok [INFO] [stdout] test domain::tick::tests::valid_zero ... ok [INFO] [stdout] test domain::token::tests::accessors ... ok [INFO] [stdout] test domain::token::tests::copy_semantics ... ok [INFO] [stdout] test domain::token::tests::debug_format ... ok [INFO] [stdout] test domain::token::tests::different_address_not_equal ... ok [INFO] [stdout] test domain::token::tests::equality_requires_both_fields ... ok [INFO] [stdout] test domain::tick::tests::sub_stays_at_min ... ok [INFO] [stdout] test domain::token::tests::from_raw_amount_overflow ... ok [INFO] [stdout] test domain::tick::tests::valid_negative ... ok [INFO] [stdout] test domain::token::tests::from_raw_amount_usdc ... ok [INFO] [stdout] test domain::token::tests::hash_consistency ... ok [INFO] [stdout] test domain::token::tests::same_token_is_equal ... ok [INFO] [stdout] test domain::token::tests::to_raw_amount_zero ... ok [INFO] [stdout] test domain::token_address::tests::copy_semantics ... ok [INFO] [stdout] test domain::token_address::tests::debug_format ... ok [INFO] [stdout] test domain::token_address::tests::distinct_addresses_have_different_hashes ... ok [INFO] [stdout] test domain::token_address::tests::from_bytes_round_trip ... ok [INFO] [stdout] test domain::token_address::tests::equality_same_bytes ... ok [INFO] [stdout] test domain::token_address::tests::hash_consistency ... ok [INFO] [stdout] test domain::token_address::tests::max_byte_values ... ok [INFO] [stdout] test domain::token_pair::tests::auto_sorts_reversed_input ... ok [INFO] [stdout] test domain::token_address::tests::ordering_is_lexicographic ... ok [INFO] [stdout] test domain::token_address::tests::zero_is_all_zeros ... ok [INFO] [stdout] test domain::token_pair::tests::contains_first ... ok [INFO] [stdout] test domain::token_pair::tests::copy_semantics ... ok [INFO] [stdout] test domain::token_pair::tests::contains_second ... ok [INFO] [stdout] test domain::token_pair::tests::equality_of_pairs ... ok [INFO] [stdout] test domain::token_pair::tests::debug_format ... ok [INFO] [stdout] test domain::token_pair::tests::does_not_contain_foreign ... ok [INFO] [stdout] test domain::token_pair::tests::other_rejects_foreign ... ok [INFO] [stdout] test domain::token_pair::tests::hash_consistency ... ok [INFO] [stdout] test domain::token_pair::tests::is_ordered_correctly_always_true ... ok [INFO] [stdout] test domain::token_pair::tests::other_returns_counterpart ... ok [INFO] [stdout] test domain::token_pair::tests::rejects_same_address ... ok [INFO] [stdout] test error::tests::arithmetic_errors_have_3xxx_codes ... ok [INFO] [stdout] test error::tests::display_unit_variants_are_readable ... ok [INFO] [stdout] test domain::token::tests::round_trip ... ok [INFO] [stdout] test error::tests::pool_specific_errors_have_4xxx_codes ... ok [INFO] [stdout] test error::tests::display_includes_context_message ... ok [INFO] [stdout] test domain::token::tests::to_raw_amount_usdc ... ok [INFO] [stdout] test domain::token_address::tests::inequality_different_bytes ... ok [INFO] [stdout] test error::tests::different_variants_are_not_equal ... ok [INFO] [stdout] test domain::position::tests::out_of_range_above ... ok [INFO] [stdout] test domain::fee_tier::tests::copy_semantics ... ok [INFO] [stdout] test domain::token_pair::tests::valid_pair_preserves_order ... ok [INFO] [stdout] test error::tests::result_alias_err ... ok [INFO] [stdout] test error::tests::specific_error_codes ... ok [INFO] [stdout] test error::tests::state_errors_have_2xxx_codes ... ok [INFO] [stdout] test error::tests::clone_and_eq ... ok [INFO] [stdout] test error::tests::validation_errors_have_1xxx_codes ... ok [INFO] [stdout] test domain::fee_tier::tests::debug_format ... ok [INFO] [stdout] test domain::token_pair::tests::other_returns_first_when_given_second ... ok [INFO] [stdout] test factory::default_factory::tests::constant_product_tests::factory_round_trip_swap ... ok [INFO] [stdout] test factory::default_factory::tests::dynamic_tests::create_dynamic ... ok [INFO] [stdout] test error::tests::result_alias_ok ... ok [INFO] [stdout] test factory::default_factory::tests::clmm_tests::clmm_pool_starts_empty ... ok [INFO] [stdout] test factory::default_factory::tests::clmm_tests::create_clmm ... ok [INFO] [stdout] test factory::default_factory::tests::constant_product_tests::create_constant_product ... ok [INFO] [stdout] test factory::default_factory::tests::constant_product_tests::created_pool_has_correct_fee ... ok [INFO] [stdout] test factory::default_factory::tests::constant_product_tests::invalid_cp_config_rejected ... ok [INFO] [stdout] test factory::default_factory::tests::create_all_pool_types ... ok [INFO] [stdout] test factory::default_factory::tests::dynamic_tests::dynamic_pool_has_correct_pair ... ok [INFO] [stdout] test factory::default_factory::tests::dynamic_tests::dynamic_round_trip_swap ... ok [INFO] [stdout] test factory::default_factory::tests::clmm_tests::clmm_pool_has_correct_pair ... ok [INFO] [stdout] test factory::default_factory::tests::constant_product_tests::created_pool_has_correct_pair ... ok [INFO] [stdout] test factory::default_factory::tests::debug_format ... ok [INFO] [stdout] test factory::default_factory::tests::constant_product_tests::created_pool_has_liquidity ... ok [INFO] [stdout] test factory::default_factory::tests::factory_is_copy ... ok [INFO] [stdout] test factory::default_factory::tests::hybrid_tests::hybrid_pool_has_correct_pair ... ok [INFO] [stdout] test factory::default_factory::tests::integration_factory_round_trip ... ok [INFO] [stdout] test factory::default_factory::tests::hybrid_tests::hybrid_round_trip_swap ... ok [INFO] [stdout] test factory::default_factory::tests::integration_multi_pool_swap_comparison ... ok [INFO] [stdout] test factory::default_factory::tests::order_book_tests::order_book_starts_empty ... ok [INFO] [stdout] test factory::default_factory::tests::order_book_tests::create_order_book ... ok [INFO] [stdout] test factory::default_factory::tests::weighted_tests::weighted_round_trip_swap ... ok [INFO] [stdout] test factory::default_factory::tests::weighted_tests::create_weighted ... ok [INFO] [stdout] test math::checked::tests::amount::add_overflow ... ok [INFO] [stdout] test factory::default_factory::tests::weighted_tests::weighted_pool_has_correct_fee ... ok [INFO] [stdout] test factory::default_factory::tests::hybrid_tests::create_hybrid ... ok [INFO] [stdout] test factory::default_factory::tests::integration_config_validation_propagates_error ... ok [INFO] [stdout] test factory::default_factory::tests::order_book_tests::order_book_has_correct_fee ... ok [INFO] [stdout] test math::checked::tests::amount::add_ok ... ok [INFO] [stdout] test math::checked::tests::amount::div_zero_numerator ... ok [INFO] [stdout] test math::checked::tests::amount::mul_by_one ... ok [INFO] [stdout] test math::checked::tests::amount::mul_by_zero ... ok [INFO] [stdout] test math::checked::tests::amount::mul_overflow ... ok [INFO] [stdout] test math::checked::tests::amount::sub_ok ... ok [INFO] [stdout] test math::checked::tests::amount::add_u128_ok ... ok [INFO] [stdout] test math::checked::tests::amount::sub_underflow ... ok [INFO] [stdout] test math::checked::tests::amount::add_u128_overflow ... ok [INFO] [stdout] test math::checked::tests::amount::add_u128_zero ... ok [INFO] [stdout] test math::checked::tests::amount::div_by_zero ... ok [INFO] [stdout] test math::checked::tests::amount::div_round_down ... ok [INFO] [stdout] test math::checked::tests::amount::div_round_up ... ok [INFO] [stdout] test math::checked::tests::amount::mul_ok ... ok [INFO] [stdout] test math::checked::tests::amount::sub_to_zero ... ok [INFO] [stdout] test math::checked::tests::liquidity::add_overflow ... ok [INFO] [stdout] test math::checked::tests::liquidity::add_ok ... ok [INFO] [stdout] test math::checked::tests::liquidity::add_zero_identity ... ok [INFO] [stdout] test math::checked::tests::liquidity::div_by_one ... ok [INFO] [stdout] test math::checked::tests::liquidity::div_by_zero ... ok [INFO] [stdout] test math::checked::tests::liquidity::div_round_down ... ok [INFO] [stdout] test math::checked::tests::liquidity::div_zero_numerator ... ok [INFO] [stdout] test math::checked::tests::amount::add_zero_identity ... ok [INFO] [stdout] test math::checked::tests::liquidity::mul_by_one ... ok [INFO] [stdout] test math::checked::tests::amount::chaining_works ... ok [INFO] [stdout] test math::checked::tests::liquidity::mul_by_zero ... ok [INFO] [stdout] test math::checked::tests::amount::div_by_one ... ok [INFO] [stdout] test math::checked::tests::liquidity::mul_ok ... ok [INFO] [stdout] test math::checked::tests::amount::div_exact ... ok [INFO] [stdout] test math::checked::tests::liquidity::mul_overflow ... ok [INFO] [stdout] test math::rounding::tests::ceiling_overflow_fallback_with_remainder ... ok [INFO] [stdout] test math::checked::tests::liquidity::add_u128_ok ... ok [INFO] [stdout] test math::rounding::tests::ceiling_overflow_fallback_exact ... ok [INFO] [stdout] test math::checked::tests::liquidity::add_u128_overflow ... ok [INFO] [stdout] test math::rounding::tests::consecutive_values_round_down ... ok [INFO] [stdout] test math::checked::tests::liquidity::add_u128_zero ... ok [INFO] [stdout] test math::checked::tests::liquidity::sub_underflow ... ok [INFO] [stdout] test math::checked::tests::liquidity::chaining_works ... ok [INFO] [stdout] test math::rounding::tests::div_by_zero_returns_none ... ok [INFO] [stdout] test math::rounding::tests::down_always_leq_up ... ok [INFO] [stdout] test math::checked::tests::liquidity::div_exact ... ok [INFO] [stdout] test math::checked::tests::liquidity::div_round_up ... ok [INFO] [stdout] test math::rounding::tests::exact_division_up ... ok [INFO] [stdout] test math::checked::tests::liquidity::sub_ok ... ok [INFO] [stdout] test math::checked::tests::liquidity::sub_to_zero ... ok [INFO] [stdout] test math::rounding::tests::exact_division_by_one ... ok [INFO] [stdout] test math::rounding::tests::exact_division_down ... ok [INFO] [stdout] test math::rounding::tests::max_divided_by_one ... ok [INFO] [stdout] test math::rounding::tests::max_divided_by_two_down ... ok [INFO] [stdout] test math::rounding::tests::numerator_equals_denominator ... ok [INFO] [stdout] test math::rounding::tests::one_divided_by_one ... ok [INFO] [stdout] test math::rounding::tests::one_divided_by_two ... ok [INFO] [stdout] test math::rounding::tests::protocol_convention_fee_rounds_up ... ok [INFO] [stdout] test math::rounding::tests::protocol_convention_output_rounds_down ... ok [INFO] [stdout] test math::rounding::tests::remainder_one_less_round_up ... ok [INFO] [stdout] test math::rounding::tests::remainder_one_round_up ... ok [INFO] [stdout] test math::rounding::tests::remainder_round_down ... ok [INFO] [stdout] test math::rounding::tests::zero_numerator_down ... ok [INFO] [stdout] test math::rounding::tests::zero_numerator_up ... ok [INFO] [stdout] test math::tick_math::tests::max_tick_produces_valid_price ... ok [INFO] [stdout] test math::tick_math::tests::monotonicity_increasing ... ok [INFO] [stdout] test math::tick_math::tests::min_tick_produces_valid_price ... ok [INFO] [stdout] test math::tick_math::tests::price_above_one_gives_positive_tick ... ok [INFO] [stdout] test math::tick_math::tests::negative_tick_gives_price_below_one ... ok [INFO] [stdout] test math::tick_math::tests::positive_tick_gives_price_above_one ... ok [INFO] [stdout] test math::tick_math::tests::price_below_one_gives_negative_tick ... ok [INFO] [stdout] test math::tick_math::tests::price_at_base_gives_tick_one ... ok [INFO] [stdout] test math::tick_math::tests::price_one_gives_tick_zero ... ok [INFO] [stdout] test math::rounding::tests::max_divided_by_max ... ok [INFO] [stdout] test math::rounding::tests::max_divided_by_max_minus_one_up ... ok [INFO] [stdout] test math::rounding::tests::remainder_one_less_round_down ... ok [INFO] [stdout] test math::tick_math::tests::price_at_tick_2000 ... ok [INFO] [stdout] test math::rounding::tests::remainder_round_up ... ok [INFO] [stdout] test math::rounding::tests::max_divided_by_two_up ... ok [INFO] [stdout] test math::tick_math::tests::round_trip_adjacent_negative_ticks ... ok [INFO] [stdout] test math::tick_math::tests::round_trip_adjacent_positive_ticks ... ok [INFO] [stdout] test math::tick_math::tests::round_trip_positive_ticks ... ok [INFO] [stdout] test math::tick_math::tests::round_trip_tick_zero ... ok [INFO] [stdout] test math::tick_math::tests::tick_at_known_price_2 ... ok [INFO] [stdout] test math::tick_math::tests::tick_at_price_floors_negative_non_aligned ... ok [INFO] [stdout] test math::tick_math::tests::tick_minus_one_is_inverse_base ... ok [INFO] [stdout] test math::tick_math::tests::tick_at_price_near_boundary ... ok [INFO] [stdout] test pools::clmm::tests::add_liquidity_misaligned_ticks_rejected ... ok [INFO] [stdout] test pools::clmm::tests::add_liquidity_via_trait ... ok [INFO] [stdout] test pools::clmm::tests::add_liquidity_zero_amount_rejected ... ok [INFO] [stdout] test pools::clmm::tests::add_liquidity_with_remove_variant_rejected ... ok [INFO] [stdout] test pools::clmm::tests::collect_fees_after_swaps ... ok [INFO] [stdout] test math::tick_math::tests::tick_at_price_floors_non_aligned_price ... ok [INFO] [stdout] test pools::clmm::tests::collect_fees_position_not_found ... ok [INFO] [stdout] test math::tick_math::tests::tick_one_is_base ... ok [INFO] [stdout] test math::tick_math::tests::price_symmetry_positive_negative ... ok [INFO] [stdout] test pools::clmm::tests::fee_growth_increases_monotonically ... ok [INFO] [stdout] test math::tick_math::tests::price_zero_is_error ... ok [INFO] [stdout] test pools::clmm::tests::accessors ... ok [INFO] [stdout] test math::tick_math::tests::round_trip_negative_ticks ... ok [INFO] [stdout] test pools::clmm::tests::debug_format_contains_struct_name ... ok [INFO] [stdout] test pools::clmm::tests::empty_liquidity_jumps_to_next_tick ... ok [INFO] [stdout] test pools::clmm::tests::from_config_empty_positions ... ok [INFO] [stdout] test math::tick_math::tests::tick_zero_gives_price_one ... ok [INFO] [stdout] test pools::clmm::tests::from_config_position_not_straddling ... ok [INFO] [stdout] test pools::clmm::tests::multiple_overlapping_positions ... ok [INFO] [stdout] test pools::clmm::tests::position_below_current_price ... ok [INFO] [stdout] test pools::clmm::tests::price_moves_down_when_selling_a ... ok [INFO] [stdout] test pools::clmm::tests::price_moves_up_when_selling_b ... ok [INFO] [stdout] test pools::clmm::tests::remove_liquidity_full ... ok [INFO] [stdout] test pools::clmm::tests::remove_zero_liquidity_rejected ... ok [INFO] [stdout] test pools::clmm::tests::remove_liquidity_with_add_variant_rejected ... ok [INFO] [stdout] test pools::clmm::tests::spot_price_at_tick_zero ... ok [INFO] [stdout] test pools::clmm::tests::remove_liquidity_partial ... ok [INFO] [stdout] test pools::clmm::tests::spot_price_inverse ... ok [INFO] [stdout] test pools::clmm::tests::spot_price_invalid_token_rejected ... ok [INFO] [stdout] test pools::clmm::tests::swap_crossing_one_tick ... ok [INFO] [stdout] test pools::clmm::tests::spot_price_same_token ... ok [INFO] [stdout] test pools::clmm::tests::swap_crossing_multiple_ticks ... ok [INFO] [stdout] test pools::clmm::tests::swap_within_single_tick_range ... ok [INFO] [stdout] test pools::clmm::tests::position_above_current_price ... ok [INFO] [stdout] test pools::clmm::tests::swap_no_liquidity_fails ... ok [INFO] [stdout] test pools::constant_product::tests::add_liquidity_proportional ... ok [INFO] [stdout] test pools::constant_product::tests::add_liquidity_first_deposit ... ok [INFO] [stdout] test pools::clmm::tests::swap_invalid_token_rejected ... ok [INFO] [stdout] test pools::constant_product::tests::add_liquidity_with_remove_variant_rejected ... ok [INFO] [stdout] test pools::clmm::tests::from_config_with_positions ... ok [INFO] [stdout] test pools::clmm::tests::swap_reversibility_loses_to_fees ... ok [INFO] [stdout] test pools::clmm::tests::position_spanning_current_price ... ok [INFO] [stdout] test pools::clmm::tests::swap_at_tick_boundary ... ok [INFO] [stdout] test pools::constant_product::tests::collect_fees_after_swaps ... ok [INFO] [stdout] test pools::constant_product::tests::add_liquidity_both_zero_rejected ... ok [INFO] [stdout] test pools::constant_product::tests::debug_format_contains_struct_name ... ok [INFO] [stdout] test pools::clmm::tests::swap_exact_out ... ok [INFO] [stdout] test pools::constant_product::tests::accessors ... ok [INFO] [stdout] test pools::constant_product::tests::from_config_valid ... ok [INFO] [stdout] test pools::constant_product::tests::invariant_k_preserved_after_exact_out ... ok [INFO] [stdout] test pools::constant_product::tests::invariant_k_preserved_after_swap ... ok [INFO] [stdout] test pools::constant_product::tests::invariant_preserved_over_multiple_swaps ... ok [INFO] [stdout] test pools::constant_product::tests::remove_all_liquidity ... ok [INFO] [stdout] test pools::constant_product::tests::remove_liquidity_proportional ... ok [INFO] [stdout] test pools::constant_product::tests::remove_liquidity_with_add_variant_rejected ... ok [INFO] [stdout] test pools::constant_product::tests::spot_price_a_to_b ... ok [INFO] [stdout] test pools::constant_product::tests::remove_more_than_total_rejected ... ok [INFO] [stdout] test pools::constant_product::tests::remove_zero_liquidity_rejected ... ok [INFO] [stdout] test pools::constant_product::tests::spot_price_b_to_a ... ok [INFO] [stdout] test pools::constant_product::tests::spot_price_invalid_quote_rejected ... ok [INFO] [stdout] test pools::constant_product::tests::swap_exact_in_b_to_a ... ok [INFO] [stdout] test pools::constant_product::tests::spot_price_same_token ... ok [INFO] [stdout] test pools::constant_product::tests::swap_exact_out_equals_reserve_rejected ... ok [INFO] [stdout] test pools::constant_product::tests::swap_exact_out_a_to_b ... ok [INFO] [stdout] test pools::constant_product::tests::swap_exact_out_b_to_a ... ok [INFO] [stdout] test pools::constant_product::tests::swap_invalid_token_rejected ... ok [INFO] [stdout] test pools::dynamic::tests::add_liquidity_both_zero_rejected ... ok [INFO] [stdout] test pools::constant_product::tests::swap_exact_out_exceeds_reserve ... ok [INFO] [stdout] test pools::dynamic::tests::add_liquidity_proportional ... ok [INFO] [stdout] test pools::constant_product::tests::swap_zero_input_rejected_by_spec ... ok [INFO] [stdout] test pools::dynamic::tests::buy_base_k_one ... ok [INFO] [stdout] test pools::constant_product::tests::swap_with_zero_fee ... ok [INFO] [stdout] test pools::constant_product::tests::swap_large_input_high_slippage ... ok [INFO] [stdout] test pools::dynamic::tests::collect_fees_returns_accumulated_and_resets ... ok [INFO] [stdout] test pools::dynamic::tests::add_liquidity_wrong_variant ... ok [INFO] [stdout] test pools::constant_product::tests::fee_deduction_correctness ... ok [INFO] [stdout] test pools::dynamic::tests::from_config_sets_state ... ok [INFO] [stdout] test pools::constant_product::tests::from_config_initial_lp_is_sqrt ... ok [INFO] [stdout] test pools::dynamic::tests::buy_base_k_zero ... ok [INFO] [stdout] test pools::dynamic::tests::accessors ... ok [INFO] [stdout] test pools::dynamic::tests::bid_ask_spread_exists_when_k_nonzero ... ok [INFO] [stdout] test pools::constant_product::tests::fee_accumulation_multiple_swaps ... ok [INFO] [stdout] test pools::dynamic::tests::price_moves_after_sell_base ... ok [INFO] [stdout] test pools::dynamic::tests::remove_liquidity_exceeding_total_fails ... ok [INFO] [stdout] test pools::constant_product::tests::spot_price_invalid_base_rejected ... ok [INFO] [stdout] test pools::dynamic::tests::fees_accumulate_over_swaps ... ok [INFO] [stdout] test pools::dynamic::tests::remove_zero_liquidity_rejected ... ok [INFO] [stdout] test pools::constant_product::tests::swap_exact_in_a_to_b ... ok [INFO] [stdout] test pools::dynamic::tests::k_sensitivity_output_varies_with_k ... ok [INFO] [stdout] test pools::dynamic::tests::reserves_update_after_sell_base ... ok [INFO] [stdout] test pools::dynamic::tests::set_oracle_price_negative_rejected ... ok [INFO] [stdout] test pools::dynamic::tests::debug_format ... ok [INFO] [stdout] test pools::dynamic::tests::reserves_update_after_buy_base ... ok [INFO] [stdout] test pools::dynamic::tests::set_oracle_price_updates_spot ... ok [INFO] [stdout] test pools::constant_product::tests::price_increases_after_buying_b ... ok [INFO] [stdout] test pools::dynamic::tests::set_oracle_price_zero_rejected ... ok [INFO] [stdout] test pools::dynamic::tests::remove_liquidity_half ... ok [INFO] [stdout] test pools::dynamic::tests::spot_price_blended ... ok [INFO] [stdout] test pools::dynamic::tests::spot_price_k_one_equals_amm ... ok [INFO] [stdout] test pools::dynamic::tests::remove_liquidity_wrong_variant ... ok [INFO] [stdout] test pools::dynamic::tests::swap_exact_out_sell_base ... ok [INFO] [stdout] test pools::dynamic::tests::swap_invalid_token_rejected ... ok [INFO] [stdout] test pools::dynamic::tests::spot_price_invalid_token ... ok [INFO] [stdout] test pools::dynamic::tests::spot_price_inverse ... ok [INFO] [stdout] test pools::dynamic::tests::swap_with_fee_deducts_correctly ... ok [INFO] [stdout] test pools::dynamic::tests::spot_price_k_zero_equals_oracle ... ok [INFO] [stdout] test pools::dynamic::tests::swap_exact_out_buy_base ... ok [INFO] [stdout] test pools::dynamic::tests::test_dynamic_asymmetric_reserves_away_from_oracle ... ok [INFO] [stdout] test pools::dynamic::tests::test_dynamic_large_swap_oracle_fallback ... ok [INFO] [stdout] test pools::dynamic::tests::test_dynamic_oracle_only_k_zero ... ok [INFO] [stdout] test pools::hybrid::tests::accessors ... ok [INFO] [stdout] test pools::dynamic::tests::spot_price_same_token ... ok [INFO] [stdout] test pools::hybrid::tests::add_liquidity_proportional ... ok [INFO] [stdout] test pools::hybrid::tests::add_liquidity_both_zero_rejected ... ok [INFO] [stdout] test pools::hybrid::tests::at_peg_high_amplification ... ok [INFO] [stdout] test pools::hybrid::tests::collect_fees_returns_accumulated ... ok [INFO] [stdout] test pools::hybrid::tests::d_grows_after_swap_due_to_fees ... ok [INFO] [stdout] test pools::hybrid::tests::debug_format ... ok [INFO] [stdout] test pools::hybrid::tests::depeg_scenario ... ok [INFO] [stdout] test pools::hybrid::tests::from_config_balanced ... ok [INFO] [stdout] test pools::hybrid::tests::extreme_amplification ... ok [INFO] [stdout] test pools::hybrid::tests::fees_accumulate_over_swaps ... ok [INFO] [stdout] test pools::hybrid::tests::from_config_unbalanced ... ok [INFO] [stdout] test pools::hybrid::tests::invariant_d_at_peg ... ok [INFO] [stdout] test pools::hybrid::tests::higher_amp_means_less_slippage ... ok [INFO] [stdout] test pools::dynamic::tests::test_dynamic_blended_k_half ... ok [INFO] [stdout] test pools::hybrid::tests::invariant_d_preserved_multiple_operations ... ok [INFO] [stdout] test pools::dynamic::tests::test_dynamic_constant_product_k_one ... ok [INFO] [stdout] test pools::dynamic::tests::test_dynamic_oracle_price_update ... ok [INFO] [stdout] test pools::dynamic::tests::token_pair_is_correct ... ok [INFO] [stdout] test pools::hybrid::tests::add_liquidity_wrong_variant ... ok [INFO] [stdout] test pools::hybrid::tests::compute_d_balanced ... ok [INFO] [stdout] test pools::hybrid::tests::compute_d_zero_reserves ... ok [INFO] [stdout] test pools::hybrid::tests::at_peg_low_amplification ... ok [INFO] [stdout] test pools::hybrid::tests::low_amp_has_more_slippage_than_high_amp ... ok [INFO] [stdout] test pools::hybrid::tests::price_moves_up_when_selling_b ... ok [INFO] [stdout] test pools::hybrid::tests::price_moves_down_when_selling_a ... ok [INFO] [stdout] test pools::hybrid::tests::remove_liquidity_exceeding_total_fails ... ok [INFO] [stdout] test pools::hybrid::tests::spot_price_invalid_token ... ok [INFO] [stdout] test pools::hybrid::tests::remove_liquidity_wrong_variant ... ok [INFO] [stdout] test pools::hybrid::tests::spot_price_inverse ... ok [INFO] [stdout] test pools::hybrid::tests::spot_price_same_token ... ok [INFO] [stdout] test pools::hybrid::tests::remove_zero_liquidity_rejected ... ok [INFO] [stdout] test pools::hybrid::tests::spot_price_near_one_at_peg ... ok [INFO] [stdout] test pools::hybrid::tests::swap_exact_out ... ok [INFO] [stdout] test pools::order_book::tests::accessors ... ok [INFO] [stdout] test pools::hybrid::tests::large_swap_converges ... ok [INFO] [stdout] test pools::hybrid::tests::large_unbalanced_swap ... ok [INFO] [stdout] test pools::order_book::tests::add_liquidity_wrong_variant_rejected ... ok [INFO] [stdout] test pools::hybrid::tests::remove_liquidity_half ... ok [INFO] [stdout] test pools::hybrid::tests::swap_invalid_token_rejected ... ok [INFO] [stdout] test pools::hybrid::tests::symmetric_swap_at_peg ... ok [INFO] [stdout] test pools::order_book::tests::accumulated_fees_tracked ... ok [INFO] [stdout] test pools::order_book::tests::add_liquidity_places_orders ... ok [INFO] [stdout] test pools::order_book::tests::add_liquidity_zero_both_rejected ... ok [INFO] [stdout] test pools::hybrid::tests::swap_exact_in_b_to_a ... ok [INFO] [stdout] test pools::order_book::tests::from_config_creates_pool ... ok [INFO] [stdout] test pools::order_book::tests::from_config_empty_book ... ok [INFO] [stdout] test pools::order_book::tests::collect_fees_resets_accumulators ... ok [INFO] [stdout] test pools::order_book::tests::debug_format_contains_struct_name ... ok [INFO] [stdout] test pools::order_book::tests::place_order_aligned_succeeds ... ok [INFO] [stdout] test pools::order_book::tests::place_order_lot_size_validation ... ok [INFO] [stdout] test pools::order_book::tests::place_order_zero_quantity_rejected ... ok [INFO] [stdout] test pools::order_book::tests::spot_price_empty_book_errors ... ok [INFO] [stdout] test pools::order_book::tests::place_bid_order ... ok [INFO] [stdout] test pools::order_book::tests::best_bid_ask_after_orders ... ok [INFO] [stdout] test pools::order_book::tests::remove_liquidity_wrong_variant_rejected ... ok [INFO] [stdout] test pools::order_book::tests::spot_price_invalid_token ... ok [INFO] [stdout] test pools::order_book::tests::remove_liquidity_cancels_orders ... ok [INFO] [stdout] test pools::order_book::tests::remove_liquidity_empty_book_errors ... ok [INFO] [stdout] test pools::order_book::tests::inner_accessor_returns_book ... ok [INFO] [stdout] test pools::order_book::tests::swap_deducts_fee_from_input ... ok [INFO] [stdout] test pools::order_book::tests::multiple_sequential_swaps ... ok [INFO] [stdout] test pools::order_book::tests::place_order_tick_size_validation ... ok [INFO] [stdout] test pools::order_book::tests::remove_liquidity_zero_rejected ... ok [INFO] [stdout] test pools::order_book::tests::spot_price_inverted ... ok [INFO] [stdout] test pools::order_book::tests::spot_price_same_token_returns_one ... ok [INFO] [stdout] test pools::order_book::tests::spot_price_with_orders ... ok [INFO] [stdout] test pools::order_book::tests::swap_buy_base_with_quote ... ok [INFO] [stdout] test pools::order_book::tests::spot_price_one_side_only_errors ... ok [INFO] [stdout] test pools::order_book::tests::test_orderbook_partial_fill ... ok [INFO] [stdout] test pools::pool_box::tests::clmm_tests::token_pair_delegation ... ok [INFO] [stdout] test pools::order_book::tests::test_orderbook_place_single_order ... ok [INFO] [stdout] test pools::order_book::tests::test_orderbook_swap_walks_multiple_levels ... ok [INFO] [stdout] test pools::order_book::tests::test_orderbook_swap_matches_single_level ... ok [INFO] [stdout] test pools::order_book::tests::swap_exact_out_sell_base ... ok [INFO] [stdout] test pools::pool_box::tests::constant_product_tests::debug_format_contains_variant ... ok [INFO] [stdout] test pools::order_book::tests::swap_invalid_token_errors ... ok [INFO] [stdout] test pools::pool_box::tests::constant_product_tests::fee_tier_delegation ... ok [INFO] [stdout] test pools::order_book::tests::swap_quote_side_fee_tracked ... ok [INFO] [stdout] test pools::order_book::tests::test_orderbook_empty_book_no_liquidity ... ok [INFO] [stdout] test pools::order_book::tests::test_orderbook_multiple_orders_same_level ... ok [INFO] [stdout] test pools::order_book::tests::total_liquidity_tracks_both_sides ... ok [INFO] [stdout] test pools::pool_box::tests::clmm_tests::fee_tier_delegation ... ok [INFO] [stdout] test pools::pool_box::tests::dynamic_tests::fee_tier_delegation ... ok [INFO] [stdout] test pools::pool_box::tests::dynamic_tests::token_pair_delegation ... ok [INFO] [stdout] test pools::pool_box::tests::order_book_tests::fee_tier_delegation ... ok [INFO] [stdout] test pools::pool_box::tests::order_book_tests::token_pair_delegation ... ok [INFO] [stdout] test pools::pool_box::tests::weighted_tests::fee_tier_delegation ... ok [INFO] [stdout] test pools::pool_box::tests::constant_product_tests::token_pair_delegation ... ok [INFO] [stdout] test pools::pool_box::tests::constant_product_tests::total_liquidity_delegation ... ok [INFO] [stdout] test pools::pool_box::tests::hybrid_tests::fee_tier_delegation ... ok [INFO] [stdout] test pools::pool_box::tests::hybrid_tests::token_pair_delegation ... ok [INFO] [stdout] test pools::pool_box::tests::weighted_tests::token_pair_delegation ... ok [INFO] [stdout] test pools::pool_box::tests::clmm_tests::total_liquidity_delegation ... ok [INFO] [stdout] test pools::pool_box::tests::constant_product_tests::swap_delegation ... ok [INFO] [stdout] test pools::order_book::tests::total_liquidity_after_swap ... ok [INFO] [stdout] test pools::proptest_properties::prop_liquidity_conservation_constant_product ... ok [INFO] [stdout] test pools::proptest_properties::prop_fee_monotonicity_hybrid ... ok [INFO] [stdout] test pools::proptest_properties::prop_fee_monotonicity_dynamic ... ok [INFO] [stdout] test pools::proptest_properties::prop_invariant_preservation_constant_product ... ok [INFO] [stdout] test pools::proptest_properties::prop_swap_reversibility_constant_product ... ok [INFO] [stdout] test pools::proptest_properties::prop_fee_monotonicity_weighted ... ok [INFO] [stdout] test pools::proptest_properties::prop_swap_reversibility_dynamic ... ok [INFO] [stdout] test pools::proptest_properties::prop_fee_monotonicity_constant_product ... ok [INFO] [stdout] test pools::proptest_properties::prop_invariant_preservation_hybrid ... ok [INFO] [stdout] test pools::proptest_properties::prop_invariant_preservation_weighted ... ok [INFO] [stdout] test pools::weighted::tests::add_liquidity_both_zero_rejected ... ok [INFO] [stdout] test pools::weighted::tests::accessors ... ok [INFO] [stdout] test pools::weighted::tests::checked_powf_valid ... ok [INFO] [stdout] test pools::weighted::tests::collect_fees_returns_accumulated ... ok [INFO] [stdout] test pools::weighted::tests::compute_invariant_positive ... ok [INFO] [stdout] test pools::weighted::tests::add_liquidity_wrong_variant ... ok [INFO] [stdout] test pools::weighted::tests::from_config_four_token ... ok [INFO] [stdout] test pools::weighted::tests::fees_accumulate_over_swaps ... ok [INFO] [stdout] test pools::weighted::tests::from_config_three_token ... ok [INFO] [stdout] test pools::weighted::tests::from_config_two_token ... ok [INFO] [stdout] test pools::weighted::tests::invariant_grows_from_fees ... ok [INFO] [stdout] test pools::weighted::tests::price_moves_after_sell ... ok [INFO] [stdout] test pools::weighted::tests::large_swap_50_50 ... ok [INFO] [stdout] test pools::weighted::tests::remove_all_liquidity ... ok [INFO] [stdout] test pools::weighted::tests::remove_liquidity_exceeding_total_fails ... ok [INFO] [stdout] test pools::proptest_properties::prop_price_movement_direction_hybrid ... ok [INFO] [stdout] test pools::weighted::tests::remove_liquidity_half ... ok [INFO] [stdout] test pools::weighted::tests::remove_liquidity_wrong_variant ... ok [INFO] [stdout] test pools::weighted::tests::remove_liquidity_three_token_proportional ... ok [INFO] [stdout] test pools::weighted::tests::spot_price_50_50_equals_reserve_ratio ... ok [INFO] [stdout] test pools::weighted::tests::spot_price_80_20 ... ok [INFO] [stdout] test pools::weighted::tests::spot_price_invalid_token ... ok [INFO] [stdout] test pools::weighted::tests::swap_exact_in_b_to_a ... ok [INFO] [stdout] test pools::weighted::tests::spot_price_same_token ... ok [INFO] [stdout] test pools::weighted::tests::spot_price_inverse ... ok [INFO] [stdout] test pools::weighted::tests::swap_exact_out ... ok [INFO] [stdout] test pools::weighted::tests::remove_zero_liquidity_rejected ... ok [INFO] [stdout] test pools::weighted::tests::test_weighted_80_20_asymmetric ... ok [INFO] [stdout] test pools::weighted::tests::test_weighted_proportional_liquidity_deposit ... ok [INFO] [stdout] test pools::weighted::tests::test_weighted_three_token_pool ... ok [INFO] [stdout] test pools::weighted::tests::test_weighted_weight_invariant_preservation ... ok [INFO] [stdout] test pools::weighted::tests::token_pair_is_first_two ... ok [INFO] [stdout] test pools::weighted::tests::swap_invalid_token_rejected ... ok [INFO] [stdout] test pools::weighted::tests::symmetric_swap_50_50 ... ok [INFO] [stdout] test pools::weighted::tests::test_weighted_50_50_constant_product_equivalence ... ok [INFO] [stdout] test pools::weighted::tests::test_weighted_four_token_extreme_weights ... ok [INFO] [stdout] test pools::proptest_properties::prop_clmm_tick_consistency ... ok [INFO] [stdout] test pools::weighted::tests::add_liquidity_proportional ... ok [INFO] [stdout] test pools::weighted::tests::debug_format ... ok [INFO] [stdout] test pools::proptest_properties::prop_liquidity_conservation_hybrid ... ok [INFO] [stdout] test pools::proptest_properties::prop_swap_reversibility_hybrid ... ok [INFO] [stdout] test pools::proptest_properties::prop_price_movement_direction_weighted ... ok [INFO] [stdout] test pools::proptest_properties::prop_swap_reversibility_weighted ... ok [INFO] [stdout] test pools::proptest_properties::prop_price_movement_direction_constant_product ... ok [INFO] [stdout] test pools::proptest_properties::prop_price_positive_after_tick ... ok [INFO] [stdout] test pools::hybrid::tests::compute_y_round_trip ... ok [INFO] [stdout] test pools::weighted::tests::checked_powf_non_positive_base ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 805 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.24s [INFO] [stdout] [INFO] [stderr] Running tests/integration.rs (/opt/rustwide/target/debug/deps/integration-9815d067a7a47d76) [INFO] [stdout] [INFO] [stdout] running 29 tests [INFO] [stdout] test config_validation_clmm_unaligned_tick ... ok [INFO] [stdout] test config_validation_cp_zero_reserve_a ... ok [INFO] [stdout] test config_validation_cp_zero_reserve_b ... ok [INFO] [stdout] test config_validation_dynamic_k_out_of_range ... ok [INFO] [stdout] test config_validation_dynamic_negative_k ... ok [INFO] [stdout] test config_validation_dynamic_zero_reserves ... ok [INFO] [stdout] test config_validation_hybrid_zero_amplification ... ok [INFO] [stdout] test config_validation_dynamic_zero_oracle_price ... ok [INFO] [stdout] test config_validation_hybrid_zero_reserves ... ok [INFO] [stdout] test config_validation_order_book_zero_lot_size ... ok [INFO] [stdout] test config_validation_never_panics ... ok [INFO] [stdout] test config_validation_weighted_bad_weights ... ok [INFO] [stdout] test config_validation_weighted_zero_balance ... ok [INFO] [stdout] test factory_round_trip_clmm ... ok [INFO] [stdout] test factory_round_trip_clmm_with_position ... ok [INFO] [stdout] test factory_creates_all_pool_types_when_all_features_enabled ... ok [INFO] [stdout] test config_validation_order_book_zero_tick_size ... ok [INFO] [stdout] test factory_round_trip_constant_product ... ok [INFO] [stdout] test factory_round_trip_dynamic ... ok [INFO] [stdout] test factory_round_trip_hybrid ... ok [INFO] [stdout] test factory_round_trip_weighted ... ok [INFO] [stdout] test full_lifecycle_multiple_lps ... ok [INFO] [stdout] test full_lifecycle_swap_exact_out ... ok [INFO] [stdout] test full_trading_lifecycle_hybrid ... ok [INFO] [stdout] test full_lifecycle_no_tokens_lost_or_created ... ok [INFO] [stdout] test multi_pool_outputs_are_deterministic ... ok [INFO] [stdout] test factory_round_trip_order_book ... ok [INFO] [stdout] test multi_pool_comparison_swap_outputs ... ok [INFO] [stdout] test full_trading_lifecycle_constant_product ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Doc-tests hydra_amm [INFO] [stdout] [INFO] [stdout] running 28 tests [INFO] [stdout] test src/domain/decimals.rs - domain::decimals::Decimals (line 15) ... ok [INFO] [stdout] test src/domain/amount.rs - domain::amount::Amount (line 17) ... ok [INFO] [stdout] test src/domain/liquidity.rs - domain::liquidity::Liquidity (line 15) ... ok [INFO] [stdout] test src/domain/fee_tier.rs - domain::fee_tier::FeeTier (line 15) ... ok [INFO] [stdout] test src/domain/basis_points.rs - domain::basis_points::BasisPoints (line 19) ... ok [INFO] [stdout] test src/domain/swap_result.rs - domain::swap_result::SwapResult (line 17) ... ok [INFO] [stdout] test src/domain/position.rs - domain::position::Position (line 21) ... ok [INFO] [stdout] test src/domain/rounding.rs - domain::rounding::Rounding (line 11) ... ok [INFO] [stdout] test src/domain/liquidity_change.rs - domain::liquidity_change::LiquidityChange (line 35) ... ok [INFO] [stdout] test src/domain/price.rs - domain::price::Price (line 16) ... ok [INFO] [stdout] test src/factory/mod.rs - factory (line 9) ... ok [INFO] [stdout] test src/domain/token.rs - domain::token::Token (line 14) ... ok [INFO] [stdout] test src/domain/token_pair.rs - domain::token_pair::TokenPair (line 13) ... ok [INFO] [stdout] test src/domain/token_address.rs - domain::token_address::TokenAddress (line 10) ... ok [INFO] [stdout] test src/math/rounding.rs - math::rounding (line 20) ... ok [INFO] [stdout] test src/factory/default_factory.rs - factory::default_factory::DefaultPoolFactory (line 31) ... ok [INFO] [stdout] test src/domain/swap_spec.rs - domain::swap_spec::SwapSpec (line 36) ... ok [INFO] [stdout] test src/factory/default_factory.rs - factory::default_factory::DefaultPoolFactory::create (line 78) ... ok [INFO] [stdout] test src/domain/tick.rs - domain::tick::Tick (line 21) ... ok [INFO] [stdout] test src/lib.rs - (line 43) ... ok [INFO] [stdout] test src/pools/pool_box.rs - pools::pool_box::PoolBox (line 45) ... ok [INFO] [stdout] test src/math/tick_math.rs - math::tick_math::price_at_tick (line 55) ... ok [INFO] [stdout] test src/math/tick_math.rs - math::tick_math::tick_at_price (line 85) ... ok [INFO] [stdout] test src/math/tick_math.rs - math::tick_math (line 15) ... ok [INFO] [stdout] test src/prelude.rs - prelude (line 6) ... ok [INFO] [stdout] test src/math/rounding.rs - math::rounding::div_round (line 42) ... ok [INFO] [stdout] test src/pools/constant_product.rs - pools::constant_product::ConstantProductPool (line 45) ... ok [INFO] [stdout] test src/math/checked.rs - math::checked (line 14) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 28 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stdout] all doctests ran in 0.72s; merged doctests compilation took 0.69s [INFO] running `Command { std: "docker" "inspect" "547ce1e14f3383668f5a795e33e5bcd98970b0501f0857342ab5f2420f925405", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "547ce1e14f3383668f5a795e33e5bcd98970b0501f0857342ab5f2420f925405", kill_on_drop: false }` [INFO] [stdout] 547ce1e14f3383668f5a795e33e5bcd98970b0501f0857342ab5f2420f925405