[INFO] cloning repository https://github.com/gmrowe/rayst [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/gmrowe/rayst" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgmrowe%2Frayst", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgmrowe%2Frayst'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 09395fb25098f5ed95650a4aa071f87e442d0ec8 [INFO] testing gmrowe/rayst against 1.99.0-beta.8+cargoflags=--release for beta-release-1.100-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgmrowe%2Frayst" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-3-tc1/source/.cargo/config.toml [INFO] started tweaking git repo https://github.com/gmrowe/rayst [INFO] finished tweaking git repo https://github.com/gmrowe/rayst [INFO] tweaked toml for git repo https://github.com/gmrowe/rayst written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/gmrowe/rayst on toolchain 1.99.0-beta.8 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/gmrowe/rayst 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" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded png_pong v0.8.2 [INFO] [stderr] Downloaded pix v0.13.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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] 0bc1b059180185d704ba8693d9b7a6dbfba0c3ebeb81d99e4f2d40df478a425a [INFO] running `Command { std: "docker" "start" "0bc1b059180185d704ba8693d9b7a6dbfba0c3ebeb81d99e4f2d40df478a425a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "0bc1b059180185d704ba8693d9b7a6dbfba0c3ebeb81d99e4f2d40df478a425a", 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" "0bc1b059180185d704ba8693d9b7a6dbfba0c3ebeb81d99e4f2d40df478a425a" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "0bc1b059180185d704ba8693d9b7a6dbfba0c3ebeb81d99e4f2d40df478a425a", 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" "0bc1b059180185d704ba8693d9b7a6dbfba0c3ebeb81d99e4f2d40df478a425a" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling autocfg v1.1.0 [INFO] [stderr] Compiling pix v0.13.2 [INFO] [stderr] Compiling adler v1.0.2 [INFO] [stderr] Compiling miniz_oxide v0.4.4 [INFO] [stderr] Compiling png_pong v0.8.2 [INFO] [stderr] Compiling rayst v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/matrix.rs:228:8 [INFO] [stdout] | [INFO] [stdout] 218 | impl Mat2 { [INFO] [stdout] | --------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 228 | fn new(width: usize, height: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/canvas.rs:24:19 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn pixels(&self) -> Pixels { [INFO] [stdout] | ^^^^^ ^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 24 | pub fn pixels(&self) -> Pixels<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/canvas.rs:30:23 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn pixels_mut(&mut self) -> PixelsMut { [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 30 | pub fn pixels_mut(&mut self) -> PixelsMut<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/canvas.rs:46:33 [INFO] [stdout] | [INFO] [stdout] 46 | pub fn enumerate_pixels_mut(&mut self) -> EnumeratePixelsMut { [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 46 | pub fn enumerate_pixels_mut(&mut self) -> EnumeratePixelsMut<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `release` profile [optimized] target(s) in 3.87s [INFO] running `Command { std: "docker" "inspect" "0bc1b059180185d704ba8693d9b7a6dbfba0c3ebeb81d99e4f2d40df478a425a", 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" "0bc1b059180185d704ba8693d9b7a6dbfba0c3ebeb81d99e4f2d40df478a425a" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/matrix.rs:228:8 [INFO] [stdout] | [INFO] [stdout] 218 | impl Mat2 { [INFO] [stdout] | --------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 228 | fn new(width: usize, height: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/canvas.rs:24:19 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn pixels(&self) -> Pixels { [INFO] [stdout] | ^^^^^ ^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 24 | pub fn pixels(&self) -> Pixels<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/canvas.rs:30:23 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn pixels_mut(&mut self) -> PixelsMut { [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 30 | pub fn pixels_mut(&mut self) -> PixelsMut<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/canvas.rs:46:33 [INFO] [stdout] | [INFO] [stdout] 46 | pub fn enumerate_pixels_mut(&mut self) -> EnumeratePixelsMut { [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 46 | pub fn enumerate_pixels_mut(&mut self) -> EnumeratePixelsMut<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling rayst v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/matrix.rs:228:8 [INFO] [stdout] | [INFO] [stdout] 218 | impl Mat2 { [INFO] [stdout] | --------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 228 | fn new(width: usize, height: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/canvas.rs:24:19 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn pixels(&self) -> Pixels { [INFO] [stdout] | ^^^^^ ^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 24 | pub fn pixels(&self) -> Pixels<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/canvas.rs:30:23 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn pixels_mut(&mut self) -> PixelsMut { [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 30 | pub fn pixels_mut(&mut self) -> PixelsMut<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/canvas.rs:46:33 [INFO] [stdout] | [INFO] [stdout] 46 | pub fn enumerate_pixels_mut(&mut self) -> EnumeratePixelsMut { [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 46 | pub fn enumerate_pixels_mut(&mut self) -> EnumeratePixelsMut<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `release` profile [optimized] target(s) in 2.98s [INFO] running `Command { std: "docker" "inspect" "0bc1b059180185d704ba8693d9b7a6dbfba0c3ebeb81d99e4f2d40df478a425a", 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" "0bc1b059180185d704ba8693d9b7a6dbfba0c3ebeb81d99e4f2d40df478a425a" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--release", kill_on_drop: false }` [INFO] [stdout] [INFO] [stdout] running 248 tests [INFO] [stderr] warning: associated function `new` is never used [INFO] [stderr] --> src/matrix.rs:228:8 [INFO] [stderr] | [INFO] [stderr] 218 | impl Mat2 { [INFO] [stderr] | --------- associated function in this implementation [INFO] [stderr] ... [INFO] [stderr] 228 | fn new(width: usize, height: usize) -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stderr] --> src/canvas.rs:24:19 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn pixels(&self) -> Pixels { [INFO] [stderr] | ^^^^^ ^^^^^^ the same lifetime is hidden here [INFO] [stderr] | | [INFO] [stderr] | the lifetime is elided here [INFO] [stderr] | [INFO] [stderr] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stderr] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stderr] help: use `'_` for type paths [INFO] [stderr] | [INFO] [stderr] 24 | pub fn pixels(&self) -> Pixels<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stderr] --> src/canvas.rs:30:23 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn pixels_mut(&mut self) -> PixelsMut { [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stderr] | | [INFO] [stderr] | the lifetime is elided here [INFO] [stderr] | [INFO] [stderr] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stderr] help: use `'_` for type paths [INFO] [stderr] | [INFO] [stderr] 30 | pub fn pixels_mut(&mut self) -> PixelsMut<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stderr] --> src/canvas.rs:46:33 [INFO] [stderr] | [INFO] [stderr] 46 | pub fn enumerate_pixels_mut(&mut self) -> EnumeratePixelsMut { [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stderr] | | [INFO] [stderr] | the lifetime is elided here [INFO] [stderr] | [INFO] [stderr] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stderr] help: use `'_` for type paths [INFO] [stderr] | [INFO] [stderr] 46 | pub fn enumerate_pixels_mut(&mut self) -> EnumeratePixelsMut<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: `rayst` (lib) generated 4 warnings (run `cargo fix --lib -p rayst` to apply 3 suggestions) [INFO] [stderr] warning: `rayst` (lib test) generated 4 warnings (4 duplicates) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 0.03s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/release/deps/rayst-abdad4dab89cfd97) [INFO] [stdout] test camera::camera_test::a_camera_stores_its_hsize ... ok [INFO] [stdout] test camera::camera_test::a_ray_through_a_corner_of_the_canvas_can_be_calculated ... ok [INFO] [stdout] test camera::camera_test::a_ray_can_be_calculated_when_camera_is_transfomed ... ok [INFO] [stdout] test camera::camera_test::a_ray_through_the_center_of_the_canvas_can_be_calculated ... ok [INFO] [stdout] test camera::camera_test::camera_knows_pixel_size_for_horizontal_canvas ... ok [INFO] [stdout] test camera::camera_test::camera_knows_pixel_size_for_vertical_canvas ... ok [INFO] [stdout] test camera::camera_test::a_camera_stores_its_field_of_view ... ok [INFO] [stdout] test camera::camera_test::a_camera_stores_its_vsize ... ok [INFO] [stdout] test camera::camera_test::a_camera_stores_its_transform ... ok [INFO] [stdout] test canvas::canvas_tests::a_new_canvas_has_all_black_pixels ... ok [INFO] [stdout] test canvas::canvas_tests::long_lines_in_ppm_files_should_be_split ... ok [INFO] [stdout] test color::color_tests::arbitrary_color_can_be_created_from_hex_value ... ok [INFO] [stdout] test color::color_tests::black_color_can_be_created_from_hex_value ... ok [INFO] [stdout] test color::color_tests::colors_can_be_added ... ok [INFO] [stdout] test color::color_tests::colors_can_be_multiplied_by_a_color ... ok [INFO] [stdout] test color::color_tests::blue_color_can_be_created_from_hex_value ... ok [INFO] [stdout] test color::color_tests::colors_have_a_blue_component ... ok [INFO] [stdout] test color::color_tests::colors_have_a_green_component ... ok [INFO] [stdout] test color::color_tests::colors_have_a_red_component ... ok [INFO] [stdout] test intersections::intersections_test::an_intersection_encapsulates_a_t ... ok [INFO] [stdout] test color::color_tests::colors_can_be_subtracted ... ok [INFO] [stdout] test canvas::canvas_tests::a_canvas_can_construct_a_ppm_header ... ok [INFO] [stdout] test canvas::canvas_tests::ppm_are_terminated_by_a_newline_character ... ok [INFO] [stdout] test intersections::intersections_test::correctly_calculates_n1_and_n2_at_different_iotersections ... ok [INFO] [stdout] test canvas::canvas_tests::a_canvas_can_enumerate_pixels ... ok [INFO] [stdout] test canvas::canvas_tests::a_canvas_can_output_ppm_data ... ok [INFO] [stdout] test camera::camera_test::a_world_can_be_rendered_from_a_camera ... ok [INFO] [stdout] test intersections::intersections_test::hit_always_returns_the_smallest_nonnegative_intersection ... ok [INFO] [stdout] test canvas::canvas_tests::a_canvas_stores_its_width ... ok [INFO] [stdout] test intersections::intersections_test::the_computation_can_determine_that_the_intersection_occurs_on_inside ... ok [INFO] [stdout] test color::color_tests::green_color_can_be_created_from_hex_value ... ok [INFO] [stdout] test intersections::intersections_test::intersections_can_be_aggregated ... ok [INFO] [stdout] test color::color_tests::red_color_can_be_created_from_hex_value ... ok [INFO] [stdout] test intersections::intersections_test::the_computation_can_determine_that_the_intersection_occurs_on_outside ... ok [INFO] [stdout] test intersections::intersections_test::the_hit_should_offset_the_point_by_a_small_amount ... ok [INFO] [stdout] test intersections::intersections_test::the_refection_vector_should_be_precomputed ... ok [INFO] [stdout] test intersections::intersections_test::the_schlick_approx_with_perpendicular_viewing_angle ... ok [INFO] [stdout] test intersections::intersections_test::when_all_intersectons_are_positive_hit_returns_the_smallest_t ... ok [INFO] [stdout] test intersections::intersections_test::the_state_of_an_intersection_can_be_precomputed ... ok [INFO] [stdout] test intersections::intersections_test::the_schlick_approx_with_small_angle_and_n1_gt_n2 ... ok [INFO] [stdout] test canvas::canvas_tests::a_canvas_pixel_can_be_written_to ... ok [INFO] [stdout] test intersections::intersections_test::under_point_is_offset_just_below_surface ... ok [INFO] [stdout] test intersections::intersections_test::an_intersection_encapsulates_an_object ... ok [INFO] [stdout] test color::color_tests::colors_can_be_multiplied_by_a_scalar ... ok [INFO] [stdout] test lights::lights_test::a_point_light_has_intensity ... ok [INFO] [stdout] test intersections::intersections_test::the_schlick_aprox_under_total_internal_reflection_is_1 ... ok [INFO] [stdout] test materials::materials_test::default_material_has_a_color ... ok [INFO] [stdout] test intersections::intersections_test::when_all_intersections_have_negative_t_hit_returns_nothing ... ok [INFO] [stdout] test intersections::intersections_test::when_there_are_negative_intersections_hit_returns_smallest_positive_t ... ok [INFO] [stdout] test materials::materials_test::default_material_has_diffuse_reflection ... ok [INFO] [stdout] test materials::materials_test::default_material_has_shininess ... ok [INFO] [stdout] test materials::materials_test::default_material_has_ambient_reflection ... ok [INFO] [stdout] test lights::lights_test::a_point_light_has_position ... ok [INFO] [stdout] test materials::materials_test::lighting_with_eye_between_light_and_surface ... ok [INFO] [stdout] test intersections::intersections_test::the_hit_should_offset_in_the_direction_of_the_normal ... ok [INFO] [stdout] test materials::materials_test::material_has_a_default_reflectivity ... ok [INFO] [stdout] test materials::materials_test::default_material_has_specular_reflection ... ok [INFO] [stdout] test materials::materials_test::material_transparancy_is_settable ... ok [INFO] [stdout] test materials::materials_test::lighting_with_light_behind_surface ... ok [INFO] [stdout] test matrix::matrix_tests::a_matrix_with_a_nonzero_determinant_is_invertable ... ok [INFO] [stdout] test materials::materials_test::lighting_with_surface_in_shadow ... ok [INFO] [stdout] test materials::materials_test::material_refractive_index_is_settable ... ok [INFO] [stdout] test materials::materials_test::lighting_with_eye_between_light_and_surface_eye_offset_45_degrees ... ok [INFO] [stdout] test matrix::matrix_tests::matrices_can_be_multiplied_by_other_matrices ... ok [INFO] [stdout] test materials::materials_test::lighting_with_eye_in_path_of_reflection ... ok [INFO] [stdout] test matrix::matrix_tests::a_matrix_can_be_transposed ... ok [INFO] [stdout] test materials::materials_test::material_has_a_default_refractive_index ... ok [INFO] [stdout] test matrix::matrix_tests::multiplying_a_product_by_its_inverse_yields_original_matrix ... ok [INFO] [stdout] test materials::materials_test::lighting_a_material_with_a_pattern ... ok [INFO] [stdout] test matrix::matrix_tests::the_cofactor_of_element_0_0_of_a_mat3_does_not_change_signs ... ok [INFO] [stdout] test matrix::matrix_tests::the_determinant_of_a_2x2_matrix_can_be_calculated ... ok [INFO] [stdout] test materials::materials_test::material_has_a_default_transparancy ... ok [INFO] [stdout] test matrix::matrix_tests::a_matrix_with_a_zero_determinant_is_not_invertable ... ok [INFO] [stdout] test matrix::matrix_tests::construct_and_inspect_a_2x2_matrix ... ok [INFO] [stdout] test matrix::matrix_tests::construct_and_inspect_a_3x3_matrix ... ok [INFO] [stdout] test matrix::matrix_tests::construct_and_inspect_a_4x4_matrix ... ok [INFO] [stdout] test materials::materials_test::lighting_with_eye_opposite_surface_light_offset_45_degrees ... ok [INFO] [stdout] test matrix::matrix_tests::different_matrices_are_not_equal ... ok [INFO] [stdout] test matrix::matrix_tests::identical_matrices_are_equal ... ok [INFO] [stdout] test matrix::matrix_tests::the_cofactor_of_element_1_0_of_a_mat3_does_change_signs ... ok [INFO] [stdout] test matrix::matrix_tests::matrices_can_be_multiplied_by_tuples ... ok [INFO] [stdout] test matrix::matrix_tests::multiplying_a_matrix_by_identity_matrix_yields_original ... ok [INFO] [stdout] test patterns::patterns_test::a_checkers_pattern_repeats_in_y ... ok [INFO] [stdout] test matrix::matrix_tests::the_determinant_of_a_mat3_can_be_calculated ... ok [INFO] [stdout] test patterns::patterns_test::a_default_pattern_has_an_identity_transformation ... ok [INFO] [stdout] test patterns::patterns_test::a_checkers_pattern_repeats_in_z ... ok [INFO] [stdout] test matrix::matrix_tests::the_inverse_of_a_second_matrix_can_be_calculated ... ok [INFO] [stdout] test patterns::patterns_test::a_checkers_pattern_repeats_in_x ... ok [INFO] [stdout] test matrix::matrix_tests::the_inverse_of_a_third_matrix_can_be_calculated ... ok [INFO] [stdout] test matrix::matrix_tests::the_submatrix_of_a_mat4_is_a_mat3 ... ok [INFO] [stdout] test matrix::matrix_tests::the_inverse_of_an_invertable_matrix_can_be_calculated ... ok [INFO] [stdout] test patterns::patterns_test::a_pattern_can_have_a_pattern_and_object_transformation ... ok [INFO] [stdout] test matrix::matrix_tests::the_transpose_of_the_identity_matrix_is_the_identity_matrix ... ok [INFO] [stdout] test matrix::matrix_tests::the_minor_of_an_element_of_a_mat3_can_be_calculated ... ok [INFO] [stdout] test patterns::patterns_test::a_gradient_pattern_linearly_interpolates_between_colors ... ok [INFO] [stdout] test matrix::matrix_tests::the_submatrix_of_a_mat3_is_a_mat2 ... ok [INFO] [stdout] test matrix::matrix_tests::the_determinant_of_a_mat4_can_be_calculated ... ok [INFO] [stdout] test patterns::patterns_test::a_stripe_pattern_is_changes_with_x ... ok [INFO] [stdout] test patterns::patterns_test::a_pattern_can_have_an_object_transformation ... ok [INFO] [stdout] test patterns::patterns_test::a_pattern_correctly_handles_a_pattern_transformation ... ok [INFO] [stdout] test patterns::patterns_test::a_ring_pattern_extends_in_x_and_z ... ok [INFO] [stdout] test patterns::patterns_test::a_transform_can_be_assigned_to_a_pattern ... ok [INFO] [stdout] test patterns::patterns_test::a_stripe_pattern_can_be_created ... ok [INFO] [stdout] test planes::planes_test::a_ray_can_intersect_a_plane_from_below ... ok [INFO] [stdout] test patterns::patterns_test::a_stripe_pattern_is_constant_in_y ... ok [INFO] [stdout] test patterns::patterns_test::a_stripe_pattern_is_constant_in_z ... ok [INFO] [stdout] test planes::planes_test::a_ray_can_intersect_a_plane_from_above ... ok [INFO] [stdout] test planes::planes_test::a_ray_coplanar_with_a_plane_never_intersects_the_plane ... ok [INFO] [stdout] test patterns::patterns_test::a_pattern_can_have_a_pattern_transformation ... ok [INFO] [stdout] test patterns::patterns_test::a_pattern_correctly_handles_a_pattern_plus_object_transformation ... ok [INFO] [stdout] test patterns::patterns_test::a_pattern_correctly_handles_an_object_transformation ... ok [INFO] [stdout] test planes::planes_test::a_ray_parallel_to_a_plane_never_intersects_the_plane ... ok [INFO] [stdout] test planes::planes_test::the_normal_of_a_plane_is_constant_everywhere ... ok [INFO] [stdout] test rays::rays_test::a_point_can_be_computed_from_a_ray_and_distance ... ok [INFO] [stdout] test rays::rays_test::a_ray_has_an_direction ... ok [INFO] [stdout] test rays::rays_test::a_ray_has_an_origin ... ok [INFO] [stdout] test rays::rays_test::when_a_ray_is_scaled_its_direction_changes ... ok [INFO] [stdout] test rays::rays_test::when_a_ray_is_scaled_its_origin_changes ... ok [INFO] [stdout] test rays::rays_test::when_a_ray_is_translated_its_origin_changes ... ok [INFO] [stdout] test rays::rays_test::when_a_ray_is_translated_its_vector_is_unchanged ... ok [INFO] [stdout] test shapes::shape_tests::a_material_should_be_assignable_to_a_shape ... ok [INFO] [stdout] test shapes::shape_tests::a_scaled_shape_can_intersect_with_a_ray ... ok [INFO] [stdout] test shapes::shape_tests::a_shape_should_have_a_default_material ... ok [INFO] [stdout] test shapes::shape_tests::a_translated_shape_can_intersect_with_a_ray ... ok [INFO] [stdout] test shapes::shape_tests::shape_should_have_a_default_transformation ... ok [INFO] [stdout] test shapes::shape_tests::a_transform_should_be_assignable_to_a_shape ... ok [INFO] [stdout] test spheres::spheres_test::a_sphere_has_a_default_material ... ok [INFO] [stdout] test spheres::spheres_test::a_ray_originating_from_inside_a_sphere_intersects_in_negative_distance ... ok [INFO] [stdout] test shapes::shape_tests::the_normal_on_a_tranformed_shape_can_be_calculates ... ok [INFO] [stdout] test shapes::shape_tests::the_normal_on_a_translated_shape_can_be_calculates ... ok [INFO] [stdout] test spheres::spheres_test::a_glass_sphere_has_a_transparency_of_1 ... ok [INFO] [stdout] test spheres::spheres_test::a_ray_can_completely_miss_a_sphere ... ok [INFO] [stdout] test spheres::spheres_test::a_ray_in_front_of_sphere_has_intersects_in_negative_distance ... ok [INFO] [stdout] test spheres::spheres_test::a_ray_intersecting_a_sphere_at_a_tangent_reutrns_two_intersections ... ok [INFO] [stdout] test spheres::spheres_test::a_ray_intersects_a_sphere_at_two_points ... ok [INFO] [stdout] test spheres::spheres_test::a_sphere_can_be_assigned_a_material ... ok [INFO] [stdout] test spheres::spheres_test::a_ray_originating_from_inside_a_sphere_has_two_intersections ... ok [INFO] [stdout] test spheres::spheres_test::a_glass_sphere_has_a_refractive_index_of_1_5 ... ok [INFO] [stdout] test spheres::spheres_test::a_ray_originating_from_inside_a_sphere_intersects_in_positive_distance ... ok [INFO] [stdout] test spheres::spheres_test::both_tangent_intersections_returned_are_same ... ok [INFO] [stdout] test canvas::canvas_tests::a_canvas_stored_its_height ... ok [INFO] [stdout] test spheres::spheres_test::the_normal_on_a_sphere_at_a_nonaxial_point ... ok [INFO] [stdout] test spheres::spheres_test::the_normal_on_a_sphere_at_a_point_on_y_axis ... ok [INFO] [stdout] test spheres::spheres_test::a_ray_in_front_of_sphere_has_intersects_a_second_time_in_negative_distance ... ok [INFO] [stdout] test spheres::spheres_test::a_sphere_transforms_a_ray_before_calculating_intersects_when_scaled ... ok [INFO] [stdout] test spheres::spheres_test::the_normal_on_a_sphere_at_a_point_on_z_axis ... ok [INFO] [stdout] test spheres::spheres_test::a_ray_in_front_of_sphere_has_two_intersections ... ok [INFO] [stdout] test spheres::spheres_test::a_sphere_transforms_a_ray_before_calculating_intersects_when_translated ... ok [INFO] [stdout] test spheres::spheres_test::a_spheres_default_transformation_is_the_identity_matrix ... ok [INFO] [stdout] test spheres::spheres_test::a_spheres_transform_can_be_set ... ok [INFO] [stdout] test spheres::spheres_test::can_determine_the_second_ray_sphere_intersection ... ok [INFO] [stdout] test spheres::spheres_test::intersect_sets_the_object_of_the_intersecton ... ok [INFO] [stdout] test spheres::spheres_test::the_normal_on_a_sphere_at_a_point_on_x_axis ... ok [INFO] [stdout] test spheres::spheres_test::the_normal_on_a_sphere_is_a_normalized_vector ... ok [INFO] [stdout] test transforms::tramsforms_test::default_view_transform_orientation_returns_identity_matrix ... ok [INFO] [stdout] test transforms::tramsforms_test::multiplying_by_translation_matrix_does_not_affect_vector ... ok [INFO] [stdout] test transforms::tramsforms_test::inverse_of_rotation_x_rotates_in_opposite_direction ... ok [INFO] [stdout] test transforms::tramsforms_test::multiplying_by_reflect_y_matrix_reflects_a_point_across_the_y_axis ... ok [INFO] [stdout] test transforms::tramsforms_test::multiplying_by_reflect_x_matrix_reflects_a_point_across_the_x_axis ... ok [INFO] [stdout] test transforms::tramsforms_test::multiplying_by_a_scaling_matrix_scales_all_values_in_point ... ok [INFO] [stdout] test transforms::tramsforms_test::multiplying_by_inverse_of_translation_matrix_moves_point_in_reverse ... ok [INFO] [stdout] test transforms::tramsforms_test::mutliplying_by_shearing_transfomation_moves_y_in_proportion_to_x ... ok [INFO] [stdout] test transforms::tramsforms_test::mutliplying_by_shearing_transfomation_moves_x_in_proportion_to_y ... ok [INFO] [stdout] test transforms::tramsforms_test::mutliplying_by_shearing_transfomation_moves_y_in_proportion_to_z ... ok [INFO] [stdout] test transforms::tramsforms_test::multiplying_by_translation_matrix_moves_point ... ok [INFO] [stdout] test transforms::tramsforms_test::mutriplying_by_rotation_x_can_rotate_a_point_around_the_x_axis_one_quarter ... ok [INFO] [stdout] test transforms::tramsforms_test::multiplyinng_by_a_scaling_matrix_scales_the_length_of_a_vector ... ok [INFO] [stdout] test transforms::tramsforms_test::mutriplying_by_rotation_x_can_rotate_a_point_around_the_x_axis_one_eighth ... ok [INFO] [stdout] test spheres::spheres_test::the_normal_on_a_transformed_sphere ... ok [INFO] [stdout] test spheres::spheres_test::the_normal_on_a_translated_sphere ... ok [INFO] [stdout] test transforms::tramsforms_test::mutliplying_by_shearing_transfomation_moves_z_in_proportion_to_x ... ok [INFO] [stdout] test transforms::tramsforms_test::mutliplying_by_shearing_transfomation_moves_x_in_proportion_to_z ... ok [INFO] [stdout] test transforms::tramsforms_test::mutriplying_by_rotation_z_can_rotate_a_point_around_the_z_axis_one_eighth ... ok [INFO] [stdout] test transforms::tramsforms_test::mutriplying_by_rotation_z_can_rotate_a_point_around_the_z_axis_one_half ... ok [INFO] [stdout] test spheres::spheres_test::the_object_of_both_intersections_is_the_same ... ok [INFO] [stdout] test spheres::spheres_test::two_spheres_are_not_the_same ... ok [INFO] [stdout] test transforms::tramsforms_test::mutliplying_by_shearing_transfomation_moves_z_in_proportion_to_y ... ok [INFO] [stdout] test transforms::tramsforms_test::chained_transformations_are_applied_in_reverse_order ... ok [INFO] [stdout] test transforms::tramsforms_test::view_transform_looking_in_positive_z_direction ... ok [INFO] [stdout] test transforms::tramsforms_test::view_transform_moves_the_world ... ok [INFO] [stdout] test tup::tup_tests::a_tup_can_be_divided_by_a_scalar ... ok [INFO] [stdout] test tup::tup_tests::a_tup_can_be_multiplied_by_a_fractional_scalar ... ok [INFO] [stdout] test tup::tup_tests::a_tup_stores_ites_w_value ... ok [INFO] [stdout] test transforms::tramsforms_test::individual_transformations_are_applied_in_sequence ... ok [INFO] [stdout] test tup::tup_tests::a_tup_stores_ites_z_value ... ok [INFO] [stdout] test tup::tup_tests::a_tup_stores_its_x_value ... ok [INFO] [stdout] test tup::tup_tests::a_tup_where_w_equals_0_is_a_vector ... ok [INFO] [stdout] test tup::tup_tests::a_tup_where_w_equals_0_is_not_a_point ... ok [INFO] [stdout] test tup::tup_tests::a_tup_where_w_equals_1_is_a_point ... ok [INFO] [stdout] test tup::tup_tests::adding_two_vectors_produces_a_vector ... ok [INFO] [stdout] test tup::tup_tests::magnitude_of_vector_0_0_1 ... ok [INFO] [stdout] test tup::tup_tests::magnitude_of_vector_0_1_0 ... ok [INFO] [stdout] test tup::tup_tests::magnitude_of_vector_1_0_0 ... ok [INFO] [stdout] test tup::tup_tests::magnitude_of_vector_1_2_3 ... ok [INFO] [stdout] test tup::tup_tests::a_tup_stores_ites_y_value ... ok [INFO] [stdout] test tup::tup_tests::magnitude_of_vector_neg_1_neg_2_neg_3 ... ok [INFO] [stdout] test tup::tup_tests::normalize_vector_4_0_0 ... ok [INFO] [stdout] test tup::tup_tests::point_creates_tuples_with_w_equals_1 ... ok [INFO] [stdout] test tup::tup_tests::reflecting_a_vector_across_a_slanted_surface ... ok [INFO] [stdout] test tup::tup_tests::reflecting_a_vector_approaching_at_45_degrees ... ok [INFO] [stdout] test tup::tup_tests::same_points_are_equal ... ok [INFO] [stdout] test transforms::tramsforms_test::multiplying_by_inverse_scaling_matrix_scales_in_opposite_dir ... ok [INFO] [stdout] test tup::tup_tests::the_magnitude_of_a_normalized_vector_is_1 ... ok [INFO] [stdout] test transforms::tramsforms_test::multiplying_by_reflect_z_matrix_reflects_a_point_across_the_z_axis ... ok [INFO] [stdout] test transforms::tramsforms_test::view_transform_can_accur_in_arbitrary_directions ... ok [INFO] [stdout] test tup::tup_tests::two_tups_have_a_dot_product ... ok [INFO] [stdout] test transforms::tramsforms_test::reflection_is_scaling_by_a_negative_value ... ok [INFO] [stdout] test tup::tup_tests::subtracting_a_vector_from_a_point_yields_a_point ... ok [INFO] [stdout] test tup::tup_tests::tups_can_be_added ... ok [INFO] [stdout] test tup::tup_tests::tups_can_be_negated ... ok [INFO] [stdout] test transforms::tramsforms_test::mutriplying_by_rotation_y_can_rotate_a_point_around_the_y_axis_one_half ... ok [INFO] [stdout] test tup::tup_tests::subtracting_two_vectors_yields_a_vector ... ok [INFO] [stdout] test tup::tup_tests::a_tup_can_be_multiplied_by_a_scaler ... ok [INFO] [stdout] test tup::tup_tests::tups_can_be_subtracted ... ok [INFO] [stdout] test tup::tup_tests::vector_creates_tuples_with_w_equals_0 ... ok [INFO] [stdout] test world::world_test::intersect_a_world_with_a_ray ... ok [INFO] [stdout] test world::world_test::no_shadow_when_object_is_behind_point ... ok [INFO] [stdout] test world::world_test::no_shadows_when_nothing_is_colinear_with_point_and_light ... ok [INFO] [stdout] test tup::tup_tests::vectors_and_points_are_not_equal ... ok [INFO] [stdout] test tup::tup_tests::a_tup_where_w_equals_1_is_not_vector ... ok [INFO] [stdout] test transforms::tramsforms_test::mutriplying_by_rotation_y_can_rotate_a_point_around_the_y_axis_one_eighth ... ok [INFO] [stdout] test tup::tup_tests::adding_point_and_vector_produces_a_point ... ok [INFO] [stdout] test world::world_test::shading_an_intersection_from_the_outside ... ok [INFO] [stdout] test tup::tup_tests::normalize_vector_1_2_3 ... ok [INFO] [stdout] test world::world_test::an_new_world_has_default_black_light_source ... ok [INFO] [stdout] test tup::tup_tests::same_vectors_are_equal ... ok [INFO] [stdout] test world::world_test::shade_hit_incorporates_the_reflected_color ... ok [INFO] [stdout] test tup::tup_tests::two_vectors_have_a_cross_product ... ok [INFO] [stdout] test tup::tup_tests::subtacting_a_vector_from_zero_vector_negates_it ... ok [INFO] [stdout] test world::world_test::the_color_when_a_ray_misses_an_object ... ok [INFO] [stdout] test world::world_test::the_color_when_a_ray_hits_an_object_from_outside ... ok [INFO] [stdout] test world::world_test::an_new_world_has_no_objects ... ok [INFO] [stdout] test world::world_test::is_shadowed_when_object_between_point_and_light ... ok [INFO] [stdout] test world::world_test::shade_hit_responds_correctly_when_given_an_intersection_in_shadow ... ok [INFO] [stdout] test world::world_test::shading_an_intersection_from_the_inside ... ok [INFO] [stdout] test world::world_test::the_reflected_color_for_a_nonreflective_material_is_black ... ok [INFO] [stdout] test world::world_test::the_color_with_intersection_behind_a_ray ... ok [INFO] [stdout] test world::world_test::the_reflected_color_for_a_reflective_material ... ok [INFO] [stdout] test world::world_test::the_reflected_color_at_max_recursion_depth_is_black ... ok [INFO] [stdout] test world::world_test::the_refracted_color_of_an_opaque_object_is_black ... ok [INFO] [stdout] test world::world_test::the_refracted_color_under_total_internal_reflection_is_black ... ok [INFO] [stdout] test world::world_test::mutually_reflective_surfaces_dont_cause_infinite_recursion ... ok [INFO] [stdout] test world::world_test::no_shadow_when_object_is_behind_light ... ok [INFO] [stdout] test world::world_test::the_shade_hit_color_is_determined_from_a_refracted_ray ... ok [INFO] [stdout] test world::world_test::shade_hit_with_a_reflective_transparent_material ... ok [INFO] [stdout] test world::world_test::the_refracted_color_at_max_recursive_depth_is_black ... ok [INFO] [stdout] test world::world_test::the_refracted_color_is_determined_from_a_refracted_ray ... ok [INFO] [stderr] Doc-tests rayst [INFO] [stdout] test spheres::spheres_test::can_determine_the_first_ray_sphere_intersection ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 248 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s [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] running `Command { std: "docker" "inspect" "0bc1b059180185d704ba8693d9b7a6dbfba0c3ebeb81d99e4f2d40df478a425a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0bc1b059180185d704ba8693d9b7a6dbfba0c3ebeb81d99e4f2d40df478a425a", kill_on_drop: false }` [INFO] [stdout] 0bc1b059180185d704ba8693d9b7a6dbfba0c3ebeb81d99e4f2d40df478a425a