[INFO] cloning repository https://github.com/farchanjo/math-calc-mcp [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/farchanjo/math-calc-mcp" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffarchanjo%2Fmath-calc-mcp", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffarchanjo%2Fmath-calc-mcp'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] c8e16e2a711c7562ca3583f5535884932a11560b [INFO] testing farchanjo/math-calc-mcp against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffarchanjo%2Fmath-calc-mcp" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-4-tc2/source/rust-toolchain.toml [INFO] started tweaking git repo https://github.com/farchanjo/math-calc-mcp [INFO] finished tweaking git repo https://github.com/farchanjo/math-calc-mcp [INFO] tweaked toml for git repo https://github.com/farchanjo/math-calc-mcp written to /workspace/builds/worker-4-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/farchanjo/math-calc-mcp on toolchain 1.100.0-beta.1 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 145 packages to highest Rust 1.94 compatible versions [INFO] [stderr] Adding base64 v0.22.1 (available: v0.23.1) [INFO] [stderr] Adding generic-array v0.14.7 (available: v0.14.9) [INFO] [stderr] Adding md-5 v0.10.6 (available: v0.11.0) [INFO] [stderr] Adding num-bigint v0.4.8 (available: v0.5.1) [INFO] [stderr] Adding rmcp v1.8.0 (available: v3.5.1) [INFO] [stderr] Adding schemars v0.8.22 (available: v1.2.3) [INFO] [stderr] Adding sha1 v0.10.7 (available: v0.11.0) [INFO] [stderr] Adding sha2 v0.10.9 (available: v0.11.1) [INFO] [stderr] Adding wide v0.7.33 (available: v1.7.1) [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: `package.homepage` is redundant with `package.repository` [INFO] [stderr] --> Cargo.toml:78:12 [INFO] [stderr] | [INFO] [stderr] 78 | homepage = "https://github.com/farchanjo/arithma" [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 83 | repository = "https://github.com/farchanjo/arithma" [INFO] [stderr] | -------------------------------------- [INFO] [stderr] | [INFO] [stderr] = note: `cargo::redundant_homepage` is set to `warn` by default [INFO] [stderr] help: consider removing `package.homepage` [INFO] [stderr] warning: `arithma` (manifest) generated 1 warning [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] b114082097e4f1bdafa14d778b4fd27fc2f10e1759c0cf5dc9b87b08dd2adf52 [INFO] running `Command { std: "docker" "start" "b114082097e4f1bdafa14d778b4fd27fc2f10e1759c0cf5dc9b87b08dd2adf52", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "b114082097e4f1bdafa14d778b4fd27fc2f10e1759c0cf5dc9b87b08dd2adf52", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "b114082097e4f1bdafa14d778b4fd27fc2f10e1759c0cf5dc9b87b08dd2adf52" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "b114082097e4f1bdafa14d778b4fd27fc2f10e1759c0cf5dc9b87b08dd2adf52", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "b114082097e4f1bdafa14d778b4fd27fc2f10e1759c0cf5dc9b87b08dd2adf52" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] warning: `package.homepage` is redundant with `package.repository` [INFO] [stderr] --> Cargo.toml:78:12 [INFO] [stderr] | [INFO] [stderr] 78 | homepage = "https://github.com/farchanjo/arithma" [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 83 | repository = "https://github.com/farchanjo/arithma" [INFO] [stderr] | -------------------------------------- [INFO] [stderr] | [INFO] [stderr] = note: `cargo::redundant_homepage` is set to `warn` by default [INFO] [stderr] help: consider removing `package.homepage` [INFO] [stderr] warning: `arithma` (manifest) generated 1 warning [INFO] [stderr] Compiling proc-macro2 v1.0.107 [INFO] [stderr] Compiling quote v1.0.47 [INFO] [stderr] Compiling unicode-ident v1.0.27 [INFO] [stderr] Compiling libc v0.2.191 [INFO] [stderr] Compiling serde_core v1.0.229 [INFO] [stderr] Compiling cfg-if v1.0.5 [INFO] [stderr] Compiling autocfg v1.5.1 [INFO] [stderr] Compiling zmij v1.0.23 [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Compiling serde v1.0.229 [INFO] [stderr] Compiling pin-project-lite v0.2.17 [INFO] [stderr] Compiling typenum v1.20.1 [INFO] [stderr] Compiling zerocopy v0.8.63 [INFO] [stderr] Compiling memchr v2.8.3 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling futures-core v0.3.34 [INFO] [stderr] Compiling futures-sink v0.3.34 [INFO] [stderr] Compiling serde_json v1.0.154 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Compiling ident_case v1.0.1 [INFO] [stderr] Compiling syn v3.0.9 [INFO] [stderr] Compiling syn v2.0.119 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling futures-channel v0.3.34 [INFO] [stderr] Compiling futures-task v0.3.34 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling either v1.19.0 [INFO] [stderr] Compiling futures-io v0.3.34 [INFO] [stderr] Compiling itoa v1.0.18 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling ref-cast v1.0.27 [INFO] [stderr] Compiling lazy_static v1.5.1 [INFO] [stderr] Compiling itertools v0.10.5 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling socket2 v0.6.5 [INFO] [stderr] Compiling mio v1.2.4 [INFO] [stderr] Compiling libm v0.2.16 [INFO] [stderr] Compiling thiserror v2.0.21 [INFO] [stderr] Compiling dyn-clone v1.0.20 [INFO] [stderr] Compiling bytes v1.12.1 [INFO] [stderr] Compiling regex-syntax v0.8.11 [INFO] [stderr] Compiling darling_core v0.23.0 [INFO] [stderr] Compiling serde_derive_internals v0.30.0 [INFO] [stderr] Compiling regex-automata v0.4.18 [INFO] [stderr] Compiling serde_derive v1.0.229 [INFO] [stderr] Compiling futures-macro v0.3.34 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling tokio-macros v2.7.2 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling futures-util v0.3.34 [INFO] [stderr] Compiling ref-cast-impl v1.0.27 [INFO] [stderr] Compiling tokio v1.53.3 [INFO] [stderr] Compiling rand v0.8.8 [INFO] [stderr] Compiling darling_macro v0.23.0 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling schemars_derive v1.2.3 [INFO] [stderr] Compiling darling v0.23.0 [INFO] [stderr] Compiling thiserror-impl v2.0.21 [INFO] [stderr] Compiling serde_derive_internals v0.29.1 [INFO] [stderr] Compiling astro-float-num v0.3.7 [INFO] [stderr] Compiling num-integer v0.1.47 [INFO] [stderr] Compiling bigdecimal v0.4.11 [INFO] [stderr] Compiling cpufeatures v0.2.17 [INFO] [stderr] Compiling rmcp v1.8.0 [INFO] [stderr] Compiling log v0.4.34 [INFO] [stderr] Compiling crc32fast v1.5.2 [INFO] [stderr] Compiling anyhow v1.0.104 [INFO] [stderr] Compiling schemars v0.8.22 [INFO] [stderr] Compiling bytemuck v1.25.2 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling safe_arch v0.7.4 [INFO] [stderr] Compiling chrono v0.4.45 [INFO] [stderr] Compiling futures-executor v0.3.34 [INFO] [stderr] Compiling futures v0.3.34 [INFO] [stderr] Compiling num-bigint v0.4.8 [INFO] [stderr] Compiling rmcp-macros v1.8.0 [INFO] [stderr] Compiling schemars v1.2.3 [INFO] [stderr] Compiling schemars_derive v0.8.22 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling async-trait v0.1.92 [INFO] [stderr] Compiling sharded-slab v0.1.7 [INFO] [stderr] Compiling tokio-util v0.7.20 [INFO] [stderr] Compiling thread_local v1.1.10 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling jiff-core v0.1.1 [INFO] [stderr] Compiling base64 v0.22.1 [INFO] [stderr] Compiling pastey v0.2.3 [INFO] [stderr] Compiling smallvec v1.16.3 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling astro-float-macro v0.4.6 [INFO] [stderr] Compiling astro-float v0.9.6 [INFO] [stderr] Compiling jiff v0.2.38 [INFO] [stderr] Compiling wide v0.7.33 [INFO] [stderr] Compiling sha1 v0.10.7 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling md-5 v0.10.6 [INFO] [stderr] Compiling hex v0.4.3 [INFO] [stderr] Compiling urlencoding v2.1.3 [INFO] [stderr] Compiling arithma v0.4.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587) [INFO] [stdout] --> src/transport/async_stdio.rs:105:34 [INFO] [stdout] | [INFO] [stdout] 105 | let inner = AsyncFd::with_interest(BorrowedFd(STDIN_FD), Interest::READABLE)?; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `-D deprecated` implied by `-D warnings` [INFO] [stdout] = help: to override `-D warnings` add `#[allow(deprecated)]` [INFO] [stdout] = note: the `deprecated` lint ignores `-D warnings` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587) [INFO] [stdout] --> src/transport/async_stdio.rs:168:34 [INFO] [stdout] | [INFO] [stdout] 168 | let inner = AsyncFd::with_interest(BorrowedFd(STDOUT_FD), Interest::WRITABLE)?; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] warning: unused dependency `schemars` [INFO] [stderr] --> Cargo.toml:16:1 [INFO] [stderr] | [INFO] [stderr] 16 | schemars = "0.8" [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `cargo::unused_dependencies` is set to `warn` by default [INFO] [stderr] help: consider removing the dependency on `schemars` [INFO] [stderr] warning: `arithma` (manifest) generated 1 warning [INFO] [stderr] Finished `release` profile [optimized] target(s) in 4m 12s [INFO] running `Command { std: "docker" "inspect" "b114082097e4f1bdafa14d778b4fd27fc2f10e1759c0cf5dc9b87b08dd2adf52", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "b114082097e4f1bdafa14d778b4fd27fc2f10e1759c0cf5dc9b87b08dd2adf52" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] warning: `package.homepage` is redundant with `package.repository` [INFO] [stderr] --> Cargo.toml:78:12 [INFO] [stderr] | [INFO] [stderr] 78 | homepage = "https://github.com/farchanjo/arithma" [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 83 | repository = "https://github.com/farchanjo/arithma" [INFO] [stderr] | -------------------------------------- [INFO] [stderr] | [INFO] [stderr] = note: `cargo::redundant_homepage` is set to `warn` by default [INFO] [stderr] help: consider removing `package.homepage` [INFO] [stderr] warning: `arithma` (manifest) generated 1 warning [INFO] [stderr] Compiling cfg-if v1.0.5 [INFO] [stderr] Compiling libc v0.2.191 [INFO] [stderr] Compiling serde_core v1.0.229 [INFO] [stderr] Compiling pin-project-lite v0.2.17 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling memchr v2.8.3 [INFO] [stderr] Compiling typenum v1.20.1 [INFO] [stderr] Compiling futures-core v0.3.34 [INFO] [stderr] Compiling futures-sink v0.3.34 [INFO] [stderr] Compiling zerocopy v0.8.63 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling zmij v1.0.23 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling futures-channel v0.3.34 [INFO] [stderr] Compiling futures-io v0.3.34 [INFO] [stderr] Compiling itoa v1.0.18 [INFO] [stderr] Compiling futures-task v0.3.34 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling lazy_static v1.5.1 [INFO] [stderr] Compiling regex-syntax v0.8.11 [INFO] [stderr] Compiling dyn-clone v1.0.20 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling either v1.19.0 [INFO] [stderr] Compiling futures-util v0.3.34 [INFO] [stderr] Compiling bytes v1.12.1 [INFO] [stderr] Compiling itertools v0.10.5 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling mio v1.2.4 [INFO] [stderr] Compiling socket2 v0.6.5 [INFO] [stderr] Compiling num-integer v0.1.47 [INFO] [stderr] Compiling regex-automata v0.4.18 [INFO] [stderr] Compiling tokio v1.53.3 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling ref-cast v1.0.27 [INFO] [stderr] Compiling cpufeatures v0.2.17 [INFO] [stderr] Compiling bytemuck v1.25.2 [INFO] [stderr] Compiling log v0.4.34 [INFO] [stderr] Compiling serde v1.0.229 [INFO] [stderr] Compiling serde_json v1.0.154 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling safe_arch v0.7.4 [INFO] [stderr] Compiling thiserror v2.0.21 [INFO] [stderr] Compiling num-bigint v0.4.8 [INFO] [stderr] Compiling chrono v0.4.45 [INFO] [stderr] Compiling futures-executor v0.3.34 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling futures v0.3.34 [INFO] [stderr] Compiling libm v0.2.16 [INFO] [stderr] Compiling sharded-slab v0.1.7 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling schemars v1.2.3 [INFO] [stderr] Compiling rand v0.8.8 [INFO] [stderr] Compiling thread_local v1.1.10 [INFO] [stderr] Compiling base64 v0.22.1 [INFO] [stderr] Compiling smallvec v1.16.3 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling jiff-core v0.1.1 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling bigdecimal v0.4.11 [INFO] [stderr] Compiling schemars v0.8.22 [INFO] [stderr] Compiling astro-float-num v0.3.7 [INFO] [stderr] Compiling jiff v0.2.38 [INFO] [stderr] Compiling tokio-util v0.7.20 [INFO] [stderr] Compiling astro-float v0.9.6 [INFO] [stderr] Compiling crc32fast v1.5.2 [INFO] [stderr] Compiling anyhow v1.0.104 [INFO] [stderr] Compiling rmcp v1.8.0 [INFO] [stderr] Compiling wide v0.7.33 [INFO] [stderr] Compiling sha1 v0.10.7 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling md-5 v0.10.6 [INFO] [stderr] Compiling hex v0.4.3 [INFO] [stderr] Compiling urlencoding v2.1.3 [INFO] [stderr] Compiling diff v0.1.13 [INFO] [stderr] Compiling yansi v1.0.1 [INFO] [stderr] Compiling approx v0.5.1 [INFO] [stderr] Compiling pretty_assertions v1.4.1 [INFO] [stderr] Compiling arithma v0.4.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587) [INFO] [stdout] --> src/transport/async_stdio.rs:105:34 [INFO] [stdout] | [INFO] [stdout] 105 | let inner = AsyncFd::with_interest(BorrowedFd(STDIN_FD), Interest::READABLE)?; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `-D deprecated` implied by `-D warnings` [INFO] [stdout] = help: to override `-D warnings` add `#[allow(deprecated)]` [INFO] [stdout] = note: the `deprecated` lint ignores `-D warnings` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587) [INFO] [stdout] --> src/transport/async_stdio.rs:168:34 [INFO] [stdout] | [INFO] [stdout] 168 | let inner = AsyncFd::with_interest(BorrowedFd(STDOUT_FD), Interest::WRITABLE)?; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587) [INFO] [stdout] --> src/transport/async_stdio.rs:105:34 [INFO] [stdout] | [INFO] [stdout] 105 | let inner = AsyncFd::with_interest(BorrowedFd(STDIN_FD), Interest::READABLE)?; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `-D deprecated` implied by `-D warnings` [INFO] [stdout] = help: to override `-D warnings` add `#[allow(deprecated)]` [INFO] [stdout] = note: the `deprecated` lint ignores `-D warnings` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587) [INFO] [stdout] --> src/transport/async_stdio.rs:168:34 [INFO] [stdout] | [INFO] [stdout] 168 | let inner = AsyncFd::with_interest(BorrowedFd(STDOUT_FD), Interest::WRITABLE)?; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587) [INFO] [stdout] --> src/transport/async_stdio.rs:235:33 [INFO] [stdout] | [INFO] [stdout] 235 | inner: AsyncFd::with_interest(BorrowedFd(fds[0]), Interest::READABLE).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587) [INFO] [stdout] --> src/transport/async_stdio.rs:238:33 [INFO] [stdout] | [INFO] [stdout] 238 | inner: AsyncFd::with_interest(BorrowedFd(fds[1]), Interest::WRITABLE).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] warning: unused dependency `schemars` [INFO] [stderr] --> Cargo.toml:16:1 [INFO] [stderr] | [INFO] [stderr] 16 | schemars = "0.8" [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `cargo::unused_dependencies` is set to `warn` by default [INFO] [stderr] help: consider removing the dependency on `schemars` [INFO] [stderr] warning: `arithma` (manifest) generated 1 warning [INFO] [stderr] Finished `release` profile [optimized] target(s) in 3m 27s [INFO] running `Command { std: "docker" "inspect" "b114082097e4f1bdafa14d778b4fd27fc2f10e1759c0cf5dc9b87b08dd2adf52", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "b114082097e4f1bdafa14d778b4fd27fc2f10e1759c0cf5dc9b87b08dd2adf52" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }` [INFO] [stderr] warning: `package.homepage` is redundant with `package.repository` [INFO] [stderr] --> Cargo.toml:78:12 [INFO] [stderr] | [INFO] [stderr] 78 | homepage = "https://github.com/farchanjo/arithma" [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 83 | repository = "https://github.com/farchanjo/arithma" [INFO] [stderr] | -------------------------------------- [INFO] [stderr] | [INFO] [stderr] = note: `cargo::redundant_homepage` is set to `warn` by default [INFO] [stderr] help: consider removing `package.homepage` [INFO] [stderr] warning: `arithma` (manifest) generated 1 warning [INFO] [stderr] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587) [INFO] [stderr] --> src/transport/async_stdio.rs:105:34 [INFO] [stderr] | [INFO] [stderr] 105 | let inner = AsyncFd::with_interest(BorrowedFd(STDIN_FD), Interest::READABLE)?; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `-D deprecated` implied by `-D warnings` [INFO] [stderr] = help: to override `-D warnings` add `#[allow(deprecated)]` [INFO] [stderr] = note: the `deprecated` lint ignores `-D warnings` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587) [INFO] [stderr] --> src/transport/async_stdio.rs:168:34 [INFO] [stderr] | [INFO] [stderr] 168 | let inner = AsyncFd::with_interest(BorrowedFd(STDOUT_FD), Interest::WRITABLE)?; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `arithma` (lib) generated 2 warnings [INFO] [stderr] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587) [INFO] [stderr] --> src/transport/async_stdio.rs:235:33 [INFO] [stderr] | [INFO] [stderr] 235 | inner: AsyncFd::with_interest(BorrowedFd(fds[0]), Interest::READABLE).unwrap(), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587) [INFO] [stderr] --> src/transport/async_stdio.rs:238:33 [INFO] [stderr] | [INFO] [stderr] 238 | inner: AsyncFd::with_interest(BorrowedFd(fds[1]), Interest::WRITABLE).unwrap(), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `arithma` (lib test) generated 4 warnings (2 duplicates) [INFO] [stderr] warning: unused dependency `schemars` [INFO] [stderr] --> Cargo.toml:16:1 [INFO] [stderr] | [INFO] [stderr] 16 | schemars = "0.8" [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `cargo::unused_dependencies` is set to `warn` by default [INFO] [stderr] help: consider removing the dependency on `schemars` [INFO] [stderr] warning: `arithma` (manifest) generated 1 warning [INFO] [stderr] Finished `release` profile [optimized] target(s) in 0.35s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/release/build/arithma/6283ce79ab41bed0/out/math_calc-6283ce79ab41bed0) [INFO] [stdout] [INFO] [stdout] running 887 tests [INFO] [stdout] test engine::expression::tests::const_in_expression ... ok [INFO] [stdout] test engine::expression::tests::adjacent_numbers_reject ... ok [INFO] [stdout] test engine::expression::tests::adjacent_numbers_partial_expression ... ok [INFO] [stdout] test engine::expression::tests::addition_overflow_is_error ... ok [INFO] [stdout] test engine::expression::tests::const_pi ... ok [INFO] [stdout] test engine::expression::tests::const_tau_is_two_pi ... ok [INFO] [stdout] test engine::expression::tests::const_phi_golden_ratio ... ok [INFO] [stdout] test engine::expression::tests::const_e ... ok [INFO] [stdout] test engine::expression::tests::err_blank_input ... ok [INFO] [stdout] test engine::expression::tests::err_empty_input ... ok [INFO] [stdout] test engine::expression::tests::err_expected_close_paren ... ok [INFO] [stdout] test engine::expression::tests::cos_r_pi_is_minus_one ... ok [INFO] [stdout] test engine::expression::tests::err_expected_close_paren_in_function ... ok [INFO] [stdout] test engine::expression::tests::err_invalid_number ... ok [INFO] [stdout] test engine::expression::tests::decimal_number ... ok [INFO] [stdout] test engine::expression::tests::err_unclosed_paren_wins_over_unknown_variable ... ok [INFO] [stdout] test engine::expression::tests::division_by_zero_is_error ... ok [INFO] [stdout] test engine::expression::tests::err_unexpected_char_trailing ... ok [INFO] [stdout] test engine::expression::tests::err_unknown_variable ... ok [INFO] [stdout] test engine::expression::tests::exp_ln_round_trip ... ok [INFO] [stdout] test engine::expression::tests::division_precedence ... ok [INFO] [stdout] test engine::expression::tests::fn_acosh_below_one_is_domain_error ... ok [INFO] [stdout] test engine::expression::tests::fn_arity_mismatch_is_domain_error ... ok [INFO] [stdout] test engine::expression::tests::fn_atanh_at_boundary_is_domain_error ... ok [INFO] [stdout] test engine::expression::tests::double_unary_minus ... ok [INFO] [stdout] test engine::expression::tests::err_unexpected_end ... ok [INFO] [stdout] test engine::expression::tests::fn_cbrt ... ok [INFO] [stdout] test engine::expression::tests::err_unknown_function ... ok [INFO] [stdout] test engine::expression::tests::fn_abs ... ok [INFO] [stdout] test engine::expression::tests::err_unexpected_char_leading ... ok [INFO] [stdout] test engine::expression::tests::fn_atan2_quadrants ... ok [INFO] [stdout] test engine::expression::tests::fn_gcd_lcm ... ok [INFO] [stdout] test engine::expression::tests::fn_floor ... ok [INFO] [stdout] test engine::expression::tests::fn_exp ... ok [INFO] [stdout] test engine::expression::tests::fn_gcd_fractional_is_domain_error ... ok [INFO] [stdout] test engine::expression::tests::fn_factorial ... ok [INFO] [stdout] test engine::expression::tests::fn_ceil ... ok [INFO] [stdout] test engine::expression::tests::fn_cos_degrees ... ok [INFO] [stdout] test engine::expression::tests::fn_factorial_negative_or_fractional_is_domain_error ... ok [INFO] [stdout] test engine::expression::tests::fn_inverse_trig_domain_errors ... ok [INFO] [stdout] test engine::expression::tests::fn_hyperbolic ... ok [INFO] [stdout] test engine::expression::tests::fn_hypot ... ok [INFO] [stdout] test engine::expression::tests::fn_inverse_trig_returns_degrees ... ok [INFO] [stdout] test engine::expression::tests::fn_log2 ... ok [INFO] [stdout] test engine::expression::tests::fn_mod_by_zero_is_division_error ... ok [INFO] [stdout] test engine::expression::tests::fn_log_natural ... ok [INFO] [stdout] test engine::expression::tests::fn_mod_two_args ... ok [INFO] [stdout] test engine::expression::tests::fn_ln_alias_for_log ... ok [INFO] [stdout] test engine::expression::tests::fn_log10 ... ok [INFO] [stdout] test engine::expression::tests::fn_sin_degrees ... ok [INFO] [stdout] test engine::expression::tests::fn_sqrt ... ok [INFO] [stdout] test engine::expression::tests::fn_min_max_single_arg ... ok [INFO] [stdout] test engine::expression::tests::fn_inverse_hyperbolic ... ok [INFO] [stdout] test engine::expression::tests::fn_min_max_variadic ... ok [INFO] [stdout] test engine::expression::tests::fn_no_args_for_zero_arity_func_is_unknown ... ok [INFO] [stdout] test engine::expression::tests::fn_pow_two_args ... ok [INFO] [stdout] test engine::expression::tests::fn_round_trunc_sign ... ok [INFO] [stdout] test engine::expression::tests::function_in_expression ... ok [INFO] [stdout] test engine::expression::tests::leading_dot_number ... ok [INFO] [stdout] test engine::expression::tests::left_to_right_same_precedence ... ok [INFO] [stdout] test engine::expression::tests::fn_tan_degrees ... ok [INFO] [stdout] test engine::expression::tests::function_composition ... ok [INFO] [stdout] test engine::expression::tests::log10_of_zero_is_domain_error ... ok [INFO] [stdout] test engine::expression::tests::log_of_negative_is_domain_error ... ok [INFO] [stdout] test engine::expression::tests::log_of_zero_is_domain_error ... ok [INFO] [stdout] test engine::expression::tests::modulo_operator ... ok [INFO] [stdout] test engine::expression::tests::multiplication_overflow_is_error ... ok [INFO] [stdout] test engine::expression::tests::multiplication_precedence ... ok [INFO] [stdout] test engine::expression::tests::power_right_associative ... ok [INFO] [stdout] test engine::expression::tests::power_basic ... ok [INFO] [stdout] test engine::expression::tests::power_binds_tighter_than_unary_minus ... ok [INFO] [stdout] test engine::expression::tests::power_overflow_is_error ... ok [INFO] [stdout] test engine::expression::tests::negative_overflow_is_error ... ok [INFO] [stdout] test engine::expression::tests::scientific_notation_positive_exponent_sign ... ok [INFO] [stdout] test engine::expression::tests::nested_parentheses ... ok [INFO] [stdout] test engine::expression::tests::parenthesized_grouping ... ok [INFO] [stdout] test engine::expression::tests::scientific_notation_lowercase ... ok [INFO] [stdout] test engine::expression::tests::scientific_notation_uppercase ... ok [INFO] [stdout] test engine::expression::tests::modulo_by_zero_is_error ... ok [INFO] [stdout] test engine::expression::tests::scientific_notation_negative_exponent ... ok [INFO] [stdout] test engine::expression::tests::simple_subtraction ... ok [INFO] [stdout] test engine::expression::tests::simple_addition ... ok [INFO] [stdout] test engine::expression::tests::unary_minus_inside_parens ... ok [INFO] [stdout] test engine::expression::tests::sin_pi_is_zero ... ok [INFO] [stdout] test engine::expression::tests::tan_at_integer_90_rejects_singularity ... ok [INFO] [stdout] test engine::expression::tests::variable_shadows_constant ... ok [INFO] [stdout] test engine::expression::tests::unary_minus_prefix ... ok [INFO] [stdout] test engine::expression::tests::whitespace_is_stripped ... ok [INFO] [stdout] test engine::expression::tests::variable_lookup ... ok [INFO] [stdout] test engine::expression::tests::sin_r_pi_is_zero ... ok [INFO] [stdout] test engine::expression::tests::sqrt_of_negative_is_domain_error ... ok [INFO] [stdout] test engine::expression::tests::tan_r_at_quarter_pi_is_one ... ok [INFO] [stdout] test engine::expression::tests::variable_with_underscore_and_digits ... ok [INFO] [stdout] test engine::expression::tests::whitespace_inside_number_rejected ... ok [INFO] [stdout] test engine::expression::tests::zero_to_negative_power_is_division_by_zero ... ok [INFO] [stdout] test engine::expression_exact::tests::blank_expression_is_error ... ok [INFO] [stdout] test engine::expression::tests::zero_to_zero_is_one ... ok [INFO] [stdout] test engine::expression_exact::tests::abs_ceil_floor_exact ... ok [INFO] [stdout] test engine::expression_exact::tests::adjacent_numbers_reject ... ok [INFO] [stdout] test engine::expression_exact::tests::composed_integer_near_miss_still_snaps ... ok [INFO] [stdout] test engine::expression_exact::tests::const_tau_is_two_pi ... ok [INFO] [stdout] test engine::expression_exact::tests::const_e_exact_truncated ... ok [INFO] [stdout] test engine::expression_exact::tests::const_phi_golden_ratio ... ok [INFO] [stdout] test engine::expression_exact::tests::const_pi_exact_truncated ... ok [INFO] [stdout] test engine::expression_exact::tests::division_uses_exact_precision_scale ... ok [INFO] [stdout] test engine::expression_exact::tests::fn_exp_zero_is_one ... ok [INFO] [stdout] test engine::expression_exact::tests::fn_hyperbolic_zero ... ok [INFO] [stdout] test engine::expression_exact::tests::decimal_addition_is_exact ... ok [INFO] [stdout] test engine::expression_exact::tests::division_by_zero_is_error ... ok [INFO] [stdout] test engine::expression_exact::tests::fn_exp_one_is_e ... ok [INFO] [stdout] test engine::expression_exact::tests::fn_arity_mismatch_is_domain_error ... ok [INFO] [stdout] test engine::expression_exact::tests::fn_factorial_exact_arbitrary_precision ... ok [INFO] [stdout] test engine::expression_exact::tests::fn_atan2_quadrants ... ok [INFO] [stdout] test engine::expression_exact::tests::fn_inverse_trig_returns_degrees ... ok [INFO] [stdout] test engine::expression_exact::tests::fn_gcd_lcm_exact ... ok [INFO] [stdout] test engine::expression_exact::tests::fn_pow_two_args_exact ... ok [INFO] [stdout] test engine::expression_exact::tests::fn_hypot_exact_pythagorean_triple ... ok [INFO] [stdout] test engine::expression_exact::tests::fn_ln_alias ... ok [INFO] [stdout] test engine::expression_exact::tests::modulo_by_zero_is_error ... ok [INFO] [stdout] test engine::expression_exact::tests::fn_min_max_pick_extremes ... ok [INFO] [stdout] test engine::expression_exact::tests::integer_arithmetic_strips_trailing_zeros ... ok [INFO] [stdout] test engine::expression_exact::tests::log10_of_zero_is_domain_error ... ok [INFO] [stdout] test engine::expression_exact::tests::fn_round_trunc_sign_exact ... ok [INFO] [stdout] test engine::expression_exact::tests::log_of_zero_is_domain_error ... ok [INFO] [stdout] test engine::expression_exact::tests::nested_domain_error_propagates ... ok [INFO] [stdout] test engine::expression_exact::tests::long_decimal_variable_preserved ... ok [INFO] [stdout] test engine::expression_exact::tests::modulo_operator_exact ... ok [INFO] [stdout] test engine::expression_exact::tests::log_of_negative_is_domain_error ... ok [INFO] [stdout] test engine::expression_exact::tests::round_trip_preserves_genuinely_irrational_digits ... ok [INFO] [stdout] test engine::expression_exact::tests::sqrt_irrational_has_many_digits ... ok [INFO] [stdout] test engine::expression_exact::tests::power_integer_exponent_is_exact ... ok [INFO] [stdout] test engine::expression_exact::tests::tan_at_vertical_asymptotes_raises_domain_error ... ok [INFO] [stdout] test engine::expression_exact::tests::power_zero_to_the_zero_is_one ... ok [INFO] [stdout] test engine::expression_exact::tests::sqrt_of_negative_is_domain_error ... ok [INFO] [stdout] test engine::expression_exact::tests::tiny_literal_values_are_not_snapped_to_zero ... ok [INFO] [stdout] test engine::expression_exact::tests::tiny_composed_values_are_not_snapped_to_zero ... ok [INFO] [stdout] test engine::expression_exact::tests::round_trip_inverse_transcendentals_snap_to_exact ... ok [INFO] [stdout] test engine::expression_exact::tests::unary_minus ... ok [INFO] [stdout] test engine::expression_exact::tests::trig_degrees_notable_zero_angles_snap ... ok [INFO] [stdout] test engine::expression_exact::tests::unclosed_paren_wins_over_unknown_variable ... ok [INFO] [stdout] test engine::expression_exact::tests::unknown_function_is_error ... ok [INFO] [stdout] test engine::unit_registry::tests::categories_as_str_matches_java_enum ... ok [INFO] [stdout] test engine::unit_registry::tests::category_parse_case_insensitive ... ok [INFO] [stdout] test engine::expression_exact::tests::trig_radians_at_pi_snaps_to_zero ... ok [INFO] [stdout] test engine::expression_exact::tests::trig_snap_preserves_genuinely_small_results ... ok [INFO] [stdout] test engine::unit_registry::tests::celsius_to_gas_mark_closest ... ok [INFO] [stdout] test engine::unit_registry::tests::celsius_to_fahrenheit ... ok [INFO] [stdout] test engine::unit_registry::tests::conversion_factor_km_to_mi ... ok [INFO] [stdout] test engine::expression_exact::tests::unknown_variable_is_error ... ok [INFO] [stdout] test engine::expression_exact::tests::variable_shadows_constant ... ok [INFO] [stdout] test engine::unit_registry::tests::ambiguous_names_not_aliased ... ok [INFO] [stdout] test engine::unit_registry::tests::conversion_factor_same_unit_is_one ... ok [INFO] [stdout] test engine::unit_registry::tests::convert_in_category_accepts_matching ... ok [INFO] [stdout] test engine::unit_registry::tests::celsius_to_gas_mark_rejects_out_of_range ... ok [INFO] [stdout] test engine::unit_registry::tests::celsius_to_kelvin ... ok [INFO] [stdout] test engine::unit_registry::tests::conversion_factor_rejects_temperature ... ok [INFO] [stdout] test engine::unit_registry::tests::cross_category_error ... ok [INFO] [stdout] test engine::unit_registry::tests::data_storage_si_decimal_multipliers ... ok [INFO] [stdout] test engine::expression_exact::tests::whitespace_between_tokens_still_works ... ok [INFO] [stdout] test engine::unit_registry::tests::data_storage_iec_binary_multipliers ... ok [INFO] [stdout] test engine::unit_registry::tests::electrical_si_aliases_resolve ... ok [INFO] [stdout] test engine::unit_registry::tests::electrical_aliases_do_not_collide_with_existing_codes ... ok [INFO] [stdout] test engine::unit_registry::tests::explain_linear ... ok [INFO] [stdout] test engine::unit_registry::tests::convert_in_category_rejects_wrong_category ... ok [INFO] [stdout] test engine::unit_registry::tests::explain_same_temperature ... ok [INFO] [stdout] test engine::unit_registry::tests::explain_temperature_formula ... ok [INFO] [stdout] test engine::unit_registry::tests::electrical_si_aliases_interop_with_legacy_codes ... ok [INFO] [stdout] test engine::unit_registry::tests::all_units_has_expected_count ... ok [INFO] [stdout] test engine::unit_registry::tests::fahrenheit_to_celsius ... ok [INFO] [stdout] test engine::unit_registry::tests::fahrenheit_to_kelvin_via_celsius ... ok [INFO] [stdout] test engine::unit_registry::tests::gas_mark_to_celsius_lookup ... ok [INFO] [stdout] test engine::unit_registry::tests::kelvin_to_celsius ... ok [INFO] [stdout] test engine::unit_registry::tests::length_sub_millimetre_conversions_exact ... ok [INFO] [stdout] test engine::unit_registry::tests::km_to_mi_exact ... ok [INFO] [stdout] test engine::unit_registry::tests::lb_to_kg_exact ... ok [INFO] [stdout] test engine::unit_registry::tests::l_to_ml ... ok [INFO] [stdout] test engine::unit_registry::tests::gas_mark_out_of_range ... ok [INFO] [stdout] test engine::unit_registry::tests::find_unit_case_insensitive ... ok [INFO] [stdout] test engine::unit_registry::tests::ml_to_l ... ok [INFO] [stdout] test engine::unit_registry::tests::kg_to_lb_roundtrip ... ok [INFO] [stdout] test engine::unit_registry::tests::long_name_aliases_resolve ... ok [INFO] [stdout] test engine::unit_registry::tests::mi_to_km_exact ... ok [INFO] [stdout] test engine::unit_registry::tests::length_units_match_canonical_catalogue ... ok [INFO] [stdout] test engine::unit_registry::tests::list_categories_has_21_in_declaration_order ... ok [INFO] [stdout] test engine::unit_registry::tests::to_celsius_rejects_celsius_below_absolute_zero ... ok [INFO] [stdout] test engine::unit_registry::tests::list_units_does_not_expose_aliases ... ok [INFO] [stdout] test engine::unit_registry::tests::rankine_roundtrip_through_celsius ... ok [INFO] [stdout] test engine::unit_registry::tests::to_celsius_rejects_negative_kelvin ... ok [INFO] [stdout] test engine::unit_registry::tests::nautical_mile_exact ... ok [INFO] [stdout] test mcp::message::builder::tests::block_override_forces_multiline ... ok [INFO] [stdout] test mcp::message::builder::tests::error_with_detail_renders_three_lines ... ok [INFO] [stdout] test engine::unit_registry::tests::to_celsius_rejects_unknown ... ok [INFO] [stdout] test mcp::message::builder::tests::custom_status ... ok [INFO] [stdout] test engine::unit_registry::tests::unknown_unit_error ... ok [INFO] [stdout] test engine::unit_registry::tests::reciprocal_factor_conversions_round_cleanly ... ok [INFO] [stdout] test engine::unit_registry::tests::pressure_psi_matches_derived_factor ... ok [INFO] [stdout] test mcp::message::builder::tests::sanitization_applies_in_fields ... ok [INFO] [stdout] test mcp::message::expression_error::tests::division_by_zero_has_no_detail ... ok [INFO] [stdout] test mcp::message::builder::tests::ok_many_fields_stay_inline ... ok [INFO] [stdout] test mcp::message::builder::tests::ok_three_fields_inline ... ok [INFO] [stdout] test mcp::message::builder::tests::error_codes_format_stable ... ok [INFO] [stdout] test mcp::message::builder::tests::ok_no_fields_is_header_only ... ok [INFO] [stdout] test mcp::message::helpers::tests::format_error_sanitizes_both_reason_and_detail ... ok [INFO] [stdout] test mcp::message::builder::tests::ok_single_result_inline ... ok [INFO] [stdout] test mcp::message::helpers::tests::sanitize_escapes_control_chars ... ok [INFO] [stdout] test tools::analog_electronics::tests::capacitor_series_reciprocal ... ok [INFO] [stdout] test mcp::message::expression_error::tests::domain_error_maps_to_domain_error_code ... ok [INFO] [stdout] test tools::analog_electronics::tests::combination_bad_mode_errors ... ok [INFO] [stdout] test tools::analog_electronics::tests::current_divider_accepts_zero_total_current ... ok [INFO] [stdout] test tools::analog_electronics::tests::current_divider_rejects_negative_r1 ... ok [INFO] [stdout] test tools::analog_electronics::tests::current_divider_rejects_negative_r2 ... ok [INFO] [stdout] test tools::analog_electronics::tests::current_divider_rejects_negative_total_current ... ok [INFO] [stdout] test tools::analog_electronics::tests::current_divider_rejects_zero_r1 ... ok [INFO] [stdout] test tools::analog_electronics::tests::current_divider_rejects_zero_r2 ... ok [INFO] [stdout] test tools::analog_electronics::tests::decibel_bad_mode ... ok [INFO] [stdout] test tools::analog_electronics::tests::decibel_negative_power_error ... ok [INFO] [stdout] test mcp::message::expression_error::tests::unknown_variable_renders_with_detail ... ok [INFO] [stdout] test mcp::message::helpers::tests::format_error_omits_empty_detail ... ok [INFO] [stdout] test mcp::message::helpers::tests::sanitize_leaves_printable_intact ... ok [INFO] [stdout] test tools::analog_electronics::tests::decibel_voltage_to_db ... ok [INFO] [stdout] test mcp::message::helpers::tests::format_error_includes_detail_when_present ... ok [INFO] [stdout] test tools::analog_electronics::tests::decibel_power_to_db ... ok [INFO] [stdout] test tools::analog_electronics::tests::filter_cutoff_rejects_negative_reactive ... ok [INFO] [stdout] test tools::analog_electronics::tests::filter_cutoff_prefix_and_type ... ok [INFO] [stdout] test tools::analog_electronics::tests::impedance_near_resonance_magnitude_matches_r ... ok [INFO] [stdout] test tools::analog_electronics::tests::impedance_rejects_negative_capacitance ... ok [INFO] [stdout] test tools::analog_electronics::tests::capacitor_parallel_rejects_negative ... ok [INFO] [stdout] test tools::analog_electronics::tests::impedance_rejects_negative_frequency ... ok [INFO] [stdout] test tools::analog_electronics::tests::capacitor_parallel_sums ... ok [INFO] [stdout] test tools::analog_electronics::tests::impedance_rejects_zero_frequency ... ok [INFO] [stdout] test tools::analog_electronics::tests::current_divider_equal_split ... ok [INFO] [stdout] test tools::analog_electronics::tests::led_resistor_bad_voltages ... ok [INFO] [stdout] test tools::analog_electronics::tests::inductor_series_rejects_negative ... ok [INFO] [stdout] test tools::analog_electronics::tests::filter_cutoff_bad_type_errors ... ok [INFO] [stdout] test tools::analog_electronics::tests::led_resistor_rejects_negative_vf ... ok [INFO] [stdout] test tools::analog_electronics::tests::inductor_series_sums ... ok [INFO] [stdout] test tools::analog_electronics::tests::led_resistor_rejects_negative_vs ... ok [INFO] [stdout] test tools::analog_electronics::tests::led_resistor_bad_current ... ok [INFO] [stdout] test tools::analog_electronics::tests::led_resistor_standard ... ok [INFO] [stdout] test tools::analog_electronics::tests::ohms_law_vi_produces_r_and_p ... ok [INFO] [stdout] test tools::analog_electronics::tests::ohms_law_rejects_negative_voltage_vi ... ok [INFO] [stdout] test tools::analog_electronics::tests::ohms_law_rp_uses_sqrt_path ... ok [INFO] [stdout] test tools::analog_electronics::tests::ohms_law_vr_produces_i_and_p ... ok [INFO] [stdout] test tools::analog_electronics::tests::rc_time_constant_millis ... ok [INFO] [stdout] test tools::analog_electronics::tests::rc_time_constant_rejects_negative_capacitance ... ok [INFO] [stdout] test tools::analog_electronics::tests::resistor_parallel_halves_equal_pair ... ok [INFO] [stdout] test tools::analog_electronics::tests::resistor_series_sums ... ok [INFO] [stdout] test tools::analog_electronics::tests::rl_time_constant_basic ... ok [INFO] [stdout] test tools::analog_electronics::tests::rl_time_constant_rejects_negative_resistance ... ok [INFO] [stdout] test tools::analog_electronics::tests::rlc_resonance_rejects_negative_capacitance ... ok [INFO] [stdout] test tools::analog_electronics::tests::ohms_law_rejects_negative_current_ir ... ok [INFO] [stdout] test tools::analog_electronics::tests::ohms_law_rejects_negative_power_rp ... ok [INFO] [stdout] test tools::analog_electronics::tests::ohms_law_rejects_negative_resistance_vr ... ok [INFO] [stdout] test tools::analog_electronics::tests::ohms_law_wrong_count_errors ... ok [INFO] [stdout] test tools::analog_electronics::tests::rlc_resonance_produces_all_fields ... ok [INFO] [stdout] test tools::analog_electronics::tests::voltage_divider_accepts_zero_vin ... ok [INFO] [stdout] test tools::analog_electronics::tests::voltage_divider_half ... ok [INFO] [stdout] test tools::analog_electronics::tests::rlc_resonance_rejects_negative_resistance ... ok [INFO] [stdout] test tools::analog_electronics::tests::rlc_resonance_rejects_zero_inductance ... ok [INFO] [stdout] test tools::analog_electronics::tests::voltage_divider_rejects_negative_r1 ... ok [INFO] [stdout] test tools::analog_electronics::tests::voltage_divider_rejects_negative_r2 ... ok [INFO] [stdout] test tools::analog_electronics::tests::voltage_divider_rejects_negative_vin ... ok [INFO] [stdout] test tools::analog_electronics::tests::voltage_divider_rejects_zero_r1 ... ok [INFO] [stdout] test tools::analog_electronics::tests::wheatstone_basic ... ok [INFO] [stdout] test tools::analog_electronics::tests::resistor_series_rejects_negative ... ok [INFO] [stdout] test tools::analog_electronics::tests::voltage_divider_rejects_zero_r2 ... ok [INFO] [stdout] test tools::analog_electronics::tests::rc_time_constant_rejects_negative_resistance ... ok [INFO] [stdout] test tools::analog_electronics::tests::wheatstone_bridge_rejects_negative_r1 ... ok [INFO] [stdout] test tools::analog_electronics::tests::wheatstone_bridge_rejects_negative_r3 ... ok [INFO] [stdout] test tools::analog_electronics::tests::wheatstone_bridge_rejects_negative_r2 ... ok [INFO] [stdout] test tools::basic::tests::abs_negative ... ok [INFO] [stdout] test tools::basic::tests::divide_by_zero_returns_error_envelope ... ok [INFO] [stdout] test tools::analog_electronics::tests::wheatstone_zero_denominator ... ok [INFO] [stdout] test tools::basic::tests::add_exact_zero_collapses_scale ... ok [INFO] [stdout] test tools::basic::tests::add_avoids_binary_float_drift ... ok [INFO] [stdout] test tools::basic::tests::abs_preserves_scale ... ok [INFO] [stdout] test tools::basic::tests::modulo_exact_zero_collapses_scale ... ok [INFO] [stdout] test tools::basic::tests::modulo_integers ... ok [INFO] [stdout] test tools::basic::tests::divide_strips_trailing_zeros ... ok [INFO] [stdout] test tools::basic::tests::modulo_by_zero ... ok [INFO] [stdout] test tools::basic::tests::multiply_by_zero_collapses_cosmetic_trailing_zeros ... ok [INFO] [stdout] test tools::basic::tests::divide_twenty_digit_precision ... ok [INFO] [stdout] test tools::basic::tests::add_integers ... ok [INFO] [stdout] test tools::basic::tests::divide_preserves_sub_scale_quotients ... ok [INFO] [stdout] test tools::basic::tests::multiply_integers ... ok [INFO] [stdout] test tools::basic::tests::power_allows_trivial_bases_with_large_exponent ... ok [INFO] [stdout] test tools::basic::tests::power_rejects_exponent_that_would_exceed_output_cap ... ok [INFO] [stdout] test tools::basic::tests::power_zero_exponent_is_one ... ok [INFO] [stdout] test tools::basic::tests::subtract_integers ... ok [INFO] [stdout] test tools::calculus::tests::derivative_empty_expression ... ok [INFO] [stdout] test tools::calculus::tests::derivative_invalid_expression_parse_error ... ok [INFO] [stdout] test tools::calculus::tests::derivative_of_constant_is_zero ... ok [INFO] [stdout] test tools::calculus::tests::derivative_of_cubic ... ok [INFO] [stdout] test tools::calculus::tests::derivative_of_x_squared_at_3 ... ok [INFO] [stdout] test tools::calculus::tests::derivative_rejects_singularity_at_origin ... ok [INFO] [stdout] test tools::basic::tests::multiply_preserves_decimal_scale ... ok [INFO] [stdout] test tools::calculus::tests::derivative_snaps_to_nearest_integer ... ok [INFO] [stdout] test tools::basic::tests::parse_error_reports_label_and_value ... ok [INFO] [stdout] test tools::calculus::tests::derivative_still_works_near_singularity ... ok [INFO] [stdout] test tools::calculus::tests::derivative_unknown_function ... ok [INFO] [stdout] test tools::calculus::tests::derivative_unknown_variable ... ok [INFO] [stdout] test tools::calculus::tests::derivative_variable_mismatch_clarifies_declared_name ... ok [INFO] [stdout] test tools::calculus::tests::integral_invalid_expression ... ok [INFO] [stdout] test tools::basic::tests::power_fractional_exponent_falls_back_to_exact ... ok [INFO] [stdout] test tools::calculus::tests::derivative_snaps_critical_point_drift_to_zero ... ok [INFO] [stdout] test tools::basic::tests::power_fractional_exponent_negative_base_domain_errors ... ok [INFO] [stdout] test tools::basic::tests::power_integer_base ... ok [INFO] [stdout] test tools::basic::tests::power_negative_exponent_falls_back_to_exact ... ok [INFO] [stdout] test tools::calculus::tests::nth_derivative_bubbles_parse_error ... ok [INFO] [stdout] test tools::calculus::tests::nth_derivative_first_matches_central_diff ... ok [INFO] [stdout] test tools::calculus::tests::nth_derivative_negative_order ... ok [INFO] [stdout] test tools::calculus::tests::nth_derivative_order_above_range ... ok [INFO] [stdout] test tools::calculus::tests::nth_derivative_order_below_range ... ok [INFO] [stdout] test tools::calculus::tests::nth_derivative_rejects_singularity ... ok [INFO] [stdout] test tools::calculus::tests::integral_of_constant ... ok [INFO] [stdout] test tools::calculus::tests::integral_of_x_from_minus1_to_1_is_zero ... ok [INFO] [stdout] test tools::calculus::tests::tangent_line_equation_uses_actual_variable_name ... ok [INFO] [stdout] test tools::calculus::tests::tangent_line_invalid_expression ... ok [INFO] [stdout] test tools::calculus::tests::tangent_line_of_x_squared_at_3 ... ok [INFO] [stdout] test tools::calculus::tests::tangent_line_omits_zero_intercept ... ok [INFO] [stdout] test tools::calculus::tests::tangent_line_rejects_singularity ... ok [INFO] [stdout] test tools::calculus::tests::tangent_line_snaps_critical_point_slope_to_zero ... ok [INFO] [stdout] test tools::calculus::tests::integral_of_x_squared_0_to_1 ... ok [INFO] [stdout] test tools::chemistry::tests::half_life_round_trip_with_decay_constant ... ok [INFO] [stdout] test tools::chemistry::tests::henderson_hasselbalch_equal_concentrations ... ok [INFO] [stdout] test tools::calculus::tests::nth_derivative_second_of_x_squared_is_two ... ok [INFO] [stdout] test tools::calculus::tests::tangent_line_of_linear_function ... ok [INFO] [stdout] test tools::chemistry::tests::molality_basic ... ok [INFO] [stdout] test tools::chemistry::tests::molality_rejects_negative_moles ... ok [INFO] [stdout] test tools::chemistry::tests::ideal_gas_moles_basic ... ok [INFO] [stdout] test tools::chemistry::tests::ideal_gas_moles_rejects_negative_pressure ... ok [INFO] [stdout] test tools::chemistry::tests::ideal_gas_moles_rejects_negative_volume ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_calcium_hydroxide_with_parens ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_glucose ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_bracket_mismatch_is_error ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_iron_sulfate_nested ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_iupac_superheavy_elements ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_lanthanide_compound ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_lowercase_formula_is_title_cased ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_nacl_no_f64_drift ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_parenthesised_group_does_not_trigger_duplicate_guard ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_rejects_duplicate_element_at_flat_level ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_retry_preserves_two_letter_elements ... ok [INFO] [stdout] test tools::calculus::tests::integral_with_singularity_inside_interval_errors ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_square_brackets ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_carbon_monoxide_no_f64_drift ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_tungsten_alloy ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_title_case_helper ... ok [INFO] [stdout] test tools::calculus::tests::integral_of_x_squared_0_to_3_snaps_to_nine ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_hydrate_middle_dot ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_hydrate_period ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_hydrate_remerges_water_without_triggering_duplicate_guard ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_invalid_syntax_errors ... ok [INFO] [stdout] test tools::chemistry::tests::ph_invalid_concentration_errors ... ok [INFO] [stdout] test tools::chemistry::tests::molarity_rejects_negative_moles ... ok [INFO] [stdout] test tools::chemistry::tests::poh_at_unit_concentration_emits_canonical_zero ... ok [INFO] [stdout] test tools::chemistry::tests::poh_basic ... ok [INFO] [stdout] test tools::chemistry::tests::ph_neutral_water ... ok [INFO] [stdout] test tools::chemistry::tests::ph_at_unit_concentration_emits_canonical_zero ... ok [INFO] [stdout] test tools::combinatorics::tests::combination_basic ... ok [INFO] [stdout] test tools::combinatorics::tests::combination_large_arbitrary_precision ... ok [INFO] [stdout] test tools::combinatorics::tests::fibonacci_known_values ... ok [INFO] [stdout] test tools::combinatorics::tests::combination_negative_errors ... ok [INFO] [stdout] test tools::combinatorics::tests::euler_totient_known_values ... ok [INFO] [stdout] test tools::combinatorics::tests::fibonacci_large_arbitrary_precision ... ok [INFO] [stdout] test tools::combinatorics::tests::fibonacci_negative_errors ... ok [INFO] [stdout] test tools::combinatorics::tests::is_prime_composites ... ok [INFO] [stdout] test tools::combinatorics::tests::is_prime_negative_errors ... ok [INFO] [stdout] test tools::combinatorics::tests::is_prime_small_primes ... ok [INFO] [stdout] test tools::combinatorics::tests::permutation_basic ... ok [INFO] [stdout] test tools::combinatorics::tests::permutation_edge_zero ... ok [INFO] [stdout] test tools::combinatorics::tests::prime_factors_basic ... ok [INFO] [stdout] test tools::combinatorics::tests::prime_factors_of_prime ... ok [INFO] [stdout] test tools::combinatorics::tests::prime_factors_of_two ... ok [INFO] [stdout] test tools::combinatorics::tests::prime_factors_one_is_empty_product ... ok [INFO] [stdout] test tools::complex::tests::add_basic ... ok [INFO] [stdout] test tools::complex::tests::complex_power_snaps_to_integer ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_unknown_element_errors ... ok [INFO] [stdout] test tools::chemistry::tests::molar_mass_water ... ok [INFO] [stdout] test tools::chemistry::tests::molarity_basic ... ok [INFO] [stdout] test tools::combinatorics::tests::combination_edge_cases ... ok [INFO] [stdout] test tools::combinatorics::tests::prime_factors_zero_errors ... ok [INFO] [stdout] test tools::complex::tests::div_tiny_denominator_no_spurious_zero ... ok [INFO] [stdout] test tools::complex::tests::magnitude_3_4_is_5 ... ok [INFO] [stdout] test tools::complex::tests::parse_error_propagates ... ok [INFO] [stdout] test tools::complex::tests::phase_negative_real_epsilon_imag_stays_in_range ... ok [INFO] [stdout] test tools::complex::tests::phase_negative_real_is_180 ... ok [INFO] [stdout] test tools::complex::tests::phase_of_zero_is_zero_by_convention ... ok [INFO] [stdout] test tools::complex::tests::phase_pure_imaginary_is_90 ... ok [INFO] [stdout] test tools::complex::tests::polar_to_rect_53deg_gives_clean_345 ... ok [INFO] [stdout] test tools::complex::tests::polar_to_rect_basic ... ok [INFO] [stdout] test tools::complex::tests::power_squared ... ok [INFO] [stdout] test tools::complex::tests::conjugate_flips_imag_sign ... ok [INFO] [stdout] test tools::complex::tests::power_zero_to_zero_errors ... ok [INFO] [stdout] test tools::combinatorics::tests::is_prime_large ... ok [INFO] [stdout] test tools::complex::tests::conjugate_of_zero_canonicalizes_negative_zero ... ok [INFO] [stdout] test tools::combinatorics::tests::next_prime_basic ... ok [INFO] [stdout] test tools::complex::tests::div_basic ... ok [INFO] [stdout] test tools::complex::tests::mult_basic ... ok [INFO] [stdout] test tools::complex::tests::div_by_zero_errors ... ok [INFO] [stdout] test tools::cooking::tests::oven_allows_negative_celsius ... ok [INFO] [stdout] test tools::cooking::tests::oven_celsius_to_fahrenheit ... ok [INFO] [stdout] test tools::cooking::tests::oven_celsius_to_gas_mark ... ok [INFO] [stdout] test tools::complex::tests::rect_to_polar_basic ... ok [INFO] [stdout] test tools::cooking::tests::oven_fractional_gas_mark_preserves_value_in_error ... ok [INFO] [stdout] test tools::cooking::tests::oven_gas_mark_out_of_range_uses_canonical_envelope ... ok [INFO] [stdout] test tools::cooking::tests::oven_gas_mark_to_celsius ... ok [INFO] [stdout] test tools::cooking::tests::oven_fahrenheit_to_gasmark ... ok [INFO] [stdout] test tools::cooking::tests::oven_fractional_above_range_preserves_value ... ok [INFO] [stdout] test tools::cooking::tests::volume_cup_alias_to_tbsp ... ok [INFO] [stdout] test tools::cooking::tests::volume_gal_alias_to_l ... ok [INFO] [stdout] test tools::cooking::tests::volume_invalid_unit ... ok [INFO] [stdout] test tools::cooking::tests::volume_rejects_negative_value ... ok [INFO] [stdout] test tools::cooking::tests::weight_invalid_unit ... ok [INFO] [stdout] test tools::cooking::tests::oven_gasmark_roundtrip ... ok [INFO] [stdout] test tools::cooking::tests::oven_invalid_unit_error ... ok [INFO] [stdout] test tools::cooking::tests::weight_rejects_negative_value ... ok [INFO] [stdout] test tools::cooking::tests::volume_floz_alias_to_ml ... ok [INFO] [stdout] test tools::crypto::tests::base64_round_trip ... ok [INFO] [stdout] test tools::crypto::tests::base64_decode_invalid_errors ... ok [INFO] [stdout] test tools::cooking::tests::weight_lb_to_oz_happy_path ... ok [INFO] [stdout] test tools::crypto::tests::crc32_known_vector ... ok [INFO] [stdout] test tools::crypto::tests::empty_inputs_are_supported ... ok [INFO] [stdout] test tools::crypto::tests::hex_encode_basic ... ok [INFO] [stdout] test tools::complex::tests::sqrt_of_minus_one_is_i ... ok [INFO] [stdout] test tools::complex::tests::sqrt_of_real_positive ... ok [INFO] [stdout] test tools::crypto::tests::sha256_known_vector ... ok [INFO] [stdout] test tools::complex::tests::sqrt_tiny_input_preserves_magnitude ... ok [INFO] [stdout] test tools::crypto::tests::url_decode_literal_plus_survives_via_percent_encoding ... ok [INFO] [stdout] test tools::crypto::tests::url_decode_rejects_invalid_percent_escape ... ok [INFO] [stdout] test tools::crypto::tests::url_encode_special_chars ... ok [INFO] [stdout] test tools::crypto::tests::md5_known_vector ... ok [INFO] [stdout] test tools::crypto::tests::sha1_known_vector ... ok [INFO] [stdout] test tools::crypto::tests::sha512_known_vector ... ok [INFO] [stdout] test tools::crypto::tests::url_decode_rejects_single_digit_percent ... ok [INFO] [stdout] test tools::crypto::tests::url_decode_rejects_trailing_percent ... ok [INFO] [stdout] test tools::crypto::tests::url_decode_round_trip ... ok [INFO] [stdout] test tools::crypto::tests::url_decode_translates_plus_to_space_form_encoding ... ok [INFO] [stdout] test tools::datetime::tests::convert_invalid_source_zone ... ok [INFO] [stdout] test tools::datetime::tests::convert_accepts_bare_epoch_milliseconds ... ok [INFO] [stdout] test tools::datetime::tests::convert_accepts_bare_epoch_seconds ... ok [INFO] [stdout] test tools::datetime::tests::convert_parse_error ... ok [INFO] [stdout] test tools::datetime::tests::convert_accepts_negative_epoch_seconds ... ok [INFO] [stdout] test tools::datetime::tests::convert_still_rejects_short_digits_as_dates ... ok [INFO] [stdout] test tools::datetime::tests::convert_rejects_dst_gap_in_spring_forward ... ok [INFO] [stdout] test tools::datetime::tests::convert_rejects_dst_fold_in_autumn_back ... ok [INFO] [stdout] test tools::datetime::tests::convert_utc_to_tokyo ... ok [INFO] [stdout] test tools::datetime::tests::datetime_difference_negative_order_normalized ... ok [INFO] [stdout] test tools::datetime::tests::datetime_difference_invalid_zone ... ok [INFO] [stdout] test tools::datetime::tests::datetime_difference_one_year_two_months ... ok [INFO] [stdout] test tools::datetime::tests::format_datetime_accepts_strftime_with_tokens ... ok [INFO] [stdout] test tools::datetime::tests::format_datetime_rejects_placeholder_without_tokens ... ok [INFO] [stdout] test tools::datetime::tests::current_datetime_uses_requested_zone ... ok [INFO] [stdout] test tools::datetime::tests::convert_accepts_unambiguous_local_time ... ok [INFO] [stdout] test tools::datetime::tests::current_datetime_invalid_zone ... ok [INFO] [stdout] test tools::datetime::tests::current_datetime_strftime_year_is_four_digits ... ok [INFO] [stdout] test tools::datetime::tests::format_iso_local_strips_zone ... ok [INFO] [stdout] test tools::datetime::tests::format_epoch_input_to_iso ... ok [INFO] [stdout] test tools::datetime::tests::format_datetime_rejects_empty_format ... ok [INFO] [stdout] test tools::datetime::tests::format_iso_offset_has_offset_no_zone ... ok [INFO] [stdout] test tools::datetime::tests::format_rfc1123_input_roundtrips ... ok [INFO] [stdout] test tools::digital_electronics::tests::bitwise_accepts_hex_and_binary_prefixes ... ok [INFO] [stdout] test tools::digital_electronics::tests::bitwise_and_ones ... ok [INFO] [stdout] test tools::digital_electronics::tests::adc_resolution_ten_bit ... ok [INFO] [stdout] test tools::digital_electronics::tests::bitwise_not_is_arbitrary_precision_twos_complement ... ok [INFO] [stdout] test tools::digital_electronics::tests::bitwise_or_simple ... ok [INFO] [stdout] test tools::digital_electronics::tests::bitwise_rejects_malformed_literal ... ok [INFO] [stdout] test tools::digital_electronics::tests::bitwise_shift_beyond_u32_is_out_of_range ... ok [INFO] [stdout] test tools::datetime::tests::format_rfc1123_output ... ok [INFO] [stdout] test tools::datetime::tests::format_strftime_uppercase_conversions_preserved ... ok [INFO] [stdout] test tools::digital_electronics::tests::adc_resolution_bad_bits_errors ... ok [INFO] [stdout] test tools::digital_electronics::tests::bitwise_shift_unparseable_still_parse_error ... ok [INFO] [stdout] test tools::digital_electronics::tests::bitwise_shl ... ok [INFO] [stdout] test tools::digital_electronics::tests::bitwise_xor_simple ... ok [INFO] [stdout] test tools::digital_electronics::tests::bitwise_shift_negative_is_out_of_range ... ok [INFO] [stdout] test tools::digital_electronics::tests::bitwise_shr ... ok [INFO] [stdout] test tools::digital_electronics::tests::bitwise_unknown_op_errors ... ok [INFO] [stdout] test tools::digital_electronics::tests::convert_base_binary_to_decimal ... ok [INFO] [stdout] test tools::digital_electronics::tests::convert_base_decimal_to_hex ... ok [INFO] [stdout] test tools::digital_electronics::tests::convert_base_hex_to_binary ... ok [INFO] [stdout] test tools::digital_electronics::tests::dac_output_out_of_range_errors ... ok [INFO] [stdout] test tools::digital_electronics::tests::frequency_period_bad_mode_errors ... ok [INFO] [stdout] test tools::digital_electronics::tests::frequency_period_freq_to_period ... ok [INFO] [stdout] test tools::digital_electronics::tests::convert_base_bad_base_errors ... ok [INFO] [stdout] test tools::digital_electronics::tests::dac_output_midpoint ... ok [INFO] [stdout] test tools::digital_electronics::tests::frequency_period_non_positive_errors ... ok [INFO] [stdout] test tools::digital_electronics::tests::gray_code_bad_direction_errors ... ok [INFO] [stdout] test tools::digital_electronics::tests::gray_code_from_gray_roundtrip ... ok [INFO] [stdout] test tools::digital_electronics::tests::bitwise_shl_is_unbounded ... ok [INFO] [stdout] test tools::digital_electronics::tests::convert_base_invalid_digit_errors ... ok [INFO] [stdout] test tools::digital_electronics::tests::gray_code_to_gray ... ok [INFO] [stdout] test tools::digital_electronics::tests::nyquist_rate_rejects_negative ... ok [INFO] [stdout] test tools::digital_electronics::tests::frequency_period_period_to_freq ... ok [INFO] [stdout] test tools::digital_electronics::tests::frequency_period_survives_extreme_magnitudes ... ok [INFO] [stdout] test tools::digital_electronics::tests::nyquist_rate_rejects_zero ... ok [INFO] [stdout] test tools::digital_electronics::tests::timer_555_astable_period_survives_tiny_rc ... ok [INFO] [stdout] test tools::digital_electronics::tests::timer_555_astable_rejects_negative_r2 ... ok [INFO] [stdout] test tools::digital_electronics::tests::timer_555_astable_rejects_zero_r1 ... ok [INFO] [stdout] test tools::digital_electronics::tests::timer_555_monostable_formula ... ok [INFO] [stdout] test tools::digital_electronics::tests::timer_555_monostable_rejects_negative_c ... ok [INFO] [stdout] test tools::digital_electronics::tests::timer_555_monostable_rejects_zero_r ... ok [INFO] [stdout] test tools::digital_electronics::tests::twos_complement_bad_bits_errors ... ok [INFO] [stdout] test tools::digital_electronics::tests::twos_complement_bad_direction_errors ... ok [INFO] [stdout] test tools::digital_electronics::tests::twos_complement_boundary_values_accepted ... ok [INFO] [stdout] test tools::digital_electronics::tests::twos_complement_from_accepts_short_string ... ok [INFO] [stdout] test tools::digital_electronics::tests::twos_complement_from_rejects_string_longer_than_bit_width ... ok [INFO] [stdout] test tools::digital_electronics::tests::twos_complement_negative_eight_bit ... ok [INFO] [stdout] test tools::digital_electronics::tests::twos_complement_positive_eight_bit ... ok [INFO] [stdout] test tools::digital_electronics::tests::twos_complement_roundtrip_negative ... ok [INFO] [stdout] test tools::digital_electronics::tests::twos_complement_roundtrip_positive ... ok [INFO] [stdout] test tools::digital_electronics::tests::twos_complement_value_above_signed_range_errors ... ok [INFO] [stdout] test tools::digital_electronics::tests::twos_complement_value_below_signed_range_errors ... ok [INFO] [stdout] test tools::financial::tests::amortization_schedule_10k_6pct_1yr ... ok [INFO] [stdout] test tools::digital_electronics::tests::gray_code_invalid_binary_errors ... ok [INFO] [stdout] test tools::digital_electronics::tests::nyquist_rate_audio ... ok [INFO] [stdout] test tools::financial::tests::amortization_schedule_last_month_zero_balance ... ok [INFO] [stdout] test tools::digital_electronics::tests::timer_555_astable_all_fields_present ... ok [INFO] [stdout] test tools::financial::tests::amortization_schedule_zero_rate ... ok [INFO] [stdout] test tools::financial::tests::amortization_schedule_zero_rate_preserves_principal ... ok [INFO] [stdout] test tools::financial::tests::compound_interest_monthly ... ok [INFO] [stdout] test tools::financial::tests::amortization_schedule_accepts_40_year_mortgage ... ok [INFO] [stdout] test tools::financial::tests::amortization_schedule_parse_error ... ok [INFO] [stdout] test tools::financial::tests::compound_interest_negative_principal ... ok [INFO] [stdout] test tools::financial::tests::compound_interest_annual ... ok [INFO] [stdout] test tools::financial::tests::compound_interest_negative_rate ... ok [INFO] [stdout] test tools::financial::tests::amortization_schedule_rejects_schedule_beyond_cap ... ok [INFO] [stdout] test tools::financial::tests::compound_interest_zero_compounds ... ok [INFO] [stdout] test tools::financial::tests::future_value_annuity_basic ... ok [INFO] [stdout] test tools::financial::tests::future_value_annuity_zero_rate ... ok [INFO] [stdout] test tools::financial::tests::compound_interest_zero_rate ... ok [INFO] [stdout] test tools::financial::tests::compound_interest_negative_years_still_rejected ... ok [INFO] [stdout] test tools::financial::tests::compound_interest_parse_error ... ok [INFO] [stdout] test tools::financial::tests::compound_interest_zero_years_is_identity ... ok [INFO] [stdout] test tools::financial::tests::loan_payment_parse_error_principal ... ok [INFO] [stdout] test tools::financial::tests::loan_payment_zero_rate ... ok [INFO] [stdout] test tools::financial::tests::present_value_zero_years_returns_future_value ... ok [INFO] [stdout] test tools::financial::tests::roi_basic ... ok [INFO] [stdout] test tools::financial::tests::loan_payment_standard ... ok [INFO] [stdout] test tools::financial::tests::loan_payment_zero_principal ... ok [INFO] [stdout] test tools::financial::tests::present_value_basic ... ok [INFO] [stdout] test tools::financial::tests::roi_zero_cost_error ... ok [INFO] [stdout] test tools::financial::tests::roi_negative_cost_error ... ok [INFO] [stdout] test tools::geometry::tests::circle_area_negative_radius_still_rejected ... ok [INFO] [stdout] test tools::financial::tests::roi_parse_error_gain ... ok [INFO] [stdout] test tools::geometry::tests::circle_area_radius_two ... ok [INFO] [stdout] test tools::geometry::tests::circle_area_zero_radius_is_zero ... ok [INFO] [stdout] test tools::geometry::tests::circle_area_unit_radius ... ok [INFO] [stdout] test tools::geometry::tests::distance_2d_pythagorean ... ok [INFO] [stdout] test tools::geometry::tests::point_to_line_coincident_endpoints_errors ... ok [INFO] [stdout] test tools::geometry::tests::point_to_line_distance_basic ... ok [INFO] [stdout] test tools::geometry::tests::circle_perimeter_unit_radius ... ok [INFO] [stdout] test tools::geometry::tests::polygon_area_rejects_too_few_points ... ok [INFO] [stdout] test tools::geometry::tests::polygon_area_unit_square ... ok [INFO] [stdout] test tools::geometry::tests::cone_volume_unit ... ok [INFO] [stdout] test tools::geometry::tests::regular_polygon_min_sides_enforced ... ok [INFO] [stdout] test tools::geometry::tests::regular_polygon_hexagon_side_1 ... ok [INFO] [stdout] test tools::geometry::tests::regular_polygon_tiny_side_preserves_magnitude ... ok [INFO] [stdout] test tools::geometry::tests::sphere_volume_radius_one ... ok [INFO] [stdout] test tools::geometry::tests::triangle_area_3_4_5_right_triangle ... ok [INFO] [stdout] test tools::geometry::tests::triangle_area_equilateral ... ok [INFO] [stdout] test tools::geometry::tests::triangle_area_inequality_violated ... ok [INFO] [stdout] test tools::graphing::tests::find_roots_bubbles_unknown_variable ... ok [INFO] [stdout] test tools::geometry::tests::regular_polygon_square_side_2 ... ok [INFO] [stdout] test tools::geometry::tests::sphere_area_radius_one ... ok [INFO] [stdout] test tools::graphing::tests::find_roots_cubic_three_roots ... ok [INFO] [stdout] test tools::graphing::tests::find_roots_ignores_pole_sign_change ... ok [INFO] [stdout] test tools::geometry::tests::distance_3d_unit_diagonal ... ok [INFO] [stdout] test tools::graphing::tests::find_roots_min_greater_than_max ... ok [INFO] [stdout] test tools::geometry::tests::cylinder_volume_unit ... ok [INFO] [stdout] test tools::graphing::tests::find_roots_x_squared_minus_four ... ok [INFO] [stdout] test tools::graphing::tests::plot_bubbles_unknown_variable ... ok [INFO] [stdout] test tools::graphing::tests::plot_invalid_range_equal ... ok [INFO] [stdout] test tools::graphing::tests::plot_invalid_range_inverted ... ok [INFO] [stdout] test tools::graphing::tests::find_roots_rejects_tan_asymptotes_as_roots ... ok [INFO] [stdout] test tools::graphing::tests::plot_invalid_steps_negative ... ok [INFO] [stdout] test tools::graphing::tests::plot_invalid_steps_zero ... ok [INFO] [stdout] test tools::graphing::tests::find_roots_no_roots_returns_empty ... ok [INFO] [stdout] test tools::graphing::tests::find_roots_rejects_rational_pole_sign_change ... ok [INFO] [stdout] test tools::graphing::tests::plot_out_of_domain_points_emit_undefined_not_abort ... ok [INFO] [stdout] test tools::graphing::tests::solve_bubbles_unknown_variable ... ok [INFO] [stdout] test tools::graphing::tests::solve_x_squared_minus_four_negative_guess ... ok [INFO] [stdout] test tools::graphing::tests::solve_x_squared_minus_four_positive_guess ... ok [INFO] [stdout] test tools::matrices::tests::add_dimension_mismatch_errors ... ok [INFO] [stdout] test tools::graphing::tests::plot_samples_pole_emit_undefined_not_abort ... ok [INFO] [stdout] test tools::graphing::tests::plot_x_squared_endpoints ... ok [INFO] [stdout] test tools::matrices::tests::cross_product_basic ... ok [INFO] [stdout] test tools::matrices::tests::cross_product_non_3d_errors ... ok [INFO] [stdout] test tools::matrices::tests::determinant_mixed_scale_diagonal_not_snapped ... ok [INFO] [stdout] test tools::matrices::tests::determinant_non_square_errors ... ok [INFO] [stdout] test tools::matrices::tests::determinant_singular ... ok [INFO] [stdout] test tools::matrices::tests::add_2x2 ... ok [INFO] [stdout] test tools::graphing::tests::solve_derivative_zero_error ... ok [INFO] [stdout] test tools::matrices::tests::determinant_2x2 ... ok [INFO] [stdout] test tools::matrices::tests::determinant_3x3 ... ok [INFO] [stdout] test tools::matrices::tests::eigenvalues_complex_2x2 ... ok [INFO] [stdout] test tools::matrices::tests::determinant_tiny_entries_1e_minus_10_not_clipped ... ok [INFO] [stdout] test tools::matrices::tests::eigenvalues_large_entries_no_overflow ... ok [INFO] [stdout] test tools::matrices::tests::determinant_singular_fp_noise_snaps_to_zero ... ok [INFO] [stdout] test tools::matrices::tests::determinant_truly_small_not_clipped ... ok [INFO] [stdout] test tools::matrices::tests::eigenvalues_tiny_entries_no_underflow ... ok [INFO] [stdout] test tools::matrices::tests::gaussian_elimination_2x3_solve ... ok [INFO] [stdout] test tools::matrices::tests::eigenvalues_diagonal_2x2 ... ok [INFO] [stdout] test tools::matrices::tests::gaussian_elimination_canonicalizes_negative_zero ... ok [INFO] [stdout] test tools::matrices::tests::gaussian_elimination_inconsistent_errors ... ok [INFO] [stdout] test tools::matrices::tests::inverse_mixed_scale_diagonal_not_rejected ... ok [INFO] [stdout] test tools::matrices::tests::inverse_singular_errors ... ok [INFO] [stdout] test tools::matrices::tests::inverse_tiny_entries_well_conditioned_not_rejected ... ok [INFO] [stdout] test tools::matrices::tests::mult_2x2_identity ... ok [INFO] [stdout] test tools::matrices::tests::gaussian_elimination_mixed_scale_not_rejected ... ok [INFO] [stdout] test tools::matrices::tests::mult_compatible_dims ... ok [INFO] [stdout] test tools::matrices::tests::rank_full_2x2 ... ok [INFO] [stdout] test tools::matrices::tests::rank_singular_2x2 ... ok [INFO] [stdout] test tools::matrices::tests::rank_tiny_entries_reports_full_rank ... ok [INFO] [stdout] test tools::matrices::tests::trace_3x3 ... ok [INFO] [stdout] test tools::matrices::tests::transpose_2x3 ... ok [INFO] [stdout] test tools::measure_reference::tests::conversion_factor_km_to_m ... ok [INFO] [stdout] test tools::measure_reference::tests::conversion_factor_temperature_error ... ok [INFO] [stdout] test tools::matrices::tests::rank_mixed_scale_diagonal_reports_full_rank ... ok [INFO] [stdout] test tools::matrices::tests::gaussian_elimination_underdetermined_errors ... ok [INFO] [stdout] test tools::matrices::tests::inverse_2x2 ... ok [INFO] [stdout] test tools::matrices::tests::inverse_emits_clean_integers_instead_of_ulp_residue ... ok [INFO] [stdout] test tools::measure_reference::tests::explain_conversion_linear ... ok [INFO] [stdout] test tools::measure_reference::tests::conversion_factor_unknown_unit ... ok [INFO] [stdout] test tools::measure_reference::tests::explain_conversion_cross_category_error ... ok [INFO] [stdout] test tools::measure_reference::tests::list_tool_categories_matches_server_instructions ... ok [INFO] [stdout] test tools::measure_reference::tests::list_units_case_insensitive_category ... ok [INFO] [stdout] test tools::measure_reference::tests::list_units_length ... ok [INFO] [stdout] test tools::network::tests::decimal_to_ip_ipv6_max_and_edges ... ok [INFO] [stdout] test tools::network::tests::compress_ipv6_middle_run ... ok [INFO] [stdout] test tools::network::tests::error_bad_cidr ... ok [INFO] [stdout] test tools::network::tests::error_bad_ip ... ok [INFO] [stdout] test tools::network::tests::error_binary_to_ipv4_group_count ... ok [INFO] [stdout] test tools::measure_reference::tests::explain_conversion_temperature_formula ... ok [INFO] [stdout] test tools::measure_reference::tests::list_units_unknown_category ... ok [INFO] [stdout] test tools::network::tests::error_binary_to_ipv4_non_binary_digit ... ok [INFO] [stdout] test tools::measure_reference::tests::list_categories_inline_envelope ... ok [INFO] [stdout] test tools::network::tests::expand_compress_ipv6_roundtrip ... ok [INFO] [stdout] test tools::network::tests::expand_ipv6_non_v4_mapped_stays_hex ... ok [INFO] [stdout] test tools::network::tests::expand_ipv6_v4_mapped_keeps_dotted_quad ... ok [INFO] [stdout] test tools::network::tests::error_empty_summary_list ... ok [INFO] [stdout] test tools::network::tests::ip_in_subnet_family_mismatch_is_explicit ... ok [INFO] [stdout] test tools::network::tests::ip_to_binary_ipv6_roundtrip ... ok [INFO] [stdout] test tools::network::tests::ip_to_decimal_ipv6_roundtrip ... ok [INFO] [stdout] test tools::network::tests::subnet_calc_192_168_1_0_slash_24 ... ok [INFO] [stdout] test tools::network::tests::subnet_calc_cidr_31_point_to_point ... ok [INFO] [stdout] test tools::network::tests::error_wrong_version ... ok [INFO] [stdout] test tools::network::tests::ip_in_subnet_cases ... ok [INFO] [stdout] test tools::network::tests::ip_to_decimal_ipv4_roundtrip ... ok [INFO] [stdout] test tools::network::tests::subnet_calc_ipv6 ... ok [INFO] [stdout] test tools::network::tests::subnet_calc_ipv6_slash_128_single_host ... ok [INFO] [stdout] test tools::network::tests::subnet_calc_slash_zero_classified_by_network ... ok [INFO] [stdout] test tools::network::tests::summarize_refuses_disjoint_rfc1918_blocks ... ok [INFO] [stdout] test tools::network::tests::ip_to_binary_ipv4_roundtrip ... ok [INFO] [stdout] test tools::network::tests::subnet_calc_cidr_32_host_route ... ok [INFO] [stdout] test tools::network::tests::summarize_single_subnet_returns_itself ... ok [INFO] [stdout] test tools::network::tests::summarize_adjacent_slash_22 ... ok [INFO] [stdout] test tools::network::tests::summarize_adjacent_slash_24s_still_succeeds ... ok [INFO] [stdout] test tools::network::tests::summarize_refuses_two_distant_slash_24s ... ok [INFO] [stdout] test tools::network::tests::tcp_throughput_rejects_negative_bandwidth ... ok [INFO] [stdout] test tools::network::tests::summarize_two_slash_25_to_slash_24 ... ok [INFO] [stdout] test tools::network::tests::tcp_throughput_rejects_negative_rtt ... ok [INFO] [stdout] test tools::network::tests::tcp_throughput_bw_limited ... ok [INFO] [stdout] test tools::network::tests::throughput_100mb_10s_to_mbps ... ok [INFO] [stdout] test tools::network::tests::throughput_rejects_negative_data_size ... ok [INFO] [stdout] test tools::network::tests::throughput_rejects_zero_time ... ok [INFO] [stdout] test tools::network::tests::transfer_time_1gb_at_100mbps ... ok [INFO] [stdout] test tools::network::tests::transfer_time_rejects_negative_bandwidth ... ok [INFO] [stdout] test tools::network::tests::transfer_time_rejects_negative_file_size ... ok [INFO] [stdout] test tools::network::tests::tcp_throughput_rejects_zero_window ... ok [INFO] [stdout] test tools::network::tests::vlsm_basic_slash_24 ... ok [INFO] [stdout] test tools::network::tests::tcp_throughput_window_limited ... ok [INFO] [stdout] test tools::network::tests::vlsm_rejects_negative_host_count ... ok [INFO] [stdout] test tools::network::tests::vlsm_rejects_zero_host_count ... ok [INFO] [stdout] test tools::network::tests::vlsm_cannot_fit ... ok [INFO] [stdout] test tools::numeric::tests::canonicalize_zero_eliminates_negative_zero ... ok [INFO] [stdout] test tools::network::tests::vlsm_rejects_empty_host_counts ... ok [INFO] [stdout] test tools::numeric::tests::canonicalize_zero_preserves_other_values ... ok [INFO] [stdout] test tools::numeric::tests::passes_through_nan_and_infinity ... ok [INFO] [stdout] test tools::numeric::tests::precision_snap_handles_extreme_magnitudes_without_nan ... ok [INFO] [stdout] test tools::numeric::tests::precision_snap_removes_ulp_residue ... ok [INFO] [stdout] test tools::network::tests::throughput_rejects_negative_time ... ok [INFO] [stdout] test tools::network::tests::transfer_time_rejects_zero_bandwidth ... ok [INFO] [stdout] test tools::numeric::tests::precision_snap_still_rounds_ulp_drift ... ok [INFO] [stdout] test tools::numeric::tests::preserves_tiny_values_near_zero_target ... ok [INFO] [stdout] test tools::numeric::tests::preserves_genuinely_non_integer_values ... ok [INFO] [stdout] test tools::numeric::tests::snaps_hexagon_circumradius_residue ... ok [INFO] [stdout] test tools::numeric::tests::snaps_negative_integer_residue ... ok [INFO] [stdout] test tools::numeric::tests::still_snaps_near_nonzero_integer_from_derivative_drift ... ok [INFO] [stdout] test tools::physics::tests::doppler_observer_approaching ... ok [INFO] [stdout] test tools::physics::tests::doppler_supersonic_source_is_domain_error ... ok [INFO] [stdout] test tools::physics::tests::gravitational_force_rejects_negative_mass ... ok [INFO] [stdout] test tools::physics::tests::escape_velocity_earth_approx ... ok [INFO] [stdout] test tools::physics::tests::gravitational_force_two_kg_one_meter ... ok [INFO] [stdout] test tools::physics::tests::gravitational_zero_distance_errors ... ok [INFO] [stdout] test tools::numeric::tests::precision_snap_passes_through_edge_cases ... ok [INFO] [stdout] test tools::numeric::tests::precision_snap_preserves_small_magnitudes ... ok [INFO] [stdout] test tools::physics::tests::heat_transfer_basic ... ok [INFO] [stdout] test tools::physics::tests::heat_transfer_rejects_negative_area ... ok [INFO] [stdout] test tools::physics::tests::heat_transfer_rejects_negative_conductivity ... ok [INFO] [stdout] test tools::physics::tests::ideal_gas_invalid_solve_for_errors ... ok [INFO] [stdout] test tools::physics::tests::ideal_gas_rejects_negative_moles_when_solving_p ... ok [INFO] [stdout] test tools::physics::tests::ideal_gas_rejects_negative_pressure_when_solving_v ... ok [INFO] [stdout] test tools::physics::tests::ideal_gas_solve_for_v ... ok [INFO] [stdout] test tools::physics::tests::kinematics_accepts_negative_acceleration ... ok [INFO] [stdout] test tools::physics::tests::ideal_gas_rejects_zero_temperature_when_solving_p ... ok [INFO] [stdout] test tools::physics::tests::kinematics_rejects_negative_time ... ok [INFO] [stdout] test tools::physics::tests::doppler_supersonic_receding_source_is_domain_error ... ok [INFO] [stdout] test tools::physics::tests::newtons_force_zero_mass_ok ... ok [INFO] [stdout] test tools::physics::tests::ideal_gas_rejects_negative_volume_when_solving_n ... ok [INFO] [stdout] test tools::physics::tests::planck_energy_basic ... ok [INFO] [stdout] test tools::physics::tests::planck_energy_rejects_negative_frequency ... ok [INFO] [stdout] test tools::physics::tests::planck_energy_zero_frequency_ok ... ok [INFO] [stdout] test tools::physics::tests::projectile_45deg_optimal_range ... ok [INFO] [stdout] test tools::physics::tests::projectile_backward_launch_signed_range ... ok [INFO] [stdout] test tools::physics::tests::projectile_negative_speed_errors ... ok [INFO] [stdout] test tools::physics::tests::newtons_force_basic ... ok [INFO] [stdout] test tools::physics::tests::kinematics_simple ... ok [INFO] [stdout] test tools::physics::tests::projectile_rejects_angle_above_180 ... ok [INFO] [stdout] test tools::physics::tests::newtons_force_rejects_negative_mass ... ok [INFO] [stdout] test tools::physics::tests::stefan_boltzmann_emissivity_out_of_range ... ok [INFO] [stdout] test tools::physics::tests::stefan_boltzmann_rejects_negative_area ... ok [INFO] [stdout] test tools::physics::tests::wave_length_rejects_negative_frequency ... ok [INFO] [stdout] test tools::physics::tests::wave_length_rejects_negative_wave_speed ... ok [INFO] [stdout] test tools::physics::tests::wave_length_speed_of_light_at_1_mhz ... ok [INFO] [stdout] test tools::physics::tests::stefan_boltzmann_blackbody ... ok [INFO] [stdout] test tools::physics::tests::orbital_velocity_iss_altitude ... ok [INFO] [stdout] test tools::printing::tests::clear_resets_total ... ok [INFO] [stdout] test tools::printing::tests::add_and_subtract_with_subtotal ... ok [INFO] [stdout] test tools::printing::tests::err_empty_input ... ok [INFO] [stdout] test tools::printing::tests::err_division_by_zero ... ok [INFO] [stdout] test tools::physics::tests::projectile_rejects_negative_angle ... ok [INFO] [stdout] test tools::printing::tests::err_missing_op_field ... ok [INFO] [stdout] test tools::physics::tests::projectile_vertical_launch_zero_range ... ok [INFO] [stdout] test tools::printing::tests::err_not_a_json_array ... ok [INFO] [stdout] test tools::printing::tests::numeric_value_accepted ... ok [INFO] [stdout] test tools::programmable::tests::eval_vars_accepts_numeric_string ... ok [INFO] [stdout] test tools::programmable::tests::eval_vars_empty_expression_is_error ... ok [INFO] [stdout] test tools::printing::tests::multiply_divide_and_grand_total ... ok [INFO] [stdout] test tools::printing::tests::single_add_structure ... ok [INFO] [stdout] test tools::programmable::tests::eval_vars_empty_object_is_valid ... ok [INFO] [stdout] test tools::programmable::tests::eval_vars_invalid_json_is_error ... ok [INFO] [stdout] test tools::programmable::tests::eval_vars_rejects_non_numeric_string ... ok [INFO] [stdout] test tools::programmable::tests::eval_vars_power ... ok [INFO] [stdout] test tools::programmable::tests::eval_vars_float_values ... ok [INFO] [stdout] test tools::programmable::tests::eval_vars_simple ... ok [INFO] [stdout] test tools::programmable::tests::eval_vars_unknown_variable_is_error ... ok [INFO] [stdout] test tools::printing::tests::err_missing_value_field ... ok [INFO] [stdout] test tools::printing::tests::err_unknown_control_op ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_empty_is_error ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_blank_is_error ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_empty_is_error ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_decimal_result_has_no_trailing_zero ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_avoids_binary_drift ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_factorial_over_cap_is_out_of_range ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_integer_arithmetic ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_large_exponent_fractional_base_converges_to_e ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_log10_of_zero_is_domain_error ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_power_small_integer_stays_exact ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_log_of_negative_is_domain_error ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_log_of_zero_is_domain_error ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_vars_empty_object_is_valid ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_sqrt_of_negative_is_domain_error ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_vars_rejects_non_scalar_value ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_vars_string_value_round_trips ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_vars_unknown_variable_is_error ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_with_variables_rejects_reserved_e ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_factorial_over_cap_is_out_of_range ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_vars_invalid_json_is_error ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_vars_number_value_works ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_integer_arithmetic ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_unknown_function_is_error ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_exact_unknown_variable_is_error ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_unknown_variable_is_error ... ok [INFO] [stdout] test tools::scientific::tests::cos_ninety ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_negative_base_fractional_exp_is_domain_error ... ok [INFO] [stdout] test tools::scientific::tests::cos_one_eighty ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_unknown_function_is_error ... ok [INFO] [stdout] test tools::scientific::tests::cos_sixty ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_with_variables_rejects_reserved_pi ... ok [INFO] [stdout] test tools::programmable::tests::evaluate_trig_exact ... ok [INFO] [stdout] test tools::scientific::tests::cos_zero ... ok [INFO] [stdout] test tools::scientific::tests::factorial_hundred_ends_with_expected_trailing_zeros ... ok [INFO] [stdout] test tools::scientific::tests::factorial_above_range_reports_error ... ok [INFO] [stdout] test tools::scientific::tests::factorial_five ... ok [INFO] [stdout] test tools::scientific::tests::factorial_negative_reports_error ... ok [INFO] [stdout] test tools::scientific::tests::factorial_fifty_digits_match_reference ... ok [INFO] [stdout] test tools::scientific::tests::factorial_max_input_fits_in_payload ... ok [INFO] [stdout] test tools::scientific::tests::factorial_one ... ok [INFO] [stdout] test tools::scientific::tests::log10_hundred ... ok [INFO] [stdout] test tools::scientific::tests::log10_thousand ... ok [INFO] [stdout] test tools::scientific::tests::log10_zero_reports_error ... ok [INFO] [stdout] test tools::scientific::tests::log_of_e_is_one ... ok [INFO] [stdout] test tools::scientific::tests::log_zero_reports_error ... ok [INFO] [stdout] test tools::scientific::tests::sin_forty_five_uses_exact_table ... ok [INFO] [stdout] test tools::scientific::tests::factorial_twenty ... ok [INFO] [stdout] test tools::scientific::tests::sin_full_circle_normalizes_to_zero ... ok [INFO] [stdout] test tools::scientific::tests::factorial_twenty_one_now_exact_past_u64 ... ok [INFO] [stdout] test tools::scientific::tests::factorial_zero ... ok [INFO] [stdout] test tools::scientific::tests::sin_ninety ... ok [INFO] [stdout] test tools::scientific::tests::sin_non_integer_angle_falls_back ... ok [INFO] [stdout] test tools::scientific::tests::sin_one_eighty ... ok [INFO] [stdout] test tools::scientific::tests::sin_zero ... ok [INFO] [stdout] test tools::scientific::tests::sqrt_irrational ... ok [INFO] [stdout] test tools::scientific::tests::sqrt_negative_reports_error ... ok [INFO] [stdout] test tools::scientific::tests::sqrt_perfect_square ... ok [INFO] [stdout] test tools::scientific::tests::tan_forty_five ... ok [INFO] [stdout] test tools::scientific::tests::sin_non_notable_angle_falls_back ... ok [INFO] [stdout] test tools::scientific::tests::sin_thirty ... ok [INFO] [stdout] test tools::scientific::tests::tan_negative_two_seventy_is_asymptote ... ok [INFO] [stdout] test tools::scientific::tests::tan_one_eighty ... ok [INFO] [stdout] test tools::scientific::tests::tan_ninety_is_asymptote ... ok [INFO] [stdout] test tools::scientific::tests::log_negative_reports_error ... ok [INFO] [stdout] test tools::scientific::tests::tan_two_seventy_is_asymptote ... ok [INFO] [stdout] test tools::scientific::tests::tan_zero ... ok [INFO] [stdout] test tools::scientific::tests::sin_negative_thirty_normalizes_to_three_thirty ... ok [INFO] [stdout] test tools::statistics::tests::binomial_pmf_basic ... ok [INFO] [stdout] test tools::statistics::tests::binomial_pmf_invalid_p_errors ... ok [INFO] [stdout] test tools::statistics::tests::binomial_pmf_p_one_boundary ... ok [INFO] [stdout] test tools::statistics::tests::confidence_interval_rejects_boundary_levels ... ok [INFO] [stdout] test tools::statistics::tests::binomial_pmf_p_zero_boundary ... ok [INFO] [stdout] test tools::statistics::tests::correlation_constant_series_errors ... ok [INFO] [stdout] test tools::statistics::tests::confidence_interval_centered_on_mean ... ok [INFO] [stdout] test tools::statistics::tests::correlation_perfect_negative ... ok [INFO] [stdout] test tools::statistics::tests::correlation_perfect_positive ... ok [INFO] [stdout] test tools::statistics::tests::correlation_survives_mixed_extreme_scales ... ok [INFO] [stdout] test tools::statistics::tests::correlation_unequal_length_errors ... ok [INFO] [stdout] test tools::statistics::tests::iqr_basic ... ok [INFO] [stdout] test tools::statistics::tests::mean_empty_array_errors ... ok [INFO] [stdout] test tools::statistics::tests::linear_regression_y_equals_2x_plus_1 ... ok [INFO] [stdout] test tools::statistics::tests::mean_simple ... ok [INFO] [stdout] test tools::statistics::tests::mean_with_negatives ... ok [INFO] [stdout] test tools::statistics::tests::mode_multi_modal ... ok [INFO] [stdout] test tools::statistics::tests::mode_single_dominant ... ok [INFO] [stdout] test tools::statistics::tests::normal_cdf_one_sigma ... ok [INFO] [stdout] test tools::statistics::tests::normal_cdf_three_sigma_matches_reference ... ok [INFO] [stdout] test tools::statistics::tests::normal_pdf_at_mean_is_max ... ok [INFO] [stdout] test tools::statistics::tests::normal_cdf_symmetric_about_mean ... ok [INFO] [stdout] test tools::statistics::tests::median_even_length_averages_middles ... ok [INFO] [stdout] test tools::statistics::tests::parse_error_in_array_propagates ... ok [INFO] [stdout] test tools::statistics::tests::median_odd_length ... ok [INFO] [stdout] test tools::statistics::tests::percentile_25_quartile ... ok [INFO] [stdout] test tools::statistics::tests::stddev_sample_matches_sqrt_variance ... ok [INFO] [stdout] test tools::statistics::tests::percentile_50_matches_median ... ok [INFO] [stdout] test tools::statistics::tests::t_test_against_known_mean ... ok [INFO] [stdout] test tools::statistics::tests::quartile_q1_q3 ... ok [INFO] [stdout] test tools::statistics::tests::variance_population_for_same_data ... ok [INFO] [stdout] test tools::statistics::tests::variance_sample_default ... ok [INFO] [stdout] test tools::unit_converter::tests::allows_negative_voltage ... ok [INFO] [stdout] test tools::unit_converter::tests::auto_detect_km_to_mi ... ok [INFO] [stdout] test tools::unit_converter::tests::auto_detect_rejects_negative_length ... ok [INFO] [stdout] test tools::unit_converter::tests::category_parse_case_insensitive ... ok [INFO] [stdout] test tools::unit_converter::tests::auto_detect_allows_negative_temperature ... ok [INFO] [stdout] test tools::unit_converter::tests::allows_negative_temperature ... ok [INFO] [stdout] test tools::unit_converter::tests::auto_detect_temperature_celsius_fahrenheit ... ok [INFO] [stdout] test tools::unit_converter::tests::cross_category_unit_in_wrong_category ... ok [INFO] [stdout] test tools::unit_converter::tests::auto_detect_cross_category_error ... ok [INFO] [stdout] test tools::unit_converter::tests::invalid_number_returns_error ... ok [INFO] [stdout] test tools::unit_converter::tests::rejects_negative_length ... ok [INFO] [stdout] test tools::unit_converter::tests::km_to_m_happy_path ... ok [INFO] [stdout] test tools::unit_converter::tests::unknown_unit_error ... ok [INFO] [stdout] test tools::vector::tests::dot_product_longer_arrays ... ok [INFO] [stdout] test tools::vector::tests::dot_product_mismatched_lengths ... ok [INFO] [stdout] test tools::vector::tests::dot_product_parse_error ... ok [INFO] [stdout] test tools::vector::tests::magnitude_array_3d ... ok [INFO] [stdout] test tools::vector::tests::dot_product_known_identity ... ok [INFO] [stdout] test tools::unit_converter::tests::rejects_negative_mass ... ok [INFO] [stdout] test tools::unit_converter::tests::unknown_category_error ... ok [INFO] [stdout] test tools::vector::tests::magnitude_array_large_components_no_overflow ... ok [INFO] [stdout] test tools::vector::tests::magnitude_array_empty ... ok [INFO] [stdout] test tools::vector::tests::scale_array_basic ... ok [INFO] [stdout] test tools::vector::tests::scale_array_invalid_scalar ... ok [INFO] [stdout] test tools::vector::tests::scale_array_with_negative_scalar ... ok [INFO] [stdout] test tools::vector::tests::magnitude_array_many_elements ... ok [INFO] [stdout] test tools::vector::tests::magnitude_array_tiny_components_no_underflow ... ok [INFO] [stdout] test tools::vector::tests::sum_array_basic ... ok [INFO] [stdout] test tools::vector::tests::sum_array_empty_string_is_invalid_input ... ok [INFO] [stdout] test tools::vector::tests::sum_array_with_fractions ... ok [INFO] [stdout] test tools::vector::tests::magnitude_array_pythagoras ... ok [INFO] [stdout] test tools::vector::tests::sum_array_invalid_input ... ok [INFO] [stdout] test tools::vector::tests::magnitude_array_pythagorean_scaled ... ok [INFO] [stdout] test tools::vector::tests::sum_array_tail_only ... ok [INFO] [stdout] test transport::async_stdio::unix::tests::set_non_blocking_is_idempotent ... ok [INFO] [stdout] test transport::async_stdio::unix::tests::roundtrip_short_message ... ok [INFO] [stdout] test transport::async_stdio::unix::tests::reader_waits_for_writer_across_yield ... ok [INFO] [stdout] test tools::datetime::tests::list_timezones_all_keyword ... ok [INFO] [stdout] test tools::datetime::tests::list_timezones_unknown_region_errors ... ok [INFO] [stdout] test tools::datetime::tests::list_timezones_europe ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 887 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.36s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/release/build/arithma/66bfbaabab5b2431/out/arithma-66bfbaabab5b2431) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Doc-tests math_calc [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test src/engine/expression.rs - engine::expression::evaluate_with_variables (line 122) ... ok [INFO] [stdout] test src/engine/expression.rs - engine::expression::evaluate (line 107) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stdout] all doctests ran in 11.27s; merged doctests compilation took 11.25s [INFO] running `Command { std: "docker" "inspect" "b114082097e4f1bdafa14d778b4fd27fc2f10e1759c0cf5dc9b87b08dd2adf52", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b114082097e4f1bdafa14d778b4fd27fc2f10e1759c0cf5dc9b87b08dd2adf52", kill_on_drop: false }` [INFO] [stdout] b114082097e4f1bdafa14d778b4fd27fc2f10e1759c0cf5dc9b87b08dd2adf52