[INFO] fetching crate viprs-ops-composite 0.1.5...
[INFO] testing viprs-ops-composite-0.1.5 against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate viprs-ops-composite 0.1.5 into /workspace/builds/worker-7-tc2/source
[INFO] started tweaking crates.io crate viprs-ops-composite 0.1.5
[INFO] finished tweaking crates.io crate viprs-ops-composite 0.1.5
[INFO] tweaked toml for crates.io crate viprs-ops-composite 0.1.5 written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate viprs-ops-composite 0.1.5 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate viprs-ops-composite 0.1.5 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.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/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] 8d2d222d244bcd899fccad68ec1951830d43cb614189770dc4269e2cfe239f61
[INFO] running `Command { std: "docker" "start" "8d2d222d244bcd899fccad68ec1951830d43cb614189770dc4269e2cfe239f61", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8d2d222d244bcd899fccad68ec1951830d43cb614189770dc4269e2cfe239f61", 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" "8d2d222d244bcd899fccad68ec1951830d43cb614189770dc4269e2cfe239f61" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8d2d222d244bcd899fccad68ec1951830d43cb614189770dc4269e2cfe239f61", 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" "8d2d222d244bcd899fccad68ec1951830d43cb614189770dc4269e2cfe239f61" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling ttf-parser v0.25.1
[INFO] [stderr]    Compiling ab_glyph_rasterizer v0.1.10
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling bytemuck v1.25.0
[INFO] [stderr]    Compiling owned_ttf_parser v0.25.1
[INFO] [stderr]    Compiling ab_glyph v0.2.32
[INFO] [stderr]    Compiling viprs-core v0.1.5
[INFO] [stderr]    Compiling viprs-ops-spatial v0.1.5
[INFO] [stderr]    Compiling viprs-ops-pixel v0.1.5
[INFO] [stderr]    Compiling viprs-ops-composite v0.1.5 (/opt/rustwide/workdir)
[INFO] [stderr] warning: unused dependency `viprs-ops-pixel`
[INFO] [stderr]   --> Cargo.toml:12:15
[INFO] [stderr]    |
[INFO] [stderr] 12 | [dependencies.viprs-ops-pixel]
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `viprs-ops-pixel`
[INFO] [stderr] warning: `viprs-ops-composite` (manifest) generated 1 warning
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 20.37s
[INFO] running `Command { std: "docker" "inspect" "8d2d222d244bcd899fccad68ec1951830d43cb614189770dc4269e2cfe239f61", 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" "8d2d222d244bcd899fccad68ec1951830d43cb614189770dc4269e2cfe239f61" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling rand v0.9.4
[INFO] [stderr]    Compiling viprs-ports v0.1.5
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling proptest v1.11.0
[INFO] [stderr]    Compiling viprs-ops-composite v0.1.5 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `TileMut` and `Tile`
[INFO] [stdout]    --> src/freqfilt/phasecor.rs:268:37
[INFO] [stdout]     |
[INFO] [stdout] 268 |         image::{DemandHint, Region, Tile, TileMut},
[INFO] [stdout]     |                                     ^^^^  ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `-D unused-imports` implied by `-D warnings`
[INFO] [stdout]     = help: to override `-D warnings` add `#[allow(unused_imports)]`
[INFO] [stdout]     = note: the `unused_imports` lint ignores `-D warnings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TileMut` and `Tile`
[INFO] [stdout]    --> src/freqfilt/spectrum.rs:133:37
[INFO] [stdout]     |
[INFO] [stdout] 133 |         image::{DemandHint, Region, Tile, TileMut},
[INFO] [stdout]     |                                     ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Op`
[INFO] [stdout]    --> src/freqfilt/spectrum.rs:134:38
[INFO] [stdout]     |
[INFO] [stdout] 134 |         op::{DynOperation, NodeSpec, Op},
[INFO] [stdout]     |                                      ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Op`
[INFO] [stdout]    --> src/freqfilt/phasecor.rs:269:38
[INFO] [stdout]     |
[INFO] [stdout] 269 |         op::{DynOperation, NodeSpec, Op},
[INFO] [stdout]     |                                      ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `viprs-ops-pixel`
[INFO] [stderr]   --> Cargo.toml:12:15
[INFO] [stderr]    |
[INFO] [stderr] 12 | [dependencies.viprs-ops-pixel]
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `viprs-ops-pixel`
[INFO] [stderr] warning: `viprs-ops-composite` (manifest) generated 1 warning
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 17s
[INFO] running `Command { std: "docker" "inspect" "8d2d222d244bcd899fccad68ec1951830d43cb614189770dc4269e2cfe239f61", 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" "8d2d222d244bcd899fccad68ec1951830d43cb614189770dc4269e2cfe239f61" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: unused imports: `TileMut` and `Tile`
[INFO] [stderr]    --> src/freqfilt/phasecor.rs:268:37
[INFO] [stderr]     |
[INFO] [stderr] 268 |         image::{DemandHint, Region, Tile, TileMut},
[INFO] [stderr]     |                                     ^^^^  ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `-D unused-imports` implied by `-D warnings`
[INFO] [stderr]     = help: to override `-D warnings` add `#[allow(unused_imports)]`
[INFO] [stderr]     = note: the `unused_imports` lint ignores `-D warnings`
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `TileMut` and `Tile`
[INFO] [stderr]    --> src/freqfilt/spectrum.rs:133:37
[INFO] [stderr]     |
[INFO] [stderr] 133 |         image::{DemandHint, Region, Tile, TileMut},
[INFO] [stderr]     |                                     ^^^^  ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Op`
[INFO] [stderr]    --> src/freqfilt/spectrum.rs:134:38
[INFO] [stderr]     |
[INFO] [stderr] 134 |         op::{DynOperation, NodeSpec, Op},
[INFO] [stderr]     |                                      ^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Op`
[INFO] [stderr]    --> src/freqfilt/phasecor.rs:269:38
[INFO] [stderr]     |
[INFO] [stderr] 269 |         op::{DynOperation, NodeSpec, Op},
[INFO] [stderr]     |                                      ^^
[INFO] [stderr] 
[INFO] [stderr] warning: `viprs-ops-composite` (lib test) generated 4 warnings (run `cargo fix --lib -p viprs-ops-composite --tests` to apply 2 suggestions)
[INFO] [stderr] warning: unused dependency `viprs-ops-pixel`
[INFO] [stderr]   --> Cargo.toml:12:15
[INFO] [stderr]    |
[INFO] [stderr] 12 | [dependencies.viprs-ops-pixel]
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `viprs-ops-pixel`
[INFO] [stderr] warning: `viprs-ops-composite` (manifest) generated 1 warning
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.19s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/viprs-ops-composite/a97a4c28cc48e74d/out/viprs_ops_composite-a97a4c28cc48e74d)
[INFO] [stdout] 
[INFO] [stdout] running 449 tests
[INFO] [stdout] test conversion::addalpha::tests::addalpha_supports_single_band_and_dyn_start_with_tile ... ok
[INFO] [stdout] test conversion::addalpha::tests::adds_opaque_alpha_to_rgb ... ok
[INFO] [stdout] test conversion::addalpha::tests::adds_unit_alpha_for_f32 ... ok
[INFO] [stdout] test conversion::arrayjoin::tests::metadata_reports_identity_geometry_for_each_slot ... ok
[INFO] [stdout] test conversion::arrayjoin::tests::join_two_single_band_images_matches_bandjoin ... ok
[INFO] [stdout] test conversion::arrayjoin::tests::output_bands_scales_with_input_count ... ok
[INFO] [stdout] test conversion::arrayjoin::tests::sample_size_bytes_covers_all_formats ... ok
[INFO] [stdout] test conversion::bandbool::tests::and_on_duplicated_pixels_is_identity ... ok
[INFO] [stdout] test conversion::bandbool::tests::bandbool_format_dispatch_covers_all_supported_input_types ... ok
[INFO] [stdout] test conversion::arrayjoin::tests::join_two_u16_images_preserves_per_slot_band_order ... ok
[INFO] [stdout] test conversion::addalpha::tests::metadata_reports_identity_geometry_and_output_band_count ... ok
[INFO] [stdout] test conversion::addalpha::tests::dyn_process_region_supports_all_numeric_output_formats ... ok
[INFO] [stdout] test conversion::bandbool::tests::float_input_casts_to_i32_before_boolean ... ok
[INFO] [stdout] test conversion::bandbool::tests::or_of_zeros_and_ones_is_ones ... ok
[INFO] [stdout] test conversion::bandbool::tests::into_bridge_reports_one_band ... ok
[INFO] [stdout] test conversion::bandjoin::tests::format_passthrough ... ok
[INFO] [stdout] test conversion::bandjoin::tests::node_spec_is_identity ... ok
[INFO] [stdout] test conversion::bandjoin::tests::output_bands_sums_inputs ... ok
[INFO] [stdout] test conversion::bandjoin::tests::required_input_region_slot_is_identity ... ok
[INFO] [stdout] test conversion::addalpha::tests::metadata_reports_input_slot_shape_for_rg_format ... ok
[INFO] [stdout] test conversion::bandbool::tests::and_all_ones_stays_all_ones ... ok
[INFO] [stdout] test conversion::bandjoin::tests::input_slot_count_is_2 ... ok
[INFO] [stdout] test conversion::bandbool::tests::single_band_is_identity ... ok
[INFO] [stdout] test conversion::addalpha::tests::identity_preserves_existing_bands ... ok
[INFO] [stdout] test conversion::bandmean::tests::signed_integer_mean_rounds_away_from_zero ... ok
[INFO] [stdout] test conversion::bandmean::tests::into_bridge_reports_one_band ... ok
[INFO] [stdout] test conversion::bandbool::tests::bandbool_metadata_matches_identity_geometry ... ok
[INFO] [stdout] test conversion::bandmean::tests::rgb_u8_matches_reference_across_simd_tail ... ok
[INFO] [stdout] test conversion::bandmean::tests::rgba_u8_matches_reference_across_simd_tail ... ok
[INFO] [stdout] test conversion::bandjoin::tests::demand_hint_is_thin_strip ... ok
[INFO] [stdout] test conversion::bandrank::tests::median_single_pixel ... ok
[INFO] [stdout] test conversion::bandsplit::tests::boundary_single_pixel ... ok
[INFO] [stdout] test conversion::bandrank::tests::into_bridge_reports_one_band ... ok
[INFO] [stdout] test conversion::bandsplit::tests::bridge_new_always_reports_one_band ... ok
[INFO] [stdout] test conversion::bandrank::tests::median_of_identical_bands_is_identity ... ok
[INFO] [stdout] test conversion::bandsplit::tests::extract_alpha_from_rgba ... ok
[INFO] [stdout] test conversion::bandsplit::tests::extract_green_from_rgba ... ok
[INFO] [stdout] test conversion::bandrank::tests::explicit_min_and_max_rank_work ... ok
[INFO] [stdout] test conversion::bandmean::tests::single_band_is_identity ... ok
[INFO] [stdout] test conversion::bandjoin::tests::single_input_fallback_panics_in_debug_builds ... FAILED
[INFO] [stdout] test conversion::bandsplit::tests::extract_red_from_rgba ... ok
[INFO] [stdout] test conversion::bandmean::tests::bandmean_sample_implementations_cover_all_formats ... ok
[INFO] [stdout] test conversion::bandsplit::tests::identity_single_band ... ok
[INFO] [stdout] test conversion::byteswap::tests::f64_and_multiband_u32_swap_entire_samples ... ok
[INFO] [stdout] test conversion::cast::tests::cast_f32_to_u8_clamps_and_scales ... ok
[INFO] [stdout] test conversion::bandsplit::tests::pixel_local_op_impl ... ok
[INFO] [stdout] test conversion::bandsplit::tests::extract_only_band_from_single_band ... ok
[INFO] [stdout] test conversion::byteswap::tests::byteswap_reports_thin_strip_demand_hint ... ok
[INFO] [stdout] test conversion::byteswap::tests::f32_swaps_bits_not_numeric_value ... ok
[INFO] [stdout] test conversion::byteswap::tests::swaps_known_u16_values ... ok
[INFO] [stdout] test conversion::cast::tests::cast_op_directly_processes_tile ... ok
[INFO] [stdout] test conversion::byteswap::tests::swapping_twice_is_identity ... ok
[INFO] [stdout] test conversion::cast::tests::cast_out_of_range_f32_clips_to_u8_max ... ok
[INFO] [stdout] test conversion::cast::tests::cast_negative_f32_clips_to_zero_when_cast_to_u8 ... ok
[INFO] [stdout] test conversion::cast::tests::cast_metadata_matches_identity_geometry ... ok
[INFO] [stdout] test conversion::cast::tests::cast_preserves_pixel_count ... ok
[INFO] [stdout] test conversion::byteswap::tests::required_region_is_identity ... ok
[INFO] [stdout] test conversion::cast::tests::cast_f32_to_u8_saturates_out_of_range ... ok
[INFO] [stdout] test conversion::cast::tests::cast_f32_to_u8_simd_matches_scalar ... ok
[INFO] [stdout] test conversion::byteswap::tests::u8_is_identity_boundary_values ... ok
[INFO] [stdout] test conversion::cast::tests::cast_sample_dispatch_covers_all_conversion_impls ... ok
[INFO] [stdout] test conversion::bandjoin::tests::join_r_and_g_produces_rg ... ok
[INFO] [stdout] test conversion::bandjoin::tests::join_rgb_and_alpha_produces_rgba ... ok
[INFO] [stdout] test conversion::bandjoin::tests::join_u16_inputs_preserves_two_byte_sample_boundaries ... ok
[INFO] [stdout] test conversion::bandjoin::tests::round_trip_bandsplit_then_bandjoin ... ok
[INFO] [stdout] test conversion::bandmean::tests::bandmean_metadata_matches_identity_geometry ... ok
[INFO] [stdout] test conversion::bandmean::tests::identical_bands_reduce_to_same_values ... ok
[INFO] [stdout] test conversion::copy::tests::merge_overrides_replaces_and_inherits_fields ... ok
[INFO] [stdout] test conversion::addalpha::tests::alpha_cast_converts_all_supported_sample_types ... ok
[INFO] [stdout] test conversion::cast::tests::cast_u8_to_f32_simd_matches_scalar ... ok
[INFO] [stdout] test conversion::embed::tests::background_fill_expands_single_value_to_all_bands ... ok
[INFO] [stdout] test conversion::embed::tests::edge_alias_matches_copy_and_copy_extend_replicates_rows_vertically ... ok
[INFO] [stdout] test conversion::cast::tests::cast_u8_to_u16_scales_by_257 ... ok
[INFO] [stdout] test conversion::embed::tests::embed_without_overlap_returns_typed_error ... ok
[INFO] [stdout] test conversion::embed::tests::embed_exact_fit_succeeds ... ok
[INFO] [stdout] test conversion::embed::tests::gravity_offsets_match_libvips_compass_positions_for_cropping ... ok
[INFO] [stdout] test conversion::embed::tests::gravity_offsets_match_libvips_compass_positions_for_padding ... ok
[INFO] [stdout] test conversion::cast::tests::cast_u8_to_f32_scales_correctly ... ok
[INFO] [stdout] test conversion::embed::tests::black_left_border_is_zero ... ok
[INFO] [stdout] test conversion::copy::tests::copy_op_preserves_boundary_values ... ok
[INFO] [stdout] test conversion::embed::tests::copy_extend_requires_overlap_and_node_specs_match_extend_mode ... ok
[INFO] [stdout] test conversion::embed::tests::embed_negative_offset_with_overlap_succeeds ... ok
[INFO] [stdout] test conversion::embed::tests::embed_with_gravity_allows_black_extend_cropping_when_target_is_smaller ... ok
[INFO] [stdout] test conversion::embed::tests::embed_with_gravity_places_source_at_all_compass_positions ... ok
[INFO] [stdout] test conversion::cast::tests::cast_u8_to_u8_identity ... ok
[INFO] [stdout] test conversion::embed::tests::mirror_exact_boundary_reflects_last_source_pixel ... ok
[INFO] [stdout] test conversion::embed::tests::mirror_coord_and_fill_repeated_pixel_cover_boundary_cases ... ok
[INFO] [stdout] test conversion::embed::tests::bridge_reports_canvas_dimensions ... ok
[INFO] [stdout] test conversion::embed::tests::copy_fill_replicates_nearest_edge_pixel ... ok
[INFO] [stdout] test conversion::copy::tests::apply_metadata_uses_sparse_overrides ... ok
[INFO] [stdout] test conversion::embed::tests::helper_validators_reject_invalid_dimensions_and_background_shapes ... ok
[INFO] [stdout] test conversion::copy::tests::copy_op_is_identity_for_any_tile ... ok
[INFO] [stdout] test conversion::embed::tests::white_fill_preserves_interleaved_multiband_layout ... ok
[INFO] [stdout] test conversion::embed::tests::white_fill_uses_max_sample ... ok
[INFO] [stdout] test conversion::embed::tests::repeat_and_mirror_request_full_source_tile ... ok
[INFO] [stdout] test conversion::embed::tests::repeat_preserves_interleaved_multiband_pixels ... ok
[INFO] [stdout] test conversion::embed::tests::repeat_wraps_negative_offset_modulo_source_size ... ok
[INFO] [stdout] test conversion::embed::tests::required_input_region_subtracts_signed_offset ... ok
[INFO] [stdout] test conversion::embed::tests::repeat_matches_euclidean_modulo ... ok
[INFO] [stdout] test conversion::embed::tests::mirror_matches_reflected_period ... ok
[INFO] [stdout] test conversion::embed::tests::mirror_preserves_interleaved_multiband_pixels ... ok
[INFO] [stdout] test conversion::embed::tests::mirror_reflects_at_source_edges ... ok
[INFO] [stdout] test conversion::extract_bands::tests::identity_all_bands ... ok
[INFO] [stdout] test conversion::extract_bands::tests::boundary_single_pixel_multiband ... ok
[INFO] [stdout] test conversion::embed::tests::unsigned_constructor_accepts_offsets_and_repeat_uses_canvas_coordinates ... ok
[INFO] [stdout] test conversion::embed::tests::white_fill_without_overlap_paints_entire_output ... ok
[INFO] [stdout] test conversion::extract_bands::tests::extract_all_bands_is_identity ... ok
[INFO] [stdout] test conversion::extract_bands::tests::extract_rgb_from_rgba_drops_alpha ... ok
[INFO] [stdout] test conversion::extract_bands::tests::extract_single_band_is_identical_to_bandsplit ... ok
[INFO] [stdout] test conversion::gamma::tests::default_curve_matches_libvips_u8_midtone ... ok
[INFO] [stdout] test conversion::gamma::tests::default_exponent_matches_libvips_default ... ok
[INFO] [stdout] test conversion::gamma::tests::default_curve_matches_libvips_f32_midtone ... ok
[INFO] [stdout] test conversion::gamma::tests::default_curve_matches_libvips_u16_midtone ... ok
[INFO] [stdout] test conversion::gamma::tests::exponent_one_is_identity ... ok
[INFO] [stdout] test conversion::gamma::tests::exponent_two_takes_square_root_in_normalized_space ... ok
[INFO] [stdout] test conversion::gamma::tests::f32_uses_one_as_maximum ... ok
[INFO] [stdout] test conversion::gamma::tests::metadata_and_helper_functions_cover_identity_and_scalar_paths ... ok
[INFO] [stdout] test conversion::embed::tests::zero_offset_same_size_is_identity ... ok
[INFO] [stdout] test conversion::extract_bands::tests::extract_ga_from_rgba ... ok
[INFO] [stdout] test conversion::flip::tests::horizontal_flip_twice_is_identity ... ok
[INFO] [stdout] test conversion::flip::tests::horizontal_required_input_region_reflects_x ... ok
[INFO] [stdout] test conversion::flip::tests::one_pixel_boundary_is_identity_for_both_directions ... ok
[INFO] [stdout] test conversion::gamma::tests::u16_boundary_values_stay_in_range ... ok
[INFO] [stdout] test conversion::ifthenelse::tests::metadata_reports_combined_bands_and_identity_geometry ... ok
[INFO] [stdout] test conversion::flip::tests::vertical_flip_twice_is_identity ... ok
[INFO] [stdout] test conversion::ifthenelse::tests::all_false_returns_else_image ... ok
[INFO] [stdout] test conversion::gamma::tests::default_curve_matches_libvips_default ... ok
[INFO] [stdout] test conversion::ifthenelse::tests::all_true_returns_then_image ... ok
[INFO] [stdout] test conversion::flip::tests::vertical_required_input_region_reflects_y ... ok
[INFO] [stdout] test conversion::ifthenelse::tests::dyn_process_region_supports_all_numeric_branch_formats ... ok
[INFO] [stdout] test conversion::gamma::tests::signed_and_wide_integer_formats_clamp_like_libvips ... ok
[INFO] [stdout] test conversion::ifthenelse::tests::multi_input_f32_uses_u8_condition_slot ... ok
[INFO] [stdout] test conversion::ifthenelse::tests::boundary_single_band_selection ... ok
[INFO] [stdout] test conversion::gamma::tests::u8_lut_matches_scalar_curve ... ok
[INFO] [stdout] test conversion::gamma::tests::output_stays_inside_u8_bounds ... ok
[INFO] [stdout] test conversion::msb::tests::u16_extracts_high_byte ... ok
[INFO] [stdout] test conversion::replicate::tests::bridge_scales_dimensions ... ok
[INFO] [stdout] test conversion::msb::tests::msb_reports_thin_strip_demand_hint ... ok
[INFO] [stdout] test conversion::replicate::tests::replicate_1x1_is_identity ... ok
[INFO] [stdout] test conversion::ifthenelse::tests::per_slot_metadata_describes_u8_condition_and_typed_branches ... ok
[INFO] [stdout] test conversion::ifthenelse::tests::truthy_is_non_zero_for_all_supported_samples ... ok
[INFO] [stdout] test conversion::msb::tests::u32_output_stays_within_u8_range ... ok
[INFO] [stdout] test conversion::msb::tests::signed_formats_flip_the_sign_bit_like_libvips ... ok
[INFO] [stdout] test conversion::msb::tests::u8_is_identity_and_i32_flips_sign_bit ... ok
[INFO] [stdout] test conversion::msb::tests::bridge_reports_u8_output ... ok
[INFO] [stdout] test conversion::replicate::tests::single_pixel_source_fills_replicated_output ... ok
[INFO] [stdout] test conversion::msb::tests::required_region_is_identity ... ok
[INFO] [stdout] test conversion::replicate::tests::tile_crossing_boundary_wraps_to_source_modulo ... ok
[INFO] [stdout] test conversion::rot45::tests::required_region_is_full_odd_square ... ok
[INFO] [stdout] test conversion::rot45::tests::bridge_keeps_dimensions_and_format ... ok
[INFO] [stdout] test conversion::rot45::tests::scratch_preallocation_covers_odd_rectangular_state_regions ... ok
[INFO] [stdout] test conversion::rot45::tests::dyn_bridge_start_with_tile_and_bands_preserves_output_size ... ok
[INFO] [stdout] test conversion::rot45::tests::rot45_odd_sized_does_not_panic ... ok
[INFO] [stdout] test conversion::rot45::tests::d45_matches_libvips_triangle_mapping_for_5x5 ... ok
[INFO] [stdout] test conversion::rot45::tests::angle_variants_cover_all_step_counts_and_node_spec_stays_square ... ok
[INFO] [stdout] test conversion::rot45::tests::d0_is_identity_boundary_single_pixel ... ok
[INFO] [stdout] test conversion::rot45::tests::d180_matches_four_successive_d45_turns_for_multiband_tiles ... ok
[INFO] [stdout] test conversion::rot45::tests::eight_d45_turns_are_identity ... ok
[INFO] [stdout] test conversion::rot45::tests::helper_functions_preserve_pixel_coordinates_and_empty_state ... ok
[INFO] [stdout] test conversion::rot::tests::all_angles_map_partial_regions_for_non_square_images ... ok
[INFO] [stdout] test conversion::extract_bands::tests::into_bridge_sets_bands_to_count ... ok
[INFO] [stdout] test conversion::extract_bands::tests::pixel_local_op_impl ... ok
[INFO] [stdout] test conversion::wrap::tests::negative_displacement_uses_clock_arithmetic ... ok
[INFO] [stdout] test conversion::switch::tests::metadata_matches_packed_layout ... ok
[INFO] [stdout] test conversion::switch::tests::index_wraps_modulo_choice_count ... ok
[INFO] [stdout] test conversion::rot::tests::d0_is_identity ... ok
[INFO] [stdout] test conversion::rot::tests::d180_rotates_boundary_2x2 ... ok
[INFO] [stdout] test conversion::switch::tests::index_zero_selects_first_candidate ... ok
[INFO] [stdout] test conversion::wrap::tests::positive_displacement_moves_origin_to_that_position ... ok
[INFO] [stdout] test conversion::rot::tests::four_clockwise_quarter_turns_are_identity ... ok
[INFO] [stdout] test conversion::rot::tests::d90_bridge_transposes_dimensions ... ok
[INFO] [stdout] test conversion::wrap::tests::offset_normalizes_positive_and_negative_displacements ... ok
[INFO] [stdout] test conversion::wrap::tests::wrap_matches_libvips_replicate_extract_formula ... ok
[INFO] [stdout] test conversion::rot::tests::rot_bridge_covers_all_angles_and_region_contracts ... ok
[INFO] [stdout] test conversion::rot::tests::d90_required_input_region_matches_libvips_geometry ... ok
[INFO] [stdout] test conversion::zoom::tests::bridge_scales_dimensions ... ok
[INFO] [stdout] test conversion::switch::tests::index_one_selects_second_candidate ... ok
[INFO] [stdout] test conversion::wrap::tests::zero_displacement_is_identity ... ok
[INFO] [stdout] test create::buildlut::tests::values_before_and_after_control_point_range_are_clamped ... ok
[INFO] [stdout] test create::eye::tests::constructor_rejects_invalid_parameters ... ok
[INFO] [stdout] test create::black::tests::black_op_clears_every_band ... ok
[INFO] [stdout] test create::black::tests::black_op_handles_single_pixel_tiles ... ok
[INFO] [stdout] test create::black::tests::black_op_metadata_is_identity ... ok
[INFO] [stdout] test conversion::wrap::tests::centered_wrap_moves_origin_to_image_center_and_reports_full_source_tile ... ok
[INFO] [stdout] test conversion::zoom::tests::factor_one_is_identity ... ok
[INFO] [stdout] test create::eye::tests::with_uchar_preserves_dimensions ... ok
[INFO] [stdout] test create::eye::tests::partial_region_uses_absolute_coordinates ... ok
[INFO] [stdout] test create::buildlut::tests::prop_output_has_expected_dimensions_and_range ... ok
[INFO] [stdout] test create::buildlut::tests::linearly_interpolates_between_two_points ... ok
[INFO] [stdout] test create::fractsurf::tests::checked_surface_pixel_count_reports_buffer_overflow_details ... ok
[INFO] [stdout] test create::buildlut::tests::unsorted_points_are_sorted_before_interpolation ... ok
[INFO] [stdout] test create::fractsurf::tests::build_gaussian_lattice_covers_valid_and_error_paths ... ok
[INFO] [stdout] test create::fractsurf::tests::constructor_accepts_boundary_fractal_dimensions ... ok
[INFO] [stdout] test create::fractsurf::tests::checked_surface_pixel_count_accepts_non_trivial_dimensions ... ok
[INFO] [stdout] test create::fractsurf::tests::constructor_rejects_non_finite_fractal_dimensions ... ok
[INFO] [stdout] test create::fractsurf::tests::constructor_rejects_oversized_dimensions ... ok
[INFO] [stdout] test conversion::zoom::tests::first_source_pixel_repeats_over_top_left_block ... ok
[INFO] [stdout] test create::fractsurf::tests::debug_output_reports_shape_and_dimension ... ok
[INFO] [stdout] test create::buildlut::tests::constructor_rejects_invalid_parameters ... ok
[INFO] [stdout] test create::eye::tests::factor_zero_is_a_vertical_ramp ... ok
[INFO] [stdout] test create::fractsurf::tests::constructor_rejects_invalid_dimensions_and_dimension ... ok
[INFO] [stdout] test create::fractsurf::tests::generation_is_deterministic_for_rectangular_images ... ok
[INFO] [stdout] test create::fractsurf::tests::hurst_estimator_skips_zero_power_bins ... ok
[INFO] [stdout] test create::fractsurf::tests::single_pixel_surface_normalizes_to_mid_gray ... ok
[INFO] [stdout] test create::fractsurf::tests::normalize_surface_maps_flat_input_to_mid_gray ... ok
[INFO] [stdout] test create::fractsurf::tests::op_trait_methods_keep_passthrough_contract ... ok
[INFO] [stdout] test create::eye::tests::prop_output_has_expected_dimensions_and_range ... ok
[INFO] [stdout] test create::fractsurf::tests::rectangular_constructor_preserves_requested_dimensions ... ok
[INFO] [stdout] test create::frequency_mask::tests::all_frequency_mask_variants_are_finite_away_from_fractal_dc ... ok
[INFO] [stdout] test create::fractsurf::tests::golden_power_spectrum_matches_expected_hurst_exponent ... ok
[INFO] [stdout] test create::frequency_mask::tests::ideal_default_places_dc_at_origin_and_forces_one ... ok
[INFO] [stdout] test create::frequency_mask::tests::nodc_uses_family_response_at_dc ... ok
[INFO] [stdout] test create::frequency_mask::tests::optical_places_dc_at_centre ... ok
[INFO] [stdout] test create::gaussmat::tests::dimensions_are_odd ... ok
[INFO] [stdout] test create::gaussmat::tests::integer_precision_rounds_to_integer_like_values ... ok
[INFO] [stdout] test create::gaussmat::tests::prop_float_kernels_are_symmetric ... ok
[INFO] [stdout] test create::frequency_mask::tests::reject_inverts_non_dc_response ... ok
[INFO] [stdout] test create::gaussmat::tests::constructor_rejects_non_positive_inputs ... ok
[INFO] [stdout] test create::frequency_mask::tests::rejects_invalid_parameters ... ok
[INFO] [stdout] test create::gaussmat::tests::partial_region_matches_full_kernel_slice ... ok
[INFO] [stdout] test conversion::switch::tests::switch_index_conversions_cover_supported_types ... ok
[INFO] [stdout] test create::gaussmat::tests::float_precision_has_unit_peak_at_centre ... ok
[INFO] [stdout] test create::gaussnoise::tests::constructor_rejects_invalid_parameters ... ok
[INFO] [stdout] test create::gaussnoise::tests::output_is_deterministic_for_the_same_seed ... ok
[INFO] [stdout] test create::gaussmat::tests::separable_mode_emits_one_row ... ok
[INFO] [stdout] test create::frequency_mask::tests::uchar_scales_to_byte_range ... ok
[INFO] [stdout] test create::gaussmat::tests::approximate_precision_uses_integer_rounding_branch ... ok
[INFO] [stdout] test create::frequency_mask::tests::prop_dc_is_one_for_default_masks ... ok
[INFO] [stdout] test create::grey::tests::horizontal_ramp_spans_zero_to_one ... ok
[INFO] [stdout] test conversion::zoom::tests::boundary_single_pixel_expands_to_uniform_block ... ok
[INFO] [stdout] test create::black::tests::prop_black_op_always_outputs_zero ... ok
[INFO] [stdout] test create::identity::tests::byte_mode_partial_region_emits_requested_indices ... ok
[INFO] [stdout] test create::grey::tests::uchar_mode_scales_endpoints ... ok
[INFO] [stdout] test create::identity::tests::byte_mode_emits_byte_indices ... ok
[INFO] [stdout] test create::identity::tests::partial_region_uses_absolute_x_offsets ... ok
[INFO] [stdout] test create::grey::tests::vertical_ramp_uses_row_coordinates ... ok
[INFO] [stdout] test create::identity::tests::dimensions_match_selected_mode ... ok
[INFO] [stdout] test create::identity::tests::identity_reports_any_demand_and_identity_region_contract ... ok
[INFO] [stdout] test create::gaussnoise::tests::different_regions_share_the_same_seeded_pixel_values ... ok
[INFO] [stdout] test create::grey::tests::prop_horizontal_ramp_matches_expected_formula ... ok
[INFO] [stdout] test create::frequency_mask::tests::prop_uchar_outputs_stay_in_byte_range ... ok
[INFO] [stdout] test create::invertlut::tests::identity_table_round_trips ... ok
[INFO] [stdout] test create::invertlut::tests::dimensions_match_requested_size_and_bands ... ok
[INFO] [stdout] test create::logmat::tests::accessors_return_constructor_values ... ok
[INFO] [stdout] test create::gaussnoise::tests::prop_output_has_expected_dimensions_and_finite_values ... ok
[INFO] [stdout] test create::invertlut::tests::output_can_be_quantized_to_u8 ... ok
[INFO] [stdout] test create::logmat::tests::dimensions_are_odd ... ok
[INFO] [stdout] test create::invertlut::tests::prop_monotone_identity_stays_in_range ... ok
[INFO] [stdout] test create::identity::tests::ushort_accessor_matches_mode ... ok
[INFO] [stdout] test create::invertlut::tests::repeated_output_coordinate_uses_lower_segment_value ... ok
[INFO] [stdout] test create::invertlut::tests::size_one_table_uses_first_control_point_without_dividing_by_zero ... ok
[INFO] [stdout] test create::identity::tests::ushort_mode_emits_full_16bit_range ... ok
[INFO] [stdout] test create::invertlut::tests::process_region_honours_partial_output_region_and_multiband_layout ... ok
[INFO] [stdout] test create::logmat::tests::float_precision_is_positive_at_centre ... ok
[INFO] [stdout] test create::logmat::tests::integer_precision_rounds_to_integer_like_values ... ok
[INFO] [stdout] test create::logmat::tests::op_contract_helpers_return_expected_values ... ok
[INFO] [stdout] test create::logmat::tests::rejects_invalid_constructor_arguments ... ok
[INFO] [stdout] test create::mandelbrot::tests::accessors_report_requested_geometry ... ok
[INFO] [stdout] test create::mandelbrot::tests::constructor_rejects_zero_dimensions_and_iterations ... ok
[INFO] [stdout] test create::logmat::tests::rejects_masks_that_exceed_sanity_limit ... ok
[INFO] [stdout] test create::logmat::tests::separable_mode_emits_one_row ... ok
[INFO] [stdout] test create::logmat::tests::prop_float_kernel_is_symmetric ... ok
[INFO] [stdout] test create::perlin::tests::constructor_rejects_invalid_geometry ... ok
[INFO] [stdout] test create::point::tests::output_is_deterministic_for_same_seed ... ok
[INFO] [stdout] test create::perlin::tests::output_is_deterministic_for_same_seed ... ok
[INFO] [stdout] test create::perlin::tests::partial_tiles_match_full_render ... ok
[INFO] [stdout] test create::mandelbrot::tests::partial_region_matches_full_render_slice ... ok
[INFO] [stdout] test create::point::tests::renders_exact_number_of_unique_points_up_to_capacity ... ok
[INFO] [stdout] test create::point::tests::constructor_rejects_zero_dimensions ... ok
[INFO] [stdout] test create::point::tests::partial_tiles_match_full_render ... ok
[INFO] [stdout] test create::point::tests::prop_output_stays_binary ... ok
[INFO] [stdout] test create::sdf::tests::prop_output_is_finite_for_circles ... ok
[INFO] [stdout] test create::mandelbrot::tests::interior_point_survives_longer_than_corner ... ok
[INFO] [stdout] test create::invertlut::tests::rejects_invalid_matrices ... ok
[INFO] [stdout] test create::sdf::tests::circle_is_negative_inside_and_positive_outside ... ok
[INFO] [stdout] test create::sdf::tests::constructor_rejects_invalid_geometry ... ok
[INFO] [stdout] test create::perlin::tests::prop_output_stays_in_unit_interval ... ok
[INFO] [stdout] test create::tonelut::tests::integer_outputs_truncate_like_libvips_casts ... ok
[INFO] [stdout] test create::sines::tests::zero_frequency_produces_constant_one ... ok
[INFO] [stdout] test create::sines::tests::horizontal_wave_matches_expected_cosine ... ok
[INFO] [stdout] test create::sines::tests::defaults_match_libvips_frequency_defaults ... ok
[INFO] [stdout] test create::sines::tests::uchar_mode_scales_signed_range_to_byte_range ... ok
[INFO] [stdout] test create::tonelut::tests::metadata_reports_single_band_identity_geometry ... ok
[INFO] [stdout] test create::sdf::tests::rect_is_negative_inside_and_positive_outside ... ok
[INFO] [stdout] test create::tonelut::tests::default_curve_is_identity ... ok
[INFO] [stdout] test create::tonelut::tests::partial_region_uses_requested_x_offset ... ok
[INFO] [stdout] test create::tonelut::tests::dimensions_follow_in_max ... ok
[INFO] [stdout] test create::tonelut::tests::rejects_out_of_range_limits ... ok
[INFO] [stdout] test create::tonelut::tests::rejects_non_finite_parameters ... ok
[INFO] [stdout] test create::tonelut::tests::u16_output_stays_in_range ... ok
[INFO] [stdout] test create::tonelut::tests::smooth_bump_handles_all_curve_segments ... ok
[INFO] [stdout] test create::sines::tests::prop_output_stays_within_expected_range ... ok
[INFO] [stdout] test create::tonelut::tests::prop_curve_has_expected_length_and_range ... ok
[INFO] [stdout] test create::xyz::tests::xyz_op_single_pixel_is_origin ... ok
[INFO] [stdout] test create::zone::tests::accessors_report_requested_geometry ... ok
[INFO] [stdout] test create::xyz::tests::xyz_op_reports_identity_geometry_contract ... ok
[INFO] [stdout] test create::zone::tests::uchar_mode_scales_to_byte_range ... ok
[INFO] [stdout] test draw::draw_flood::tests::fills_connected_region ... ok
[INFO] [stdout] test draw::draw_image::tests::add_mode_expands_single_overlay_band_across_target_bands ... ok
[INFO] [stdout] test create::xyz::tests::xyz_op_encodes_coordinates ... ok
[INFO] [stdout] test draw::draw_circle::tests::draws_visible_circle_pixels ... ok
[INFO] [stdout] test draw::draw_image::tests::add_mode_matches_libvips_i16_clip_bounds ... ok
[INFO] [stdout] test draw::draw_image::tests::draw_image_in_region_ignores_invalid_overlay_bands ... ok
[INFO] [stdout] test create::worley::tests::constructor_rejects_invalid_geometry ... ok
[INFO] [stdout] test create::worley::tests::output_is_deterministic_for_same_seed ... ok
[INFO] [stdout] test create::zone::tests::centre_of_odd_sized_zone_plate_is_one ... ok
[INFO] [stdout] test create::zone::tests::constructor_rejects_zero_dimensions ... ok
[INFO] [stdout] test create::worley::tests::partial_tiles_match_full_render ... ok
[INFO] [stdout] test draw::draw_image::tests::one_band_sub_image_expands_to_target_bands ... ok
[INFO] [stdout] test draw::draw_image::tests::set_mode_clips_overlay_against_left_edge ... ok
[INFO] [stdout] test draw::draw_image::tests::set_mode_copies_overlapping_sub_image ... ok
[INFO] [stdout] test create::xyz::tests::prop_xyz_matches_pixel_coordinates ... ok
[INFO] [stdout] test draw::draw_image::tests::add_mode_saturates_u8_boundary ... ok
[INFO] [stdout] test draw::draw_image::tests::sample_impls_cover_non_u8_paths ... ok
[INFO] [stdout] test draw::draw_image::tests::draw_image_in_region_is_identity_when_overlay_misses_offset_tile ... ok
[INFO] [stdout] test draw::draw_image::tests::validate_image_buffer_rejects_zero_bands ... ok
[INFO] [stdout] test create::xyz::tests::partial_region_uses_absolute_coordinates ... ok
[INFO] [stdout] test draw::draw_line::tests::draws_horizontal_line ... ok
[INFO] [stdout] test create::zone::tests::partial_region_matches_full_render_slice ... ok
[INFO] [stdout] test draw::draw_image::tests::validate_overlay_bands_rejects_mismatch ... ok
[INFO] [stdout] test draw::draw_mask::tests::clipped_mask_uses_source_offset ... ok
[INFO] [stdout] test draw::draw_mask::tests::draw_mask_in_region_uses_region_offsets ... ok
[INFO] [stdout] test draw::draw_image::tests::validate_sub_image_rejects_zero_bands ... ok
[INFO] [stdout] test draw::draw_mask::tests::draw_mask_in_region_returns_early_for_zero_bands ... ok
[INFO] [stdout] test draw::draw_mask::tests::clips_mask_against_image_bounds ... ok
[INFO] [stdout] test draw::draw_mask::tests::draw_mask_in_region_is_identity_when_mask_misses_offset_tile ... ok
[INFO] [stdout] test draw::draw_mask::tests::draw_mask_op_new_rejects_empty_ink ... ok
[INFO] [stdout] test draw::draw_image::tests::set_identity_when_sub_image_is_outside ... ok
[INFO] [stdout] test draw::draw_image::tests::validate_sub_image_rejects_wrong_length ... ok
[INFO] [stdout] test draw::draw_mask::tests::sample_impls_cover_non_u8_paths ... ok
[INFO] [stdout] test draw::draw_rect::tests::draws_filled_rectangle ... ok
[INFO] [stdout] test draw::draw_mask::tests::draw_mask_rejects_mismatched_ink_bands ... ok
[INFO] [stdout] test draw::draw_mask::tests::one_band_ink_expands_to_target_bands ... ok
[INFO] [stdout] test draw::draw_mask::tests::mask_255_paints_ink_and_mask_0_preserves_base ... ok
[INFO] [stdout] test draw::draw_mask::tests::full_mask_sets_boundary_values ... ok
[INFO] [stdout] test draw::draw_mask::tests::multi_band_ink_blends_each_band_independently ... ok
[INFO] [stdout] test draw::draw_mask::tests::zero_mask_is_identity ... ok
[INFO] [stdout] test draw::tests::draw_line_rasterizes_diagonal ... ok
[INFO] [stdout] test draw::tests::draw_circle_rgba_stroke_preserves_overwrite_semantics ... ok
[INFO] [stdout] test draw::tests::draw_line_rgba_overwrites_each_drawn_sample ... ok
[INFO] [stdout] test draw::tests::draw_point_out_of_bounds_is_noop ... ok
[INFO] [stdout] test draw::tests::draw_circle_stroke_matches_reference_points ... ok
[INFO] [stdout] test draw::tests::draw_horizontal_line_marks_exact_span ... ok
[INFO] [stdout] test draw::tests::draw_circle_stroke_stays_within_one_pixel_of_radius ... ok
[INFO] [stdout] test draw::tests::draw_point_only_changes_target_pixel ... ok
[INFO] [stdout] test draw::tests::draw_flood_fills_connected_component ... ok
[INFO] [stdout] test create::zone::tests::prop_output_has_expected_dimensions_and_range ... ok
[INFO] [stdout] test draw::draw_image::tests::draw_image_in_region_uses_region_offsets ... ok
[INFO] [stdout] test draw::tests::draw_point_sets_exactly_one_pixel ... ok
[INFO] [stdout] test draw::tests::draw_rect_fill_paints_expected_area ... ok
[INFO] [stdout] test draw::tests::draw_rect_rgba_overwrites_pixel_without_alpha_compositing ... ok
[INFO] [stdout] test draw::tests::draw_rect_fill_sets_expected_pixels ... ok
[INFO] [stdout] test draw::tests::draw_rect_stroke_leaves_interior_untouched ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::freqmult_reports_two_input_complex_contract ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::invalid_input_bytes_return_typed_error ... ok
[INFO] [stdout] test create::fractsurf::tests::prop_output_has_expected_dimensions_and_range ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::invalid_output_bytes_return_typed_error ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::invalid_rhs_bytes_return_typed_error ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::mismatched_input_lengths_return_typed_error ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::missing_secondary_input_returns_typed_error ... ok
[INFO] [stdout] test create::worley::tests::prop_output_stays_in_unit_interval ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::multiplying_by_complex_conjugate_returns_magnitude_squared ... ok
[INFO] [stdout] test freqfilt::phasecor::tests::invalid_input_bytes_return_typed_error ... ok
[INFO] [stdout] test freqfilt::phasecor::tests::mismatched_input_lengths_return_typed_error ... ok
[INFO] [stdout] test freqfilt::phasecor::tests::phasecor_reports_two_input_complex_contract ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::overflowing_output_region_returns_typed_error ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::single_input_dispatch_returns_typed_error ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::multiplying_by_unit_complex_is_identity ... ok
[INFO] [stdout] test freqfilt::phasecor::tests::self_correlation_matches_requested_example ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::zero_complex_inputs_stay_zero ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::short_output_buffer_returns_typed_error ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::multiplying_pure_real_signal_by_itself_squares_real_part ... ok
[INFO] [stdout] test freqfilt::phasecor::tests::single_input_dispatch_returns_typed_error ... ok
[INFO] [stdout] test freqfilt::phasecor::tests::tiny_cross_power_remains_normalized_in_f64 ... ok
[INFO] [stdout] test freqfilt::phasecor::tests::identical_inputs_produce_unit_phase ... ok
[INFO] [stdout] test freqfilt::phasecor::tests::missing_secondary_input_returns_typed_error ... ok
[INFO] [stdout] test freqfilt::spectrum::tests::output_dimensions_match_input_pixels ... ok
[INFO] [stdout] test freqfilt::spectrum::tests::dc_component_moves_to_center_after_fftshift ... ok
[INFO] [stdout] test freqfilt::spectrum::tests::fftshift_swaps_quadrants_for_two_by_two_input ... ok
[INFO] [stdout] test freqfilt::spectrum::tests::spectrum_reports_single_band_full_image_contract ... ok
[INFO] [stdout] test mosaicing::auto_mosaic::tests::detect_offset_recovers_exact_shift_from_approximate_tie_points ... ok
[INFO] [stdout] test freqfilt::phasecor::tests::zero_cross_power_returns_zero_pair ... ok
[INFO] [stdout] test mosaicing::auto_mosaic::tests::intersect_regions_handles_large_positive_origins_without_panicking ... ok
[INFO] [stdout] test freqfilt::spectrum::tests::output_is_single_real_band ... ok
[INFO] [stdout] test mosaicing::chkpair::tests::degenerate_samples_fall_back_to_global_fit_error ... ok
[INFO] [stdout] test mosaicing::chkpair::tests::sampled_hypotheses_are_sorted_and_bounded ... ok
[INFO] [stdout] test mosaicing::chkpair::tests::validates_threshold_and_hypothesis_count ... ok
[INFO] [stdout] test mosaicing::auto_mosaic::tests::detect_offset_rejects_non_overlapping_images ... ok
[INFO] [stdout] test mosaicing::chkpair::tests::empty_input_returns_empty_output ... ok
[INFO] [stdout] test mosaicing::chkpair::tests::two_pair_input_uses_direct_fit_path ... ok
[INFO] [stdout] test mosaicing::global_balance::tests::accumulate_into_reuses_scratch_and_matches_reduce_tile_path ... ok
[INFO] [stdout] test freqfilt::spectrum::tests::zero_complex_signal_has_zero_magnitude ... ok
[INFO] [stdout] test mosaicing::chkpair::tests::exhaustive_hypotheses_cover_all_triplets ... ok
[INFO] [stdout] test mosaicing::chkpair::tests::removes_single_outlier_pair ... ok
[INFO] [stdout] test mosaicing::chkpair::tests::retains_all_consistent_pairs ... ok
[INFO] [stdout] test mosaicing::global_balance::tests::gamma_balancing_uses_gamma_corrected_overlap_means ... ok
[INFO] [stdout] test mosaicing::chkpair::tests::consistent_translations_survive_ransac ... ok
[INFO] [stdout] test mosaicing::global_balance::tests::constructor_and_solver_reject_invalid_inputs ... ok
[INFO] [stdout] test mosaicing::global_balance::tests::identical_tiles_keep_unit_balance ... ok
[INFO] [stdout] test mosaicing::global_balance::tests::reduce_tile_ignores_non_positive_means ... ok
[INFO] [stdout] test mosaicing::lrmerge::tests::dyn_contract_delegates ... ok
[INFO] [stdout] test mosaicing::global_balance::tests::equal_overlap_means_produce_unit_gains ... ok
[INFO] [stdout] test mosaicing::global_balance::tests::finalize_handles_single_tile_and_missing_measurements ... ok
[INFO] [stdout] test mosaicing::global_balance::tests::solves_two_tile_overlap_gains ... ok
[INFO] [stdout] test mosaicing::lrmerge::tests::same_colour_half_overlap_stays_constant ... ok
[INFO] [stdout] test mosaicing::lrmerge::tests::zero_overlap_is_hard_cut ... ok
[INFO] [stdout] test mosaicing::lrmosaic::tests::single_pixel_tiles_find_zero_offset ... ok
[INFO] [stdout] test mosaicing::lrmosaic::tests::approximate_tie_point_keeps_lr_seam_aligned ... ok
[INFO] [stdout] test mosaicing::lrmosaic::tests::exact_overlap_delegates_to_lrmerge ... ok
[INFO] [stdout] test mosaicing::match_op::tests::rejects_singular_least_squares_system ... ok
[INFO] [stdout] test mosaicing::lrmerge::tests::dyn_process_region_panics_for_two_input_wrapper - should panic ... FAILED
[INFO] [stdout] test mosaicing::match_op::tests::inverse_round_trips_points ... ok
[INFO] [stdout] test mosaicing::lrmosaic::tests::identical_images_find_zero_offset ... ok
[INFO] [stdout] test mosaicing::match_op::tests::aligned_tie_points_fit_identity_transform ... ok
[INFO] [stdout] test mosaicing::match_op::tests::inverse_rejects_singular_matrix ... ok
[INFO] [stdout] test mosaicing::match_op::tests::single_pair_reduces_to_translation ... ok
[INFO] [stdout] test mosaicing::match_op::tests::least_squares_fit_stays_stable_for_large_coordinates ... ok
[INFO] [stdout] test mosaicing::mosaic::tests::mosaic_horizontal_delegates_to_merge_offset ... ok
[INFO] [stdout] test mosaicing::mosaic::tests::mosaic_single_input_path_panics_for_multi_input_nodes - should panic ... FAILED
[INFO] [stdout] test mosaicing::match_op::tests::least_squares_recovers_consistent_affine_transforms ... ok
[INFO] [stdout] test mosaicing::match_op::tests::two_point_fit_matches_similarity_reference_model ... ok
[INFO] [stdout] test mosaicing::lrmosaic::tests::shifted_pair_finds_expected_offset_exactly ... ok
[INFO] [stdout] test mosaicing::match_op::tests::rejects_degenerate_similarity_configuration ... ok
[INFO] [stdout] test mosaicing::match_op::tests::rejects_out_of_bounds_tie_points ... ok
[INFO] [stdout] test create::mandelbrot::tests::prop_output_has_expected_dimensions_and_range ... ok
[INFO] [stdout] test mosaicing::tbmosaic::tests::exact_overlap_delegates_to_tbmerge ... ok
[INFO] [stdout] test mosaicing::tbmosaic::tests::approximate_tie_point_keeps_tb_seam_aligned ... ok
[INFO] [stdout] test mosaicing::mosaic::tests::mosaic_dyn_metadata_matches_merge_delegation ... ok
[INFO] [stdout] test mosaicing::tbmosaic::tests::identical_images_find_zero_offset ... ok
[INFO] [stdout] test mosaicing::tbmosaic::tests::shifted_pair_finds_expected_offset_exactly ... ok
[INFO] [stdout] test mosaicing::tbmosaic::tests::single_pixel_tiles_find_zero_offset ... ok
[INFO] [stdout] test mosaicing::remosaic::tests::builder_and_contract_cover_error_paths ... ok
[INFO] [stdout] test mosaicing::mosaic::tests::mosaic_vertical_output_dimensions_follow_tie_points ... ok
[INFO] [stdout] test mosaicing::tbmerge::tests::dyn_process_region_panics_for_two_input_wrapper - should panic ... FAILED
[INFO] [stdout] test mosaicing::tie_points::tests::finds_known_horizontal_shift ... ok
[INFO] [stdout] test mosaicing::tie_points::tests::finds_known_vertical_shift ... ok
[INFO] [stdout] test mosaicing::tie_points::tests::checked_overlap_samples_rejects_overflow ... ok
[INFO] [stdout] test mosaicing::tbmerge::tests::same_colour_half_overlap_stays_constant ... ok
[INFO] [stdout] test mosaicing::tie_points::tests::intersect_regions_handles_large_positive_origins_without_panicking ... ok
[INFO] [stdout] test mosaicing::mosaic::tests::mosaic_vertical_delegates_to_merge_offset ... ok
[INFO] [stdout] test mosaicing::tbmerge::tests::zero_overlap_is_hard_cut ... ok
[INFO] [stdout] test mosaicing::remosaic::tests::clips_scaled_integer_values ... ok
[INFO] [stdout] test mosaicing::tie_points::tests::identical_tiles_with_zero_offset_keep_origin ... ok
[INFO] [stdout] test mosaicing::remosaic::tests::proptest_identity_for_unit_gain ... ok
[INFO] [stdout] test mosaicing::remosaic::tests::unit_gain_preserves_input ... ok
[INFO] [stdout] test mosaicing::tbmerge::tests::dyn_contract_delegates ... ok
[INFO] [stdout] test mosaicing::remosaic::tests::reciprocal_gains_round_trip_float_tiles ... ok
[INFO] [stdout] test mosaicing::tie_points::tests::exact_copy_prefers_inverse_region_shift ... ok
[INFO] [stdout] test create::identity::tests::prop_output_has_expected_dimensions_and_range ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- conversion::bandjoin::tests::single_input_fallback_panics_in_debug_builds stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'conversion::bandjoin::tests::single_input_fallback_panics_in_debug_builds' (579) panicked at src/conversion/bandjoin.rs:288:9:
[INFO] [stdout] assertion failed: result.is_err()
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x60f4026bc981 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x60f4026d366a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x60f4026c0ffc - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x60f4026978b6 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x60f4026b4e69 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x60f4026364f0 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x60f4026b5022 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x60f402697994 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x60f402690529 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x60f40269856d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x60f4026d3dcc - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x60f4026d3d92 - core[a373ad73a504971]::panicking::panic
[INFO] [stdout]   12:     0x60f40257f5c5 - <viprs_ops_composite[8499b7f807106da0]::conversion::bandjoin::tests::single_input_fallback_panics_in_debug_builds::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x60f40262993b - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x60f402636b15 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x60f402630404 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x60f402639ba2 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x60f4026bc1df - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x77e2975f0dfa - <unknown>
[INFO] [stdout]   19:     0x77e2976843d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- mosaicing::lrmerge::tests::dyn_process_region_panics_for_two_input_wrapper stdout ----
[INFO] [stdout] note: test did not panic as expected at src/mosaicing/lrmerge.rs:207:8
[INFO] [stdout] ---- mosaicing::mosaic::tests::mosaic_single_input_path_panics_for_multi_input_nodes stdout ----
[INFO] [stdout] note: test did not panic as expected at src/mosaicing/mosaic.rs:347:8
[INFO] [stdout] ---- mosaicing::tbmerge::tests::dyn_process_region_panics_for_two_input_wrapper stdout ----
[INFO] [stdout] note: test did not panic as expected at src/mosaicing/tbmerge.rs:207:8
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     conversion::bandjoin::tests::single_input_fallback_panics_in_debug_builds
[INFO] [stdout]     mosaicing::lrmerge::tests::dyn_process_region_panics_for_two_input_wrapper
[INFO] [stdout]     mosaicing::mosaic::tests::mosaic_single_input_path_panics_for_multi_input_nodes
[INFO] [stdout]     mosaicing::tbmerge::tests::dyn_process_region_panics_for_two_input_wrapper
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 445 passed; 4 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "8d2d222d244bcd899fccad68ec1951830d43cb614189770dc4269e2cfe239f61", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8d2d222d244bcd899fccad68ec1951830d43cb614189770dc4269e2cfe239f61", kill_on_drop: false }`
[INFO] [stdout] 8d2d222d244bcd899fccad68ec1951830d43cb614189770dc4269e2cfe239f61
