[INFO] fetching crate viprs-ops-composite 0.1.5...
[INFO] testing viprs-ops-composite-0.1.5 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate viprs-ops-composite 0.1.5 into /workspace/builds/worker-6-tc1/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-6-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate viprs-ops-composite 0.1.5 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 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.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded owned_ttf_parser v0.25.1
[INFO] [stderr]   Downloaded ab_glyph v0.2.32
[INFO] [stderr]   Downloaded primal-check v0.3.4
[INFO] [stderr]   Downloaded transpose v0.2.3
[INFO] [stderr]   Downloaded ab_glyph_rasterizer v0.1.10
[INFO] [stderr]   Downloaded viprs-ports v0.1.5
[INFO] [stderr]   Downloaded strength_reduce v0.2.4
[INFO] [stderr]   Downloaded viprs-ops-pixel v0.1.5
[INFO] [stderr]   Downloaded viprs-core v0.1.5
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.50
[INFO] [stderr]   Downloaded memchr v2.8.1
[INFO] [stderr]   Downloaded rand v0.9.4
[INFO] [stderr]   Downloaded ttf-parser v0.25.1
[INFO] [stderr]   Downloaded wasip2 v1.0.3+wasi-0.2.9
[INFO] [stderr]   Downloaded viprs-ops-spatial v0.1.5
[INFO] [stderr]   Downloaded rustfft v6.4.1
[INFO] [stderr]   Downloaded zerocopy v0.8.50
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] f171d059392e83005bd5583473e64ba877f86583f0437152d62e174999fd8eb3
[INFO] running `Command { std: "docker" "start" "f171d059392e83005bd5583473e64ba877f86583f0437152d62e174999fd8eb3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f171d059392e83005bd5583473e64ba877f86583f0437152d62e174999fd8eb3", 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" "f171d059392e83005bd5583473e64ba877f86583f0437152d62e174999fd8eb3" "/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" "f171d059392e83005bd5583473e64ba877f86583f0437152d62e174999fd8eb3", 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" "f171d059392e83005bd5583473e64ba877f86583f0437152d62e174999fd8eb3" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling ttf-parser v0.25.1
[INFO] [stderr]    Compiling ab_glyph_rasterizer v0.1.10
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling owned_ttf_parser v0.25.1
[INFO] [stderr]    Compiling ab_glyph v0.2.32
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling bytemuck v1.25.0
[INFO] [stderr]    Compiling viprs-core v0.1.5
[INFO] [stderr]    Compiling viprs-ops-pixel v0.1.5
[INFO] [stderr]    Compiling viprs-ops-spatial v0.1.5
[INFO] [stderr]    Compiling viprs-ops-composite v0.1.5 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 15.69s
[INFO] running `Command { std: "docker" "inspect" "f171d059392e83005bd5583473e64ba877f86583f0437152d62e174999fd8eb3", 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" "f171d059392e83005bd5583473e64ba877f86583f0437152d62e174999fd8eb3" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling zerocopy v0.8.50
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling fnv v1.0.7
[INFO] [stderr]    Compiling unarray v0.1.4
[INFO] [stderr]    Compiling viprs-ports v0.1.5
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling rand v0.9.4
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[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]     Finished `test` profile [unoptimized + debuginfo] target(s) in 32.48s
[INFO] running `Command { std: "docker" "inspect" "f171d059392e83005bd5583473e64ba877f86583f0437152d62e174999fd8eb3", 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" "f171d059392e83005bd5583473e64ba877f86583f0437152d62e174999fd8eb3" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", 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]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.10s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/viprs_ops_composite-f1f0e9d1d2308639)
[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_unit_alpha_for_f32 ... ok
[INFO] [stdout] test conversion::addalpha::tests::metadata_reports_identity_geometry_and_output_band_count ... ok
[INFO] [stdout] test conversion::addalpha::tests::metadata_reports_input_slot_shape_for_rg_format ... ok
[INFO] [stdout] test conversion::arrayjoin::tests::join_two_u16_images_preserves_per_slot_band_order ... ok
[INFO] [stdout] test conversion::arrayjoin::tests::metadata_reports_identity_geometry_for_each_slot ... ok
[INFO] [stdout] test conversion::arrayjoin::tests::sample_size_bytes_covers_all_formats ... ok
[INFO] [stdout] test conversion::addalpha::tests::alpha_cast_converts_all_supported_sample_types ... 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::bandbool::tests::bandbool_metadata_matches_identity_geometry ... ok
[INFO] [stdout] test conversion::bandbool::tests::float_input_casts_to_i32_before_boolean ... ok
[INFO] [stdout] test conversion::addalpha::tests::dyn_process_region_supports_all_numeric_output_formats ... ok
[INFO] [stdout] test conversion::arrayjoin::tests::output_bands_scales_with_input_count ... ok
[INFO] [stdout] test conversion::arrayjoin::tests::join_two_single_band_images_matches_bandjoin ... ok
[INFO] [stdout] test conversion::addalpha::tests::adds_opaque_alpha_to_rgb ... ok
[INFO] [stdout] test conversion::bandbool::tests::into_bridge_reports_one_band ... ok
[INFO] [stdout] test conversion::bandbool::tests::or_of_zeros_and_ones_is_ones ... ok
[INFO] [stdout] test conversion::bandjoin::tests::demand_hint_is_thin_strip ... ok
[INFO] [stdout] test conversion::bandjoin::tests::format_passthrough ... ok
[INFO] [stdout] test conversion::bandjoin::tests::join_r_and_g_produces_rg ... ok
[INFO] [stdout] test conversion::bandjoin::tests::join_u16_inputs_preserves_two_byte_sample_boundaries ... 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::bandjoin::tests::round_trip_bandsplit_then_bandjoin ... ok
[INFO] [stdout] test conversion::bandjoin::tests::input_slot_count_is_2 ... ok
[INFO] [stdout] test conversion::bandjoin::tests::join_rgb_and_alpha_produces_rgba ... ok
[INFO] [stdout] test conversion::bandjoin::tests::node_spec_is_identity ... ok
[INFO] [stdout] test conversion::bandmean::tests::bandmean_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::bandmean::tests::signed_integer_mean_rounds_away_from_zero ... ok
[INFO] [stdout] test conversion::bandmean::tests::single_band_is_identity ... ok
[INFO] [stdout] test conversion::bandrank::tests::explicit_min_and_max_rank_work ... ok
[INFO] [stdout] test conversion::bandrank::tests::into_bridge_reports_one_band ... ok
[INFO] [stdout] test conversion::bandmean::tests::bandmean_sample_implementations_cover_all_formats ... ok
[INFO] [stdout] test conversion::bandrank::tests::median_single_pixel ... ok
[INFO] [stdout] test conversion::bandmean::tests::into_bridge_reports_one_band ... ok
[INFO] [stdout] test conversion::bandsplit::tests::boundary_single_pixel ... ok
[INFO] [stdout] test conversion::bandsplit::tests::bridge_new_always_reports_one_band ... ok
[INFO] [stdout] test conversion::bandsplit::tests::extract_alpha_from_rgba ... ok
[INFO] [stdout] test conversion::bandbool::tests::single_band_is_identity ... ok
[INFO] [stdout] test conversion::bandsplit::tests::extract_red_from_rgba ... ok
[INFO] [stdout] test conversion::bandsplit::tests::extract_green_from_rgba ... ok
[INFO] [stdout] test conversion::bandsplit::tests::identity_single_band ... ok
[INFO] [stdout] test conversion::byteswap::tests::byteswap_reports_thin_strip_demand_hint ... ok
[INFO] [stdout] test conversion::bandsplit::tests::pixel_local_op_impl ... ok
[INFO] [stdout] test conversion::byteswap::tests::f32_swaps_bits_not_numeric_value ... ok
[INFO] [stdout] test conversion::byteswap::tests::f64_and_multiband_u32_swap_entire_samples ... ok
[INFO] [stdout] test conversion::bandsplit::tests::extract_only_band_from_single_band ... ok
[INFO] [stdout] test conversion::byteswap::tests::swaps_known_u16_values ... ok
[INFO] [stdout] test conversion::byteswap::tests::u8_is_identity_boundary_values ... ok
[INFO] [stdout] test conversion::cast::tests::cast_f32_to_u8_clamps_and_scales ... 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::bandbool::tests::and_all_ones_stays_all_ones ... ok
[INFO] [stdout] test conversion::cast::tests::cast_metadata_matches_identity_geometry ... 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_out_of_range_f32_clips_to_u8_max ... ok
[INFO] [stdout] test conversion::cast::tests::cast_op_directly_processes_tile ... ok
[INFO] [stdout] test conversion::cast::tests::cast_sample_dispatch_covers_all_conversion_impls ... ok
[INFO] [stdout] test conversion::cast::tests::cast_u8_to_f32_scales_correctly ... ok
[INFO] [stdout] test conversion::cast::tests::cast_preserves_pixel_count ... ok
[INFO] [stdout] test conversion::cast::tests::cast_u8_to_u16_scales_by_257 ... ok
[INFO] [stdout] test conversion::cast::tests::cast_u8_to_f32_simd_matches_scalar ... ok
[INFO] [stdout] test conversion::copy::tests::apply_metadata_uses_sparse_overrides ... ok
[INFO] [stdout] test conversion::byteswap::tests::required_region_is_identity ... ok
[INFO] [stdout] test conversion::bandrank::tests::median_of_identical_bands_is_identity ... ok
[INFO] [stdout] test conversion::copy::tests::merge_overrides_replaces_and_inherits_fields ... ok
[INFO] [stdout] test conversion::addalpha::tests::identity_preserves_existing_bands ... ok
[INFO] [stdout] test conversion::embed::tests::background_fill_expands_single_value_to_all_bands ... ok
[INFO] [stdout] test conversion::embed::tests::bridge_reports_canvas_dimensions ... ok
[INFO] [stdout] test conversion::embed::tests::copy_extend_requires_overlap_and_node_specs_match_extend_mode ... ok
[INFO] [stdout] test conversion::embed::tests::copy_fill_replicates_nearest_edge_pixel ... ok
[INFO] [stdout] test conversion::embed::tests::edge_alias_matches_copy_and_copy_extend_replicates_rows_vertically ... ok
[INFO] [stdout] test conversion::embed::tests::embed_exact_fit_succeeds ... ok
[INFO] [stdout] test conversion::embed::tests::embed_negative_offset_with_overlap_succeeds ... ok
[INFO] [stdout] test conversion::bandmean::tests::identical_bands_reduce_to_same_values ... 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::embed::tests::embed_without_overlap_returns_typed_error ... ok
[INFO] [stdout] test conversion::embed::tests::gravity_offsets_match_libvips_compass_positions_for_cropping ... ok
[INFO] [stdout] test conversion::embed::tests::helper_validators_reject_invalid_dimensions_and_background_shapes ... ok
[INFO] [stdout] test conversion::embed::tests::gravity_offsets_match_libvips_compass_positions_for_padding ... ok
[INFO] [stdout] test conversion::embed::tests::mirror_coord_and_fill_repeated_pixel_cover_boundary_cases ... ok
[INFO] [stdout] test conversion::embed::tests::mirror_exact_boundary_reflects_last_source_pixel ... 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::embed::tests::repeat_and_mirror_request_full_source_tile ... ok
[INFO] [stdout] test conversion::byteswap::tests::swapping_twice_is_identity ... 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::unsigned_constructor_accepts_offsets_and_repeat_uses_canvas_coordinates ... 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::white_fill_without_overlap_paints_entire_output ... ok
[INFO] [stdout] test conversion::embed::tests::black_left_border_is_zero ... ok
[INFO] [stdout] test conversion::extract_bands::tests::boundary_single_pixel_multiband ... ok
[INFO] [stdout] test conversion::extract_bands::tests::extract_all_bands_is_identity ... ok
[INFO] [stdout] test conversion::extract_bands::tests::extract_ga_from_rgba ... 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::extract_bands::tests::identity_all_bands ... ok
[INFO] [stdout] test conversion::embed::tests::repeat_matches_euclidean_modulo ... ok
[INFO] [stdout] test conversion::copy::tests::copy_op_preserves_boundary_values ... ok
[INFO] [stdout] test conversion::extract_bands::tests::into_bridge_sets_bands_to_count ... ok
[INFO] [stdout] test conversion::cast::tests::cast_u8_to_u8_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::extract_bands::tests::pixel_local_op_impl ... ok
[INFO] [stdout] test conversion::embed::tests::mirror_matches_reflected_period ... ok
[INFO] [stdout] test conversion::bandjoin::tests::single_input_fallback_panics_in_debug_builds ... ok
[INFO] [stdout] test conversion::gamma::tests::default_curve_matches_libvips_f32_midtone ... ok
[INFO] [stdout] test conversion::copy::tests::copy_op_is_identity_for_any_tile ... ok
[INFO] [stdout] test conversion::flip::tests::vertical_required_input_region_reflects_y ... ok
[INFO] [stdout] test conversion::gamma::tests::default_curve_matches_libvips_default ... ok
[INFO] [stdout] test conversion::embed::tests::zero_offset_same_size_is_identity ... ok
[INFO] [stdout] test conversion::gamma::tests::default_curve_matches_libvips_u16_midtone ... 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::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::ifthenelse::tests::all_false_returns_else_image ... ok
[INFO] [stdout] test conversion::gamma::tests::signed_and_wide_integer_formats_clamp_like_libvips ... ok
[INFO] [stdout] test conversion::gamma::tests::u16_boundary_values_stay_in_range ... ok
[INFO] [stdout] test conversion::ifthenelse::tests::all_true_returns_then_image ... ok
[INFO] [stdout] test conversion::ifthenelse::tests::dyn_process_region_supports_all_numeric_branch_formats ... ok
[INFO] [stdout] test conversion::ifthenelse::tests::metadata_reports_combined_bands_and_identity_geometry ... ok
[INFO] [stdout] test conversion::ifthenelse::tests::multi_input_f32_uses_u8_condition_slot ... 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::bridge_reports_u8_output ... ok
[INFO] [stdout] test conversion::flip::tests::vertical_flip_twice_is_identity ... ok
[INFO] [stdout] test conversion::msb::tests::msb_reports_thin_strip_demand_hint ... ok
[INFO] [stdout] test conversion::msb::tests::signed_formats_flip_the_sign_bit_like_libvips ... ok
[INFO] [stdout] test conversion::msb::tests::u16_extracts_high_byte ... ok
[INFO] [stdout] test conversion::msb::tests::u8_is_identity_and_i32_flips_sign_bit ... ok
[INFO] [stdout] test conversion::replicate::tests::bridge_scales_dimensions ... ok
[INFO] [stdout] test conversion::replicate::tests::replicate_1x1_is_identity ... ok
[INFO] [stdout] test conversion::ifthenelse::tests::boundary_single_band_selection ... ok
[INFO] [stdout] test conversion::replicate::tests::tile_crossing_boundary_wraps_to_source_modulo ... 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::bridge_keeps_dimensions_and_format ... 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::d45_matches_libvips_triangle_mapping_for_5x5 ... ok
[INFO] [stdout] test conversion::rot45::tests::dyn_bridge_start_with_tile_and_bands_preserves_output_size ... ok
[INFO] [stdout] test conversion::msb::tests::u32_output_stays_within_u8_range ... ok
[INFO] [stdout] test conversion::msb::tests::required_region_is_identity ... ok
[INFO] [stdout] test conversion::replicate::tests::single_pixel_source_fills_replicated_output ... ok
[INFO] [stdout] test conversion::rot45::tests::rot45_odd_sized_does_not_panic ... ok
[INFO] [stdout] test conversion::rot45::tests::scratch_preallocation_covers_odd_rectangular_state_regions ... ok
[INFO] [stdout] test conversion::rot::tests::all_angles_map_partial_regions_for_non_square_images ... ok
[INFO] [stdout] test conversion::rot45::tests::helper_functions_preserve_pixel_coordinates_and_empty_state ... ok
[INFO] [stdout] test conversion::gamma::tests::u8_lut_matches_scalar_curve ... ok
[INFO] [stdout] test conversion::rot::tests::d90_bridge_transposes_dimensions ... ok
[INFO] [stdout] test conversion::rot::tests::d180_rotates_boundary_2x2 ... ok
[INFO] [stdout] test conversion::rot::tests::d90_required_input_region_matches_libvips_geometry ... ok
[INFO] [stdout] test conversion::rot::tests::d0_is_identity ... ok
[INFO] [stdout] test conversion::rot45::tests::required_region_is_full_odd_square ... ok
[INFO] [stdout] test conversion::rot45::tests::eight_d45_turns_are_identity ... ok
[INFO] [stdout] test conversion::switch::tests::index_one_selects_second_candidate ... ok
[INFO] [stdout] test conversion::rot::tests::rot_bridge_covers_all_angles_and_region_contracts ... ok
[INFO] [stdout] test conversion::switch::tests::metadata_matches_packed_layout ... ok
[INFO] [stdout] test conversion::flip::tests::horizontal_flip_twice_is_identity ... ok
[INFO] [stdout] test conversion::switch::tests::switch_index_conversions_cover_supported_types ... ok
[INFO] [stdout] test conversion::wrap::tests::centered_wrap_moves_origin_to_image_center_and_reports_full_source_tile ... ok
[INFO] [stdout] test conversion::wrap::tests::negative_displacement_uses_clock_arithmetic ... 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::zoom::tests::boundary_single_pixel_expands_to_uniform_block ... ok
[INFO] [stdout] test conversion::wrap::tests::offset_normalizes_positive_and_negative_displacements ... ok
[INFO] [stdout] test conversion::zoom::tests::bridge_scales_dimensions ... ok
[INFO] [stdout] test conversion::gamma::tests::exponent_one_is_identity ... 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::rot::tests::four_clockwise_quarter_turns_are_identity ... ok
[INFO] [stdout] test conversion::switch::tests::index_wraps_modulo_choice_count ... ok
[INFO] [stdout] test create::buildlut::tests::linearly_interpolates_between_two_points ... ok
[INFO] [stdout] test create::buildlut::tests::constructor_rejects_invalid_parameters ... ok
[INFO] [stdout] test conversion::zoom::tests::factor_one_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::eye::tests::factor_zero_is_a_vertical_ramp ... ok
[INFO] [stdout] test create::eye::tests::partial_region_uses_absolute_coordinates ... ok
[INFO] [stdout] test create::buildlut::tests::unsorted_points_are_sorted_before_interpolation ... ok
[INFO] [stdout] test create::eye::tests::with_uchar_preserves_dimensions ... ok
[INFO] [stdout] test conversion::gamma::tests::output_stays_inside_u8_bounds ... ok
[INFO] [stdout] test conversion::wrap::tests::wrap_matches_libvips_replicate_extract_formula ... ok
[INFO] [stdout] test create::fractsurf::tests::build_gaussian_lattice_covers_valid_and_error_paths ... ok
[INFO] [stdout] test create::fractsurf::tests::checked_surface_pixel_count_reports_buffer_overflow_details ... ok
[INFO] [stdout] test create::fractsurf::tests::constructor_rejects_invalid_dimensions_and_dimension ... ok
[INFO] [stdout] test conversion::zoom::tests::first_source_pixel_repeats_over_top_left_block ... ok
[INFO] [stdout] test create::fractsurf::tests::constructor_rejects_non_finite_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_accepts_boundary_fractal_dimensions ... ok
[INFO] [stdout] test conversion::wrap::tests::zero_displacement_is_identity ... ok
[INFO] [stdout] test create::eye::tests::prop_output_has_expected_dimensions_and_range ... ok
[INFO] [stdout] test create::fractsurf::tests::debug_output_reports_shape_and_dimension ... ok
[INFO] [stdout] test create::fractsurf::tests::hurst_estimator_skips_zero_power_bins ... ok
[INFO] [stdout] test create::fractsurf::tests::op_trait_methods_keep_passthrough_contract ... ok
[INFO] [stdout] test create::fractsurf::tests::constructor_rejects_oversized_dimensions ... ok
[INFO] [stdout] test create::fractsurf::tests::generation_is_deterministic_for_rectangular_images ... ok
[INFO] [stdout] test create::fractsurf::tests::normalize_surface_maps_flat_input_to_mid_gray ... ok
[INFO] [stdout] test create::fractsurf::tests::single_pixel_surface_normalizes_to_mid_gray ... ok
[INFO] [stdout] test create::frequency_mask::tests::nodc_uses_family_response_at_dc ... ok
[INFO] [stdout] test create::frequency_mask::tests::all_frequency_mask_variants_are_finite_away_from_fractal_dc ... 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::optical_places_dc_at_centre ... ok
[INFO] [stdout] test create::frequency_mask::tests::reject_inverts_non_dc_response ... ok
[INFO] [stdout] test create::frequency_mask::tests::rejects_invalid_parameters ... 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::gaussmat::tests::constructor_rejects_non_positive_inputs ... ok
[INFO] [stdout] test create::gaussmat::tests::dimensions_are_odd ... ok
[INFO] [stdout] test create::gaussmat::tests::float_precision_has_unit_peak_at_centre ... ok
[INFO] [stdout] test create::gaussmat::tests::integer_precision_rounds_to_integer_like_values ... ok
[INFO] [stdout] test create::gaussmat::tests::partial_region_matches_full_kernel_slice ... ok
[INFO] [stdout] test create::fractsurf::tests::golden_power_spectrum_matches_expected_hurst_exponent ... ok
[INFO] [stdout] test create::gaussmat::tests::separable_mode_emits_one_row ... ok
[INFO] [stdout] test create::gaussnoise::tests::constructor_rejects_invalid_parameters ... ok
[INFO] [stdout] test create::gaussnoise::tests::different_regions_share_the_same_seeded_pixel_values ... ok
[INFO] [stdout] test create::gaussnoise::tests::output_is_deterministic_for_the_same_seed ... ok
[INFO] [stdout] test create::gaussmat::tests::prop_float_kernels_are_symmetric ... ok
[INFO] [stdout] test create::grey::tests::horizontal_ramp_spans_zero_to_one ... ok
[INFO] [stdout] test create::frequency_mask::tests::prop_uchar_outputs_stay_in_byte_range ... ok
[INFO] [stdout] test create::buildlut::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::grey::tests::uchar_mode_scales_endpoints ... ok
[INFO] [stdout] test create::grey::tests::vertical_ramp_uses_row_coordinates ... ok
[INFO] [stdout] test create::identity::tests::byte_mode_emits_byte_indices ... ok
[INFO] [stdout] test create::identity::tests::identity_reports_any_demand_and_identity_region_contract ... ok
[INFO] [stdout] test create::identity::tests::dimensions_match_selected_mode ... ok
[INFO] [stdout] test create::identity::tests::partial_region_uses_absolute_x_offsets ... ok
[INFO] [stdout] test create::identity::tests::ushort_accessor_matches_mode ... ok
[INFO] [stdout] test create::identity::tests::ushort_mode_emits_full_16bit_range ... ok
[INFO] [stdout] test create::invertlut::tests::dimensions_match_requested_size_and_bands ... ok
[INFO] [stdout] test create::invertlut::tests::identity_table_round_trips ... ok
[INFO] [stdout] test create::invertlut::tests::output_can_be_quantized_to_u8 ... ok
[INFO] [stdout] test create::invertlut::tests::process_region_honours_partial_output_region_and_multiband_layout ... ok
[INFO] [stdout] test create::identity::tests::byte_mode_partial_region_emits_requested_indices ... ok
[INFO] [stdout] test create::invertlut::tests::rejects_invalid_matrices ... 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::logmat::tests::accessors_return_constructor_values ... ok
[INFO] [stdout] test create::logmat::tests::dimensions_are_odd ... 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::invertlut::tests::prop_monotone_identity_stays_in_range ... ok
[INFO] [stdout] test create::logmat::tests::rejects_invalid_constructor_arguments ... 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::mandelbrot::tests::accessors_report_requested_geometry ... ok
[INFO] [stdout] test create::mandelbrot::tests::constructor_rejects_zero_dimensions_and_iterations ... ok
[INFO] [stdout] test create::mandelbrot::tests::interior_point_survives_longer_than_corner ... ok
[INFO] [stdout] test create::mandelbrot::tests::partial_region_matches_full_render_slice ... 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::grey::tests::prop_horizontal_ramp_matches_expected_formula ... 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::point::tests::constructor_rejects_zero_dimensions ... ok
[INFO] [stdout] test create::point::tests::output_is_deterministic_for_same_seed ... 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::point::tests::renders_exact_number_of_unique_points_up_to_capacity ... 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::frequency_mask::tests::prop_dc_is_one_for_default_masks ... ok
[INFO] [stdout] test create::sdf::tests::rect_is_negative_inside_and_positive_outside ... ok
[INFO] [stdout] test create::sines::tests::defaults_match_libvips_frequency_defaults ... ok
[INFO] [stdout] test create::sines::tests::horizontal_wave_matches_expected_cosine ... ok
[INFO] [stdout] test create::sdf::tests::prop_output_is_finite_for_circles ... ok
[INFO] [stdout] test create::sines::tests::uchar_mode_scales_signed_range_to_byte_range ... ok
[INFO] [stdout] test create::sines::tests::zero_frequency_produces_constant_one ... ok
[INFO] [stdout] test create::perlin::tests::prop_output_stays_in_unit_interval ... ok
[INFO] [stdout] test create::tonelut::tests::dimensions_follow_in_max ... ok
[INFO] [stdout] test create::tonelut::tests::default_curve_is_identity ... ok
[INFO] [stdout] test create::tonelut::tests::metadata_reports_single_band_identity_geometry ... ok
[INFO] [stdout] test create::tonelut::tests::partial_region_uses_requested_x_offset ... ok
[INFO] [stdout] test create::tonelut::tests::integer_outputs_truncate_like_libvips_casts ... ok
[INFO] [stdout] test create::tonelut::tests::rejects_non_finite_parameters ... ok
[INFO] [stdout] test create::tonelut::tests::rejects_out_of_range_limits ... ok
[INFO] [stdout] test create::tonelut::tests::smooth_bump_handles_all_curve_segments ... ok
[INFO] [stdout] test create::tonelut::tests::u16_output_stays_in_range ... 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::worley::tests::partial_tiles_match_full_render ... ok
[INFO] [stdout] test create::black::tests::prop_black_op_always_outputs_zero ... ok
[INFO] [stdout] test create::sines::tests::prop_output_stays_within_expected_range ... ok
[INFO] [stdout] test create::xyz::tests::partial_region_uses_absolute_coordinates ... ok
[INFO] [stdout] test create::xyz::tests::xyz_op_encodes_coordinates ... ok
[INFO] [stdout] test create::xyz::tests::xyz_op_reports_identity_geometry_contract ... 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::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::zone::tests::partial_region_matches_full_render_slice ... ok
[INFO] [stdout] test create::xyz::tests::prop_xyz_matches_pixel_coordinates ... ok
[INFO] [stdout] test create::zone::tests::uchar_mode_scales_to_byte_range ... ok
[INFO] [stdout] test draw::draw_circle::tests::draws_visible_circle_pixels ... 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 draw::draw_image::tests::add_mode_matches_libvips_i16_clip_bounds ... ok
[INFO] [stdout] test create::mandelbrot::tests::prop_output_has_expected_dimensions_and_range ... ok
[INFO] [stdout] test draw::draw_image::tests::draw_image_in_region_ignores_invalid_overlay_bands ... ok
[INFO] [stdout] test create::fractsurf::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::draw_image::tests::add_mode_saturates_u8_boundary ... ok
[INFO] [stdout] test create::zone::tests::prop_output_has_expected_dimensions_and_range ... ok
[INFO] [stdout] test draw::draw_image::tests::one_band_sub_image_expands_to_target_bands ... 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::sample_impls_cover_non_u8_paths ... ok
[INFO] [stdout] test draw::draw_image::tests::set_mode_clips_overlay_against_left_edge ... ok
[INFO] [stdout] test draw::draw_image::tests::validate_image_buffer_rejects_zero_bands ... ok
[INFO] [stdout] test draw::draw_image::tests::validate_overlay_bands_rejects_mismatch ... ok
[INFO] [stdout] test draw::draw_image::tests::validate_sub_image_rejects_wrong_length ... ok
[INFO] [stdout] test draw::draw_image::tests::validate_sub_image_rejects_zero_bands ... ok
[INFO] [stdout] test draw::draw_line::tests::draws_horizontal_line ... ok
[INFO] [stdout] test draw::draw_mask::tests::clips_mask_against_image_bounds ... ok
[INFO] [stdout] test draw::draw_image::tests::set_mode_copies_overlapping_sub_image ... 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_returns_early_for_zero_bands ... ok
[INFO] [stdout] test create::tonelut::tests::prop_curve_has_expected_length_and_range ... ok
[INFO] [stdout] test draw::draw_mask::tests::draw_mask_in_region_uses_region_offsets ... ok
[INFO] [stdout] test draw::draw_mask::tests::draw_mask_rejects_mismatched_ink_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::multi_band_ink_blends_each_band_independently ... ok
[INFO] [stdout] test draw::draw_mask::tests::draw_mask_op_new_rejects_empty_ink ... ok
[INFO] [stdout] test draw::draw_mask::tests::sample_impls_cover_non_u8_paths ... ok
[INFO] [stdout] test draw::draw_mask::tests::one_band_ink_expands_to_target_bands ... ok
[INFO] [stdout] test draw::draw_rect::tests::draws_filled_rectangle ... ok
[INFO] [stdout] test draw::tests::draw_circle_rgba_stroke_preserves_overwrite_semantics ... ok
[INFO] [stdout] test draw::tests::draw_circle_stroke_matches_reference_points ... ok
[INFO] [stdout] test draw::draw_mask::tests::draw_mask_in_region_is_identity_when_mask_misses_offset_tile ... ok
[INFO] [stdout] test draw::tests::draw_flood_fills_connected_component ... ok
[INFO] [stdout] test draw::tests::draw_circle_stroke_stays_within_one_pixel_of_radius ... ok
[INFO] [stdout] test draw::tests::draw_line_rasterizes_diagonal ... ok
[INFO] [stdout] test draw::draw_mask::tests::full_mask_sets_boundary_values ... 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_point_sets_exactly_one_pixel ... ok
[INFO] [stdout] test draw::draw_mask::tests::zero_mask_is_identity ... ok
[INFO] [stdout] test draw::tests::draw_rect_fill_sets_expected_pixels ... ok
[INFO] [stdout] test draw::tests::draw_rect_rgba_overwrites_pixel_without_alpha_compositing ... 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 draw::tests::draw_horizontal_line_marks_exact_span ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::invalid_output_bytes_return_typed_error ... ok
[INFO] [stdout] test create::gaussnoise::tests::prop_output_has_expected_dimensions_and_finite_values ... 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 freqfilt::freqmult::tests::multiplying_by_complex_conjugate_returns_magnitude_squared ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::overflowing_output_region_returns_typed_error ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::short_output_buffer_returns_typed_error ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::single_input_dispatch_returns_typed_error ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::zero_complex_inputs_stay_zero ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::multiplying_pure_real_signal_by_itself_squares_real_part ... ok
[INFO] [stdout] test draw::tests::draw_rect_fill_paints_expected_area ... 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::missing_secondary_input_returns_typed_error ... ok
[INFO] [stdout] test freqfilt::phasecor::tests::phasecor_reports_two_input_complex_contract ... 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::zero_cross_power_returns_zero_pair ... ok
[INFO] [stdout] test freqfilt::phasecor::tests::self_correlation_matches_requested_example ... ok
[INFO] [stdout] test draw::draw_image::tests::set_identity_when_sub_image_is_outside ... ok
[INFO] [stdout] test draw::tests::draw_point_only_changes_target_pixel ... ok
[INFO] [stdout] test freqfilt::spectrum::tests::fftshift_swaps_quadrants_for_two_by_two_input ... ok
[INFO] [stdout] test freqfilt::spectrum::tests::output_dimensions_match_input_pixels ... ok
[INFO] [stdout] test freqfilt::spectrum::tests::output_is_single_real_band ... 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::spectrum::tests::zero_complex_signal_has_zero_magnitude ... ok
[INFO] [stdout] test mosaicing::auto_mosaic::tests::intersect_regions_handles_large_positive_origins_without_panicking ... ok
[INFO] [stdout] test mosaicing::auto_mosaic::tests::detect_offset_rejects_non_overlapping_images ... ok
[INFO] [stdout] test mosaicing::chkpair::tests::degenerate_samples_fall_back_to_global_fit_error ... ok
[INFO] [stdout] test mosaicing::chkpair::tests::empty_input_returns_empty_output ... ok
[INFO] [stdout] test mosaicing::chkpair::tests::exhaustive_hypotheses_cover_all_triplets ... ok
[INFO] [stdout] test freqfilt::spectrum::tests::dc_component_moves_to_center_after_fftshift ... ok
[INFO] [stdout] test mosaicing::chkpair::tests::removes_single_outlier_pair ... ok
[INFO] [stdout] test mosaicing::chkpair::tests::sampled_hypotheses_are_sorted_and_bounded ... ok
[INFO] [stdout] test mosaicing::chkpair::tests::retains_all_consistent_pairs ... ok
[INFO] [stdout] test mosaicing::chkpair::tests::validates_threshold_and_hypothesis_count ... ok
[INFO] [stdout] test mosaicing::global_balance::tests::accumulate_into_reuses_scratch_and_matches_reduce_tile_path ... ok
[INFO] [stdout] test mosaicing::global_balance::tests::constructor_and_solver_reject_invalid_inputs ... ok
[INFO] [stdout] test mosaicing::global_balance::tests::finalize_handles_single_tile_and_missing_measurements ... ok
[INFO] [stdout] test mosaicing::chkpair::tests::two_pair_input_uses_direct_fit_path ... 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::global_balance::tests::solves_two_tile_overlap_gains ... ok
[INFO] [stdout] test mosaicing::lrmerge::tests::dyn_contract_delegates ... ok
[INFO] [stdout] test mosaicing::lrmerge::tests::dyn_process_region_panics_for_two_input_wrapper - should panic ... ok
[INFO] [stdout] test mosaicing::global_balance::tests::gamma_balancing_uses_gamma_corrected_overlap_means ... ok
[INFO] [stdout] test mosaicing::lrmerge::tests::zero_overlap_is_hard_cut ... 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::lrmosaic::tests::identical_images_find_zero_offset ... ok
[INFO] [stdout] test mosaicing::lrmosaic::tests::shifted_pair_finds_expected_offset_exactly ... ok
[INFO] [stdout] test mosaicing::lrmosaic::tests::single_pixel_tiles_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::inverse_round_trips_points ... ok
[INFO] [stdout] test mosaicing::match_op::tests::least_squares_fit_stays_stable_for_large_coordinates ... ok
[INFO] [stdout] test mosaicing::lrmerge::tests::same_colour_half_overlap_stays_constant ... 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 mosaicing::match_op::tests::rejects_singular_least_squares_system ... ok
[INFO] [stdout] test mosaicing::match_op::tests::single_pair_reduces_to_translation ... ok
[INFO] [stdout] test mosaicing::match_op::tests::two_point_fit_matches_similarity_reference_model ... ok
[INFO] [stdout] test mosaicing::mosaic::tests::mosaic_dyn_metadata_matches_merge_delegation ... 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 ... ok
[INFO] [stdout] test mosaicing::chkpair::tests::consistent_translations_survive_ransac ... ok
[INFO] [stdout] test mosaicing::mosaic::tests::mosaic_vertical_output_dimensions_follow_tie_points ... ok
[INFO] [stdout] test mosaicing::remosaic::tests::builder_and_contract_cover_error_paths ... ok
[INFO] [stdout] test mosaicing::remosaic::tests::clips_scaled_integer_values ... ok
[INFO] [stdout] test mosaicing::mosaic::tests::mosaic_vertical_delegates_to_merge_offset ... ok
[INFO] [stdout] test mosaicing::global_balance::tests::equal_overlap_means_produce_unit_gains ... 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::tbmerge::tests::dyn_process_region_panics_for_two_input_wrapper - should panic ... ok
[INFO] [stdout] test mosaicing::match_op::tests::least_squares_recovers_consistent_affine_transforms ... ok
[INFO] [stdout] test freqfilt::phasecor::tests::identical_inputs_produce_unit_phase ... ok
[INFO] [stdout] test freqfilt::freqmult::tests::multiplying_by_unit_complex_is_identity ... ok
[INFO] [stdout] test mosaicing::tbmerge::tests::zero_overlap_is_hard_cut ... ok
[INFO] [stdout] test mosaicing::tbmosaic::tests::approximate_tie_point_keeps_tb_seam_aligned ... ok
[INFO] [stdout] test mosaicing::remosaic::tests::proptest_identity_for_unit_gain ... ok
[INFO] [stdout] test mosaicing::tbmosaic::tests::shifted_pair_finds_expected_offset_exactly ... ok
[INFO] [stdout] test mosaicing::tie_points::tests::checked_overlap_samples_rejects_overflow ... ok
[INFO] [stdout] test mosaicing::tbmosaic::tests::exact_overlap_delegates_to_tbmerge ... ok
[INFO] [stdout] test mosaicing::tbmosaic::tests::identical_images_find_zero_offset ... ok
[INFO] [stdout] test mosaicing::tbmosaic::tests::single_pixel_tiles_find_zero_offset ... ok
[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::intersect_regions_handles_large_positive_origins_without_panicking ... ok
[INFO] [stdout] test mosaicing::tie_points::tests::identical_tiles_with_zero_offset_keep_origin ... ok
[INFO] [stdout] test mosaicing::tbmerge::tests::same_colour_half_overlap_stays_constant ... ok
[INFO] [stdout] test mosaicing::tie_points::tests::exact_copy_prefers_inverse_region_shift ... ok
[INFO] [stdout] test create::worley::tests::prop_output_stays_in_unit_interval ... ok
[INFO] [stdout] test mosaicing::remosaic::tests::reciprocal_gains_round_trip_float_tiles ... ok
[INFO] [stderr]    Doc-tests viprs_ops_composite
[INFO] [stdout] test create::identity::tests::prop_output_has_expected_dimensions_and_range ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 449 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.09s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 60 tests
[INFO] [stdout] test src/conversion/addalpha.rs - conversion::addalpha::AddAlphaOp (line 15) ... ignored
[INFO] [stdout] test src/conversion/arrayjoin.rs - conversion::arrayjoin::ArrayJoinOp (line 12) ... ignored
[INFO] [stdout] test src/conversion/autorot.rs - conversion::autorot::AutorotOp (line 25) ... ignored
[INFO] [stdout] test src/conversion/bandbool.rs - conversion::bandbool::BandboolOp (line 28) ... ignored
[INFO] [stdout] test src/conversion/bandfold.rs - conversion::bandfold::BandfoldOp (line 12) ... ignored
[INFO] [stdout] test src/conversion/bandunfold.rs - conversion::bandunfold::BandunfoldOp (line 12) ... ignored
[INFO] [stdout] test src/conversion/byteswap.rs - conversion::byteswap::ByteswapOp (line 68) ... ignored
[INFO] [stdout] test src/conversion/cast.rs - conversion::cast::Cast (line 41) ... ignored
[INFO] [stdout] test src/conversion/composite.rs - conversion::composite::CompositeOp (line 81) ... ignored
[INFO] [stdout] test src/conversion/copy.rs - conversion::copy::CopyOp (line 18) ... ignored
[INFO] [stdout] test src/conversion/falsecolour.rs - conversion::falsecolour::FalsecolourOp (line 339) ... ignored
[INFO] [stdout] test src/conversion/gamma.rs - conversion::gamma::GammaOp (line 91) ... ignored
[INFO] [stdout] test src/conversion/grid.rs - conversion::grid::GridOp (line 12) ... ignored
[INFO] [stdout] test src/conversion/ifthenelse.rs - conversion::ifthenelse::IfThenElseOp (line 18) ... ignored
[INFO] [stdout] test src/conversion/msb.rs - conversion::msb::MsbOp (line 66) ... ignored
[INFO] [stdout] test src/conversion/rot45.rs - conversion::rot45::Rot45Op (line 51) ... ignored
[INFO] [stdout] test src/conversion/scale.rs - conversion::scale::ScaleOp (line 76) ... ignored
[INFO] [stdout] test src/conversion/sequential.rs - conversion::sequential::LineCacheOp (line 8) ... ignored
[INFO] [stdout] test src/conversion/sequential.rs - conversion::sequential::SequentialOp (line 45) ... ignored
[INFO] [stdout] test src/conversion/smartcrop.rs - conversion::smartcrop::SmartcropOp (line 43) ... ignored
[INFO] [stdout] test src/conversion/subsample.rs - conversion::subsample::SubsampleOp (line 24) ... ignored
[INFO] [stdout] test src/conversion/switch.rs - conversion::switch::SwitchOp (line 17) ... ignored
[INFO] [stdout] test src/conversion/transpose3d.rs - conversion::transpose3d::Transpose3dOp (line 15) ... ignored
[INFO] [stdout] test src/create/black.rs - create::black::BlackOp (line 13) ... ignored
[INFO] [stdout] test src/create/buildlut.rs - create::buildlut::BuildlutOp (line 20) ... ignored
[INFO] [stdout] test src/create/eye.rs - create::eye::EyeOp (line 14) ... ignored
[INFO] [stdout] test src/create/fractsurf.rs - create::fractsurf::FractSurfOp (line 30) ... ignored
[INFO] [stdout] test src/create/frequency_mask.rs - create::frequency_mask::FrequencyMaskOp (line 141) ... ignored
[INFO] [stdout] test src/create/gaussmat.rs - create::gaussmat::GaussmatOp (line 27) ... ignored
[INFO] [stdout] test src/create/gaussnoise.rs - create::gaussnoise::GaussnoiseOp (line 15) ... ignored
[INFO] [stdout] test src/create/grey.rs - create::grey::GreyOp (line 22) ... ignored
[INFO] [stdout] test src/create/identity.rs - create::identity::IdentityOp (line 13) ... ignored
[INFO] [stdout] test src/create/invertlut.rs - create::invertlut::InvertlutOp (line 17) ... ignored
[INFO] [stdout] test src/create/logmat.rs - create::logmat::LogmatOp (line 25) ... ignored
[INFO] [stdout] test src/create/mandelbrot.rs - create::mandelbrot::MandelbrotOp (line 14) ... ignored
[INFO] [stdout] test src/create/perlin.rs - create::perlin::PerlinOp (line 18) ... ignored
[INFO] [stdout] test src/create/point.rs - create::point::PointOp (line 11) ... ignored
[INFO] [stdout] test src/create/sdf.rs - create::sdf::SdfOp (line 30) ... ignored
[INFO] [stdout] test src/create/sines.rs - create::sines::SinesOp (line 16) ... ignored
[INFO] [stdout] test src/create/tonelut.rs - create::tonelut::TonelutOp (line 16) ... ignored
[INFO] [stdout] test src/create/worley.rs - create::worley::WorleyOp (line 34) ... ignored
[INFO] [stdout] test src/create/xyz.rs - create::xyz::XyzOp (line 13) ... ignored
[INFO] [stdout] test src/create/zone.rs - create::zone::ZoneOp (line 14) ... ignored
[INFO] [stdout] test src/draw/draw_circle.rs - draw::draw_circle::DrawCircleOp (line 9) ... ignored
[INFO] [stdout] test src/draw/draw_flood.rs - draw::draw_flood::DrawFloodOp (line 9) ... ignored
[INFO] [stdout] test src/draw/draw_image.rs - draw::draw_image::DrawImageOp (line 79) ... ignored
[INFO] [stdout] test src/draw/draw_line.rs - draw::draw_line::DrawLineOp (line 9) ... ignored
[INFO] [stdout] test src/draw/draw_mask.rs - draw::draw_mask::DrawMaskOp (line 83) ... ignored
[INFO] [stdout] test src/draw/draw_rect.rs - draw::draw_rect::DrawRectOp (line 9) ... ignored
[INFO] [stdout] test src/draw/draw_smudge.rs - draw::draw_smudge::DrawSmudgeOp (line 106) ... ignored
[INFO] [stdout] test src/freqfilt/freqmult.rs - freqfilt::freqmult::FreqMultOp (line 22) ... ignored
[INFO] [stdout] test src/freqfilt/phasecor.rs - freqfilt::phasecor::PhasecorOp (line 19) ... ignored
[INFO] [stdout] test src/freqfilt/spectrum.rs - freqfilt::spectrum::SpectrumOp (line 20) ... ignored
[INFO] [stdout] test src/mosaicing/chkpair.rs - mosaicing::chkpair::ChkpairOp (line 16) ... ignored
[INFO] [stdout] test src/mosaicing/lrmosaic.rs - mosaicing::lrmosaic::LrMosaicOp (line 12) ... ignored
[INFO] [stdout] test src/mosaicing/match_op.rs - mosaicing::match_op::MatchOp (line 124) ... ignored
[INFO] [stdout] test src/mosaicing/merge.rs - mosaicing::merge::MergeOp (line 335) ... ignored
[INFO] [stdout] test src/mosaicing/remosaic.rs - mosaicing::remosaic::RemosaicOp (line 14) ... ignored
[INFO] [stdout] test src/mosaicing/tbmosaic.rs - mosaicing::tbmosaic::TbMosaicOp (line 12) ... ignored
[INFO] [stdout] test src/mosaicing/tie_points.rs - mosaicing::tie_points::TiePointSearchOp (line 31) ... ignored
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 60 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.36s; merged doctests compilation took 0.35s
[INFO] running `Command { std: "docker" "inspect" "f171d059392e83005bd5583473e64ba877f86583f0437152d62e174999fd8eb3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f171d059392e83005bd5583473e64ba877f86583f0437152d62e174999fd8eb3", kill_on_drop: false }`
[INFO] [stdout] f171d059392e83005bd5583473e64ba877f86583f0437152d62e174999fd8eb3
