[INFO] cloning repository https://github.com/bhase/raytracerchallenge
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/bhase/raytracerchallenge" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbhase%2Fraytracerchallenge", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbhase%2Fraytracerchallenge'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e8ae197a78c408803ba0318af7c813218e1003e6
[INFO] testing bhase/raytracerchallenge against beta-2020-10-09 for beta-1.48-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbhase%2Fraytracerchallenge" "/workspace/builds/worker-13/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-13/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/bhase/raytracerchallenge on toolchain beta-2020-10-09
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2020-10-09" "read-manifest" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/bhase/raytracerchallenge
[INFO] removed 0 missing tests
[INFO] finished tweaking git repo https://github.com/bhase/raytracerchallenge
[INFO] tweaked toml for git repo https://github.com/bhase/raytracerchallenge written to /workspace/builds/worker-13/source/Cargo.toml
[INFO] crate git repo https://github.com/bhase/raytracerchallenge already has a lockfile, it will not be regenerated
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2020-10-09" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded walkdir v2.2.5
[INFO] [stderr]   Downloaded pathdiff v0.1.0
[INFO] [stderr]   Downloaded pest_derive v1.0.8
[INFO] [stderr]   Downloaded ignore v0.4.4
[INFO] [stderr]   Downloaded crossbeam-epoch v0.6.0
[INFO] [stderr]   Downloaded same-file v1.0.3
[INFO] [stderr]   Downloaded memchr v2.1.0
[INFO] [stderr]   Downloaded term_size v0.3.1
[INFO] [stderr]   Downloaded gherkin_rust v0.4.1
[INFO] [stderr]   Downloaded globwalk v0.5.0
[INFO] [stderr]   Downloaded cucumber_rust v0.5.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-13/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-13/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" "rustops/crates-build-env@sha256:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2020-10-09" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 9314b40bf1337f134654ec442e962a45466f68edc0798ace47d43c06b99641b0
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "9314b40bf1337f134654ec442e962a45466f68edc0798ace47d43c06b99641b0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9314b40bf1337f134654ec442e962a45466f68edc0798ace47d43c06b99641b0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9314b40bf1337f134654ec442e962a45466f68edc0798ace47d43c06b99641b0", kill_on_drop: false }`
[INFO] [stdout] 9314b40bf1337f134654ec442e962a45466f68edc0798ace47d43c06b99641b0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-13/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-13/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=warn" "-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" "rustops/crates-build-env@sha256:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2020-10-09" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] [stdout] c97e7bec56e157ef444a9eb3a1f1df66a81cdddcc44c957cee8ece78fb5aa77f
[INFO] running `Command { std: "docker" "start" "-a" "c97e7bec56e157ef444a9eb3a1f1df66a81cdddcc44c957cee8ece78fb5aa77f", kill_on_drop: false }`
[INFO] [stderr]    Compiling raytracer_challenge v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 1.27s
[INFO] running `Command { std: "docker" "inspect" "c97e7bec56e157ef444a9eb3a1f1df66a81cdddcc44c957cee8ece78fb5aa77f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c97e7bec56e157ef444a9eb3a1f1df66a81cdddcc44c957cee8ece78fb5aa77f", kill_on_drop: false }`
[INFO] [stdout] c97e7bec56e157ef444a9eb3a1f1df66a81cdddcc44c957cee8ece78fb5aa77f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-13/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-13/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=warn" "-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" "rustops/crates-build-env@sha256:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2020-10-09" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] aeae337adad8c703dc773b419f178931ba745cfd73171a84f5417fa5b2230b3c
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "aeae337adad8c703dc773b419f178931ba745cfd73171a84f5417fa5b2230b3c", kill_on_drop: false }`
[INFO] [stderr]    Compiling regex v1.0.5
[INFO] [stderr]    Compiling same-file v1.0.3
[INFO] [stderr]    Compiling derive_builder v0.5.1
[INFO] [stderr]    Compiling pathdiff v0.1.0
[INFO] [stderr]    Compiling memchr v2.1.0
[INFO] [stderr]    Compiling log v0.4.5
[INFO] [stderr]    Compiling term_size v0.3.1
[INFO] [stderr]    Compiling regex-syntax v0.6.2
[INFO] [stderr]    Compiling derive_builder_core v0.2.0
[INFO] [stderr]    Compiling pest_derive v1.0.8
[INFO] [stderr]    Compiling thread_local v0.3.6
[INFO] [stderr]    Compiling crossbeam-epoch v0.6.0
[INFO] [stderr]    Compiling parking_lot_core v0.3.1
[INFO] [stderr]    Compiling walkdir v2.2.5
[INFO] [stderr]    Compiling textwrap v0.10.0
[INFO] [stderr]    Compiling clap v2.32.0
[INFO] [stderr]    Compiling parking_lot v0.6.4
[INFO] [stderr]    Compiling aho-corasick v0.6.8
[INFO] [stderr]    Compiling crossbeam-channel v0.2.6
[INFO] [stderr]    Compiling gherkin_rust v0.4.1
[INFO] [stderr]    Compiling globset v0.4.2
[INFO] [stderr]    Compiling ignore v0.4.4
[INFO] [stderr]    Compiling globwalk v0.5.0
[INFO] [stderr]    Compiling cucumber_rust v0.5.0
[INFO] [stderr]    Compiling raytracer_challenge v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished test [unoptimized + debuginfo] target(s) in 26.28s
[INFO] running `Command { std: "docker" "inspect" "aeae337adad8c703dc773b419f178931ba745cfd73171a84f5417fa5b2230b3c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "aeae337adad8c703dc773b419f178931ba745cfd73171a84f5417fa5b2230b3c", kill_on_drop: false }`
[INFO] [stdout] aeae337adad8c703dc773b419f178931ba745cfd73171a84f5417fa5b2230b3c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-13/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-13/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=warn" "-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" "rustops/crates-build-env@sha256:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2020-10-09" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 1370775a6ca9fa0b6a8d6067ba7c99a4254e5a831a4184e76b67d150ef143de5
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "1370775a6ca9fa0b6a8d6067ba7c99a4254e5a831a4184e76b67d150ef143de5", kill_on_drop: false }`
[INFO] [stderr]     Finished test [unoptimized + debuginfo] target(s) in 0.08s
[INFO] [stderr]      Running /opt/rustwide/target/debug/deps/raytracer_challenge-c4c06ec06014b11e
[INFO] [stdout] 
[INFO] [stderr]      Running /opt/rustwide/target/debug/deps/raytracer-f594ab914c27d3db
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
[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
[INFO] [stdout] 
[INFO] [stderr]      Running /opt/rustwide/target/debug/deps/cucumber-ed78211ba68b128f
[INFO] [stdout] [0m[1m[32m[Cucumber v0.5.0]
[INFO] [stdout] 
[INFO] [stdout] [0m[0m[1m[37mFeature: Tuples, Vectors, and Points               [0m[37m features/tuples.feature:1:1
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: A tuple with w=1.0 is a point          [0m[37m features/tuples.feature:3:11
[INFO] [stdout] [0m[0m[32m  ✔ Given a := tuple(4.3, -4.2, 3.1, 1.0)          [0m[37m features/tuples.feature:4:3
[INFO] [stdout] [0m[0m[32m  ✔ Then a.x = 4.3                                 [0m[37m features/tuples.feature:5:3
[INFO] [stdout] [0m[0m[32m  ✔ And a.y = -4.2                                 [0m[37m features/tuples.feature:6:5
[INFO] [stdout] [0m[0m[32m  ✔ And a.z = 3.1                                  [0m[37m features/tuples.feature:7:5
[INFO] [stdout] [0m[0m[32m  ✔ And a.w = 1.0                                  [0m[37m features/tuples.feature:8:5
[INFO] [stdout] [0m[0m[32m  ✔ And a is a point                               [0m[37m features/tuples.feature:9:5
[INFO] [stdout] [0m[0m[32m  ✔ And a is not a vector                         [0m[37m features/tuples.feature:10:5
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: A tuple with w=0 is a vector          [0m[37m features/tuples.feature:12:11
[INFO] [stdout] [0m[0m[32m  ✔ Given a := tuple(4.3, -4.2, 3.1, 0.0)         [0m[37m features/tuples.feature:13:3
[INFO] [stdout] [0m[0m[32m  ✔ Then a.x = 4.3                                [0m[37m features/tuples.feature:14:3
[INFO] [stdout] [0m[0m[32m  ✔ And a.y = -4.2                                [0m[37m features/tuples.feature:15:5
[INFO] [stdout] [0m[0m[32m  ✔ And a.z = 3.1                                 [0m[37m features/tuples.feature:16:5
[INFO] [stdout] [0m[0m[32m  ✔ And a.w = 0.0                                 [0m[37m features/tuples.feature:17:5
[INFO] [stdout] [0m[0m[32m  ✔ And a is not a point                          [0m[37m features/tuples.feature:18:5
[INFO] [stdout] [0m[0m[32m  ✔ And a is a vector                             [0m[37m features/tuples.feature:19:5
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: "point" describes tuples with w=1     [0m[37m features/tuples.feature:21:11
[INFO] [stdout] [0m[0m[32m  ✔ Given p := point(4, -4, 3)                    [0m[37m features/tuples.feature:22:3
[INFO] [stdout] [0m[0m[32m  ✔ Then p = tuple(4, -4, 3, 1)                   [0m[37m features/tuples.feature:23:3
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: "vector" describes tuples with w=0    [0m[37m features/tuples.feature:25:11
[INFO] [stdout] [0m[0m[32m  ✔ Given v := vector(4, -4, 3)                   [0m[37m features/tuples.feature:26:3
[INFO] [stdout] [0m[0m[32m  ✔ Then v = tuple(4, -4, 3, 0)                   [0m[37m features/tuples.feature:27:3
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: Adding two tuples                     [0m[37m features/tuples.feature:29:11
[INFO] [stdout] [0m[0m[32m  ✔ Given a1 := tuple(3, -2, 5, 1)                [0m[37m features/tuples.feature:30:3
[INFO] [stdout] [0m[0m[32m  ✔ And a2 := tuple(-2, 3, 1, 0)                  [0m[37m features/tuples.feature:31:5
[INFO] [stdout] [0m[0m[32m  ✔ Then a1 + a2 = tuple(1, 1, 6, 1)              [0m[37m features/tuples.feature:32:4
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: Subtracting two points                [0m[37m features/tuples.feature:34:11
[INFO] [stdout] [0m[0m[32m  ✔ Given p1 := point(3, 2, 1)                    [0m[37m features/tuples.feature:35:3
[INFO] [stdout] [0m[0m[32m  ✔ And p2 := point(5, 6, 7)                      [0m[37m features/tuples.feature:36:5
[INFO] [stdout] [0m[0m[32m  ✔ Then p1 - p2 = vector(-2, -4, -6)             [0m[37m features/tuples.feature:37:3
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: Subtracting a vector from a point     [0m[37m features/tuples.feature:39:11
[INFO] [stdout] [0m[0m[32m  ✔ Given p := point(3, 2, 1)                     [0m[37m features/tuples.feature:40:3
[INFO] [stdout] [0m[0m[32m  ✔ And v := vector(5, 6, 7)                      [0m[37m features/tuples.feature:41:5
[INFO] [stdout] [0m[0m[32m  ✔ Then p - v = point(-2, -4, -6)                [0m[37m features/tuples.feature:42:3
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: Subtracting two vectors               [0m[37m features/tuples.feature:44:11
[INFO] [stdout] [0m[0m[32m  ✔ Given v1 := vector(3, 2, 1)                   [0m[37m features/tuples.feature:45:3
[INFO] [stdout] [0m[0m[32m  ✔ And v2 := vector(5, 6, 7)                     [0m[37m features/tuples.feature:46:5
[INFO] [stdout] [0m[0m[32m  ✔ Then v1 - v2 = vector(-2, -4, -6)             [0m[37m features/tuples.feature:47:3
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: Subtracting a vector from the zero vector
[INFO] [stdout]                                                  [0m[37m features/tuples.feature:49:11
[INFO] [stdout] [0m[0m[32m  ✔ Given zero := vector(0, 0, 0)                 [0m[37m features/tuples.feature:50:3
[INFO] [stdout] [0m[0m[32m  ✔ And v2 := vector(1, -2, 3)                    [0m[37m features/tuples.feature:51:5
[INFO] [stdout] [0m[0m[32m  ✔ Then zero - v2 = vector(-1, 2, -3)            [0m[37m features/tuples.feature:52:3
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: Negating a tuple                      [0m[37m features/tuples.feature:54:11
[INFO] [stdout] [0m[0m[32m  ✔ Given a := tuple(1, -2, 3, -4)                [0m[37m features/tuples.feature:55:3
[INFO] [stdout] [0m[0m[32m  ✔ Then -a = tuple(-1, 2, -3, 4)                 [0m[37m features/tuples.feature:56:3
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: Multiplying a tuple by a scalar       [0m[37m features/tuples.feature:58:11
[INFO] [stdout] [0m[0m[32m  ✔ Given a := tuple(1, -2, 3, -4)                [0m[37m features/tuples.feature:59:3
[INFO] [stdout] [0m[0m[32m  ✔ Then a * 3.5 = tuple(3.5, -7, 10.5, -14)      [0m[37m features/tuples.feature:60:3
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: Multiplying a tuple by a fraction     [0m[37m features/tuples.feature:62:11
[INFO] [stdout] [0m[0m[32m  ✔ Given a := tuple(1, -2, 3, -4)                [0m[37m features/tuples.feature:63:3
[INFO] [stdout] [0m[0m[32m  ✔ Then a * 0.5 = tuple(0.5, -1, 1.5, -2)        [0m[37m features/tuples.feature:64:3
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: Dividing a tuple by a scalar          [0m[37m features/tuples.feature:66:11
[INFO] [stdout] [0m[0m[32m  ✔ Given a := tuple(1, -2, 3, -4)                [0m[37m features/tuples.feature:67:3
[INFO] [stdout] [0m[0m[32m  ✔ Then a / 2 = tuple(0.5, -1, 1.5, -2)          [0m[37m features/tuples.feature:68:3
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: Magnitude of vector(1, 0, 0)          [0m[37m features/tuples.feature:70:11
[INFO] [stdout] [0m[0m[32m  ✔ Given v := vector(1, 0, 0)                    [0m[37m features/tuples.feature:71:3
[INFO] [stdout] [0m[0m[32m  ✔ Then magnitude(v) = 1                         [0m[37m features/tuples.feature:72:3
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: Magnitude of vector(0, 1, 0)          [0m[37m features/tuples.feature:74:11
[INFO] [stdout] [0m[0m[32m  ✔ Given v := vector(0, 1, 0)                    [0m[37m features/tuples.feature:75:3
[INFO] [stdout] [0m[0m[32m  ✔ Then magnitude(v) = 1                         [0m[37m features/tuples.feature:76:3
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: Magnitude of vector(0, 0, 1)          [0m[37m features/tuples.feature:78:11
[INFO] [stdout] [0m[0m[32m  ✔ Given v := vector(0, 0, 1)                    [0m[37m features/tuples.feature:79:3
[INFO] [stdout] [0m[0m[32m  ✔ Then magnitude(v) = 1                         [0m[37m features/tuples.feature:80:3
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: Magnitude of vector(1, 2, 3)          [0m[37m features/tuples.feature:82:11
[INFO] [stdout] [0m[0m[32m  ✔ Given v := vector(1, 2, 3)                    [0m[37m features/tuples.feature:83:3
[INFO] [stdout] [0m[0m[32m  ✔ Then magnitude(v) = √14                       [0m[37m features/tuples.feature:84:3
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: Magnitude of vector(-1, -2, -3)       [0m[37m features/tuples.feature:86:11
[INFO] [stdout] [0m[0m[32m  ✔ Given v := vector(-1, -2, -3)                 [0m[37m features/tuples.feature:87:3
[INFO] [stdout] [0m[0m[32m  ✔ Then magnitude(v) = √14                       [0m[37m features/tuples.feature:88:3
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: Normalizing vector(4, 0, 0) gives (1, 0, 0)
[INFO] [stdout]                                                  [0m[37m features/tuples.feature:90:11
[INFO] [stdout] [0m[0m[32m  ✔ Given v := vector(4, 0, 0)                    [0m[37m features/tuples.feature:91:3
[INFO] [stdout] [0m[0m[32m  ✔ Then normalize(v) = vector(1, 0, 0)           [0m[37m features/tuples.feature:92:3
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: Normalizing vector(1, 2, 3)           [0m[37m features/tuples.feature:94:11
[INFO] [stdout] [0m[0m[32m  ✔ Given v := vector(1, 2, 3)                    [0m[37m features/tuples.feature:95:3
[INFO] [stdout] [0m[0m[32m  ✔ Then normalize(v) = approximately vector(0.26726, 0.53452, 0.80178)
[INFO] [stdout]                                                   [0m[37m features/tuples.feature:97:3
[INFO] [stdout] [0m
[INFO] [stdout] [0m[1m[37m Scenario: The magnitude of a normalized vector  [0m[37m features/tuples.feature:99:11
[INFO] [stdout] [0m[0m[32m  ✔ Given v := vector(1, 2, 3)                   [0m[37m features/tuples.feature:100:3
[INFO] [stdout] [0m[0m[36m  - When norm := normalize(v)                    [0m[37m features/tuples.feature:101:3
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - Then magnitude(norm) = 1                     [0m[37m features/tuples.feature:102:3
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] 
[INFO] [stdout] [0m[1m[37m Scenario: The dot product of two tuples        [0m[37m features/tuples.feature:104:11
[INFO] [stdout] [0m[0m[36m  - Given a := vector(1, 2, 3)                   [0m[37m features/tuples.feature:105:3
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - And b := vector(2, 3, 4)                     [0m[37m features/tuples.feature:106:5
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - Then a dot b = 20                            [0m[37m features/tuples.feature:107:3
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] 
[INFO] [stdout] [0m[1m[37m Scenario: Cross product of two vectors         [0m[37m features/tuples.feature:109:11
[INFO] [stdout] [0m[0m[36m  - Given a := vector(1, 2, 3)                   [0m[37m features/tuples.feature:110:3
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - And b := vector(2, 3, 4)                     [0m[37m features/tuples.feature:111:5
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - Then a cross b = vector(-1, 2, -1)           [0m[37m features/tuples.feature:112:3
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - And b cross a = vector(1, -2, 1)             [0m[37m features/tuples.feature:113:5
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] 
[INFO] [stdout] [0m[1m[37m Scenario: Colors are (red, green, blue) tuples [0m[37m features/tuples.feature:115:11
[INFO] [stdout] [0m[0m[36m  - Given c := color(-0.5, 0.4, 1.7)             [0m[37m features/tuples.feature:116:3
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - Then c.red = -0.5                            [0m[37m features/tuples.feature:117:3
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stderr]    Doc-tests raytracer_challenge
[INFO] [stdout] [0m[36m  - And c.green = 0.4                            [0m[37m features/tuples.feature:118:5
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - And c.blue = 1.7                             [0m[37m features/tuples.feature:119:5
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] 
[INFO] [stdout] [0m[1m[37m Scenario: Adding colors                        [0m[37m features/tuples.feature:121:11
[INFO] [stdout] [0m[0m[36m  - Given c1 := color(0.9, 0.6, 0.75)            [0m[37m features/tuples.feature:122:3
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - And c2 := color(0.7, 0.1, 0.25)              [0m[37m features/tuples.feature:123:5
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - Then c1 + c2 = color(1.6, 0.7, 1.0)          [0m[37m features/tuples.feature:124:4
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] 
[INFO] [stdout] [0m[1m[37m Scenario: Subtracting colors                   [0m[37m features/tuples.feature:126:11
[INFO] [stdout] [0m[0m[36m  - Given c1 := color(0.9, 0.6, 0.75)            [0m[37m features/tuples.feature:127:3
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - And c2 := color(0.7, 0.1, 0.25)              [0m[37m features/tuples.feature:128:5
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - Then c1 - c2 = color(0.2, 0.5, 0.5)          [0m[37m features/tuples.feature:129:4
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] 
[INFO] [stdout] [0m[1m[37m Scenario: Multiplying a color by a scalar      [0m[37m features/tuples.feature:131:11
[INFO] [stdout] [0m[0m[36m  - Given c := color(0.2, 0.3, 0.4)              [0m[37m features/tuples.feature:132:3
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - Then c * 2 = color(0.4, 0.6, 0.8)            [0m[37m features/tuples.feature:133:3
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] 
[INFO] [stdout] [0m[1m[37m Scenario: Multiplying colors                   [0m[37m features/tuples.feature:135:11
[INFO] [stdout] [0m[0m[36m  - Given c1 := color(1, 0.2, 0.4)               [0m[37m features/tuples.feature:136:3
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - And c2 := color(0.9, 1, 0.1)                 [0m[37m features/tuples.feature:137:5
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - Then c1 * c2 = color(0.9, 0.2, 0.04)         [0m[37m features/tuples.feature:138:4
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] 
[INFO] [stdout] [0m[1m[37m Scenario: Reflecting a vector approaching at 45°
[INFO] [stdout]                                                 [0m[37m features/tuples.feature:140:11
[INFO] [stdout] [0m[0m[32m  ✔ Given v := vector(1, -1, 0)                  [0m[37m features/tuples.feature:141:3
[INFO] [stdout] [0m[0m[36m  - And n := vector(0, 1, 0)                     [0m[37m features/tuples.feature:142:5
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - When r := reflect(v, n)                      [0m[37m features/tuples.feature:143:3
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - Then r = vector(1, 1, 0)                     [0m[37m features/tuples.feature:144:3
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] 
[INFO] [stdout] [0m[1m[37m Scenario: Reflecting a vector off a slanted surface
[INFO] [stdout]                                                 [0m[37m features/tuples.feature:146:11
[INFO] [stdout] [0m[0m[32m  ✔ Given v := vector(0, -1, 0)                  [0m[37m features/tuples.feature:147:3
[INFO] [stdout] [0m[0m[36m  - And n := vector(√2/2, √2/2, 0)               [0m[37m features/tuples.feature:148:5
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - When r := reflect(v, n)                      [0m[37m features/tuples.feature:149:3
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] [0m[36m  - Then r = vector(1, 0, 0)                     [0m[37m features/tuples.feature:150:3
[INFO] [stdout] [0m[0m[33m    ⚡ [0mNot yet implemented (skipped)
[INFO] [stdout] 
[INFO] [stdout] [0m[1m[37m1 features
[INFO] [stdout] 30 scenarios ([0m[1m[36m10 skipped[0m[1m[37m, [0m[1m[32m20 passed[0m[1m[37m)
[INFO] [stdout] 88 steps ([0m[1m[36m30 skipped[0m[1m[37m, [0m[1m[32m58 passed[0m[1m[37m)
[INFO] [stdout] [0m
[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
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "1370775a6ca9fa0b6a8d6067ba7c99a4254e5a831a4184e76b67d150ef143de5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1370775a6ca9fa0b6a8d6067ba7c99a4254e5a831a4184e76b67d150ef143de5", kill_on_drop: false }`
[INFO] [stdout] 1370775a6ca9fa0b6a8d6067ba7c99a4254e5a831a4184e76b67d150ef143de5
