[INFO] fetching crate volsurf 2.1.0...
[INFO] testing volsurf-2.1.0 against try#33835004928d3bf65db4d4712e1330766263b0bd for pr-155739-1
[INFO] extracting crate volsurf 2.1.0 into /workspace/builds/worker-3-tc2/source
[INFO] started tweaking crates.io crate volsurf 2.1.0
[INFO] removed 0 missing examples
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate volsurf 2.1.0
[INFO] tweaked toml for crates.io crate volsurf 2.1.0 written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate volsurf 2.1.0 on toolchain 33835004928d3bf65db4d4712e1330766263b0bd
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate volsurf 2.1.0 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" "+33835004928d3bf65db4d4712e1330766263b0bd" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 11e0e2589e25b1cad0c62a00659042a3050f3e90bba902a8f1edbbd09b4bb92d
[INFO] running `Command { std: "docker" "start" "-a" "11e0e2589e25b1cad0c62a00659042a3050f3e90bba902a8f1edbbd09b4bb92d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "11e0e2589e25b1cad0c62a00659042a3050f3e90bba902a8f1edbbd09b4bb92d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "11e0e2589e25b1cad0c62a00659042a3050f3e90bba902a8f1edbbd09b4bb92d", kill_on_drop: false }`
[INFO] [stdout] 11e0e2589e25b1cad0c62a00659042a3050f3e90bba902a8f1edbbd09b4bb92d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1b54271cd0c4e5f45b58cae9387f46a6bafd1a7e61ca0711c01d719bebbee500
[INFO] running `Command { std: "docker" "start" "-a" "1b54271cd0c4e5f45b58cae9387f46a6bafd1a7e61ca0711c01d719bebbee500", kill_on_drop: false }`
[INFO] [stderr]    Compiling unicode-ident v1.0.23
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling prettyplease v0.2.37
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling implied-vol v2.0.0
[INFO] [stderr]    Compiling num-complex v0.4.6
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling syn v2.0.115
[INFO] [stderr]    Compiling simba v0.9.1
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling nalgebra-macros v0.3.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling nalgebra v0.34.1
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling bon-macros v3.9.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling bon v3.9.0
[INFO] [stderr]    Compiling volsurf v2.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 23.53s
[INFO] running `Command { std: "docker" "inspect" "1b54271cd0c4e5f45b58cae9387f46a6bafd1a7e61ca0711c01d719bebbee500", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1b54271cd0c4e5f45b58cae9387f46a6bafd1a7e61ca0711c01d719bebbee500", kill_on_drop: false }`
[INFO] [stdout] 1b54271cd0c4e5f45b58cae9387f46a6bafd1a7e61ca0711c01d719bebbee500
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 6c29be66717bdd59a86d675b2be03230540ae79faf6743a2fdf2a004d4acea26
[INFO] running `Command { std: "docker" "start" "-a" "6c29be66717bdd59a86d675b2be03230540ae79faf6743a2fdf2a004d4acea26", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]    Compiling zerocopy v0.8.39
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling zerocopy-derive v0.8.39
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling ciborium-io v0.2.2
[INFO] [stderr]    Compiling plotters-backend v0.3.7
[INFO] [stderr]    Compiling clap_builder v4.5.58
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling cast v0.3.0
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling plotters-svg v0.3.7
[INFO] [stderr]    Compiling anes v0.1.6
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling unarray v0.1.4
[INFO] [stderr]    Compiling oorandom v11.1.5
[INFO] [stderr]    Compiling approx v0.5.1
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling num-complex v0.4.6
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling rayon v1.11.0
[INFO] [stderr]    Compiling num-rational v0.4.2
[INFO] [stderr]    Compiling simba v0.9.1
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling alloca v0.4.0
[INFO] [stderr]    Compiling criterion-plot v0.8.2
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling page_size v0.6.0
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling tempfile v3.25.0
[INFO] [stderr]    Compiling clap v4.5.58
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling nalgebra v0.34.1
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling proptest v1.10.0
[INFO] [stderr]    Compiling criterion v0.8.2
[INFO] [stderr]    Compiling volsurf v2.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 35.56s
[INFO] running `Command { std: "docker" "inspect" "6c29be66717bdd59a86d675b2be03230540ae79faf6743a2fdf2a004d4acea26", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6c29be66717bdd59a86d675b2be03230540ae79faf6743a2fdf2a004d4acea26", kill_on_drop: false }`
[INFO] [stdout] 6c29be66717bdd59a86d675b2be03230540ae79faf6743a2fdf2a004d4acea26
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 8b745598e565d72568dea06cf2bb1ef068fef2d57ed71a223ccbb4d281fe7006
[INFO] running `Command { std: "docker" "start" "-a" "8b745598e565d72568dea06cf2bb1ef068fef2d57ed71a223ccbb4d281fe7006", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.20s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/volsurf-7bf6ba2d1f85bec4)
[INFO] [stdout] 
[INFO] [stdout] running 877 tests
[INFO] [stdout] test calibration::tests::combined_filter ... ok
[INFO] [stdout] test calibration::tests::default_filter_passes_everything ... ok
[INFO] [stdout] test calibration::tests::inf_vol_excluded_unconditionally ... ok
[INFO] [stdout] test calibration::tests::max_log_moneyness_excludes_far_wings ... ok
[INFO] [stdout] test calibration::tests::min_vol_excludes_cabinet_quotes ... ok
[INFO] [stdout] test calibration::tests::preserves_input_order ... ok
[INFO] [stdout] test calibration::tests::all_filtered_out ... ok
[INFO] [stdout] test calibration::tests::defaults ... ok
[INFO] [stdout] test calibration::tests::serde_round_trip_data_filter ... ok
[INFO] [stdout] test calibration::tests::serde_round_trip_weighting_scheme ... ok
[INFO] [stdout] test calibration::tests::zero_forward_excludes_all ... ok
[INFO] [stdout] test conventions::tests::forward_price_error_is_invalid_input ... ok
[INFO] [stdout] test conventions::tests::forward_price_large_but_valid_succeeds ... ok
[INFO] [stdout] test conventions::tests::forward_price_known_value ... ok
[INFO] [stdout] test conventions::tests::forward_price_negative_dividend_yield ... ok
[INFO] [stdout] test conventions::tests::forward_price_negative_rate ... ok
[INFO] [stdout] test conventions::tests::forward_price_overflow_near_exp_threshold ... ok
[INFO] [stdout] test conventions::tests::forward_price_overflow_error_message_contains_parameters ... ok
[INFO] [stdout] test conventions::tests::forward_price_overflow_via_large_spot ... ok
[INFO] [stdout] test conventions::tests::forward_price_negative_expiry_returns_err ... ok
[INFO] [stdout] test conventions::tests::forward_price_positive_dividend_yield ... ok
[INFO] [stdout] test conventions::tests::forward_price_scales_with_expiry ... ok
[INFO] [stdout] test calibration::tests::nan_strike_excluded ... ok
[INFO] [stdout] test conventions::tests::forward_price_tiny_spot_overflow_exponent ... ok
[INFO] [stdout] test conventions::tests::forward_price_negative_spot_returns_err ... ok
[INFO] [stdout] test conventions::tests::forward_price_non_finite_returns_err ... ok
[INFO] [stdout] test conventions::tests::forward_price_overflow_returns_numerical_error ... ok
[INFO] [stdout] test conventions::tests::forward_price_underflow_to_zero_succeeds ... ok
[INFO] [stdout] test conventions::tests::forward_price_tiny_spot_large_exponent_finite ... ok
[INFO] [stdout] test conventions::tests::forward_price_yield_equals_rate ... ok
[INFO] [stdout] test calibration::tests::vol_cliff_filter_not_applied ... ok
[INFO] [stdout] test conventions::tests::forward_price_zero_expiry ... ok
[INFO] [stdout] test conventions::tests::forward_price_yield_exceeds_rate ... ok
[INFO] [stdout] test calibration::tests::nan_vol_excluded_with_min_vol ... ok
[INFO] [stdout] test conventions::tests::forward_price_zero_rate ... ok
[INFO] [stdout] test conventions::tests::forward_price_overflow_via_negative_dividend_yield ... ok
[INFO] [stdout] test conventions::tests::forward_price_zero_spot_returns_err ... ok
[INFO] [stdout] test conventions::tests::log_moneyness_extreme_ratio_overflows ... ok
[INFO] [stdout] test conventions::tests::log_moneyness_large_finite_values_succeed ... ok
[INFO] [stdout] test conventions::tests::log_moneyness_negative_forward_returns_err ... ok
[INFO] [stdout] test conventions::tests::log_moneyness_negative_strike_returns_err ... ok
[INFO] [stdout] test conventions::tests::log_moneyness_otm_call ... ok
[INFO] [stdout] test conventions::tests::log_moneyness_symmetry ... ok
[INFO] [stdout] test conventions::tests::log_moneyness_error_is_invalid_input ... ok
[INFO] [stdout] test conventions::tests::log_moneyness_atm ... ok
[INFO] [stdout] test conventions::tests::log_moneyness_itm_call ... ok
[INFO] [stdout] test conventions::tests::moneyness_atm ... ok
[INFO] [stdout] test conventions::tests::log_moneyness_zero_strike_returns_err ... ok
[INFO] [stdout] test conventions::tests::log_moneyness_zero_forward_returns_err ... ok
[INFO] [stdout] test conventions::tests::log_moneyness_inf_returns_err ... ok
[INFO] [stdout] test conventions::tests::log_moneyness_nan_returns_err ... ok
[INFO] [stdout] test conventions::tests::moneyness_is_inverse_of_log ... ok
[INFO] [stdout] test conventions::tests::moneyness_large_finite_values_succeed ... ok
[INFO] [stdout] test conventions::tests::moneyness_error_is_invalid_input ... ok
[INFO] [stdout] test conventions::tests::moneyness_nan_returns_err ... ok
[INFO] [stdout] test conventions::tests::moneyness_negative_forward_returns_err ... ok
[INFO] [stdout] test conventions::tests::moneyness_otm_call ... ok
[INFO] [stdout] test conventions::tests::moneyness_negative_strike_returns_err ... ok
[INFO] [stdout] test conventions::tests::moneyness_zero_forward_returns_err ... ok
[INFO] [stdout] test conventions::tests::sticky_kind_debug_display ... ok
[INFO] [stdout] test conventions::tests::sticky_kind_copy_and_eq ... ok
[INFO] [stdout] test conventions::tests::moneyness_itm_call ... ok
[INFO] [stdout] test conventions::tests::sticky_kind_serde_round_trip ... ok
[INFO] [stdout] test error::tests::calibration_error_fields_accessible ... ok
[INFO] [stdout] test error::tests::calibration_error_rms_none ... ok
[INFO] [stdout] test error::tests::error_clone_equals_original ... ok
[INFO] [stdout] test error::tests::error_different_variants_not_equal ... ok
[INFO] [stdout] test error::tests::error_display_includes_message ... ok
[INFO] [stdout] test error::tests::error_is_send_and_sync ... ok
[INFO] [stdout] test conventions::tests::moneyness_zero_strike_returns_err ... ok
[INFO] [stdout] test implied::black::tests::black_price_rejects_infinite_strike ... ok
[INFO] [stdout] test implied::black::tests::black_price_call_put_parity ... ok
[INFO] [stdout] test conventions::tests::sticky_kind_hash ... ok
[INFO] [stdout] test implied::black::tests::black_price_rejects_negative_vol ... ok
[INFO] [stdout] test conventions::tests::moneyness_consistency ... ok
[INFO] [stdout] test implied::black::tests::black_price_zero_vol_atm_put ... ok
[INFO] [stdout] test implied::black::tests::black_price_zero_expiry ... ok
[INFO] [stdout] test implied::black::tests::black_price_rejects_negative_expiry ... ok
[INFO] [stdout] test implied::black::tests::black_price_rejects_zero_forward ... ok
[INFO] [stdout] test implied::black::tests::black_price_rejects_nan_strike ... ok
[INFO] [stdout] test implied::black::tests::black_price_zero_vol_call ... ok
[INFO] [stdout] test implied::black::tests::black_price_rejects_zero_strike ... ok
[INFO] [stdout] test implied::black::tests::black_price_zero_vol_itm_put ... ok
[INFO] [stdout] test implied::black::tests::black_price_zero_vol_otm_put ... ok
[INFO] [stdout] test error::tests::invalid_input_message_accessible ... ok
[INFO] [stdout] test implied::black::tests::black_price_rejects_zero_strike_with_zero_vol ... ok
[INFO] [stdout] test implied::black::tests::compute_rejects_infinite_strike ... ok
[INFO] [stdout] test implied::black::tests::compute_near_maximum_price ... ok
[INFO] [stdout] test conventions::tests::moneyness_inf_returns_err ... ok
[INFO] [stdout] test implied::black::tests::black_price_zero_vol_otm_call ... ok
[INFO] [stdout] test implied::black::tests::compute_rejects_negative_price ... ok
[INFO] [stdout] test implied::black::tests::compute_rejects_nan_price ... ok
[INFO] [stdout] test calibration::tests::empty_input ... ok
[INFO] [stdout] test implied::black::tests::compute_rejects_negative_expiry ... ok
[INFO] [stdout] test implied::black::tests::compute_rejects_price_above_forward ... ok
[INFO] [stdout] test conventions::tests::moneyness_extreme_ratio_overflows ... ok
[INFO] [stdout] test implied::black::tests::compute_rejects_put_price_above_strike ... ok
[INFO] [stdout] test implied::black::tests::compute_rejects_negative_forward ... ok
[INFO] [stdout] test implied::black::tests::compute_rejects_zero_expiry ... ok
[INFO] [stdout] test implied::black::tests::compute_rejects_zero_strike ... ok
[INFO] [stdout] test implied::black::tests::compute_rejects_infinite_forward ... ok
[INFO] [stdout] test implied::black::tests::near_intrinsic_iv_stability ... ok
[INFO] [stdout] test implied::black::tests::compute_rejects_zero_forward ... ok
[INFO] [stdout] test implied::black::tests::compute_rejects_nan_strike ... ok
[INFO] [stdout] test implied::black::tests::round_trip_atm_call ... ok
[INFO] [stdout] test implied::black::tests::round_trip_atm_put ... ok
[INFO] [stdout] test implied::black::tests::round_trip_extreme_itm_call ... ok
[INFO] [stdout] test implied::black::tests::round_trip_deep_otm_call ... ok
[INFO] [stdout] test implied::black::tests::round_trip_extreme_otm_call ... ok
[INFO] [stdout] test implied::black::tests::round_trip_high_vol ... ok
[INFO] [stdout] test implied::black::tests::round_trip_long_expiry ... ok
[INFO] [stdout] test implied::black::tests::round_trip_otm_put ... ok
[INFO] [stdout] test implied::black::tests::round_trip_itm_put ... ok
[INFO] [stdout] test implied::black::tests::round_trip_very_high_vol ... ok
[INFO] [stdout] test implied::black::tests::round_trip_short_expiry ... ok
[INFO] [stdout] test implied::black::tests::round_trip_itm_call ... ok
[INFO] [stdout] test implied::displaced::tests::compute_rejects_nan_price ... ok
[INFO] [stdout] test implied::displaced::tests::beta_accessor ... ok
[INFO] [stdout] test implied::displaced::tests::compute_rejects_zero_expiry ... ok
[INFO] [stdout] test implied::displaced::tests::compute_rejects_zero_forward ... ok
[INFO] [stdout] test implied::displaced::tests::compute_rejects_inf_forward ... ok
[INFO] [stdout] test implied::displaced::tests::compute_rejects_negative_price ... ok
[INFO] [stdout] test implied::black::tests::round_trip_otm_call ... ok
[INFO] [stdout] test implied::displaced::tests::displaced_price_beta_zero_equals_normal ... ok
[INFO] [stdout] test implied::displaced::tests::compute_price_at_intrinsic_itm ... ok
[INFO] [stdout] test implied::displaced::tests::displaced_price_monotone_in_beta ... ok
[INFO] [stdout] test implied::displaced::tests::displaced_price_beta_one_equals_black ... ok
[INFO] [stdout] test implied::displaced::tests::displaced_price_rejects_invalid_beta ... ok
[INFO] [stdout] test implied::displaced::tests::displaced_price_zero_expiry ... ok
[INFO] [stdout] test implied::displaced::tests::displaced_price_zero_vol ... ok
[INFO] [stdout] test implied::displaced::tests::new_accepts_beta_one ... ok
[INFO] [stdout] test implied::displaced::tests::new_accepts_beta_zero ... ok
[INFO] [stdout] test implied::displaced::tests::displaced_price_put_call_parity ... ok
[INFO] [stdout] test implied::displaced::tests::displaced_price_rejects_negative_vol ... ok
[INFO] [stdout] test implied::displaced::tests::new_accepts_beta_mid ... ok
[INFO] [stdout] test implied::displaced::tests::new_rejects_inf_beta ... ok
[INFO] [stdout] test implied::displaced::tests::new_rejects_nan_beta ... ok
[INFO] [stdout] test implied::displaced::tests::compute_zero_price_atm ... ok
[INFO] [stdout] test implied::displaced::tests::new_rejects_beta_above_one ... ok
[INFO] [stdout] test implied::displaced::tests::new_rejects_beta_below_zero ... ok
[INFO] [stdout] test implied::displaced::tests::round_trip_beta_half_atm_call ... ok
[INFO] [stdout] test implied::displaced::tests::round_trip_beta_half_otm_put ... ok
[INFO] [stdout] test implied::normal::tests::compute_price_at_intrinsic_itm ... ok
[INFO] [stdout] test implied::normal::tests::compute_price_below_intrinsic ... ok
[INFO] [stdout] test implied::displaced::tests::round_trip_beta_one_matches_black ... ok
[INFO] [stdout] test implied::normal::tests::compute_rejects_nan_price ... ok
[INFO] [stdout] test implied::normal::tests::compute_rejects_negative_expiry ... ok
[INFO] [stdout] test implied::displaced::tests::round_trip_near_zero_beta ... ok
[INFO] [stdout] test implied::displaced::tests::round_trip_beta_zero ... ok
[INFO] [stdout] test implied::displaced::tests::round_trip_beta_zero_otm_put ... ok
[INFO] [stdout] test implied::displaced::tests::round_trip_beta_one_atm ... ok
[INFO] [stdout] test implied::displaced::tests::round_trip_deep_otm ... ok
[INFO] [stdout] test implied::displaced::tests::round_trip_beta_quarter ... ok
[INFO] [stdout] test implied::normal::tests::compute_rejects_zero_expiry ... ok
[INFO] [stdout] test implied::normal::tests::compute_zero_price_atm ... ok
[INFO] [stdout] test implied::normal::tests::compute_zero_price_otm ... ok
[INFO] [stdout] test implied::normal::tests::compute_rejects_negative_price ... ok
[INFO] [stdout] test implied::normal::tests::normal_price_atm_call ... ok
[INFO] [stdout] test implied::normal::tests::normal_price_rejects_inf_strike ... ok
[INFO] [stdout] test implied::displaced::tests::round_trip_near_one_beta ... ok
[INFO] [stdout] test implied::normal::tests::normal_price_negative_forward ... ok
[INFO] [stdout] test implied::normal::tests::normal_price_put_call_parity ... ok
[INFO] [stdout] test implied::normal::tests::normal_price_rejects_nan_forward ... ok
[INFO] [stdout] test implied::normal::tests::normal_price_rejects_negative_vol ... ok
[INFO] [stdout] test implied::normal::tests::normal_price_zero_expiry ... ok
[INFO] [stdout] test implied::normal::tests::normal_price_rejects_negative_expiry ... ok
[INFO] [stdout] test implied::normal::tests::normal_price_zero_vol_itm_call ... ok
[INFO] [stdout] test implied::normal::tests::normal_price_zero_vol_itm_put ... ok
[INFO] [stdout] test implied::normal::tests::normal_price_zero_vol_otm_call ... ok
[INFO] [stdout] test implied::normal::tests::normal_price_zero_vol_otm_put ... ok
[INFO] [stdout] test implied::normal::tests::round_trip_atm_call ... ok
[INFO] [stdout] test implied::normal::tests::round_trip_atm_put ... ok
[INFO] [stdout] test implied::normal::tests::round_trip_deep_otm_call ... ok
[INFO] [stdout] test implied::normal::tests::round_trip_deep_otm_underflow ... ok
[INFO] [stdout] test implied::normal::tests::round_trip_itm_put ... ok
[INFO] [stdout] test implied::normal::tests::round_trip_large_negative_rates ... ok
[INFO] [stdout] test implied::normal::tests::round_trip_long_expiry ... ok
[INFO] [stdout] test implied::normal::tests::round_trip_negative_forward ... ok
[INFO] [stdout] test implied::normal::tests::round_trip_itm_call ... ok
[INFO] [stdout] test implied::normal::tests::round_trip_short_expiry ... ok
[INFO] [stdout] test implied::normal::tests::round_trip_very_high_vol ... ok
[INFO] [stdout] test implied::normal::tests::round_trip_otm_call ... ok
[INFO] [stdout] test implied::normal::tests::round_trip_high_vol ... ok
[INFO] [stdout] test local_vol::dupire::tests::flat_vol_short_expiry_forward_difference ... ok
[INFO] [stdout] test local_vol::dupire::tests::rejects_zero_expiry ... ok
[INFO] [stdout] test local_vol::dupire::tests::propagates_error_from_zero_forward ... ok
[INFO] [stdout] test local_vol::dupire::tests::atm_matches_simplified_formula ... ok
[INFO] [stdout] test implied::normal::tests::round_trip_otm_put ... ok
[INFO] [stdout] test local_vol::dupire::tests::with_bump_size_rejects_inf ... ok
[INFO] [stdout] test local_vol::dupire::tests::default_bump_size ... ok
[INFO] [stdout] test local_vol::dupire::tests::svi_analytical_otm ... ok
[INFO] [stdout] test local_vol::dupire::tests::flat_vol_returns_input_vol ... ok
[INFO] [stdout] test local_vol::dupire::tests::rejects_zero_strike ... ok
[INFO] [stdout] test implied::normal::tests::round_trip_small_sigma ... ok
[INFO] [stdout] test local_vol::dupire::tests::with_bump_size_rejects_nan ... ok
[INFO] [stdout] test local_vol::dupire::tests::with_bump_size_rejects_zero ... ok
[INFO] [stdout] test local_vol::dupire::tests::with_bump_size_rejects_negative ... ok
[INFO] [stdout] test optim::tests::already_at_minimum ... ok
[INFO] [stdout] test optim::tests::avoids_nan_region ... ok
[INFO] [stdout] test local_vol::dupire::tests::with_bump_size_valid ... ok
[INFO] [stdout] test optim::tests::converges_on_shifted_minimum ... ok
[INFO] [stdout] test optim::tests::diameter_convergence_terminates ... ok
[INFO] [stdout] test optim::tests::converges_on_rosenbrock ... ok
[INFO] [stdout] test optim::tests::handles_small_step_gracefully ... ok
[INFO] [stdout] test optim::tests::initial_simplex_partial_nan ... ok
[INFO] [stdout] test optim::tests::inf_objective_treated_as_worst ... ok
[INFO] [stdout] test optim::tests::all_nan_returns_max ... ok
[INFO] [stdout] test optim::tests::respects_max_iter_limit ... ok
[INFO] [stdout] test optim::tests::expansion_into_nan_falls_back_to_reflection ... ok
[INFO] [stdout] test smile::arbitrage::tests::config_rejects_inverted_range ... ok
[INFO] [stdout] test smile::arbitrage::tests::config_rejects_nan ... ok
[INFO] [stdout] test optim::tests::nan_ring_around_minimum ... ok
[INFO] [stdout] test smile::arbitrage::tests::higher_n_points_finds_more_violations ... ok
[INFO] [stdout] test optim::tests::converges_on_sphere_function ... ok
[INFO] [stdout] test smile::arbitrage::tests::clean_report_is_free ... ok
[INFO] [stdout] test optim::tests::f64_max_objective_passes_through ... ok
[INFO] [stdout] test smile::arbitrage::tests::is_free_computed_from_violations ... ok
[INFO] [stdout] test smile::arbitrage::tests::worst_violation_single_violation ... ok
[INFO] [stdout] test smile::arbitrage::tests::ssvi_conservative_params_clean ... ok
[INFO] [stdout] test smile::arbitrage::tests::sabr_conservative_params_clean ... ok
[INFO] [stdout] test smile::arbitrage::tests::ssvi_extreme_params_detects_violations ... ok
[INFO] [stdout] test smile::arbitrage::tests::worst_violation_clean_report_returns_none ... ok
[INFO] [stdout] test smile::arbitrage::tests::worst_violation_tied_magnitudes ... ok
[INFO] [stdout] test smile::arbitrage::tests::sabr_extreme_nu_detects_violations ... ok
[INFO] [stdout] test smile::sabr::tests::arb_free_beta_one ... ok
[INFO] [stdout] test smile::arbitrage::tests::sabr_default_config_matches_hardcoded ... ok
[INFO] [stdout] test smile::sabr::tests::arb_free_well_behaved_params ... ok
[INFO] [stdout] test smile::sabr::tests::arb_free_beta_zero ... ok
[INFO] [stdout] test smile::arbitrage::tests::narrow_range_misses_wing_violations ... ok
[INFO] [stdout] test smile::arbitrage::tests::svi_default_config_matches_hardcoded ... ok
[INFO] [stdout] test smile::arbitrage::tests::worst_violation_picks_largest_magnitude ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_grid_search_fails_overflow_alpha ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_minimum_four_points ... ok
[INFO] [stdout] test smile::sabr::tests::arb_violation_extreme_nu ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_rejects_invalid_forward ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_different_forward ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_params_pass_validation ... ok
[INFO] [stdout] test smile::sabr::tests::arb_report_violation_fields ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_rejects_invalid_expiry ... ok
[INFO] [stdout] test smile::sabr::tests::arb_free_nu_zero ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_performance ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_rejects_three_points ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_rejects_zero_points ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_round_trip_lognormal ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_rejects_invalid_market_data ... ok
[INFO] [stdout] test smile::sabr::tests::arb_free_clamped_regime ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_positive_rho_recoverable ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_round_trip_equity ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_with_seed_converges ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_with_vega_weighting ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_rejects_invalid_beta ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_round_trip_noisy_lognormal ... ok
[INFO] [stdout] test smile::sabr::tests::calibration_error_format_sabr_alpha_solve ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_round_trip_rates ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_atm_continuity_approach ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_cev_backbone_atm ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_cev_exact_nu_zero ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_round_trip_noisy_equity ... ok
[INFO] [stdout] test smile::sabr::tests::density_peaks_near_forward ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_cev_limit_nu_near_zero ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_deep_otm_strikes ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_equity_k105 ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_zero_rho_recoverable ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_round_trip_non_uniform_strikes ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_short_expiry ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_equity_atm ... ok
[INFO] [stdout] test smile::sabr::tests::density_positive_for_typical_params ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_equity_k110 ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_equity_k120 ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_equity_k130 ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_with_filter ... ok
[INFO] [stdout] test smile::sabr::tests::calibrate_with_config_defaults_matches_calibrate ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_equity_k90 ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_equity_k60 ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_equity_k70 ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_equity_set2_strike_range ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_equity_k80 ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_equity_k140 ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_long_expiry_ten_year ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_normal_sabr_strike_range ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_short_expiry_one_week ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_pure_lognormal_constant_vol ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_skew_direction_positive_rho ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_skew_direction_negative_rho ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_taylor_exact_boundary_agreement ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_inf_alpha ... ok
[INFO] [stdout] test smile::sabr::tests::new_beta_zero ... ok
[INFO] [stdout] test smile::sabr::tests::new_nu_zero ... ok
[INFO] [stdout] test smile::sabr::tests::new_positive_rho ... ok
[INFO] [stdout] test smile::sabr::tests::new_beta_one ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_inf_forward ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_inf_beta ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_inf_nu ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_nan_alpha ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_nan_beta ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_beta_above_one ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_negative_alpha ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_negative_beta ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_nan_expiry ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_negative_expiry ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_negative_nu ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_inf_rho ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_nan_forward ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_negative_forward ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_rho_above_one ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_rho_minus_one ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_rho_plus_one ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_zero_alpha ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_zero_expiry ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_zero_forward ... ok
[INFO] [stdout] test smile::sabr::tests::new_rho_near_minus_one ... ok
[INFO] [stdout] test smile::sabr::tests::new_rho_near_plus_one ... ok
[INFO] [stdout] test smile::sabr::tests::new_rho_zero ... ok
[INFO] [stdout] test smile::sabr::tests::new_valid_params ... ok
[INFO] [stdout] test smile::sabr::tests::sabr_as_trait_object ... ok
[INFO] [stdout] test smile::sabr::tests::sabr_is_send_sync ... ok
[INFO] [stdout] test smile::sabr::tests::serde_rejects_negative_nu ... ok
[INFO] [stdout] test smile::sabr::tests::serde_rejects_beta_out_of_range ... ok
[INFO] [stdout] test smile::sabr::tests::serde_rejects_negative_alpha ... ok
[INFO] [stdout] test smile::sabr::tests::serde_rejects_rho_out_of_range ... ok
[INFO] [stdout] test smile::sabr::tests::serde_rejects_zero_alpha ... ok
[INFO] [stdout] test smile::sabr::tests::serde_rejects_zero_expiry ... ok
[INFO] [stdout] test smile::sabr::tests::serde_round_trip ... ok
[INFO] [stdout] test smile::sabr::tests::smile_section_forward_and_expiry ... ok
[INFO] [stdout] test smile::sabr::tests::variance_equals_vol_squared_times_t ... ok
[INFO] [stdout] test smile::sabr::tests::vol_atm_boundary_continuity ... ok
[INFO] [stdout] test smile::sabr::tests::vol_atm_matches_closed_form ... ok
[INFO] [stdout] test smile::sabr::tests::vol_atm_returns_positive ... ok
[INFO] [stdout] test smile::sabr::tests::vol_beta_one_lognormal_sabr ... ok
[INFO] [stdout] test smile::sabr::tests::vol_beta_zero_normal_sabr ... ok
[INFO] [stdout] test smile::sabr::tests::vol_correction_boundary_degrades_monotonically ... ok
[INFO] [stdout] test smile::sabr::tests::vol_deep_otm_positive ... ok
[INFO] [stdout] test smile::sabr::tests::vol_extreme_rho ... ok
[INFO] [stdout] test smile::sabr::tests::vol_general_approaches_atm ... ok
[INFO] [stdout] test smile::sabr::tests::vol_itm_call ... ok
[INFO] [stdout] test smile::sabr::tests::vol_long_expiry ... ok
[INFO] [stdout] test smile::sabr::tests::vol_multiple_strikes_reasonable ... ok
[INFO] [stdout] test smile::sabr::tests::vol_negative_correction_clamped_beta_one ... ok
[INFO] [stdout] test smile::sabr::tests::vol_negative_correction_clamped_t10 ... ok
[INFO] [stdout] test smile::sabr::tests::vol_negative_correction_clamped_t20 ... ok
[INFO] [stdout] test smile::sabr::tests::vol_negative_rho_skew ... ok
[INFO] [stdout] test smile::sabr::tests::vol_nu_zero_beta_one_constant ... ok
[INFO] [stdout] test smile::sabr::tests::vol_nu_zero_otm_strikes ... ok
[INFO] [stdout] test smile::sabr::tests::vol_nu_zero_cev_limit ... ok
[INFO] [stdout] test smile::sabr::tests::vol_rejects_inf_strike ... ok
[INFO] [stdout] test smile::sabr::tests::vol_otm_call ... ok
[INFO] [stdout] test smile::sabr::tests::serde_rejects_negative_forward ... ok
[INFO] [stdout] test smile::sabr::tests::vol_rejects_negative_strike ... ok
[INFO] [stdout] test smile::sabr::tests::vol_rejects_nan_strike ... ok
[INFO] [stdout] test smile::sabr::tests::serde_rejects_negative_beta ... ok
[INFO] [stdout] test smile::sabr::tests::vol_rejects_zero_strike ... ok
[INFO] [stdout] test smile::sabr::tests::vol_rho_zero_symmetric_smile ... ok
[INFO] [stdout] test smile::sabr::tests::vol_short_expiry ... ok
[INFO] [stdout] test smile::sabr::tests::vol_taylor_boundary_smooth ... ok
[INFO] [stdout] test smile::sabr::tests::vol_taylor_branch_continuity ... ok
[INFO] [stdout] test smile::sabr::tests::vol_twelve_digit_accuracy_beta_one ... ok
[INFO] [stdout] test smile::sabr::tests::vol_twelve_digit_accuracy_general ... ok
[INFO] [stdout] test smile::sabr::tests::vol_variance_consistency ... ok
[INFO] [stdout] test smile::sabr::tests::density_integrates_to_one ... ok
[INFO] [stdout] test smile::spline::tests::default_density_propagates_vol_error ... ok
[INFO] [stdout] test smile::spline::tests::default_density_rejects_negative_strike ... ok
[INFO] [stdout] test smile::spline::tests::density_non_negative_for_convex_smile ... ok
[INFO] [stdout] test smile::spline::tests::convex_smile_is_arbitrage_free ... ok
[INFO] [stdout] test smile::spline::tests::expiry_accessor ... ok
[INFO] [stdout] test smile::spline::tests::extrapolation_below_range_returns_first_variance ... ok
[INFO] [stdout] test smile::spline::tests::extrapolation_no_nan_or_inf ... ok
[INFO] [stdout] test smile::spline::tests::flat_smile_returns_constant_vol ... ok
[INFO] [stdout] test smile::spline::tests::forward_accessor ... ok
[INFO] [stdout] test smile::spline::tests::interpolates_through_knot_points ... ok
[INFO] [stdout] test smile::spline::tests::mid_interval_interpolation_is_accurate ... ok
[INFO] [stdout] test smile::spline::tests::recovers_linear_function_exactly ... ok
[INFO] [stdout] test smile::spline::tests::rejects_duplicate_strikes ... ok
[INFO] [stdout] test smile::spline::tests::rejects_fewer_than_3_points ... ok
[INFO] [stdout] test smile::spline::tests::rejects_infinite_variance ... ok
[INFO] [stdout] test smile::spline::tests::rejects_mismatched_lengths ... ok
[INFO] [stdout] test smile::spline::tests::rejects_nan_variance ... ok
[INFO] [stdout] test smile::spline::tests::rejects_nan_strike ... ok
[INFO] [stdout] test smile::spline::tests::rejects_negative_forward ... ok
[INFO] [stdout] test smile::spline::tests::rejects_negative_strike ... ok
[INFO] [stdout] test smile::spline::tests::density_integrates_approximately_to_one ... ok
[INFO] [stdout] test smile::spline::tests::rejects_negative_variance ... ok
[INFO] [stdout] test smile::spline::tests::rejects_unsorted_strikes ... ok
[INFO] [stdout] test smile::spline::tests::rejects_zero_strike ... ok
[INFO] [stdout] test smile::spline::tests::rejects_zero_expiry ... ok
[INFO] [stdout] test smile::spline::tests::serde_excludes_coeffs ... ok
[INFO] [stdout] test smile::spline::tests::serde_rejects_mismatched_lengths ... ok
[INFO] [stdout] test smile::spline::tests::serde_rejects_negative_forward ... ok
[INFO] [stdout] test smile::spline::tests::serde_rejects_negative_variance ... ok
[INFO] [stdout] test smile::spline::tests::serde_rejects_too_few_points ... ok
[INFO] [stdout] test smile::spline::tests::serde_rejects_non_increasing_strikes ... ok
[INFO] [stdout] test smile::spline::tests::serde_rejects_zero_expiry ... ok
[INFO] [stdout] test smile::spline::tests::serde_round_trip ... ok
[INFO] [stdout] test smile::spline::tests::spline_is_smooth ... ok
[INFO] [stdout] test smile::spline::tests::three_points_works ... ok
[INFO] [stdout] test smile::spline::tests::variance_passes_through_knot_points ... ok
[INFO] [stdout] test smile::spline::tests::variance_override_is_consistent_with_vol ... ok
[INFO] [stdout] test smile::spline::tests::variance_rejects_nan_strike ... ok
[INFO] [stdout] test smile::spline::tests::variance_rejects_zero_strike ... ok
[INFO] [stdout] test smile::spline::tests::variance_returns_error_for_negative_interpolated_variance ... ok
[INFO] [stdout] test smile::spline::tests::vol_rejects_inf_strike ... ok
[INFO] [stdout] test smile::spline::tests::vol_rejects_nan_strike ... ok
[INFO] [stdout] test smile::spline::tests::vol_rejects_negative_strike ... ok
[INFO] [stdout] test smile::spline::tests::vol_rejects_zero_strike ... ok
[INFO] [stdout] test smile::spline::tests::vol_returns_error_for_negative_interpolated_variance ... ok
[INFO] [stdout] test smile::svi::tests::atm_symmetry_rho_zero ... ok
[INFO] [stdout] test smile::svi::tests::arb_free_params_clean_report ... ok
[INFO] [stdout] test smile::spline::tests::zero_variance_produces_zero_vol ... ok
[INFO] [stdout] test smile::spline::tests::extrapolation_above_range_returns_last_variance ... ok
[INFO] [stdout] test smile::spline::tests::default_density_rejects_zero_strike ... ok
[INFO] [stdout] test smile::sabr::tests::serde_rejects_rho_at_plus_one ... ok
[INFO] [stdout] test smile::sabr::tests::serde_rejects_rho_at_minus_one ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_lognormal_sabr_strike_range ... ok
[INFO] [stdout] test optim::tests::shrink_path_nan_eval ... ok
[INFO] [stdout] test calibration::tests::nan_vol_excluded_unconditionally ... ok
[INFO] [stdout] test implied::normal::tests::compute_rejects_inf_strike ... ok
[INFO] [stdout] test implied::normal::tests::compute_rejects_nan_forward ... ok
[INFO] [stdout] test smile::arbitrage::tests::config_rejects_n_points_below_two ... ok
[INFO] [stdout] test smile::sabr::tests::hagan_equity_k95 ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_nan_nu ... ok
[INFO] [stdout] test smile::sabr::tests::new_rejects_nan_rho ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_rejects_negative_forward ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_rejects_too_few_points ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_rejects_negative_vol ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_bad_seed_and_bad_data_returns_error ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_rejects_degenerate_atm_overshoot ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_exact_5_points ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_grid_search_fails_frown ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_one_sided_data_skips_atm_sanity ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_params_pass_new_validation ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_with_seed_converges ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_round_trip_canonical ... ok
[INFO] [stdout] test smile::svi::tests::calibration_error_format_svi_linear_solve ... ok
[INFO] [stdout] test smile::svi::tests::density_atm_positive ... ok
[INFO] [stdout] test smile::svi::tests::density_cross_check_breeden_litzenberger ... ok
[INFO] [stdout] test smile::svi::tests::density_integrates_to_one ... ok
[INFO] [stdout] test smile::svi::tests::density_non_negative_arb_free ... ok
[INFO] [stdout] test smile::svi::tests::density_positive_across_strikes ... ok
[INFO] [stdout] test smile::svi::tests::density_rejects_inf_strike ... ok
[INFO] [stdout] test smile::svi::tests::density_rejects_nan_strike ... ok
[INFO] [stdout] test smile::svi::tests::density_rejects_zero_strike ... ok
[INFO] [stdout] test smile::svi::tests::density_returns_error_when_total_variance_non_positive ... ok
[INFO] [stdout] test smile::svi::tests::flat_smile_is_arb_free ... ok
[INFO] [stdout] test smile::svi::tests::flat_smile_with_zero_b ... ok
[INFO] [stdout] test smile::svi::tests::forward_and_expiry_accessors ... ok
[INFO] [stdout] test smile::svi::tests::g_function_at_atm_known_value ... ok
[INFO] [stdout] test smile::svi::tests::is_arbitrage_free_skips_density_errors ... ok
[INFO] [stdout] test smile::svi::tests::new_accepts_roger_lee_boundary ... ok
[INFO] [stdout] test smile::svi::tests::new_allows_zero_b ... ok
[INFO] [stdout] test smile::svi::tests::new_allows_zero_min_variance ... ok
[INFO] [stdout] test smile::svi::tests::new_rejects_inf_a ... ok
[INFO] [stdout] test smile::svi::tests::new_rejects_inf_m ... ok
[INFO] [stdout] test smile::svi::tests::new_rejects_nan_a ... ok
[INFO] [stdout] test smile::svi::tests::new_rejects_nan_forward ... ok
[INFO] [stdout] test smile::svi::tests::new_rejects_nan_m ... ok
[INFO] [stdout] test smile::svi::tests::new_rejects_neg_inf_m ... ok
[INFO] [stdout] test smile::svi::tests::new_rejects_negative_b ... ok
[INFO] [stdout] test smile::svi::tests::new_rejects_negative_expiry ... ok
[INFO] [stdout] test smile::svi::tests::new_rejects_negative_forward ... ok
[INFO] [stdout] test smile::svi::tests::new_rejects_negative_min_variance ... ok
[INFO] [stdout] test smile::svi::tests::new_rejects_negative_sigma ... ok
[INFO] [stdout] test smile::svi::tests::new_rejects_rho_above_1 ... ok
[INFO] [stdout] test smile::svi::tests::new_rejects_rho_at_1 ... ok
[INFO] [stdout] test smile::svi::tests::new_rejects_rho_at_neg1 ... ok
[INFO] [stdout] test smile::svi::tests::new_rejects_roger_lee_bound ... ok
[INFO] [stdout] test smile::svi::tests::new_rejects_zero_expiry ... ok
[INFO] [stdout] test smile::svi::tests::new_rejects_zero_forward ... ok
[INFO] [stdout] test smile::svi::tests::new_rejects_zero_sigma ... ok
[INFO] [stdout] test smile::svi::tests::new_valid_params ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_real_data_fail_10_tenor0 ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_vol_cliff_filter_toggle ... ok
[INFO] [stdout] test smile::svi::tests::serde_rejects_inf_a ... ok
[INFO] [stdout] test smile::svi::tests::serde_rejects_inf_m ... ok
[INFO] [stdout] test smile::svi::tests::serde_rejects_min_variance_violation ... ok
[INFO] [stdout] test smile::svi::tests::serde_rejects_negative_b ... ok
[INFO] [stdout] test smile::svi::tests::serde_rejects_negative_forward ... ok
[INFO] [stdout] test smile::svi::tests::serde_rejects_negative_sigma ... ok
[INFO] [stdout] test smile::svi::tests::serde_rejects_rho_at_minus_one ... ok
[INFO] [stdout] test smile::svi::tests::serde_rejects_rho_at_plus_one ... ok
[INFO] [stdout] test smile::svi::tests::serde_rejects_zero_expiry ... ok
[INFO] [stdout] test smile::svi::tests::serde_rejects_zero_sigma ... ok
[INFO] [stdout] test smile::svi::tests::serde_round_trip ... ok
[INFO] [stdout] test smile::svi::tests::skew_negative_rho ... ok
[INFO] [stdout] test smile::svi::tests::skew_positive_rho ... ok
[INFO] [stdout] test smile::svi::tests::variance_consistent_with_vol ... ok
[INFO] [stdout] test smile::svi::tests::roger_lee_bound_prevents_calibration_to_steep_wings ... ok
[INFO] [stdout] test smile::svi::tests::violated_params_detect_violations ... ok
[INFO] [stdout] test smile::svi::tests::violation_density_matches_density_method ... ok
[INFO] [stdout] test smile::svi::tests::vol_atm ... ok
[INFO] [stdout] test smile::svi::tests::vol_known_value_otm_call ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_round_trip_symmetric ... ok
[INFO] [stdout] test smile::svi::tests::vol_known_value_otm_put ... ok
[INFO] [stdout] test smile::svi::tests::vol_rejects_inf_strike ... ok
[INFO] [stdout] test smile::svi::tests::vol_rejects_nan_strike ... ok
[INFO] [stdout] test smile::svi::tests::vol_rejects_zero_strike ... ok
[INFO] [stdout] test smile::svi::tests::vol_rejects_negative_strike ... ok
[INFO] [stdout] test smile::svi::tests::vol_returns_error_when_total_variance_is_negative ... ok
[INFO] [stdout] test surface::arbitrage::tests::diagnostics_mixed_violations_not_free ... ok
[INFO] [stdout] test surface::arbitrage::tests::diagnostics_with_butterfly_violations_not_free ... ok
[INFO] [stdout] test surface::arbitrage::tests::calendar_violation_serde_round_trip ... ok
[INFO] [stdout] test surface::arbitrage::tests::diagnostics_with_calendar_violations_not_free ... ok
[INFO] [stdout] test surface::arbitrage::tests::empty_diagnostics_is_free ... ok
[INFO] [stdout] test surface::arbitrage::tests::surface_diagnostics_serde_round_trip ... ok
[INFO] [stdout] test surface::builder::tests::add_tenor_with_forward_nan_returns_invalid_input ... ok
[INFO] [stdout] test surface::builder::tests::add_tenor_with_forward_negative_returns_invalid_input ... ok
[INFO] [stdout] test surface::builder::tests::add_tenor_with_forward_zero_returns_invalid_input ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_with_filter_reduces_input ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_round_trip_skewed ... ok
[INFO] [stdout] test smile::svi::tests::roger_lee_boundary_exact_in_calibration ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_round_trip_non_uniform_strikes ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_with_uniform_weighting ... ok
[INFO] [stdout] test surface::builder::tests::build_single_tenor_surface ... ok
[INFO] [stdout] test surface::builder::tests::build_with_cubic_spline_model ... ok
[INFO] [stdout] test surface::builder::tests::build_with_sabr_model ... ok
[INFO] [stdout] test surface::builder::tests::build_with_dividend_yield ... ok
[INFO] [stdout] test surface::builder::tests::cubic_spline_with_2_strikes_fails ... ok
[INFO] [stdout] test smile::svi::tests::vega_weighting_improves_atm_fit ... ok
[INFO] [stdout] test surface::builder::tests::cubic_spline_with_duplicate_strikes_returns_error ... ok
[INFO] [stdout] test surface::builder::tests::cubic_spline_with_nan_strike_returns_error ... ok
[INFO] [stdout] test surface::builder::tests::cubic_spline_with_3_strikes_succeeds ... ok
[INFO] [stdout] test surface::builder::tests::cubic_spline_with_unsorted_strikes_succeeds ... ok
[INFO] [stdout] test surface::builder::tests::default_model_is_svi ... ok
[INFO] [stdout] test surface::builder::tests::default_is_same_as_new ... ok
[INFO] [stdout] test surface::builder::tests::fewer_than_5_strikes_returns_invalid_input ... ok
[INFO] [stdout] test surface::builder::tests::inf_dividend_yield_returns_invalid_input ... ok
[INFO] [stdout] test surface::builder::tests::inf_rate_returns_invalid_input ... ok
[INFO] [stdout] test surface::builder::tests::mismatched_lengths_error_message_contains_counts ... ok
[INFO] [stdout] test surface::builder::tests::mismatched_strikes_vols_returns_invalid_input ... ok
[INFO] [stdout] test surface::builder::tests::missing_rate_returns_invalid_input ... ok
[INFO] [stdout] test surface::builder::tests::missing_spot_returns_invalid_input ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_real_es_15d ... ok
[INFO] [stdout] test surface::builder::tests::nan_dividend_yield_returns_invalid_input ... ok
[INFO] [stdout] test surface::builder::tests::nan_rate_returns_invalid_input ... ok
[INFO] [stdout] test surface::builder::tests::neg_inf_rate_returns_invalid_input ... ok
[INFO] [stdout] test surface::builder::tests::negative_spot_returns_invalid_input ... ok
[INFO] [stdout] test surface::builder::tests::negative_strikes_cause_calibration_error ... ok
[INFO] [stdout] test surface::builder::tests::no_tenors_returns_invalid_input ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_real_data_fail_00_tenor1 ... ok
[INFO] [stdout] test surface::builder::tests::sabr_beta_one_lognormal_model ... ok
[INFO] [stdout] test surface::builder::tests::add_tenor_with_forward_bypasses_forward_price ... ok
[INFO] [stdout] test surface::builder::tests::sabr_beta_zero_normal_model ... ok
[INFO] [stdout] test surface::builder::tests::sabr_invalid_beta_above_1 ... ok
[INFO] [stdout] test surface::builder::tests::sabr_invalid_beta_negative ... ok
[INFO] [stdout] test surface::builder::tests::sabr_invalid_beta_nan ... ok
[INFO] [stdout] test surface::builder::tests::sabr_multi_tenor_cross_tenor_query ... ok
[INFO] [stdout] test surface::builder::tests::sabr_vol_and_variance_consistent ... ok
[INFO] [stdout] test surface::builder::tests::sabr_with_3_strikes_fails ... ok
[INFO] [stdout] test surface::builder::tests::smile_model_sabr_boundary_beta ... ok
[INFO] [stdout] test surface::builder::tests::smile_model_sabr_json_shape ... ok
[INFO] [stdout] test surface::builder::tests::smile_model_sabr_rejects_invalid_beta ... ok
[INFO] [stdout] test surface::builder::tests::smile_model_serde_round_trip ... ok
[INFO] [stdout] test surface::builder::tests::sabr_with_4_strikes_succeeds ... ok
[INFO] [stdout] test surface::builder::tests::ten_tenor_cubic_spline_surface ... ok
[INFO] [stdout] test surface::builder::tests::build_multi_tenor_surface ... ok
[INFO] [stdout] test surface::builder::tests::zero_expiry_returns_invalid_input ... ok
[INFO] [stdout] test surface::builder::tests::zero_spot_returns_invalid_input ... ok
[INFO] [stdout] test surface::builder::tests::zero_strike_in_data_causes_error ... ok
[INFO] [stdout] test surface::essvi::tests::arb_detected_extreme_params ... ok
[INFO] [stdout] test surface::essvi::tests::arb_free_conservative_params ... ok
[INFO] [stdout] test surface::builder::tests::build_with_negative_rate ... ok
[INFO] [stdout] test surface::builder::tests::ten_tenor_sabr_surface ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_real_es_83d ... ok
[INFO] [stdout] test surface::builder::tests::bad_tenor_among_good_tenors_returns_error ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_spx_both_sided_skew ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_real_es_28d ... ok
[INFO] [stdout] test surface::builder::tests::vol_and_variance_consistent_after_build ... ok
[INFO] [stdout] test surface::builder::tests::dividend_yield_zero_matches_no_dividend_yield ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_rejects_empty_data ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_rejects_length_mismatch ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_rejects_negative_forward ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_bad_seed_falls_back_to_grid_search ... ok
[INFO] [stdout] test surface::builder::tests::build_with_unsorted_tenors_sorts_them ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_rejects_too_few_points ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_rejects_zero_tenor ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_rejects_non_monotone_thetas ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_rejects_single_tenor ... ok
[INFO] [stdout] test surface::builder::tests::mixed_add_tenor_and_add_tenor_with_forward ... ok
[INFO] [stdout] test surface::builder::tests::resulting_surface_answers_queries ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_real_data_deterministic ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_round_trip_2_tenors ... ok
[INFO] [stdout] test surface::essvi::tests::density_positive_near_atm ... ok
[INFO] [stdout] test surface::essvi::tests::fit_per_tenor_rejects_length_mismatch ... ok
[INFO] [stdout] test smile::svi::tests::calibrate_with_config_defaults_matches_calibrate ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_round_trip_varying_forwards ... ok
[INFO] [stdout] test surface::essvi::tests::from_per_tenor_rejects_empty ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_round_trip_equity ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_calendar_structural_clean ... ok
[INFO] [stdout] test surface::builder::tests::build_ten_tenor_surface ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_rho_at_theta_max_equals_rho_m ... ok
[INFO] [stdout] test surface::essvi::tests::from_per_tenor_rejects_single_tenor ... ok
[INFO] [stdout] test surface::essvi::tests::is_send_sync ... ok
[INFO] [stdout] test surface::essvi::tests::long_expiry_slice ... ok
[INFO] [stdout] test surface::essvi::tests::matches_ssvi_slice ... ok
[INFO] [stdout] test surface::essvi::tests::new_gamma_boundaries_accepted ... ok
[INFO] [stdout] test surface::essvi::tests::new_rejects_invalid_params ... ok
[INFO] [stdout] test surface::essvi::tests::new_rejects_nan_and_inf ... ok
[INFO] [stdout] test surface::essvi::tests::new_valid_params ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_exercises_a_clipping ... ok
[INFO] [stdout] test surface::essvi::tests::rho_at_half_theta_max ... ok
[INFO] [stdout] test surface::essvi::tests::rho_at_theta_max ... ok
[INFO] [stdout] test surface::essvi::tests::rho_at_zero_theta ... ok
[INFO] [stdout] test surface::essvi::tests::rho_clamped_to_valid_range ... ok
[INFO] [stdout] test surface::essvi::tests::rho_constant_when_a_zero ... ok
[INFO] [stdout] test surface::essvi::tests::rho_decreasing_when_rho_m_less ... ok
[INFO] [stdout] test surface::essvi::tests::rho_linear_when_a_one ... ok
[INFO] [stdout] test surface::essvi::tests::rho_monotone_when_rho_m_greater ... ok
[INFO] [stdout] test surface::essvi::tests::serde_error_contains_validation_message ... ok
[INFO] [stdout] test surface::essvi::tests::serde_rejects_gamma_out_of_range ... ok
[INFO] [stdout] test surface::essvi::tests::serde_rejects_invalid_rho ... ok
[INFO] [stdout] test surface::essvi::tests::serde_rejects_negative_eta ... ok
[INFO] [stdout] test surface::essvi::tests::serde_rejects_negative_forward ... ok
[INFO] [stdout] test surface::essvi::tests::serde_rejects_zero_expiry ... ok
[INFO] [stdout] test surface::essvi::tests::serde_rejects_zero_theta ... ok
[INFO] [stdout] test surface::essvi::tests::serde_round_trip ... ok
[INFO] [stdout] test surface::essvi::tests::short_expiry_slice ... ok
[INFO] [stdout] test surface::essvi::tests::skew_direction ... ok
[INFO] [stdout] test surface::essvi::tests::structural_violation_serde_round_trip ... ok
[INFO] [stdout] test surface::essvi::tests::surface_as_trait_object ... ok
[INFO] [stdout] test surface::essvi::tests::surface_atm_variance_at_stored_tenor ... ok
[INFO] [stdout] test surface::essvi::tests::surface_atm_vol_at_stored_tenor ... ok
[INFO] [stdout] test surface::essvi::tests::surface_calendar_structural_clean ... ok
[INFO] [stdout] test surface::essvi::tests::surface_diagnostics_clean ... ok
[INFO] [stdout] test surface::essvi::tests::surface_diagnostics_two_tenor ... ok
[INFO] [stdout] test surface::essvi::tests::surface_extrapolation_after_last_tenor ... ok
[INFO] [stdout] test surface::essvi::tests::surface_extrapolation_before_first_tenor ... ok
[INFO] [stdout] test surface::essvi::tests::surface_interpolation_between_tenors ... ok
[INFO] [stdout] test surface::essvi::tests::surface_is_send_sync ... ok
[INFO] [stdout] test surface::essvi::tests::surface_new_accepts_a_zero ... ok
[INFO] [stdout] test surface::essvi::tests::surface_new_eq57_reverse_rho ... ok
[INFO] [stdout] test surface::essvi::tests::surface_new_equal_rho_any_a ... ok
[INFO] [stdout] test surface::essvi::tests::surface_new_gamma_boundaries_accepted ... ok
[INFO] [stdout] test surface::essvi::tests::surface_new_rejects_a_exceeding_eq57 ... ok
[INFO] [stdout] test surface::essvi::tests::surface_new_rejects_bad_eta ... ok
[INFO] [stdout] test surface::essvi::tests::surface_new_rejects_empty_tenors ... ok
[INFO] [stdout] test surface::essvi::tests::surface_new_rejects_gamma_out_of_range ... ok
[INFO] [stdout] test surface::essvi::tests::surface_new_rejects_length_mismatch ... ok
[INFO] [stdout] test surface::essvi::tests::surface_new_rejects_nan_in_vectors ... ok
[INFO] [stdout] test surface::essvi::tests::surface_new_rejects_negative_a ... ok
[INFO] [stdout] test surface::essvi::tests::surface_new_rejects_non_increasing_tenors ... ok
[INFO] [stdout] test surface::essvi::tests::surface_new_rejects_non_increasing_thetas ... ok
[INFO] [stdout] test surface::essvi::tests::surface_new_rejects_rho_0_at_boundary ... ok
[INFO] [stdout] test surface::essvi::tests::surface_new_rejects_rho_m_at_boundary ... ok
[INFO] [stdout] test surface::essvi::tests::surface_new_single_tenor ... ok
[INFO] [stdout] test surface::essvi::tests::surface_new_valid ... ok
[INFO] [stdout] test surface::essvi::tests::surface_rejects_inf_inputs ... ok
[INFO] [stdout] test surface::essvi::tests::surface_rejects_nan_inputs ... ok
[INFO] [stdout] test surface::essvi::tests::surface_rejects_non_positive_expiry ... ok
[INFO] [stdout] test surface::essvi::tests::surface_rejects_non_positive_strike ... ok
[INFO] [stdout] test surface::essvi::tests::surface_rho_differs_per_tenor_in_smile ... ok
[INFO] [stdout] test surface::essvi::tests::surface_serde_error_contains_field_name ... ok
[INFO] [stdout] test surface::essvi::tests::surface_serde_no_theta_max_in_json ... ok
[INFO] [stdout] test surface::essvi::tests::surface_serde_rejects_invalid_rho_0 ... ok
[INFO] [stdout] test surface::essvi::tests::surface_serde_rejects_invalid_rho_m ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_diagnostics_clean ... ok
[INFO] [stdout] test surface::essvi::tests::surface_serde_rejects_negative_eta ... ok
[INFO] [stdout] test surface::essvi::tests::surface_serde_rejects_length_mismatch ... ok
[INFO] [stdout] test surface::essvi::tests::surface_serde_round_trip ... ok
[INFO] [stdout] test surface::essvi::tests::surface_skew_matches_rho_sign ... ok
[INFO] [stdout] test surface::essvi::tests::surface_smile_at_interpolated_tenor ... ok
[INFO] [stdout] test surface::essvi::tests::surface_serde_rejects_non_increasing_thetas ... ok
[INFO] [stdout] test surface::essvi::tests::surface_smile_at_rejects_non_positive ... ok
[INFO] [stdout] test surface::essvi::tests::surface_smile_at_returns_essvi_slice ... ok
[INFO] [stdout] test surface::essvi::tests::surface_variance_positive ... ok
[INFO] [stdout] test surface::essvi::tests::surface_vol_variance_consistency ... ok
[INFO] [stdout] test surface::essvi::tests::variance_atm_equals_theta ... ok
[INFO] [stdout] test surface::essvi::tests::vol_atm_equals_sqrt_theta_over_t ... ok
[INFO] [stdout] test surface::essvi::tests::violation_density_matches_density_method ... ok
[INFO] [stdout] test surface::essvi::tests::vol_rejects_inf_strike ... ok
[INFO] [stdout] test surface::essvi::tests::vol_rejects_non_positive_strikes ... ok
[INFO] [stdout] test surface::essvi::tests::vol_variance_consistency ... ok
[INFO] [stdout] test surface::interp::tests::exact_match_within_tolerance ... ok
[INFO] [stdout] test surface::interp::tests::multi_exact_match ... ok
[INFO] [stdout] test surface::essvi::tests::vol_rejects_nan_strike ... ok
[INFO] [stdout] test surface::interp::tests::multi_extrapolate_left ... ok
[INFO] [stdout] test surface::interp::tests::multi_extrapolate_right ... ok
[INFO] [stdout] test surface::interp::tests::multi_interpolation_forward_log_linear ... ok
[INFO] [stdout] test surface::interp::tests::multi_interpolation_theta_linear ... ok
[INFO] [stdout] test surface::interp::tests::panics_on_empty_input - should panic ... ok
[INFO] [stdout] test surface::interp::tests::panics_on_mismatched_lengths - should panic ... ok
[INFO] [stdout] test surface::interp::tests::single_element_before ... ok
[INFO] [stdout] test surface::interp::tests::single_element_after ... ok
[INFO] [stdout] test surface::interp::tests::single_element_exact ... ok
[INFO] [stdout] test surface::piecewise::tests::black_variance_rejects_negative_expiry ... ok
[INFO] [stdout] test surface::piecewise::tests::black_variance_rejects_invalid_strikes ... ok
[INFO] [stdout] test surface::piecewise::tests::black_vol_and_black_variance_are_consistent ... ok
[INFO] [stdout] test surface::piecewise::tests::clean_surface_reports_no_violations ... ok
[INFO] [stdout] test surface::piecewise::tests::debug_impl_does_not_panic ... ok
[INFO] [stdout] test surface::piecewise::tests::exact_tenor_matches_stored_smile ... ok
[INFO] [stdout] test surface::piecewise::tests::black_vol_rejects_zero_expiry ... ok
[INFO] [stdout] test surface::piecewise::tests::extrapolation_before_first_tenor_uses_flat_vol ... ok
[INFO] [stdout] test surface::piecewise::tests::extrapolation_after_last_tenor_uses_flat_vol ... ok
[INFO] [stdout] test surface::piecewise::tests::midpoint_tenor_has_averaged_variance ... ok
[INFO] [stdout] test surface::piecewise::tests::inverted_surface_detects_calendar_violation ... ok
[INFO] [stdout] test surface::piecewise::tests::near_exact_tenor_within_tolerance_matches ... ok
[INFO] [stdout] test surface::piecewise::tests::near_exact_tenor_outside_tolerance_interpolates ... ok
[INFO] [stdout] test surface::piecewise::tests::rejects_duplicate_tenors ... ok
[INFO] [stdout] test surface::piecewise::tests::rejects_empty_tenors ... ok
[INFO] [stdout] test surface::piecewise::tests::rejects_infinity_tenor ... ok
[INFO] [stdout] test surface::piecewise::tests::rejects_negative_infinity_tenor ... ok
[INFO] [stdout] test surface::piecewise::tests::rejects_non_positive_tenor ... ok
[INFO] [stdout] test surface::piecewise::tests::rejects_unsorted_tenors ... ok
[INFO] [stdout] test surface::piecewise::tests::rejects_mismatched_lengths ... ok
[INFO] [stdout] test surface::piecewise::tests::single_tenor_extrapolation_after ... ok
[INFO] [stdout] test surface::piecewise::tests::single_tenor_smile_at_after ... ok
[INFO] [stdout] test surface::piecewise::tests::single_tenor_smile_at_before ... ok
[INFO] [stdout] test surface::piecewise::tests::single_tenor_surface_constructs ... ok
[INFO] [stdout] test surface::piecewise::tests::smile_at_and_black_variance_consistent_with_differing_forwards ... ok
[INFO] [stdout] test surface::piecewise::tests::single_tenor_extrapolation_before ... ok
[INFO] [stdout] test surface::piecewise::tests::smile_at_between_tenors_returns_interpolated ... ok
[INFO] [stdout] test surface::piecewise::tests::smile_at_rejects_non_positive_expiry ... ok
[INFO] [stdout] test surface::piecewise::tests::smile_at_exact_tenor_returns_queryable_section ... ok
[INFO] [stdout] test surface::piecewise::tests::three_tenor_surface_interpolates_correctly ... ok
[INFO] [stdout] test surface::ssvi::tests::black_variance_at_stored_tenor ... ok
[INFO] [stdout] test surface::ssvi::tests::black_vol_after_last_tenor ... ok
[INFO] [stdout] test surface::ssvi::tests::black_vol_at_stored_tenor ... ok
[INFO] [stdout] test surface::ssvi::tests::black_vol_before_first_tenor ... ok
[INFO] [stdout] test surface::ssvi::tests::black_vol_between_tenors ... ok
[INFO] [stdout] test surface::ssvi::tests::black_vol_rejects_inf_inputs ... ok
[INFO] [stdout] test surface::ssvi::tests::black_vol_rejects_invalid_inputs ... ok
[INFO] [stdout] test surface::ssvi::tests::black_vol_rejects_nan_inputs ... ok
[INFO] [stdout] test surface::ssvi::tests::black_vol_variance_consistency ... ok
[INFO] [stdout] test surface::ssvi::tests::calendar_arb_analytical_and_numerical_agree ... ok
[INFO] [stdout] test surface::ssvi::tests::calendar_arb_analytical_clean_for_valid_surface ... ok
[INFO] [stdout] test surface::ssvi::tests::calendar_arb_analytical_differing_forwards ... ok
[INFO] [stdout] test surface::piecewise::tests::smile_at_uses_log_linear_forward_interpolation ... ok
[INFO] [stdout] test surface::ssvi::tests::calendar_arb_clean_for_barely_increasing_thetas ... ok
[INFO] [stdout] test surface::ssvi::tests::calendar_arb_single_tenor_empty ... ok
[INFO] [stdout] test surface::ssvi::tests::calendar_violation_detected_for_inverted_ssvi_slices ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_params_in_valid_range ... ok
[INFO] [stdout] test surface::ssvi::tests::calendar_arb_analytical_single_tenor ... ok
[INFO] [stdout] test surface::ssvi::tests::calibrate_rejects_empty_data ... ok
[INFO] [stdout] test surface::ssvi::tests::calibrate_rejects_length_mismatch ... ok
[INFO] [stdout] test surface::ssvi::tests::calibrate_rejects_negative_forward ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_constant_rho_recovers_flat_rho ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_real_data_fail_00 ... ok
[INFO] [stdout] test surface::ssvi::tests::calibrate_rejects_single_tenor ... ok
[INFO] [stdout] test surface::ssvi::tests::calibrate_rejects_too_few_points_per_tenor ... ok
[INFO] [stdout] test surface::ssvi::tests::calibrate_rejects_zero_tenor ... ok
[INFO] [stdout] test surface::essvi::tests::from_per_tenor_rejects_zero_theta ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_serde_round_trip ... ok
[INFO] [stdout] test surface::essvi::tests::from_per_tenor_rejects_negative_tenor ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_near_constant_rho_produces_small_a ... ok
[INFO] [stdout] test surface::ssvi::tests::calibration_error_format_ssvi_global_grid ... ok
[INFO] [stdout] test surface::ssvi::tests::diagnostics_clean_for_conservative_params ... ok
[INFO] [stdout] test surface::ssvi::tests::diagnostics_detects_butterfly_violations ... ok
[INFO] [stdout] test surface::ssvi::tests::diagnostics_single_tenor_no_calendar ... ok
[INFO] [stdout] test surface::ssvi::tests::dw_dtheta_at_atm_equals_one ... ok
[INFO] [stdout] test surface::essvi::tests::from_per_tenor_rejects_non_monotone_theta ... ok
[INFO] [stdout] test surface::ssvi::tests::dw_dtheta_non_negative_conservative ... ok
[INFO] [stdout] test surface::ssvi::tests::dw_dtheta_non_negative_extreme_params ... ok
[INFO] [stdout] test surface::ssvi::tests::new_empty_tenors_rejected ... ok
[INFO] [stdout] test surface::ssvi::tests::new_eta_negative_rejected ... ok
[INFO] [stdout] test surface::ssvi::tests::new_eta_zero_rejected ... ok
[INFO] [stdout] test surface::ssvi::tests::new_gamma_boundaries_accepted ... ok
[INFO] [stdout] test surface::ssvi::tests::new_gamma_out_of_range_rejected ... ok
[INFO] [stdout] test surface::ssvi::tests::new_inf_in_vectors_rejected ... ok
[INFO] [stdout] test surface::ssvi::tests::new_length_mismatch_rejected ... ok
[INFO] [stdout] test surface::ssvi::tests::new_nan_in_vectors_rejected ... ok
[INFO] [stdout] test surface::ssvi::tests::new_non_positive_forward_rejected ... ok
[INFO] [stdout] test surface::ssvi::tests::new_non_positive_tenor_rejected ... ok
[INFO] [stdout] test surface::ssvi::tests::new_non_positive_theta_rejected ... ok
[INFO] [stdout] test surface::ssvi::tests::new_rho_at_boundary_rejected ... ok
[INFO] [stdout] test surface::ssvi::tests::new_rho_inf_rejected ... ok
[INFO] [stdout] test surface::ssvi::tests::new_rho_nan_rejected ... ok
[INFO] [stdout] test surface::ssvi::tests::new_single_tenor ... ok
[INFO] [stdout] test surface::ssvi::tests::new_tenors_not_increasing_rejected ... ok
[INFO] [stdout] test surface::ssvi::tests::new_thetas_not_increasing_rejected ... ok
[INFO] [stdout] test surface::ssvi::tests::new_valid_params ... ok
[INFO] [stdout] test surface::essvi::tests::from_per_tenor_rejects_nan_theta ... ok
[INFO] [stdout] test surface::ssvi::tests::phi_gamma_zero_is_constant ... ok
[INFO] [stdout] test surface::ssvi::tests::phi_known_values ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_error_contains_validation_message ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_no_one_minus_rho_sq_in_json ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_rejects_empty_tenors ... ok
[INFO] [stdout] test surface::ssvi::tests::calibrate_rejects_non_monotone_atm_variances ... ok
[INFO] [stdout] test surface::ssvi::tests::dw_dtheta_gamma_zero_equals_w_over_theta ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_rejects_inf_tenor ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_rejects_mismatched_lengths ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_rejects_negative_eta ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_rejects_invalid_rho ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_rejects_negative_gamma ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_rejects_non_increasing_tenors ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_rejects_non_monotone_thetas ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_rejects_null_rho ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_rejects_rho_at_minus_one ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_rejects_rho_at_plus_one ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_rejects_zero_eta ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_rejects_zero_forward ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_rejects_zero_tenor ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_rejects_zero_theta ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_round_trip ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_arb_free_conservative_params ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_arb_free_detects_violations_extreme_params ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_density_cross_check_breeden_litzenberger ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_density_positive_near_atm ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_is_send_sync ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_new_rejects_invalid_params ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_new_valid_params ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_serde_error_contains_validation_message ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_serde_rejects_gamma_out_of_range ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_serde_rejects_inf_forward ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_serde_rejects_invalid_rho ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_serde_rejects_negative_eta ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_serde_rejects_negative_expiry ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_serde_rejects_negative_forward ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_serde_rejects_negative_gamma ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_serde_rejects_zero_eta ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_serde_rejects_zero_expiry ... ok
[INFO] [stdout] test surface::ssvi::tests::phi_gamma_one_is_inverse ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_serde_rejects_zero_theta ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_serde_round_trip ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_skew_direction ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_variance_atm_equals_theta ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_violation_density_matches_density_method ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_vol_atm_equals_sqrt_theta_over_t ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_vol_matches_surface_formula ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_vol_rejects_inf_strike ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_vol_rejects_nan_strike ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_vol_variance_consistency ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_vol_rejects_non_positive_strikes ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_w_prime_finite_and_sign ... ok
[INFO] [stdout] test surface::ssvi::tests::smile_at_agrees_with_surface_otm ... ok
[INFO] [stdout] test surface::ssvi::tests::slice_w_double_prime_always_positive ... ok
[INFO] [stdout] test surface::ssvi::tests::smile_at_interpolated_tenor ... ok
[INFO] [stdout] test surface::ssvi::tests::ssvi_surface_is_send_sync ... ok
[INFO] [stdout] test surface::ssvi::tests::theta_forward_after_last_tenor ... ok
[INFO] [stdout] test surface::ssvi::tests::theta_forward_before_first_tenor ... ok
[INFO] [stdout] test surface::ssvi::tests::theta_forward_between_tenors ... ok
[INFO] [stdout] test surface::ssvi::tests::theta_forward_exact_match ... ok
[INFO] [stdout] test surface::ssvi::tests::theta_forward_interpolation_with_different_forwards ... ok
[INFO] [stdout] test surface::ssvi::tests::theta_forward_log_linear_geometric_mean ... ok
[INFO] [stdout] test surface::ssvi::tests::total_variance_atm_equals_theta ... ok
[INFO] [stdout] test surface::ssvi::tests::total_variance_known_value ... ok
[INFO] [stdout] test surface::ssvi::tests::total_variance_positive_for_all_strikes ... ok
[INFO] [stdout] test surface::ssvi::tests::smile_at_returns_working_section ... ok
[INFO] [stdout] test surface::ssvi::tests::total_variance_skew_direction ... ok
[INFO] [stdout] test surface::ssvi::tests::total_variance_symmetric_when_rho_zero ... ok
[INFO] [stdout] test surface::ssvi::tests::validation_errors_are_invalid_input ... ok
[INFO] [stdout] test types::tests::option_type_call_serde_round_trip ... ok
[INFO] [stdout] test types::tests::option_type_put_serde_round_trip ... ok
[INFO] [stdout] test types::tests::serde_preserves_special_float_values ... ok
[INFO] [stdout] test types::tests::strike_serde_round_trip ... ok
[INFO] [stdout] test types::tests::tenor_serde_round_trip ... ok
[INFO] [stdout] test types::tests::variance_serde_round_trip ... ok
[INFO] [stdout] test types::tests::vol_serde_round_trip ... ok
[INFO] [stdout] test validate::tests::error_message_includes_field_name ... ok
[INFO] [stdout] test validate::tests::finite_accepts_negative ... ok
[INFO] [stdout] test validate::tests::finite_accepts_positive ... ok
[INFO] [stdout] test validate::tests::finite_accepts_zero ... ok
[INFO] [stdout] test validate::tests::finite_rejects_nan ... ok
[INFO] [stdout] test validate::tests::finite_rejects_negative_inf ... ok
[INFO] [stdout] test validate::tests::finite_rejects_positive_inf ... ok
[INFO] [stdout] test validate::tests::non_negative_accepts_positive ... ok
[INFO] [stdout] test validate::tests::non_negative_accepts_zero ... ok
[INFO] [stdout] test validate::tests::non_negative_rejects_nan ... ok
[INFO] [stdout] test validate::tests::non_negative_rejects_negative ... ok
[INFO] [stdout] test validate::tests::non_negative_rejects_positive_inf ... ok
[INFO] [stdout] test validate::tests::positive_accepts_normal_value ... ok
[INFO] [stdout] test validate::tests::non_negative_rejects_negative_inf ... ok
[INFO] [stdout] test validate::tests::positive_rejects_nan ... ok
[INFO] [stdout] test validate::tests::positive_rejects_negative ... ok
[INFO] [stdout] test validate::tests::positive_rejects_negative_inf ... ok
[INFO] [stdout] test validate::tests::positive_rejects_positive_inf ... ok
[INFO] [stdout] test validate::tests::positive_rejects_zero ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_rejects_gamma_out_of_range ... ok
[INFO] [stdout] test surface::ssvi::tests::serde_rejects_negative_forward ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_equivalence_with_two_stage ... ok
[INFO] [stdout] test surface::ssvi::tests::calibrate_rejects_non_monotone_thetas ... ok
[INFO] [stdout] test surface::essvi::tests::per_tenor_fit_serde_round_trip ... ok
[INFO] [stdout] test surface::ssvi::tests::calibrate_round_trip_2_tenors ... ok
[INFO] [stdout] test surface::essvi::tests::calibrate_thetas_strictly_increasing ... ok
[INFO] [stdout] test surface::ssvi::tests::calibrate_round_trip_varying_forwards ... ok
[INFO] [stdout] test surface::essvi::tests::fit_per_tenor_returns_correct_fits ... ok
[INFO] [stdout] test surface::ssvi::tests::calibrate_params_in_valid_range ... ok
[INFO] [stdout] test surface::essvi::tests::from_per_tenor_with_pruned_tenors ... ok
[INFO] [stdout] test surface::ssvi::tests::calibrate_round_trip_equity ... ok
[INFO] [stdout] test surface::ssvi::tests::calibrate_diagnostics_clean ... ok
[INFO] [stdout] test surface::ssvi::tests::calibrate_thetas_strictly_increasing ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 877 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 15.23s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/dupire_integration.rs (/opt/rustwide/target/debug/deps/dupire_integration-dc9bf2151b8784ec)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test bump_size_convergence ... ok
[INFO] [stdout] test deep_otm_no_panic ... ok
[INFO] [stdout] test ssvi_local_vol_grid_positive ... ok
[INFO] [stdout] test thread_safe_local_vol ... ok
[INFO] [stdout] test calendar_violation_returns_error ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/hendriks_martini_2019.rs (/opt/rustwide/target/debug/deps/hendriks_martini_2019-e65c3c285f7bbe15)
[INFO] [stdout] 
[INFO] [stdout] running 17 tests
[INFO] [stdout] test eq_2_2_atm_identity ... ok
[INFO] [stdout] test eq_2_2_code_matches_formula_across_strikes ... ok
[INFO] [stdout] test eq_2_2_hand_computed_values ... ok
[INFO] [stdout] test paper_surface_total_variance_monotone_in_theta ... ok
[INFO] [stdout] test prop_3_5_necessary_conditions ... ok
[INFO] [stdout] test prop_3_5_total_variance_monotonicity ... ok
[INFO] [stdout] test ssvi_degeneracy_slice ... ok
[INFO] [stdout] test eq_5_6_rho_monotone_with_paper_params ... ok
[INFO] [stdout] test eq_5_7_paper_params_satisfy_constraint ... ok
[INFO] [stdout] test eq_5_7_boundary_acceptance_and_rejection ... ok
[INFO] [stdout] test paper_surface_atm_variance_matches_thetas ... ok
[INFO] [stdout] test eq_5_6_rho_boundaries_and_interpolation ... ok
[INFO] [stdout] test thm_4_1_full_diagnostics_paper_params ... ok
[INFO] [stdout] test thm_4_1_structural_check_paper_params ... ok
[INFO] [stdout] test ssvi_degeneracy_surface ... ok
[INFO] [stdout] test calibrate_round_trip_paper_params ... ok
[INFO] [stdout] test calibrate_paper_structural_check ... ok
[INFO] [stderr]      Running tests/integration.rs (/opt/rustwide/target/debug/deps/integration-7eee5ac59f17f109)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.57s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 40 tests
[INFO] [stdout] test builder_missing_rate_is_invalid_input ... ok
[INFO] [stdout] test builder_missing_spot_is_invalid_input ... ok
[INFO] [stdout] test butterfly_arb_free_params_report_clean ... ok
[INFO] [stdout] test calendar_violation_detected_for_inverted_surface ... ok
[INFO] [stdout] test builder_no_tenors_is_invalid_input ... ok
[INFO] [stdout] test cubic_spline_surface_end_to_end ... ok
[INFO] [stdout] test diagnostics_is_free_for_hand_crafted_monotone_surface ... ok
[INFO] [stdout] test sabr_butterfly_clean_params ... ok
[INFO] [stdout] test sabr_calibration_round_trip_lognormal ... ok
[INFO] [stdout] test sabr_surface_build_and_query ... ok
[INFO] [stdout] test sabr_surface_vol_variance_consistency ... ok
[INFO] [stdout] test sabr_surface_smile_at ... ok
[INFO] [stdout] test ssvi_smile_at_returns_working_section ... ok
[INFO] [stdout] test ssvi_surface_no_nan_full_grid ... ok
[INFO] [stdout] test ssvi_vol_variance_consistency ... ok
[INFO] [stdout] test butterfly_violation_detected_via_diagnostics ... ok
[INFO] [stdout] test ssvi_analytical_calendar_check ... ok
[INFO] [stdout] test ssvi_well_behaved_passes_diagnostics ... ok
[INFO] [stdout] test concurrent_sabr_surface_queries ... ok
[INFO] [stdout] test ssvi_surface_build_and_query ... ok
[INFO] [stdout] test sabr_calibration_round_trip ... ok
[INFO] [stdout] test sabr_surface_no_nan_full_grid ... ok
[INFO] [stdout] test concurrent_ssvi_surface_queries ... ok
[INFO] [stdout] test types_are_send_and_sync ... ok
[INFO] [stdout] test dividend_yield_exceeds_rate ... ok
[INFO] [stdout] test dividend_yield_equals_rate ... ok
[INFO] [stdout] test mixed_tenor_and_tenor_with_forward ... ok
[INFO] [stdout] test svi_calibration_round_trip_symmetric ... ok
[INFO] [stdout] test svi_calibration_round_trip ... ok
[INFO] [stdout] test svi_vs_sabr_produce_plausible_vols ... ok
[INFO] [stdout] test concurrent_smile_at_queries ... ok
[INFO] [stdout] test piecewise_vs_ssvi_produce_comparable_atm_vols ... ok
[INFO] [stdout] test surface_with_dividend_yield ... ok
[INFO] [stdout] test three_tenor_surface_build_and_query ... ok
[INFO] [stdout] test diagnostics_returns_valid_result ... ok
[INFO] [stdout] test concurrent_surface_queries ... ok
[INFO] [stdout] test variance_monotone_in_time_for_arb_free_surface ... ok
[INFO] [stdout] test spx_like_surface_no_nan_no_negative_vol ... ok
[INFO] [stdout] test three_tenor_smile_at_returns_queryable_section ... ok
[INFO] [stdout] test three_tenor_vol_variance_consistency ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 40 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.45s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/property_tests.rs (/opt/rustwide/target/debug/deps/property_tests-b99f9ba8678f3d14)
[INFO] [stdout] 
[INFO] [stdout] running 13 tests
[INFO] [stdout] test ssvi_total_variance_positive ... ok
[INFO] [stdout] test spline_passes_through_knots ... ok
[INFO] [stdout] test ssvi_calendar_arb_analytical_empty ... ok
[INFO] [stdout] test log_moneyness_exp_equals_moneyness ... ok
[INFO] [stdout] test svi_variance_equals_vol_squared_times_t ... ok
[INFO] [stdout] test ssvi_variance_monotone_in_time ... ok
[INFO] [stdout] test sabr_vol_is_non_negative ... ok
[INFO] [stdout] test forward_price_positive_inputs_succeed ... ok
[INFO] [stdout] test piecewise_surface_exact_tenor_matches_smile ... ok
[INFO] [stdout] test moneyness_positive_inputs_always_succeed ... ok
[INFO] [stdout] test svi_vol_is_non_negative ... ok
[INFO] [stdout] test sabr_density_integrates_approximately_to_one ... ok
[INFO] [stdout] test builder_round_trip_vol_close has been running for over 60 seconds
[INFO] [stdout] test builder_round_trip_vol_close ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 112.61s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/svi_robustness.rs (/opt/rustwide/target/debug/deps/svi_robustness-7238dceb96468b91)
[INFO] [stdout] 
[INFO] [stdout] running 15 tests
[INFO] [stdout] test jan24_feb21_28dte_stable_5pct ... ok
[INFO] [stdout] test mar10_apr17_38dte_5pct ... ok
[INFO] [stdout] test mar03_apr17_45dte_5pct ... ok
[INFO] [stdout] test jan13_feb21_39dte_5pct ... ok
[INFO] [stdout] test mar10_apr17_38dte_10pct ... ok
[INFO] [stdout] test jan13_feb21_39dte_15pct ... ok
[INFO] [stdout] test mar10_apr17_38dte_15pct ... ok
[INFO] [stdout] test jan13_feb21_39dte_10pct ... ok
[INFO] [stdout] test jan24_feb21_28dte_stable_10pct ... ok
[INFO] [stdout] test mar03_apr17_45dte_10pct ... ok
[INFO] [stdout] test mar03_apr17_45dte_15pct ... ok
[INFO] [stdout] test jan24_feb21_28dte_stable_15pct ... ok
[INFO] [stdout] test jan13_feb21_39dte_full_range ... ok
[INFO] [stdout] test mar10_apr17_38dte_full_range ... ok
[INFO] [stdout] test stable_fixture_must_succeed ... ok
[INFO] [stderr]    Doc-tests volsurf
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 17.12s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 20 tests
[INFO] [stdout] test src/surface/piecewise.rs - surface::piecewise::PiecewiseSurface (line 53) - compile ... ok
[INFO] [stdout] test src/smile/sabr.rs - smile::sabr::SabrSmile (line 68) ... ok
[INFO] [stdout] test src/smile/arbitrage.rs - smile::arbitrage::ArbitrageReport::worst_violation (line 39) ... ok
[INFO] [stdout] test src/surface/builder.rs - surface::builder::SurfaceBuilder (line 100) ... ok
[INFO] [stdout] test src/smile/mod.rs - smile::SmileSection (line 107) ... ok
[INFO] [stdout] test src/smile/sabr.rs - smile::sabr::SabrSmile::calibrate (line 268) ... ok
[INFO] [stdout] test src/surface/builder.rs - surface::builder::SmileModel (line 43) ... ok
[INFO] [stdout] test src/smile/spline.rs - smile::spline::SplineSmile (line 45) ... ok
[INFO] [stdout] test src/types.rs - types::Tenor (line 57) ... ok
[INFO] [stdout] test src/types.rs - types::Strike (line 44) ... ok
[INFO] [stdout] test src/surface/essvi.rs - surface::essvi::EssviSlice::new (line 154) ... ok
[INFO] [stdout] test src/surface/ssvi.rs - surface::ssvi::SsviSurface (line 51) ... ok
[INFO] [stdout] test src/surface/essvi.rs - surface::essvi::EssviSurface (line 246) ... ok
[INFO] [stdout] test src/surface/mod.rs - surface::VolSurface (line 47) ... ok
[INFO] [stdout] test src/types.rs - types::Vol (line 69) ... ok
[INFO] [stdout] test src/types.rs - types::Variance (line 83) ... ok
[INFO] [stdout] test src/surface/ssvi.rs - surface::ssvi::SsviSlice::new (line 812) ... ok
[INFO] [stdout] test src/surface/essvi.rs - surface::essvi::EssviSurface::calibrate (line 901) ... ok
[INFO] [stdout] test src/surface/builder.rs - surface::builder (line 3) ... ok
[INFO] [stdout] test src/surface/ssvi.rs - surface::ssvi::SsviSurface::calibrate (line 380) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.64s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 1.38s; merged doctests compilation took 0.73s
[INFO] running `Command { std: "docker" "inspect" "8b745598e565d72568dea06cf2bb1ef068fef2d57ed71a223ccbb4d281fe7006", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8b745598e565d72568dea06cf2bb1ef068fef2d57ed71a223ccbb4d281fe7006", kill_on_drop: false }`
[INFO] [stdout] 8b745598e565d72568dea06cf2bb1ef068fef2d57ed71a223ccbb4d281fe7006
