[INFO] cloning repository https://github.com/Dalot/ray_tracer [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Dalot/ray_tracer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDalot%2Fray_tracer", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDalot%2Fray_tracer'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] f424fc7cfa391bb121d894aef4da3bdb08d495e6 [INFO] testing Dalot/ray_tracer against master#62efba8a050c64249dab942951bb28f710208bc8 for pr-90799 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDalot%2Fray_tracer" "/workspace/builds/worker-93/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-93/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/Dalot/ray_tracer on toolchain 62efba8a050c64249dab942951bb28f710208bc8 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+62efba8a050c64249dab942951bb28f710208bc8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/Dalot/ray_tracer [INFO] removed 0 missing tests [INFO] finished tweaking git repo https://github.com/Dalot/ray_tracer [INFO] tweaked toml for git repo https://github.com/Dalot/ray_tracer written to /workspace/builds/worker-93/source/Cargo.toml [INFO] crate git repo https://github.com/Dalot/ray_tracer already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+62efba8a050c64249dab942951bb28f710208bc8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-93/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-93/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e8397a04204aaf8b9f284182a6f9e27a3c2e67044d0943b4415b160bfc957681" "/opt/rustwide/cargo-home/bin/cargo" "+62efba8a050c64249dab942951bb28f710208bc8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] eba2d814de8de7c078ab3c974be962e219fa3e0eb1e70d9bedf34e3fe6345645 [INFO] running `Command { std: "docker" "start" "-a" "eba2d814de8de7c078ab3c974be962e219fa3e0eb1e70d9bedf34e3fe6345645", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "eba2d814de8de7c078ab3c974be962e219fa3e0eb1e70d9bedf34e3fe6345645", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "eba2d814de8de7c078ab3c974be962e219fa3e0eb1e70d9bedf34e3fe6345645", kill_on_drop: false }` [INFO] [stdout] eba2d814de8de7c078ab3c974be962e219fa3e0eb1e70d9bedf34e3fe6345645 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-93/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-93/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e8397a04204aaf8b9f284182a6f9e27a3c2e67044d0943b4415b160bfc957681" "/opt/rustwide/cargo-home/bin/cargo" "+62efba8a050c64249dab942951bb28f710208bc8" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 92057d9337e0e1c50d26f8dafb6932d0623f98264171bd570f98ec6148bc93ea [INFO] running `Command { std: "docker" "start" "-a" "92057d9337e0e1c50d26f8dafb6932d0623f98264171bd570f98ec6148bc93ea", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Compiling libc v0.2.102 [INFO] [stderr] Compiling proc-macro2 v1.0.29 [INFO] [stderr] Compiling syn v1.0.77 [INFO] [stderr] Compiling parking_lot_core v0.8.5 [INFO] [stderr] Compiling smallvec v1.6.1 [INFO] [stderr] Compiling scopeguard v1.1.0 [INFO] [stderr] Compiling memchr v2.4.1 [INFO] [stderr] Compiling async-trait v0.1.51 [INFO] [stderr] Compiling pin-project-lite v0.2.7 [INFO] [stderr] Compiling bytes v1.1.0 [INFO] [stderr] Compiling once_cell v1.8.0 [INFO] [stderr] Compiling instant v0.1.11 [INFO] [stderr] Compiling tokio v1.12.0 [INFO] [stderr] Compiling lock_api v0.4.5 [INFO] [stderr] Compiling quote v1.0.9 [INFO] [stderr] Compiling mio v0.7.13 [INFO] [stderr] Compiling signal-hook-registry v1.4.0 [INFO] [stderr] Compiling num_cpus v1.13.0 [INFO] [stderr] Compiling parking_lot v0.11.2 [INFO] [stderr] Compiling tokio-macros v1.3.0 [INFO] [stderr] Compiling ray-tracer v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 3m 39s [INFO] running `Command { std: "docker" "inspect" "92057d9337e0e1c50d26f8dafb6932d0623f98264171bd570f98ec6148bc93ea", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "92057d9337e0e1c50d26f8dafb6932d0623f98264171bd570f98ec6148bc93ea", kill_on_drop: false }` [INFO] [stdout] 92057d9337e0e1c50d26f8dafb6932d0623f98264171bd570f98ec6148bc93ea [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-93/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-93/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e8397a04204aaf8b9f284182a6f9e27a3c2e67044d0943b4415b160bfc957681" "/opt/rustwide/cargo-home/bin/cargo" "+62efba8a050c64249dab942951bb28f710208bc8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] e0b4609ac00c67a8615555a5334faa2596bb1d7d31ef54da008dc9b70eb170bf [INFO] running `Command { std: "docker" "start" "-a" "e0b4609ac00c67a8615555a5334faa2596bb1d7d31ef54da008dc9b70eb170bf", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Compiling futures-core v0.3.17 [INFO] [stderr] Compiling proc-macro-hack v0.5.19 [INFO] [stderr] Compiling futures-task v0.3.17 [INFO] [stderr] Compiling proc-macro-nested v0.1.7 [INFO] [stderr] Compiling futures-channel v0.3.17 [INFO] [stderr] Compiling crossbeam-utils v0.8.5 [INFO] [stderr] Compiling regex-syntax v0.6.25 [INFO] [stderr] Compiling futures-sink v0.3.17 [INFO] [stderr] Compiling peg-runtime v0.6.3 [INFO] [stderr] Compiling slab v0.4.4 [INFO] [stderr] Compiling fnv v1.0.7 [INFO] [stderr] Compiling pin-utils v0.1.0 [INFO] [stderr] Compiling futures-io v0.3.17 [INFO] [stderr] Compiling same-file v1.0.6 [INFO] [stderr] Compiling unicode-width v0.1.9 [INFO] [stderr] Compiling bitflags v1.3.2 [INFO] [stderr] Compiling termcolor v1.1.2 [INFO] [stderr] Compiling pathdiff v0.2.0 [INFO] [stderr] Compiling futures-macro v0.3.17 [INFO] [stderr] Compiling futures-util v0.3.17 [INFO] [stderr] Compiling thread_local v1.1.3 [INFO] [stderr] Compiling aho-corasick v0.7.18 [INFO] [stderr] Compiling bstr v0.2.17 [INFO] [stderr] Compiling terminal_size v0.1.17 [INFO] [stderr] Compiling shh v1.0.1 [INFO] [stderr] Compiling thiserror-impl v1.0.29 [INFO] [stderr] Compiling async-stream-impl v0.3.2 [INFO] [stderr] Compiling typed-builder v0.7.1 [INFO] [stderr] Compiling cute_custom_default v2.1.0 [INFO] [stderr] Compiling peg-macros v0.6.3 [INFO] [stderr] Compiling peg v0.6.3 [INFO] [stderr] Compiling textwrap v0.12.1 [INFO] [stderr] Compiling walkdir v2.3.2 [INFO] [stderr] Compiling thiserror v1.0.29 [INFO] [stderr] Compiling async-stream v0.3.2 [INFO] [stderr] Compiling regex v1.5.4 [INFO] [stderr] Compiling gherkin_rust v0.8.3 [INFO] [stderr] Compiling globset v0.4.8 [INFO] [stderr] Compiling ignore v0.4.18 [INFO] [stderr] Compiling globwalk v0.8.1 [INFO] [stderr] Compiling futures-executor v0.3.17 [INFO] [stderr] Compiling futures v0.3.17 [INFO] [stderr] Compiling cucumber_rust v0.7.3 [INFO] [stderr] Compiling ray-tracer v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 2m 26s [INFO] running `Command { std: "docker" "inspect" "e0b4609ac00c67a8615555a5334faa2596bb1d7d31ef54da008dc9b70eb170bf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e0b4609ac00c67a8615555a5334faa2596bb1d7d31ef54da008dc9b70eb170bf", kill_on_drop: false }` [INFO] [stdout] e0b4609ac00c67a8615555a5334faa2596bb1d7d31ef54da008dc9b70eb170bf [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-93/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-93/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e8397a04204aaf8b9f284182a6f9e27a3c2e67044d0943b4415b160bfc957681" "/opt/rustwide/cargo-home/bin/cargo" "+62efba8a050c64249dab942951bb28f710208bc8" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] d86fe75cb0269cdab84667bfd9c0f4b6cda1c0ad73e18bc69662bcf3b5d1a9f5 [INFO] running `Command { std: "docker" "start" "-a" "d86fe75cb0269cdab84667bfd9c0f4b6cda1c0ad73e18bc69662bcf3b5d1a9f5", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 0.61s [INFO] [stderr] Running unittests (/opt/rustwide/target/debug/deps/ray_tracer-fa96f1793c85d8f5) [INFO] [stdout] [INFO] [stderr] Running unittests (/opt/rustwide/target/debug/deps/ray_tracer-8b6f554df34f04b2) [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/tuples.rs (/opt/rustwide/target/debug/deps/tuples-ae694c37f5c44542) [INFO] [stdout] [Cucumber v0.7.3] [INFO] [stdout] Feature: Tuples feature  features/tuples.feature:1:1  [INFO] [stdout]  [INFO] [stdout]  Scenario: A tuple with w=1.0 is a point  features/tuples.feature:3:5  [INFO] [stdout]  ✔ Given a ← point(4.3, -4.2, 3.1)  features/tuples.feature:4:9  [INFO] [stdout]  ✔ Then a.x = 4.3  features/tuples.feature:5:9  [INFO] [stdout]  ✔ And a.y = -4.2  features/tuples.feature:6:9  [INFO] [stdout]  ✔ And a.z = 3.1  features/tuples.feature:7:9  [INFO] [stdout]  Scenario: A tuple with w=0 is a vector  features/tuples.feature:9:5  [INFO] [stdout]  ✔ Given a ← vector(4.3, -4.2, 3.1)  features/tuples.feature:10:9  [INFO] [stdout]  ✔ Then a.x = 4.3  features/tuples.feature:11:9  [INFO] [stdout]  ✔ And a.y = -4.2  features/tuples.feature:12:9  [INFO] [stdout]  ✔ And a.z = 3.1  features/tuples.feature:13:9  [INFO] [stdout]  Scenario: point() creates tuples with w=1  features/tuples.feature:15:5  [INFO] [stdout]  ✔ Given p ← point(4.3, -4.2, 3.1)  features/tuples.feature:16:9  [INFO] [stdout]  ✔ Then p = point(4.3, -4.2, 3.1)  features/tuples.feature:17:9  [INFO] [stdout]  Scenario: vector() creates tuples with w=0  features/tuples.feature:19:5  [INFO] [stdout]  ✔ Given v ← vector(4.3, -4.2, 3.1)  features/tuples.feature:20:9  [INFO] [stdout]  ✔ Then v = vector(4.3, -4.2, 3.1)  features/tuples.feature:21:9  [INFO] [stdout]  Scenario: point(4.3, -4.2, 3.1) is equal to point(4.3, -4.2, 3.1) [INFO] [stdout]  features/tuples.feature:23:5  [INFO] [stdout]  ✔ Given p ← point(4.3, -4.2, 3.1)  features/tuples.feature:24:9  [INFO] [stdout]  ✔ Then p == point(4.3, -4.2, 3.1)  features/tuples.feature:25:9  [INFO] [stdout]  Scenario: Adding a vector to a point  features/tuples.feature:27:5  [INFO] [stdout]  ✔ Given a1 ← point(3, -2, 5) AND a2 ← vector(-2, 3, 1) [INFO] [stdout]  features/tuples.feature:28:9  [INFO] [stdout]  ✔ Then a1 + a2 = tuple(1, 1, 6, 1)  features/tuples.feature:29:9  [INFO] [stdout]  Scenario: Adding a point to a vector  features/tuples.feature:31:5  [INFO] [stdout]  ✔ Given a1 ← vector(3, -2, 5) AND a2 ← point(-2, 3, 1) [INFO] [stdout]  features/tuples.feature:32:9  [INFO] [stdout]  ✔ Then a1 + a2 = tuple(1, 1, 6, 0)  features/tuples.feature:33:9  [INFO] [stdout]  Scenario: Subtracting a vector to a point  features/tuples.feature:35:5  [INFO] [stdout]  ✔ Given a1 ← point(3, -2, 5) AND a2 ← vector(-2, 3, 1) [INFO] [stdout]  features/tuples.feature:36:9  [INFO] [stdout]  ✔ Then a1 - a2 = point(5, -5, 4)  features/tuples.feature:37:9  [INFO] [stdout]  Scenario: Subtracting two points must give a vector [INFO] [stdout]  features/tuples.feature:39:5  [INFO] [stdout]  ✔ Given a1 ← point(3, -2, 5) AND a2 ← point(-2, 3, 1) [INFO] [stdout]  features/tuples.feature:40:9  [INFO] [stdout]  ✔ Then a1 - a2 = vector(5, -5, 4)  features/tuples.feature:41:9  [INFO] [stdout]  Scenario: Negate a vector  features/tuples.feature:43:5  [INFO] [stdout]  ✔ Given v ← vector(1, -2, 3)  features/tuples.feature:44:9  [INFO] [stdout]  ✔ Then -v = vector(-1, 2, -3)  features/tuples.feature:45:9  [INFO] [stdout]  Scenario: Multiplying a tuple by a scalar  features/tuples.feature:47:5  [INFO] [stdout]  ✔ Given a ← vector(1, -2, 3)  features/tuples.feature:48:9  [INFO] [stdout]  ✔ Then a * 3.5 = vector(3.5, -7, 10.5)  features/tuples.feature:49:9  [INFO] [stdout]  Scenario: Multiplying a tuple by a fraction  features/tuples.feature:51:5  [INFO] [stdout]  ✔ Given a ← vector(1, -2, 3)  features/tuples.feature:52:9  [INFO] [stdout]  ✔ Then a * 0.5 = vector(0.5, -1, 1.5)  features/tuples.feature:53:9  [INFO] [stdout]  Scenario: Dividing a tuple by a scalar  features/tuples.feature:55:5  [INFO] [stdout]  ✔ Given a ← vector(1, -2, 3)  features/tuples.feature:56:9  [INFO] [stdout]  ✔ Then a / 2 = vector(0.5, -1, 1.5)  features/tuples.feature:57:9  [INFO] [stdout]  Scenario: Computing the magnitude of vector(1, 0, 0) [INFO] [stdout]  features/tuples.feature:59:5  [INFO] [stdout]  ✔ Given v ← vector(1, 0, 0)  features/tuples.feature:60:9  [INFO] [stdout]  ✔ Then magnitude(v) = 1  features/tuples.feature:61:9  [INFO] [stdout]  Scenario: Computing the magnitude of vector(0, 1, 0) [INFO] [stdout]  features/tuples.feature:63:5  [INFO] [stdout]  ✔ Given v ← vector(0, 1, 0)  features/tuples.feature:64:9  [INFO] [stdout]  ✔ Then magnitude(v) = 1  features/tuples.feature:65:9  [INFO] [stdout]  Scenario: Computing the magnitude of vector(0, 0, 1) [INFO] [stdout]  features/tuples.feature:67:5  [INFO] [stdout]  ✔ Given v ← vector(0, 0, 1)  features/tuples.feature:68:9  [INFO] [stdout]  ✔ Then magnitude(v) = 1  features/tuples.feature:69:9  [INFO] [stdout]  Scenario: Computing the magnitude of vector(1, 2, 3) [INFO] [stdout]  features/tuples.feature:71:5  [INFO] [stdout]  ✔ Given [1] v ← vector(1, 2, 3)  features/tuples.feature:72:9  [INFO] [stdout]  ✔ Then magnitude(v) = √14  features/tuples.feature:73:9  [INFO] [stdout]  Scenario: Computing the magnitude of vector(-1, -2, -3) [INFO] [stdout]  features/tuples.feature:75:5  [INFO] [stdout]  ✔ Given [2] v ← vector(-1, -2, -3)  features/tuples.feature:76:9  [INFO] [stdout]  ✔ Then magnitude(v) = √14  features/tuples.feature:77:9  [INFO] [stdout]  Scenario: Normalizing vector(4, 0, 0) gives (1, 0, 0) [INFO] [stdout]  features/tuples.feature:79:5  [INFO] [stdout]  ✔ Given v ← vector(4, 0, 0)  features/tuples.feature:80:9  [INFO] [stdout]  ✔ Then normalize(v) = vector(1, 0, 0)  features/tuples.feature:81:9  [INFO] [stdout]  Scenario: Normalizing vector(1, 2, 3)  features/tuples.feature:83:5  [INFO] [stdout]  ✔ Given [normalization] v ← vector(1, 2, 3)  features/tuples.feature:84:9  [INFO] [stdout]  ✔ Then normalize(v) = approximately vector(0.26726, 0.53452, 0.80178) [INFO] [stdout]  features/tuples.feature:85:9  [INFO] [stdout]  Scenario: The magnitude of a normalized vector  features/tuples.feature:87:5  [INFO] [stdout]  ✔ Given [3] v ← vector(1, 2, 3)  features/tuples.feature:88:9  [INFO] [stdout]  ✔ When norm ← normalize(v)  features/tuples.feature:89:9  [INFO] [stdout]  ✔ Then magnitude(norm) = 1  features/tuples.feature:90:9  [INFO] [stdout]  Scenario: The dot product of two tuples  features/tuples.feature:92:5  [INFO] [stdout]  ✔ Given a ← vector(1, 2, 3) AND b ← vector(2, 3, 4) [INFO] [stdout]  features/tuples.feature:93:9  [INFO] [stdout]  ✔ Then dot(a, b) = 20  features/tuples.feature:94:9  [INFO] [stdout]  Scenario: The cross product of two vectors  features/tuples.feature:96:5  [INFO] [stdout]  ✔ Given [2] a ← vector(1, 2, 3) And b ← vector(2, 3, 4) [INFO] [stdout]  features/tuples.feature:97:9  [INFO] [stdout]  ✔ Then cross(a, b) = vector(-1, 2, -1)  features/tuples.feature:98:9  [INFO] [stdout]  ✔ And cross(b, a) = vector(1, -2, 1)  features/tuples.feature:99:9  [INFO] [stdout]  [INFO] [stdout] [Summary] [INFO] [stdout] 1 features [INFO] [stdout] 23 scenarios (23 passed) [INFO] [stdout] 52 steps (52 passed) [INFO] [stdout]  [INFO] [stdout] Finished in 0.12 seconds. [INFO] [stderr] Doc-tests ray-tracer [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] running `Command { std: "docker" "inspect" "d86fe75cb0269cdab84667bfd9c0f4b6cda1c0ad73e18bc69662bcf3b5d1a9f5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d86fe75cb0269cdab84667bfd9c0f4b6cda1c0ad73e18bc69662bcf3b5d1a9f5", kill_on_drop: false }` [INFO] [stdout] d86fe75cb0269cdab84667bfd9c0f4b6cda1c0ad73e18bc69662bcf3b5d1a9f5