[INFO] cloning repository https://github.com/mcarolan/rusty-ray [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/mcarolan/rusty-ray" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmcarolan%2Frusty-ray", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmcarolan%2Frusty-ray'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] fe5bd58d6ae69effdb61acb18b7f69d8abbda3cf [INFO] testing mcarolan/rusty-ray against master#d98a5da813da67eb189387b8ccfb73cf481275d8+rustflags=-Copt-level=3 for pr-138759-retry [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmcarolan%2Frusty-ray" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/mcarolan/rusty-ray [INFO] finished tweaking git repo https://github.com/mcarolan/rusty-ray [INFO] tweaked toml for git repo https://github.com/mcarolan/rusty-ray written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/mcarolan/rusty-ray on toolchain d98a5da813da67eb189387b8ccfb73cf481275d8 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+d98a5da813da67eb189387b8ccfb73cf481275d8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/mcarolan/rusty-ray already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+d98a5da813da67eb189387b8ccfb73cf481275d8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d98a5da813da67eb189387b8ccfb73cf481275d8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] c35dcf6d1e7d7208a6320239d93b4c2ebfe8a83d3c7194398904f8443b9d5848 [INFO] running `Command { std: "docker" "start" "-a" "c35dcf6d1e7d7208a6320239d93b4c2ebfe8a83d3c7194398904f8443b9d5848", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "c35dcf6d1e7d7208a6320239d93b4c2ebfe8a83d3c7194398904f8443b9d5848", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c35dcf6d1e7d7208a6320239d93b4c2ebfe8a83d3c7194398904f8443b9d5848", kill_on_drop: false }` [INFO] [stdout] c35dcf6d1e7d7208a6320239d93b4c2ebfe8a83d3c7194398904f8443b9d5848 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Copt-level=3" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d98a5da813da67eb189387b8ccfb73cf481275d8" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 0b1904803082ee835c891f1d72e4341092253a6d118d9e00a2c1705e2d2aa27a [INFO] running `Command { std: "docker" "start" "-a" "0b1904803082ee835c891f1d72e4341092253a6d118d9e00a2c1705e2d2aa27a", kill_on_drop: false }` [INFO] [stderr] Compiling autocfg v1.1.0 [INFO] [stderr] Compiling lazy_static v1.4.0 [INFO] [stderr] Compiling num-traits v0.2.15 [INFO] [stderr] Compiling approx v0.5.1 [INFO] [stderr] Compiling rusty-ray v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: associated constants `DEFAULT_SPECULAR`, `DEFAULT_DIFFUSE`, and `DEFAULT` are never used [INFO] [stdout] --> src/lighting.rs:20:15 [INFO] [stdout] | [INFO] [stdout] 18 | impl Material { [INFO] [stdout] | ------------- associated constants in this implementation [INFO] [stdout] 19 | pub const DEFAULT_AMBIENT: f64 = 0.1; [INFO] [stdout] 20 | pub const DEFAULT_SPECULAR: f64 = 0.9; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 21 | pub const DEFAULT_DIFFUSE: f64 = 0.9; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 24 | pub const DEFAULT: Material = Material { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated constants `SPHERE` and `PLANE` are never used [INFO] [stdout] --> src/object.rs:20:15 [INFO] [stdout] | [INFO] [stdout] 19 | impl Object { [INFO] [stdout] | ----------- associated constants in this implementation [INFO] [stdout] 20 | pub const SPHERE: Object = Object { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | pub const PLANE: Object = Object { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated constant `WHITE` is never used [INFO] [stdout] --> src/pattern.rs:31:15 [INFO] [stdout] | [INFO] [stdout] 30 | impl Pattern { [INFO] [stdout] | ------------ associated constant in this implementation [INFO] [stdout] 31 | pub const WHITE: Pattern = Pattern::Constant { value: Color::WHITE }; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `objects` is never used [INFO] [stdout] --> src/world.rs:32:12 [INFO] [stdout] | [INFO] [stdout] 25 | impl World { [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 32 | pub fn objects(&self, objects: Vec) -> World { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/object.rs:49:29 [INFO] [stdout] | [INFO] [stdout] 49 | pub fn object_intersect(&self, ray: &crate::ray::Ray) -> crate::ray::Intersections { [INFO] [stdout] | ^^^^^ ------------------------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 49 | pub fn object_intersect(&self, ray: &crate::ray::Ray) -> crate::ray::Intersections<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/ray.rs:56:16 [INFO] [stdout] | [INFO] [stdout] 56 | pub fn hit(&self) -> Option<&Intersection> { [INFO] [stdout] | ^^^^^ ------------- [INFO] [stdout] | | || [INFO] [stdout] | | |the lifetimes get resolved as `'_` [INFO] [stdout] | | the lifetimes get resolved as `'_` [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 56 | pub fn hit(&self) -> Option<&Intersection<'_>> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/world.rs:39:22 [INFO] [stdout] | [INFO] [stdout] 39 | pub fn intersect(&self, ray: &Ray) -> Intersections { [INFO] [stdout] | ^^^^^ ------------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 39 | pub fn intersect(&self, ray: &Ray) -> Intersections<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.75s [INFO] running `Command { std: "docker" "inspect" "0b1904803082ee835c891f1d72e4341092253a6d118d9e00a2c1705e2d2aa27a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0b1904803082ee835c891f1d72e4341092253a6d118d9e00a2c1705e2d2aa27a", kill_on_drop: false }` [INFO] [stdout] 0b1904803082ee835c891f1d72e4341092253a6d118d9e00a2c1705e2d2aa27a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Copt-level=3" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d98a5da813da67eb189387b8ccfb73cf481275d8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] cc3a9c64db68f1ae948ddf66b7bff8add2af8707090dd0ce4b788da6ff2c5ca9 [INFO] running `Command { std: "docker" "start" "-a" "cc3a9c64db68f1ae948ddf66b7bff8add2af8707090dd0ce4b788da6ff2c5ca9", kill_on_drop: false }` [INFO] [stderr] Compiling rusty-ray v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: method `objects` is never used [INFO] [stdout] --> src/world.rs:32:12 [INFO] [stdout] | [INFO] [stdout] 25 | impl World { [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 32 | pub fn objects(&self, objects: Vec) -> World { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/object.rs:49:29 [INFO] [stdout] | [INFO] [stdout] 49 | pub fn object_intersect(&self, ray: &crate::ray::Ray) -> crate::ray::Intersections { [INFO] [stdout] | ^^^^^ ------------------------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 49 | pub fn object_intersect(&self, ray: &crate::ray::Ray) -> crate::ray::Intersections<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/ray.rs:56:16 [INFO] [stdout] | [INFO] [stdout] 56 | pub fn hit(&self) -> Option<&Intersection> { [INFO] [stdout] | ^^^^^ ------------- [INFO] [stdout] | | || [INFO] [stdout] | | |the lifetimes get resolved as `'_` [INFO] [stdout] | | the lifetimes get resolved as `'_` [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 56 | pub fn hit(&self) -> Option<&Intersection<'_>> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/world.rs:39:22 [INFO] [stdout] | [INFO] [stdout] 39 | pub fn intersect(&self, ray: &Ray) -> Intersections { [INFO] [stdout] | ^^^^^ ------------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 39 | pub fn intersect(&self, ray: &Ray) -> Intersections<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 2.72s [INFO] running `Command { std: "docker" "inspect" "cc3a9c64db68f1ae948ddf66b7bff8add2af8707090dd0ce4b788da6ff2c5ca9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "cc3a9c64db68f1ae948ddf66b7bff8add2af8707090dd0ce4b788da6ff2c5ca9", kill_on_drop: false }` [INFO] [stdout] cc3a9c64db68f1ae948ddf66b7bff8add2af8707090dd0ce4b788da6ff2c5ca9 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Copt-level=3" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d98a5da813da67eb189387b8ccfb73cf481275d8" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] efb3d62ab028d773463551482231424423168862658b8c57580b5cdb0a584ed5 [INFO] running `Command { std: "docker" "start" "-a" "efb3d62ab028d773463551482231424423168862658b8c57580b5cdb0a584ed5", kill_on_drop: false }` [INFO] [stderr] warning: method `objects` is never used [INFO] [stderr] --> src/world.rs:32:12 [INFO] [stderr] | [INFO] [stderr] 25 | impl World { [INFO] [stderr] | ---------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 32 | pub fn objects(&self, objects: Vec) -> World { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stderr] --> src/object.rs:49:29 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn object_intersect(&self, ray: &crate::ray::Ray) -> crate::ray::Intersections { [INFO] [stderr] | ^^^^^ ------------------------- the lifetime gets resolved as `'_` [INFO] [stderr] | | [INFO] [stderr] | this lifetime flows to the output [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stderr] | [INFO] [stderr] 49 | pub fn object_intersect(&self, ray: &crate::ray::Ray) -> crate::ray::Intersections<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stderr] --> src/ray.rs:56:16 [INFO] [stderr] | [INFO] [stderr] 56 | pub fn hit(&self) -> Option<&Intersection> { [INFO] [stderr] | ^^^^^ ------------- [INFO] [stderr] | | || [INFO] [stderr] | | |the lifetimes get resolved as `'_` [INFO] [stderr] | | the lifetimes get resolved as `'_` [INFO] [stderr] | this lifetime flows to the output [INFO] [stderr] | [INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stderr] | [INFO] [stderr] 56 | pub fn hit(&self) -> Option<&Intersection<'_>> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stderr] --> src/world.rs:39:22 [INFO] [stderr] | [INFO] [stderr] 39 | pub fn intersect(&self, ray: &Ray) -> Intersections { [INFO] [stderr] | ^^^^^ ------------- the lifetime gets resolved as `'_` [INFO] [stderr] | | [INFO] [stderr] | this lifetime flows to the output [INFO] [stderr] | [INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stderr] | [INFO] [stderr] 39 | pub fn intersect(&self, ray: &Ray) -> Intersections<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: `rusty-ray` (bin "rusty-ray" test) generated 4 warnings [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.03s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rusty_ray-abe0207d68148ae1) [INFO] [stdout] [INFO] [stdout] running 115 tests [INFO] [stdout] test color::tests::test_canvas_generate_ppm_ends_with_newline ... ok [INFO] [stdout] test color::tests::test_canvas_generate_ppm_header ... ok [INFO] [stdout] test color::tests::test_canvas_generate_ppm_simple ... ok [INFO] [stdout] test color::tests::test_canvas_generate_ppm_long_lines ... ok [INFO] [stdout] test color::tests::test_canvas_write_pixel ... ok [INFO] [stdout] test color::tests::test_canvas_new ... ok [INFO] [stdout] test color::tests::test_color_operations ... ok [INFO] [stdout] test color::tests::test_new ... ok [INFO] [stdout] test color::tests::test_color_multiply ... ok [INFO] [stdout] test lighting::tests::lighting_eye_between_light_surface ... ok [INFO] [stdout] test lighting::tests::lighting_eye_between_light_surface_shadow ... ok [INFO] [stdout] test lighting::tests::lighting_eye_in_reflection_path ... ok [INFO] [stdout] test matrix2::tests::matrix_construct_inspect ... ok [INFO] [stdout] test matrix3::tests::matrix3_cofactor ... ok [INFO] [stdout] test matrix2::tests::matrix_determinant ... ok [INFO] [stdout] test matrix3::tests::matrix3_determinant ... ok [INFO] [stdout] test matrix3::tests::matrix3_sub_matrix ... ok [INFO] [stdout] test matrix3::tests::matrix_construct_inspect ... ok [INFO] [stdout] test matrix4::tests::matrix_inverse_3 ... ok [INFO] [stdout] test matrix4::tests::matrix_is_invertible ... ok [INFO] [stdout] test matrix4::tests::matrix_is_not_invertible ... ok [INFO] [stdout] test matrix4::tests::matrix4_determinant ... ok [INFO] [stdout] test lighting::tests::lighting_eye_between_light_surface_eye_offset_45_deg ... ok [INFO] [stdout] test matrix4::tests::matrix4_sub_matrix ... ok [INFO] [stdout] test matrix4::tests::matrix_construct_inspect ... ok [INFO] [stdout] test matrix4::tests::matrix_equality ... ok [INFO] [stdout] test matrix4::tests::matrix_inequality ... ok [INFO] [stdout] test matrix4::tests::matrix_inverse ... ok [INFO] [stdout] test lighting::tests::lighting_eye_opposite_light_surface_eye_offset_45_deg ... ok [INFO] [stdout] test matrix4::tests::matrix_multiplication ... ok [INFO] [stdout] test lighting::tests::lighting_pattern ... ok [INFO] [stdout] test matrix4::tests::matrix_multiplication_identity ... ok [INFO] [stdout] test matrix4::tests::matrix_multiply_by_inverse ... ok [INFO] [stdout] test matrix4::tests::matrix_tuple_multiplication ... ok [INFO] [stdout] test matrix4::tests::matrix_transpose_identity ... ok [INFO] [stdout] test matrix4::tests::matrix_transpose ... ok [INFO] [stdout] test matrix4::tests::matrix_tuple_multiplication_identity ... ok [INFO] [stdout] test pattern::tests::checker_pattern ... ok [INFO] [stdout] test pattern::tests::gradient_pattern ... ok [INFO] [stdout] test pattern::tests::ring_pattern ... ok [INFO] [stdout] test pattern::tests::stripe_alternates_x ... ok [INFO] [stdout] test pattern::tests::stripe_constant_y ... ok [INFO] [stdout] test pattern::tests::stripe_constant_z ... ok [INFO] [stdout] test pattern::tests::stripe_object_pattern_transform ... ok [INFO] [stdout] test pattern::tests::stripe_object_transform ... ok [INFO] [stdout] test pattern::tests::stripe_pattern_transform ... ok [INFO] [stdout] test plane::tests::normal_constant_everywhere ... ok [INFO] [stdout] test plane::tests::plane_intersections ... ok [INFO] [stdout] test plane::tests::plane_no_intersection ... ok [INFO] [stdout] test ray::tests::intersections_all_negative ... ok [INFO] [stdout] test ray::tests::intersections_all_positive ... ok [INFO] [stdout] test ray::tests::intersections_negative ... ok [INFO] [stdout] test ray::tests::ray_point_distance ... ok [INFO] [stdout] test ray::tests::intersections_smallest_non_negative ... ok [INFO] [stdout] test ray::tests::ray_sphere_scaled ... ok [INFO] [stdout] test ray::tests::sphere_intersect_inside ... ok [INFO] [stdout] test ray::tests::sphere_intersect_miss ... ok [INFO] [stdout] test ray::tests::sphere_intersect_behind ... ok [INFO] [stdout] test ray::tests::sphere_intersect_one_point ... ok [INFO] [stdout] test ray::tests::ray_transform ... ok [INFO] [stdout] test sphere::tests::ray_sphere_normal_at ... ok [INFO] [stdout] test ray::tests::sphere_intersect_two_points ... ok [INFO] [stdout] test sphere::tests::ray_sphere_normal_at_transformed ... ok [INFO] [stdout] test transform::tests::transform_chain ... ok [INFO] [stdout] test transform::tests::transform_rotate_x ... ok [INFO] [stdout] test transform::tests::transform_rotate_y ... ok [INFO] [stdout] test transform::tests::transform_scale_point ... ok [INFO] [stdout] test transform::tests::transform_shearing ... ok [INFO] [stdout] test transform::tests::transform_scale_vector ... ok [INFO] [stdout] test ray::tests::ray_sphere_translated ... ok [INFO] [stdout] test transform::tests::transform_inverse_scale ... ok [INFO] [stdout] test transform::tests::transform_translate_vector ... ok [INFO] [stdout] test transform::tests::view_transform_moves_world ... ok [INFO] [stdout] test transform::tests::view_transform_default ... ok [INFO] [stdout] test transform::tests::view_transform_pos_z ... ok [INFO] [stdout] test transform::tests::transform_reflection ... ok [INFO] [stdout] test tuple::tests::test_add_tuples ... ok [INFO] [stdout] test transform::tests::transform_rotate_z ... ok [INFO] [stdout] test transform::tests::transform_translate ... ok [INFO] [stdout] test transform::tests::view_transform_arb ... ok [INFO] [stdout] test tuple::tests::test_cross ... ok [INFO] [stdout] test tuple::tests::test_point_tuple ... ok [INFO] [stdout] test tuple::tests::test_reflect_45_deg ... ok [INFO] [stdout] test tuple::tests::test_scalar_mul ... ok [INFO] [stdout] test tuple::tests::test_scalar_div ... ok [INFO] [stdout] test tuple::tests::test_subtract_two_points ... ok [INFO] [stdout] test tuple::tests::test_normalize ... ok [INFO] [stdout] test tuple::tests::test_subtract_vector_from_zero_vector ... ok [INFO] [stdout] test tuple::tests::test_subtract_two_vectors ... ok [INFO] [stdout] test tuple::tests::test_dot ... ok [INFO] [stdout] test tuple::tests::test_subtract_vector_point ... ok [INFO] [stdout] test tuple::tests::test_vector_tuple ... ok [INFO] [stdout] test tuple::tests::test_magnitude ... ok [INFO] [stdout] test tuple::tests::test_reflect_45_slanted ... ok [INFO] [stdout] test tuple::tests::test_negate ... ok [INFO] [stdout] test world::tests::camera_pixel_size ... ok [INFO] [stdout] test world::tests::camera_ray_for_pixel_center ... ok [INFO] [stdout] test world::tests::camera_ray_for_pixel_corner ... ok [INFO] [stdout] test world::tests::camera_ray_for_pixel_transformed ... ok [INFO] [stdout] test world::tests::hit_offset_point ... ok [INFO] [stdout] test world::tests::is_shadowed ... ok [INFO] [stdout] test world::tests::precompute_intersection ... ok [INFO] [stdout] test world::tests::camera_render ... ok [INFO] [stdout] test world::tests::precompute_intersection_inside ... ok [INFO] [stdout] test world::tests::shade_intersection ... ok [INFO] [stdout] test world::tests::shade_intersection_inside ... ok [INFO] [stdout] test world::tests::shade_intersection_shadow ... ok [INFO] [stdout] test world::tests::world_color_at_no_intersection ... ok [INFO] [stdout] test world::tests::world_color_hit ... ok [INFO] [stdout] test world::tests::world_color_intersection_behind_ray ... ok [INFO] [stdout] test world::tests::world_intersect ... ok [INFO] [stdout] test matrix3::tests::matrix3_minor ... ok [INFO] [stdout] test matrix4::tests::matrix_inverse_2 ... ok [INFO] [stdout] test lighting::tests::lighting_behind_surface ... ok [INFO] [stdout] test transform::tests::transform_inverse_translate ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 115 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "efb3d62ab028d773463551482231424423168862658b8c57580b5cdb0a584ed5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "efb3d62ab028d773463551482231424423168862658b8c57580b5cdb0a584ed5", kill_on_drop: false }` [INFO] [stdout] efb3d62ab028d773463551482231424423168862658b8c57580b5cdb0a584ed5