[INFO] cloning repository tuzz/ray-tracer [INFO] running `"git" "clone" "--bare" "git://github.com/tuzz/ray-tracer.git" "work/cache/sources/gh/tuzz/ray-tracer"` [INFO] [stderr] Cloning into bare repository 'work/cache/sources/gh/tuzz/ray-tracer'... [INFO] running `"git" "clone" "work/cache/sources/gh/tuzz/ray-tracer" "work/ex/pr-61629/sources/master#c8865d8e195813ade6b84434ac9f8850e7112d1a/gh/tuzz/ray-tracer"` [INFO] [stderr] Cloning into 'work/ex/pr-61629/sources/master#c8865d8e195813ade6b84434ac9f8850e7112d1a/gh/tuzz/ray-tracer'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/tuzz/ray-tracer" "work/ex/pr-61629/sources/try#e212b7d492c96d3837691ba29d32d5f468933fb8/gh/tuzz/ray-tracer"` [INFO] [stderr] Cloning into 'work/ex/pr-61629/sources/try#e212b7d492c96d3837691ba29d32d5f468933fb8/gh/tuzz/ray-tracer'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 0b8aa08384479013e0c88f41d63d991701065e09 [INFO] sha for GitHub repo tuzz/ray-tracer: 0b8aa08384479013e0c88f41d63d991701065e09 [INFO] validating manifest of tuzz/ray-tracer on toolchain master#c8865d8e195813ade6b84434ac9f8850e7112d1a [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+c8865d8e195813ade6b84434ac9f8850e7112d1a-alt" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of tuzz/ray-tracer on toolchain try#e212b7d492c96d3837691ba29d32d5f468933fb8 [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+e212b7d492c96d3837691ba29d32d5f468933fb8-alt" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing tuzz/ray-tracer [INFO] finished frobbing tuzz/ray-tracer [INFO] frobbed toml for tuzz/ray-tracer written to work/ex/pr-61629/sources/master#c8865d8e195813ade6b84434ac9f8850e7112d1a/gh/tuzz/ray-tracer/Cargo.toml [INFO] started frobbing tuzz/ray-tracer [INFO] finished frobbing tuzz/ray-tracer [INFO] frobbed toml for tuzz/ray-tracer written to work/ex/pr-61629/sources/try#e212b7d492c96d3837691ba29d32d5f468933fb8/gh/tuzz/ray-tracer/Cargo.toml [INFO] crate tuzz/ray-tracer already has a lockfile, it will not be regenerated [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+c8865d8e195813ade6b84434ac9f8850e7112d1a-alt" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+e212b7d492c96d3837691ba29d32d5f468933fb8-alt" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] testing tuzz/ray-tracer against try#e212b7d492c96d3837691ba29d32d5f468933fb8 for pr-61629 [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/pr-61629/worker-4/try#e212b7d492c96d3837691ba29d32d5f468933fb8:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/pr-61629/sources/try#e212b7d492c96d3837691ba29d32d5f468933fb8/gh/tuzz/ray-tracer:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+e212b7d492c96d3837691ba29d32d5f468933fb8-alt" "build" "--frozen"` [INFO] [stdout] 28a0aa1a77edff3ca78a168f1b85821d3103a76dbdd0c9aab3daab4270871295 [INFO] running `"docker" "start" "-a" "28a0aa1a77edff3ca78a168f1b85821d3103a76dbdd0c9aab3daab4270871295"` [INFO] [stderr] Compiling assert_approx_eq v1.1.0 [INFO] [stderr] Compiling ray-tracer v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: type alias is never used: `Vector2f` [INFO] [stderr] --> src/geometry/vector2/mod.rs:24:1 [INFO] [stderr] | [INFO] [stderr] 24 | pub type Vector2f = Vector2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Vector2i` [INFO] [stderr] --> src/geometry/vector2/mod.rs:25:1 [INFO] [stderr] | [INFO] [stderr] 25 | pub type Vector2i = Vector2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Vector3i` [INFO] [stderr] --> src/geometry/vector3/mod.rs:45:1 [INFO] [stderr] | [INFO] [stderr] 45 | pub type Vector3i = Vector3; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `CoordinateSystem` [INFO] [stderr] --> src/geometry/coordinate_system/mod.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | struct CoordinateSystem { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/geometry/coordinate_system/mod.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | fn new(v1: &Vector3f) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Point2f` [INFO] [stderr] --> src/geometry/point2/mod.rs:33:1 [INFO] [stderr] | [INFO] [stderr] 33 | pub type Point2f = Point2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Point2i` [INFO] [stderr] --> src/geometry/point2/mod.rs:34:1 [INFO] [stderr] | [INFO] [stderr] 34 | pub type Point2i = Point2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Point3i` [INFO] [stderr] --> src/geometry/point3/mod.rs:31:1 [INFO] [stderr] | [INFO] [stderr] 31 | pub type Point3i = Point3; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Normal3f` [INFO] [stderr] --> src/geometry/normal3/mod.rs:24:1 [INFO] [stderr] | [INFO] [stderr] 24 | pub type Normal3f = Normal3; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `at` [INFO] [stderr] --> src/geometry/ray/mod.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn at(&self, time: f64) -> Point3f { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/geometry/ray_differential/mod.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn new(o: Point3f, d: Vector3f, t_max: Option, time: Option, medium: Option) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `scale_differentials` [INFO] [stderr] --> src/geometry/ray_differential/mod.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | pub fn scale_differentials(&mut self, s: f64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Bounds` [INFO] [stderr] --> src/geometry/bounds/mod.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | pub struct Bounds> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Bounds2` [INFO] [stderr] --> src/geometry/bounds2/mod.rs:5:1 [INFO] [stderr] | [INFO] [stderr] 5 | pub type Bounds2 = Bounds; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Bounds2f` [INFO] [stderr] --> src/geometry/bounds2/mod.rs:31:1 [INFO] [stderr] | [INFO] [stderr] 31 | pub type Bounds2f = Bounds2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Bounds2i` [INFO] [stderr] --> src/geometry/bounds2/mod.rs:32:1 [INFO] [stderr] | [INFO] [stderr] 32 | pub type Bounds2i = Bounds2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Bounds3` [INFO] [stderr] --> src/geometry/bounds3/mod.rs:5:1 [INFO] [stderr] | [INFO] [stderr] 5 | pub type Bounds3 = Bounds; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Bounds3f` [INFO] [stderr] --> src/geometry/bounds3/mod.rs:31:1 [INFO] [stderr] | [INFO] [stderr] 31 | pub type Bounds3f = Bounds3; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Bounds3i` [INFO] [stderr] --> src/geometry/bounds3/mod.rs:32:1 [INFO] [stderr] | [INFO] [stderr] 32 | pub type Bounds3i = Bounds3; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/dummy.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | pub fn new() -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.19s [INFO] running `"docker" "inspect" "28a0aa1a77edff3ca78a168f1b85821d3103a76dbdd0c9aab3daab4270871295"` [INFO] running `"docker" "rm" "-f" "28a0aa1a77edff3ca78a168f1b85821d3103a76dbdd0c9aab3daab4270871295"` [INFO] [stdout] 28a0aa1a77edff3ca78a168f1b85821d3103a76dbdd0c9aab3daab4270871295 [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/pr-61629/worker-4/try#e212b7d492c96d3837691ba29d32d5f468933fb8:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/pr-61629/sources/try#e212b7d492c96d3837691ba29d32d5f468933fb8/gh/tuzz/ray-tracer:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+e212b7d492c96d3837691ba29d32d5f468933fb8-alt" "test" "--frozen" "--no-run"` [INFO] [stdout] cbe091af86ce5923a7a2fa7c207c4b769304aba21f271dd9e8f9aec1c431d3e9 [INFO] running `"docker" "start" "-a" "cbe091af86ce5923a7a2fa7c207c4b769304aba21f271dd9e8f9aec1c431d3e9"` [INFO] [stderr] Compiling ray-tracer v0.1.0 (/opt/crater/workdir) [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 4.66s [INFO] running `"docker" "inspect" "cbe091af86ce5923a7a2fa7c207c4b769304aba21f271dd9e8f9aec1c431d3e9"` [INFO] running `"docker" "rm" "-f" "cbe091af86ce5923a7a2fa7c207c4b769304aba21f271dd9e8f9aec1c431d3e9"` [INFO] [stdout] cbe091af86ce5923a7a2fa7c207c4b769304aba21f271dd9e8f9aec1c431d3e9 [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/pr-61629/worker-4/try#e212b7d492c96d3837691ba29d32d5f468933fb8:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/pr-61629/sources/try#e212b7d492c96d3837691ba29d32d5f468933fb8/gh/tuzz/ray-tracer:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+e212b7d492c96d3837691ba29d32d5f468933fb8-alt" "test" "--frozen"` [INFO] [stdout] 577e4355c0a100295dbb9d8c35263bfa20dcd80496417dd5aeb57ca8f79c78c9 [INFO] running `"docker" "start" "-a" "577e4355c0a100295dbb9d8c35263bfa20dcd80496417dd5aeb57ca8f79c78c9"` [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.01s [INFO] [stderr] Running /opt/crater/target/debug/deps/ray_tracer-2964941a68d93ab2 [INFO] [stdout] [INFO] [stdout] running 167 tests [INFO] [stdout] test geometry::bounds2::test::aliases::it_has_a_type_alias_for_a_point_of_double_precision_floats ... ok [INFO] [stdout] test geometry::bounds2::test::aliases::it_has_a_type_alias_for_bounds_of_signed_integers ... ok [INFO] [stdout] test geometry::bounds3::test::default::it_builds_an_empty_bounding_box_for_i32 ... ok [INFO] [stdout] test geometry::bounds2::test::default::it_builds_an_empty_bounding_box_for_i32 ... ok [INFO] [stdout] test geometry::bounds2::test::default::it_builds_an_empty_bounding_box_for_f64 ... ok [INFO] [stdout] test geometry::bounds3::test::default::it_builds_an_empty_bounding_box_for_f64 ... ok [INFO] [stdout] test geometry::bounds3::test::aliases::it_has_a_type_alias_for_a_point_of_double_precision_floats ... ok [INFO] [stdout] test geometry::bounds3::test::aliases::it_has_a_type_alias_for_bounds_of_signed_integers ... ok [INFO] [stdout] test geometry::bounds2::test::conversions::it_can_build_a_bounding_box_from_a_point ... ok [INFO] [stdout] test geometry::bounds3::test::conversions::it_can_build_a_bounding_box_from_a_point ... ok [INFO] [stdout] test geometry::coordinate_system::test::new::it_builds_a_coordinate_system_by_calculating_three_orthogonal_vectors ... ok [INFO] [stdout] test geometry::normal3::test::aliases::it_has_a_type_alias_for_a_normal_of_double_precision_floats ... ok [INFO] [stdout] test geometry::normal3::test::components::it_can_iterate_over_components_of_the_struct ... ok [INFO] [stdout] test geometry::normal3::test::clone::it_clones_the_normal ... ok [INFO] [stdout] test geometry::normal3::test::conversions::it_can_build_a_normal3_from_a_vector3 ... ok [INFO] [stdout] test geometry::normal3::test::conversions::it_can_build_a_normal3_from_an_iterator ... ok [INFO] [stdout] test geometry::normal3::test::default::it_sets_x_y_and_z_to_zero ... ok [INFO] [stdout] test geometry::normal3::test::division::it_can_mutate_the_normal ... ok [INFO] [stdout] test geometry::normal3::test::division::it_divides_by_a_divisor ... ok [INFO] [stdout] test geometry::normal3::test::dot::it_returns_the_dot_product_of_the_normal_with_a_vector ... ok [INFO] [stdout] test geometry::normal3::test::dot::it_returns_the_dot_product_of_two_normals ... ok [INFO] [stdout] test geometry::normal3::test::face_forward::it_ensures_the_normal_is_in_the_same_hemisphere_as_another_normal ... ok [INFO] [stdout] test geometry::normal3::test::abs_dot::it_returns_the_absolute_value_of_the_dot_product_of_two_normals ... ok [INFO] [stdout] test geometry::normal3::test::addition::it_adds_the_components ... ok [INFO] [stdout] test geometry::normal3::test::addition::it_can_mutate_the_normal ... ok [INFO] [stdout] test geometry::normal3::test::abs_dot::it_returns_the_absolute_value_of_the_dot_product_with_a_vector ... ok [INFO] [stdout] test geometry::normal3::test::abs::it_can_take_the_absolute_value_of_normal3f_components ... ok [INFO] [stdout] test geometry::normal3::test::face_forward::it_ensures_the_normal_is_in_the_same_hemisphere_as_the_vector ... ok [INFO] [stdout] test geometry::normal3::test::length_squared::it_returns_the_square_of_the_length_of_the_normal ... ok [INFO] [stdout] test geometry::normal3::test::length::it_returns_the_length_of_the_normal ... ok [INFO] [stdout] test geometry::normal3::test::multiplication::it_multiplies_by_a_scalar ... ok [INFO] [stdout] test geometry::normal3::test::negation::it_returns_a_normal_pointing_in_the_opposite_direction ... ok [INFO] [stdout] test geometry::normal3::test::multiplication::it_can_mutate_the_normal ... ok [INFO] [stdout] test geometry::normal3::test::subtraction::it_subtracts_the_components ... ok [INFO] [stdout] test geometry::point2::test::abs::it_can_take_the_absolute_value_of_point2i_components ... ok [INFO] [stdout] test geometry::point2::test::addition::it_can_add_a_vector_to_the_point ... ok [INFO] [stdout] test geometry::point2::test::addition::it_can_add_one_point_to_another_to_return_a_point ... ok [INFO] [stdout] test geometry::point2::test::addition::it_can_mutate_the_point ... ok [INFO] [stdout] test geometry::point2::test::aliases::it_has_a_type_alias_for_a_point_of_double_precision_floats ... ok [INFO] [stdout] test geometry::point2::test::aliases::it_has_a_type_alias_for_a_point_of_signed_integers ... ok [INFO] [stdout] test geometry::normal3::test::new::it_builds_a_three_dimensional_normal ... ok [INFO] [stdout] test geometry::normal3::test::normalize::it_divides_each_component_by_the_normals_length ... ok [INFO] [stdout] test geometry::point2::test::abs::it_can_take_the_absolute_value_of_point2f_components ... ok [INFO] [stdout] test geometry::normal3::test::subtraction::it_can_mutate_the_normal ... ok [INFO] [stdout] test geometry::point2::test::ceil::it_can_take_the_ceiling_of_point2f_components ... ok [INFO] [stdout] test geometry::point2::test::clone::it_clones_the_point ... ok [INFO] [stdout] test geometry::point2::test::distance_squared::it_returns_the_square_of_distance_between_two_points ... ok [INFO] [stdout] test geometry::point2::test::division::it_can_mutate_the_point ... ok [INFO] [stdout] test geometry::point2::test::floor::it_can_take_the_floor_of_point2f_components ... ok [INFO] [stdout] test geometry::point2::test::lerp::it_linearly_interpolates_between_two_points ... ok [INFO] [stdout] test geometry::point2::test::max::it_returns_a_point_of_the_component_wise_maximums ... ok [INFO] [stdout] test geometry::point2::test::min::it_returns_a_point_of_the_component_wise_minimums ... ok [INFO] [stdout] test geometry::point2::test::multiplication::it_can_mutate_the_point ... ok [INFO] [stdout] test geometry::point2::test::multiplication::it_multiplies_by_a_scalar ... ok [INFO] [stdout] test geometry::point2::test::new::it_builds_a_two_dimensional_point ... ok [INFO] [stdout] test geometry::point2::test::permute::it_permutes_the_component_values_according_to_the_indexes ... ok [INFO] [stdout] test geometry::point2::test::subtraction::it_can_mutate_the_point ... ok [INFO] [stdout] test geometry::point2::test::subtraction::it_can_subtract_a_vector_from_the_point ... ok [INFO] [stdout] test geometry::point2::test::subtraction::it_can_subtract_one_point_from_another_to_return_a_vector ... ok [INFO] [stdout] test geometry::point3::test::abs::it_can_take_the_absolute_value_of_point3f_components ... ok [INFO] [stdout] test geometry::point3::test::abs::it_can_take_the_absolute_value_of_point3i_components ... ok [INFO] [stdout] test geometry::point3::test::addition::it_can_add_a_vector_to_the_point ... ok [INFO] [stdout] test geometry::point3::test::addition::it_can_add_one_point_to_another_to_return_a_point ... ok [INFO] [stdout] test geometry::point3::test::addition::it_can_mutate_the_point ... ok [INFO] [stdout] test geometry::point3::test::aliases::it_has_a_type_alias_for_a_point_of_double_precision_floats ... ok [INFO] [stdout] test geometry::point3::test::aliases::it_has_a_type_alias_for_a_point_of_signed_integers ... ok [INFO] [stdout] test geometry::point3::test::ceil::it_can_take_the_ceiling_of_point3f_components ... ok [INFO] [stdout] test geometry::point3::test::clone::it_clones_the_point ... ok [INFO] [stdout] test geometry::point3::test::conversions::it_can_build_a_point3_from_a_point3_with_different_component_types ... ok [INFO] [stdout] test geometry::point2::test::distance::it_returns_the_distance_between_two_points ... ok [INFO] [stdout] test geometry::point2::test::conversions::it_can_build_a_point2_from_an_iterator ... ok [INFO] [stdout] test geometry::point3::test::distance::it_returns_the_distance_between_two_points ... ok [INFO] [stdout] test geometry::point2::test::conversions::it_can_build_a_point2_from_a_point2_with_different_component_types ... ok [INFO] [stdout] test geometry::point2::test::division::it_divides_by_a_divisor ... ok [INFO] [stdout] test geometry::point3::test::distance_squared::it_returns_the_square_of_distance_between_two_points ... ok [INFO] [stdout] test geometry::point3::test::floor::it_can_take_the_floor_of_point3f_components ... ok [INFO] [stdout] test geometry::point3::test::lerp::it_linearly_interpolates_between_two_points ... ok [INFO] [stdout] test geometry::point3::test::max::it_returns_a_point_of_the_component_wise_maximums ... ok [INFO] [stdout] test geometry::point3::test::min::it_returns_a_point_of_the_component_wise_minimums ... ok [INFO] [stdout] test geometry::point3::test::multiplication::it_can_mutate_the_point ... ok [INFO] [stdout] test geometry::point3::test::multiplication::it_multiplies_by_a_scalar ... ok [INFO] [stdout] test geometry::point3::test::new::it_builds_a_three_dimensional_point ... ok [INFO] [stdout] test geometry::point3::test::permute::it_permutes_the_component_values_according_to_the_indexes ... ok [INFO] [stdout] test geometry::point3::test::subtraction::it_can_mutate_the_point ... ok [INFO] [stdout] test geometry::point3::test::subtraction::it_can_subtract_a_vector_from_the_point ... ok [INFO] [stdout] test geometry::point3::test::subtraction::it_can_subtract_one_point_from_another_to_return_a_vector ... ok [INFO] [stdout] test geometry::ray::test::at::it_returns_the_point_at_a_position_along_the_ray ... ok [INFO] [stdout] test geometry::ray::test::default::it_sets_sensible_defaults_for_the_fields ... ok [INFO] [stdout] test geometry::ray::test::interior_mutability::it_allows_t_max_to_be_mutated_when_the_ray_is_immutable ... ok [INFO] [stdout] test geometry::ray::test::new::it_builds_a_ray_and_sets_its_fields ... ok [INFO] [stdout] test geometry::ray_differential::test::conversions::it_can_build_a_ray_differential_from_a_ray ... ok [INFO] [stdout] test geometry::ray_differential::test::new::it_builds_a_ray_differential_and_sets_its_fields ... ok [INFO] [stdout] test geometry::ray_differential::test::scale_differentials::it_scales_the_differential_fields_by_a_number ... ok [INFO] [stdout] test geometry::vector2::test::abs::it_can_take_the_absolute_value_of_vector2f_components ... ok [INFO] [stdout] test geometry::vector2::test::abs::it_can_take_the_absolute_value_of_vector2i_components ... ok [INFO] [stdout] test geometry::vector2::test::abs_dot::it_returns_the_absolute_value_of_the_dot_product ... ok [INFO] [stdout] test geometry::vector2::test::addition::it_adds_the_components ... ok [INFO] [stdout] test geometry::vector2::test::addition::it_can_mutate_the_vector ... ok [INFO] [stdout] test geometry::vector2::test::aliases::it_has_a_type_alias_for_a_vector_of_double_precision_floats ... ok [INFO] [stdout] test geometry::vector2::test::aliases::it_has_a_type_alias_for_a_vector_of_signed_integers ... ok [INFO] [stdout] test geometry::vector2::test::clone::it_clones_the_vector ... ok [INFO] [stdout] test geometry::vector2::test::components::it_can_iterate_over_components_of_the_struct ... ok [INFO] [stdout] test geometry::vector2::test::conversions::it_can_build_a_vector2_from_a_point2 ... ok [INFO] [stdout] test geometry::vector2::test::conversions::it_can_build_a_vector2_from_an_iterator ... ok [INFO] [stdout] test geometry::vector2::test::default::it_sets_x_and_y_to_zero ... ok [INFO] [stdout] test geometry::vector2::test::division::it_can_mutate_the_vector ... ok [INFO] [stdout] test geometry::vector2::test::division::it_divides_by_a_divisor ... ok [INFO] [stdout] test geometry::vector2::test::dot::it_returns_the_dot_product_of_two_vectors ... ok [INFO] [stdout] test geometry::vector2::test::length::it_returns_the_length_of_the_vector ... ok [INFO] [stdout] test geometry::vector2::test::length_squared::it_returns_the_square_of_the_length_of_the_vector ... ok [INFO] [stdout] test geometry::vector2::test::max::it_returns_a_vector_of_the_component_wise_maximums ... ok [INFO] [stdout] test geometry::vector2::test::max_component::it_returns_the_value_of_the_largest_component ... ok [INFO] [stdout] test geometry::vector2::test::max_dimension::it_returns_the_index_of_the_dimension_with_largest_component ... ok [INFO] [stdout] test geometry::vector2::test::min::it_returns_a_vector_of_the_component_wise_minimums ... ok [INFO] [stdout] test geometry::vector2::test::min_component::it_returns_the_value_of_the_smallest_component ... ok [INFO] [stdout] test geometry::vector2::test::min_dimension::it_returns_the_index_of_the_dimension_with_smallest_component ... ok [INFO] [stdout] test geometry::vector2::test::multiplication::it_can_mutate_the_vector ... ok [INFO] [stdout] test geometry::vector2::test::multiplication::it_multiplies_by_a_scalar ... ok [INFO] [stdout] test geometry::vector2::test::negation::it_returns_a_vector_pointing_in_the_opposite_direction ... ok [INFO] [stdout] test geometry::vector2::test::new::it_builds_a_two_dimensional_vector ... ok [INFO] [stdout] test geometry::vector2::test::normalize::it_divides_each_component_by_the_vectors_length ... ok [INFO] [stdout] test geometry::point2::test::conversions::it_can_build_a_point2_from_a_point3_by_dropping_the_z_component ... ok [INFO] [stdout] test geometry::vector2::test::subtraction::it_can_mutate_the_vector ... ok [INFO] [stdout] test geometry::vector2::test::permute::it_permutes_the_component_values_according_to_the_indexes ... ok [INFO] [stdout] test geometry::point2::test::default::it_sets_x_and_y_to_zero ... ok [INFO] [stdout] test geometry::vector3::test::abs::it_can_take_the_absolute_value_of_vector3i_components ... ok [INFO] [stdout] test geometry::vector3::test::abs::it_can_take_the_absolute_value_of_vector3f_components ... ok [INFO] [stdout] test geometry::point3::test::conversions::it_can_build_a_point3_from_an_iterator ... ok [INFO] [stdout] test geometry::point3::test::default::it_sets_x_y_and_z_to_zero ... ok [INFO] [stdout] test geometry::point3::test::division::it_divides_by_a_divisor ... ok [INFO] [stdout] test geometry::point3::test::division::it_can_mutate_the_point ... ok [INFO] [stdout] test geometry::vector3::test::abs_dot::it_returns_the_absolute_value_of_the_dot_product_with_a_normal ... ok [INFO] [stdout] test geometry::vector2::test::subtraction::it_subtracts_the_components ... ok [INFO] [stdout] test geometry::vector3::test::conversions::it_can_build_a_vector3_from_a_normal3 ... ok [INFO] [stdout] test geometry::vector3::test::aliases::it_has_a_type_alias_for_a_vector_of_signed_integers ... ok [INFO] [stdout] test geometry::vector3::test::clone::it_clones_the_vector ... ok [INFO] [stdout] test geometry::vector3::test::components::it_can_iterate_over_components_of_the_struct ... ok [INFO] [stdout] test geometry::vector3::test::cross::it_returns_the_cross_product_of_two_vectors ... ok [INFO] [stdout] test geometry::vector3::test::conversions::it_can_build_a_vector3_from_an_iterator ... ok [INFO] [stdout] test geometry::vector3::test::conversions::it_can_build_a_vector3_from_a_point3 ... ok [INFO] [stdout] test geometry::vector3::test::dot::it_returns_the_dot_product_of_the_vector_with_a_normal ... ok [INFO] [stdout] test geometry::vector3::test::dot::it_returns_the_dot_product_of_two_vectors ... ok [INFO] [stdout] test geometry::vector3::test::face_forward::it_ensures_the_vector_is_in_the_same_hemisphere_as_another_vector ... ok [INFO] [stdout] test geometry::vector3::test::face_forward::it_ensures_the_vector_is_in_the_same_hemisphere_as_the_normal ... ok [INFO] [stdout] test geometry::vector3::test::length::it_returns_the_length_of_the_vector ... ok [INFO] [stdout] test geometry::vector3::test::length_squared::it_returns_the_square_of_the_length_of_the_vector ... ok [INFO] [stdout] test geometry::vector3::test::max::it_returns_a_vector_of_the_component_wise_maximums ... ok [INFO] [stdout] test geometry::vector3::test::max_component::it_returns_the_value_of_the_largest_component ... ok [INFO] [stdout] test geometry::vector3::test::max_dimension::it_returns_the_index_of_the_dimension_with_largest_component ... ok [INFO] [stdout] test geometry::vector3::test::min::it_returns_a_vector_of_the_component_wise_minimums ... ok [INFO] [stdout] test geometry::vector3::test::min_component::it_returns_the_value_of_the_smallest_component ... ok [INFO] [stdout] test geometry::vector3::test::min_dimension::it_returns_the_index_of_the_dimension_with_smallest_component ... ok [INFO] [stdout] test geometry::vector3::test::multiplication::it_can_mutate_the_vector ... ok [INFO] [stdout] test geometry::vector3::test::multiplication::it_multiplies_by_a_scalar ... ok [INFO] [stdout] test geometry::vector3::test::negation::it_returns_a_vector_pointing_in_the_opposite_direction ... ok [INFO] [stdout] test geometry::vector3::test::new::it_builds_a_three_dimensional_vector ... ok [INFO] [stdout] test geometry::vector3::test::normalize::it_divides_each_component_by_the_vectors_length ... ok [INFO] [stdout] test geometry::vector3::test::permute::it_permutes_the_component_values_according_to_the_indexes ... ok [INFO] [stdout] test geometry::vector3::test::subtraction::it_can_mutate_the_vector ... ok [INFO] [stdout] test geometry::vector3::test::subtraction::it_subtracts_the_components ... ok [INFO] [stdout] test geometry::vector3::test::abs_dot::it_returns_the_absolute_value_of_the_dot_product_of_two_vectors ... ok [INFO] [stdout] test geometry::vector3::test::division::it_can_mutate_the_vector ... ok [INFO] [stdout] test geometry::vector3::test::default::it_sets_x_y_and_z_to_zero ... ok [INFO] [stdout] test geometry::vector3::test::addition::it_can_mutate_the_vector ... ok [INFO] [stdout] test geometry::vector3::test::division::it_divides_by_a_divisor ... ok [INFO] [stdout] test geometry::vector3::test::aliases::it_has_a_type_alias_for_a_vector_of_double_precision_floats ... ok [INFO] [stdout] test geometry::vector3::test::addition::it_adds_the_components ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 167 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] running `"docker" "inspect" "577e4355c0a100295dbb9d8c35263bfa20dcd80496417dd5aeb57ca8f79c78c9"` [INFO] running `"docker" "rm" "-f" "577e4355c0a100295dbb9d8c35263bfa20dcd80496417dd5aeb57ca8f79c78c9"` [INFO] [stdout] 577e4355c0a100295dbb9d8c35263bfa20dcd80496417dd5aeb57ca8f79c78c9