[INFO] fetching crate viprs-ops-spatial 0.1.5...
[INFO] testing viprs-ops-spatial-0.1.5 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate viprs-ops-spatial 0.1.5 into /workspace/builds/worker-4-tc1/source
[INFO] started tweaking crates.io crate viprs-ops-spatial 0.1.5
[INFO] finished tweaking crates.io crate viprs-ops-spatial 0.1.5
[INFO] tweaked toml for crates.io crate viprs-ops-spatial 0.1.5 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate viprs-ops-spatial 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-spatial 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]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded viprs-ports v0.1.5
[INFO] [stderr]   Downloaded viprs-core v0.1.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 9587d359ab5518bac7a6ef41be491034fa6c8025de991c870724b9722209e4eb
[INFO] running `Command { std: "docker" "start" "9587d359ab5518bac7a6ef41be491034fa6c8025de991c870724b9722209e4eb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9587d359ab5518bac7a6ef41be491034fa6c8025de991c870724b9722209e4eb", 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" "9587d359ab5518bac7a6ef41be491034fa6c8025de991c870724b9722209e4eb" "/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" "9587d359ab5518bac7a6ef41be491034fa6c8025de991c870724b9722209e4eb", 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" "9587d359ab5518bac7a6ef41be491034fa6c8025de991c870724b9722209e4eb" "/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 bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling thiserror v2.0.18
[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 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 7.60s
[INFO] running `Command { std: "docker" "inspect" "9587d359ab5518bac7a6ef41be491034fa6c8025de991c870724b9722209e4eb", 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" "9587d359ab5518bac7a6ef41be491034fa6c8025de991c870724b9722209e4eb" "/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 zerocopy v0.8.50
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling rand v0.9.4
[INFO] [stderr]    Compiling viprs-ports v0.1.5
[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-spatial v0.1.5 (/opt/rustwide/workdir)
[INFO] [stdout] warning: fields `width`, `height`, `bands`, and `data` are never read
[INFO] [stdout]   --> src/lib.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub(crate) struct TestMemorySource<F: BandFormat> {
[INFO] [stdout]    |                       ---------------- fields in this struct
[INFO] [stdout] 18 |         width: u32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 19 |         height: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 20 |         bands: u32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 21 |         data: Vec<F::Sample>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `-D dead-code` implied by `-D warnings`
[INFO] [stdout]    = help: to override `-D warnings` add `#[expect(dead_code)]` or `#[allow(dead_code)]`
[INFO] [stdout]    = note: the `dead_code` lint ignores `-D warnings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `read_region` are never used
[INFO] [stdout]   --> src/lib.rs:29:23
[INFO] [stdout]    |
[INFO] [stdout] 24 | /     impl<F> TestMemorySource<F>
[INFO] [stdout] 25 | |     where
[INFO] [stdout] 26 | |         F: BandFormat,
[INFO] [stdout] 27 | |         F::Sample: Pod,
[INFO] [stdout]    | |_______________________- associated items in this implementation
[INFO] [stdout] 28 |       {
[INFO] [stdout] 29 |           pub(crate) fn new(
[INFO] [stdout]    |                         ^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |           pub(crate) fn read_region(
[INFO] [stdout]    |                         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 23.87s
[INFO] running `Command { std: "docker" "inspect" "9587d359ab5518bac7a6ef41be491034fa6c8025de991c870724b9722209e4eb", 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" "9587d359ab5518bac7a6ef41be491034fa6c8025de991c870724b9722209e4eb" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: fields `width`, `height`, `bands`, and `data` are never read
[INFO] [stderr]   --> src/lib.rs:18:9
[INFO] [stderr]    |
[INFO] [stderr] 17 |     pub(crate) struct TestMemorySource<F: BandFormat> {
[INFO] [stderr]    |                       ---------------- fields in this struct
[INFO] [stderr] 18 |         width: u32,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr] 19 |         height: u32,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr] 20 |         bands: u32,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr] 21 |         data: Vec<F::Sample>,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `-D dead-code` implied by `-D warnings`
[INFO] [stderr]    = help: to override `-D warnings` add `#[expect(dead_code)]` or `#[allow(dead_code)]`
[INFO] [stderr]    = note: the `dead_code` lint ignores `-D warnings`
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new` and `read_region` are never used
[INFO] [stderr]   --> src/lib.rs:29:23
[INFO] [stderr]    |
[INFO] [stderr] 24 | /     impl<F> TestMemorySource<F>
[INFO] [stderr] 25 | |     where
[INFO] [stderr] 26 | |         F: BandFormat,
[INFO] [stderr] 27 | |         F::Sample: Pod,
[INFO] [stderr]    | |_______________________- associated items in this implementation
[INFO] [stderr] 28 |       {
[INFO] [stderr] 29 |           pub(crate) fn new(
[INFO] [stderr]    |                         ^^^
[INFO] [stderr] ...
[INFO] [stderr] 67 |           pub(crate) fn read_region(
[INFO] [stderr]    |                         ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `viprs-ops-spatial` (lib test) generated 2 warnings
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.09s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/viprs_ops_spatial-c4b0c7bd5cfc36d6)
[INFO] [stdout] 
[INFO] [stdout] running 434 tests
[INFO] [stdout] test convolution::conv::tests::approximate_precision_keeps_input_format ... ok
[INFO] [stdout] test convolution::conv::tests::f32_specialized_cross_and_full_paths_match_reference ... ok
[INFO] [stdout] test convolution::conv::tests::approximate_precision_uses_same_region_metadata_as_conva ... ok
[INFO] [stdout] test convolution::compass::tests::rotate_kernel_step_zero_keeps_original_layout ... ok
[INFO] [stdout] test convolution::conv::tests::five_band_cross_and_sobel_paths_use_generic_specialized_loops ... ok
[INFO] [stdout] test convolution::compass::tests::constructor_rejects_invalid_masks_and_clamps_zero_rotations ... ok
[INFO] [stdout] test convolution::conv::tests::float_precision_preserves_f64_output ... ok
[INFO] [stdout] test convolution::compass::tests::metadata_expands_regions_by_kernel_radius ... ok
[INFO] [stdout] test convolution::canny::tests::gradient_matches_bottom_right_anchored_lipvips_mask ... ok
[INFO] [stdout] test convolution::canny::tests::constructor_sets_radius_halo_and_contracts_from_sigma ... ok
[INFO] [stdout] test convolution::compass::tests::process_region_handles_multiple_bands ... ok
[INFO] [stdout] test convolution::conv::tests::integer_precision_non_three_by_three_identity_returns_center_pixels ... ok
[INFO] [stdout] test convolution::conv::tests::integer_precision_keeps_input_format_and_rounds_mask ... ok
[INFO] [stdout] test convolution::compass::tests::flat_image_has_zero_gradients ... ok
[INFO] [stdout] test convolution::conv::tests::mask_scale_and_offset_follow_libvips_formula ... ok
[INFO] [stdout] test convolution::conv::tests::float_precision_promotes_integer_input_to_f32 ... ok
[INFO] [stdout] test convolution::conv::tests::kernel3x3_builder_classifies_variants_and_rounds_masks ... ok
[INFO] [stdout] test convolution::conv::tests::sparse_3x3_mask_uses_libvips_scale_offset_formula ... ok
[INFO] [stdout] test convolution::conv::tests::sparse_kernel_matches_reference_for_band_counts_two_and_four ... ok
[INFO] [stdout] test convolution::canny::tests::constant_field_has_no_edges ... ok
[INFO] [stdout] test convolution::conv::tests::non_three_by_three_float_path_matches_reference_for_rgb ... ok
[INFO] [stdout] test convolution::conv::tests::u8_cross_kernel_matches_reference_for_large_rows ... ok
[INFO] [stdout] test convolution::convasep::tests::identity_kernel_preserves_multiband_u16_samples_as_u16 ... ok
[INFO] [stdout] test convolution::convasep::tests::metadata_expands_by_kernel_radius ... ok
[INFO] [stdout] test convolution::conv::tests::conv_state_reuses_cached_sparse_offsets_across_calls ... ok
[INFO] [stdout] test convolution::conv::tests::u8_sobel_x_kernel_matches_reference_for_rgb ... ok
[INFO] [stdout] test convolution::conv::tests::u8_full_kernel_matches_reference_for_rgb ... ok
[INFO] [stdout] test convolution::edge::tests::metadata_expands_input_by_one_pixel ... ok
[INFO] [stdout] test convolution::fastcor::tests::f64_input_preserves_f64_output ... ok
[INFO] [stdout] test convolution::edge::tests::zero_mask_is_noop_boundary_case ... ok
[INFO] [stdout] test convolution::fastcor::tests::matching_patch_has_zero_difference ... ok
[INFO] [stdout] test convolution::fastcor::tests::metadata_expands_by_reference_radius ... ok
[INFO] [stdout] test convolution::fastcor::tests::one_band_reference_expands_across_input_bands ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::float_precision_kernel_avoids_integer_quantisation_for_canny ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::gauss_blur_facade_h_v_have_same_radius ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::gauss_blur_h_accepts_u8_uniform_input ... ok
[INFO] [stdout] test convolution::convasep::tests::mask_scale_and_offset_apply_after_both_passes ... ok
[INFO] [stdout] test convolution::canny::tests::step_edge_peak_is_centered_on_libvips_column ... ok
[INFO] [stdout] test convolution::canny::tests::zero_multiband_input_stays_zero ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::gauss_output_supports_generic_callers ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::node_spec_h_expands_width ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::kernel_sum_is_one ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::sample_conversions_cover_supported_input_types ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::node_spec_v_expands_height ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::sharpen_kernel_keeps_wider_support_than_gaussblur_at_same_sigma ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::required_input_region_h_expands_horizontally ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::required_input_region_v_expands_vertically ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::separable_equals_conv2d_on_5x5 ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::sigma_below_threshold_uses_identity_kernel ... ok
[INFO] [stdout] test convolution::convasep::tests::zero_input_stays_zero ... ok
[INFO] [stdout] test convolution::fastcor::tests::zero_reference_accumulates_squares ... ok
[INFO] [stdout] test convolution::compass::tests::uniform_input_stays_zero ... ok
[INFO] [stdout] test convolution::conv::tests::zero_kernel_outputs_zero ... ok
[INFO] [stdout] test convolution::conv::tests::identity_kernel_preserves_samples ... ok
[INFO] [stdout] test convolution::edge::tests::constant_field_has_no_edges ... ok
[INFO] [stdout] test convolution::fastcor::tests::identical_reference_and_patch_have_zero_ssd ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::trait_entrypoints_cover_non_u8_formats ... ok
[INFO] [stdout] test convolution::convasep::tests::identity_kernel_round_trips_samples ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::u8_integer_path_matches_reference_for_vector_loop_and_tail ... ok
[INFO] [stdout] test convolution::canny::tests::zero_input_stays_zero ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::uniform_image_unchanged_by_blur_h ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::uniform_image_unchanged_by_blur_v ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::u8_integer_path_matches_scalar_reference ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::u8_metadata_and_scalar_fallback_cover_non_simd_band_counts ... ok
[INFO] [stdout] test convolution::prewitt::tests::prewitt_metadata_expands_input_by_one_pixel ... ok
[INFO] [stdout] test convolution::prewitt::tests::constant_field_has_no_edges ... ok
[INFO] [stdout] test convolution::scharr::tests::constant_field_has_no_edges ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::u8_integer_path_preserves_uniform_rgb_and_rgba ... ok
[INFO] [stdout] test convolution::scharr::tests::scharr_metadata_expands_input_by_one_pixel ... ok
[INFO] [stdout] test convolution::sharpen::tests::labs_sharpen_clips_l_channel_to_labs_range ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::sigma_zero_is_passthrough_v ... ok
[INFO] [stdout] test convolution::sharpen::tests::labs_sharpen_prefers_thin_strips_for_pipeline_chains ... ok
[INFO] [stdout] test convolution::sharpen::tests::labs_sharpen_matches_libvips_default_golden_output ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::sigma_zero_is_passthrough_u8 ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::small_sigma_uniform_column_preserved_v ... ok
[INFO] [stdout] test convolution::sharpen::tests::labs_sharpen_only_updates_l_channel ... ok
[INFO] [stdout] test convolution::sharpen::tests::sharpen_metadata_expands_by_kernel_radius ... ok
[INFO] [stdout] test convolution::sharpen::tests::sharpen_preserves_constant_field ... ok
[INFO] [stdout] test convolution::sharpen::tests::sharpen_start_matches_pre_sized_state_output ... ok
[INFO] [stdout] test convolution::sharpen::tests::labs_sharpen_start_matches_pre_sized_state_output ... ok
[INFO] [stdout] test convolution::sobel::tests::constant_field_has_no_edges ... ok
[INFO] [stdout] test convolution::sobel::tests::sobel_metadata_expands_input_by_one_pixel ... ok
[INFO] [stdout] test convolution::spcor::tests::constant_reference_reports_zero ... ok
[INFO] [stdout] test convolution::sobel::tests::u8_input_uses_libvips_l1_magnitude ... ok
[INFO] [stdout] test convolution::spcor::tests::correlate_image_with_itself_yields_one ... ok
[INFO] [stdout] test convolution::spcor::tests::correlate_image_with_negated_self_yields_minus_one ... ok
[INFO] [stdout] test convolution::spcor::tests::metadata_expands_by_reference_radius ... ok
[INFO] [stdout] test convolution::spcor::tests::single_band_reference_is_applied_to_each_input_band ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::small_sigma_uniform_row_preserved_h ... ok
[INFO] [stdout] test convolution::sharpen::tests::zero_input_stays_zero ... ok
[INFO] [stdout] test convolution::sobel::tests::zero_input_stays_zero ... ok
[INFO] [stdout] test morphology::count_lines::tests::horizontal_and_vertical_directions_match_reference_examples ... ok
[INFO] [stdout] test convolution::spcor::tests::random_patch_correlates_with_itself ... ok
[INFO] [stdout] test morphology::count_lines::tests::threshold_is_black_below_128_and_white_at_or_above_128 ... ok
[INFO] [stdout] test morphology::count_lines::tests::reducer_returns_scalar_average_for_known_input ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::non_square_border_pixels_match_edge_extension ... ok
[INFO] [stdout] test morphology::count_lines::tests::transpose_swaps_horizontal_and_vertical_counts ... ok
[INFO] [stdout] test morphology::dilate::tests::all_dont_care_produces_zero ... ok
[INFO] [stdout] test morphology::dilate::tests::dilate_single_white_pixel_to_three_by_three_square ... ok
[INFO] [stdout] test morphology::dilate::tests::cross_constructor_matches_rect_three_by_three ... ok
[INFO] [stdout] test morphology::dilate::tests::dilate_uniform_background ... ok
[INFO] [stdout] test morphology::dilate::tests::dilates_each_band_independently ... ok
[INFO] [stdout] test morphology::dilate::tests::forced_scalar_rect5_matches_naive_reference ... ok
[INFO] [stdout] test morphology::dilate::tests::generic_path_rebuilds_offsets_and_matches_naive_for_multiband_data ... ok
[INFO] [stdout] test convolution::prewitt::tests::zero_input_stays_zero ... ok
[INFO] [stdout] test morphology::dilate::tests::dilate_uniform_foreground ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::sigma_zero_is_passthrough_h ... ok
[INFO] [stdout] test morphology::dilate::tests::background_mask_complements_input ... ok
[INFO] [stdout] test morphology::dilate::tests::metadata_expands_by_mask_radius ... ok
[INFO] [stdout] test morphology::dilate::tests::large_mask_preserves_single_pixel_under_edge_extension ... ok
[INFO] [stdout] test convolution::spcor::tests::single_pixel_reference_is_uncorrelated ... ok
[INFO] [stdout] test morphology::dilate::tests::identity_single_element_mask ... ok
[INFO] [stdout] test morphology::dilate::tests::mixed_foreground_and_background_mask_matches_naive_reference ... ok
[INFO] [stdout] test morphology::dilate::tests::rect_constructor_rejects_zero ... ok
[INFO] [stdout] test morphology::dilate::tests::rect_five_by_five_rgb_matches_naive_reference ... ok
[INFO] [stdout] test morphology::dilate::tests::rect_three_by_three_dilates_rgb_bands_without_cross_talk ... ok
[INFO] [stdout] test morphology::dilate::tests::rejects_non_rectangular_masks ... ok
[INFO] [stdout] test morphology::dilate::tests::rect_three_by_three_large_width_matches_naive_reference ... ok
[INFO] [stdout] test morphology::dilate::tests::rejects_empty_mask ... ok
[INFO] [stdout] test morphology::dilate::tests::rejects_invalid_mask_values ... ok
[INFO] [stdout] test convolution::scharr::tests::zero_input_stays_zero ... ok
[INFO] [stdout] test morphology::erode::tests::erode_three_by_three_square_to_single_white_pixel ... ok
[INFO] [stdout] test morphology::erode::tests::erode_uniform_foreground ... ok
[INFO] [stdout] test morphology::erode::tests::generic_path_rebuilds_offsets_and_matches_naive_for_multiband_data ... ok
[INFO] [stdout] test morphology::erode::tests::forced_scalar_rect5_matches_naive_reference ... ok
[INFO] [stdout] test morphology::erode::tests::all_dont_care_produces_255 ... ok
[INFO] [stdout] test morphology::erode::tests::erode_uniform_background ... ok
[INFO] [stdout] test convolution::sharpen::tests::zero_strength_is_identity ... ok
[INFO] [stdout] test morphology::erode::tests::large_mask_preserves_single_foreground_pixel_under_edge_extension ... ok
[INFO] [stdout] test morphology::erode::tests::mixed_foreground_and_background_mask_matches_naive_reference ... ok
[INFO] [stdout] test morphology::erode::tests::rect_three_by_three_erodes_rgb_bands_without_cross_talk ... ok
[INFO] [stdout] test morphology::erode::tests::rect_five_by_five_rgb_matches_naive_reference ... ok
[INFO] [stdout] test morphology::erode::tests::rejects_empty_mask ... ok
[INFO] [stdout] test morphology::erode::tests::rejects_invalid_mask_values ... ok
[INFO] [stdout] test morphology::erode::tests::rejects_non_rectangular_masks ... ok
[INFO] [stdout] test morphology::erode::tests::identity_single_element_mask ... ok
[INFO] [stdout] test morphology::dilate::tests::identity_mask_copies_input ... ok
[INFO] [stdout] test morphology::labelregions::tests::checked_state_len_for_tile_rejects_overflowing_dimensions_with_typed_error ... ok
[INFO] [stdout] test morphology::labelregions::tests::all_equal_image_is_single_region ... ok
[INFO] [stdout] test morphology::labelregions::tests::component_crossing_only_horizontal_internal_tile_boundary_keeps_one_label ... ok
[INFO] [stdout] test morphology::labelregions::tests::component_crossing_only_vertical_internal_tile_boundary_keeps_one_label ... ok
[INFO] [stdout] test morphology::labelregions::tests::differing_pixels_across_horizontal_internal_tile_boundary_remain_separate_regions ... ok
[INFO] [stdout] test morphology::labelregions::tests::differing_pixels_across_vertical_internal_tile_boundary_remain_separate_regions ... ok
[INFO] [stdout] test morphology::erode::tests::rect_three_by_three_large_width_matches_naive_reference ... ok
[INFO] [stdout] test morphology::dilate::tests::symmetric_mask_commutes_with_horizontal_reflection ... ok
[INFO] [stdout] test morphology::labelregions::tests::op_reports_full_image_demand_and_identity_input_region ... ok
[INFO] [stdout] test morphology::labelregions::tests::process_region_returns_scheduler_error_when_only_the_rank_buffer_is_mismatched ... ok
[INFO] [stdout] test morphology::erode::tests::identity_mask_copies_input ... ok
[INFO] [stdout] test convolution::spcor::tests::band_mismatch_panics_in_debug_builds - should panic ... ok
[INFO] [stdout] test morphology::erode::tests::background_mask_complements_input ... ok
[INFO] [stdout] test morphology::labelregions::tests::process_region_returns_scheduler_error_when_state_is_not_pre_sized_for_the_tile ... ok
[INFO] [stdout] test morphology::count_lines::tests::reducer_rejects_multi_tile_usage - should panic ... ok
[INFO] [stdout] test morphology::labelregions::tests::labels_are_contiguous_without_gaps ... ok
[INFO] [stdout] test morphology::labelregions::tests::start_with_tile_and_bands_overflow_state_returns_error_when_processing_any_tile ... ok
[INFO] [stdout] test morphology::labelregions::tests::process_region_returns_typed_error_when_output_region_pixel_count_overflows ... ok
[INFO] [stdout] test morphology::labelregions::tests::validate_region_contract_rejects_overflowing_full_image_scratch ... ok
[INFO] [stdout] test morphology::median::tests::f32_select_path_matches_known_reference ... ok
[INFO] [stdout] test morphology::median::tests::histogram_fast_path_is_enabled_for_large_u8_windows ... ok
[INFO] [stdout] test morphology::median::tests::median_3x3_preserves_uniform_max ... ok
[INFO] [stdout] test morphology::median::tests::rejects_zero_windows_and_reports_metadata ... ok
[INFO] [stdout] test morphology::median::tests::rejects_even_windows ... ok
[INFO] [stdout] test morphology::median::tests::u8_3x3_large_row_matches_reference ... ok
[INFO] [stdout] test morphology::labelregions::tests::same_value_contiguous_pixels_share_a_label_and_adjacent_different_values_do_not ... ok
[INFO] [stdout] test morphology::labelregions::tests::two_separated_equal_value_blocks_are_not_merged_across_a_different_region ... ok
[INFO] [stdout] test morphology::labelregions::tests::process_region_returns_typed_error_when_state_marks_scratch_overflow ... ok
[INFO] [stdout] test morphology::median::tests::uniform_max_window_stays_max ... ok
[INFO] [stdout] test morphology::nearest::tests::nearest_from_corner_seed_matches_euclidean_distance ... ok
[INFO] [stdout] test morphology::nearest::tests::nearest_multiple_regions_match_reference ... ok
[INFO] [stdout] test morphology::nearest::tests::nearest_row_without_seeds_uses_vertical_pass ... ok
[INFO] [stdout] test morphology::nearest::tests::nearest_single_pixel_cases_match_expectations ... ok
[INFO] [stdout] test morphology::nearest::tests::nearest_without_foreground_returns_infinity ... ok
[INFO] [stdout] test resample::affine::tests::affine_bicubic_fast_path_falls_back_to_sample_pixel_at_at_edges ... ok
[INFO] [stdout] test resample::affine::tests::affine_helper_functions_cover_axis_alignment_bilinear_paths_and_background_checks ... ok
[INFO] [stdout] test resample::affine::tests::alpha_sampling_covers_all_kernel_paths ... ok
[INFO] [stdout] test resample::affine::tests::axis_aligned_rgb_bilinear_matches_scalar_reference ... ok
[INFO] [stdout] test resample::affine::tests::axis_aligned_rgb_nearest_matches_scalar_reference ... ok
[INFO] [stdout] test resample::affine::tests::bicubic_fast_path_matches_scalar_reference_for_rgba_and_two_band_u8 ... ok
[INFO] [stdout] test morphology::labelregions::tests::all_zero_image_is_single_region ... ok
[INFO] [stdout] test resample::affine::tests::bilinear_background_extend_uses_per_band_fill_outside_edges ... ok
[INFO] [stdout] test resample::affine::tests::bilinear_rgba_sampling_premultiplies_transparent_edges_before_interpolation ... ok
[INFO] [stdout] test resample::affine::tests::bilinear_rgba_sampling_respects_explicit_premultiplied_inputs ... ok
[INFO] [stdout] test resample::affine::tests::extend_modes_distinguish_black_white_background_copy_repeat_and_mirror ... ok
[INFO] [stdout] test resample::affine::tests::fast_paths_cover_u8_band_specializations_and_edges ... ok
[INFO] [stdout] test resample::affine::tests::identity_bicubic ... ok
[INFO] [stdout] test resample::affine::tests::identity_bilinear ... ok
[INFO] [stdout] test resample::affine::tests::identity_lbb ... ok
[INFO] [stdout] test resample::affine::tests::identity_lbb_preserves_constant_field_for_f64 ... ok
[INFO] [stdout] test resample::affine::tests::identity_nearest ... ok
[INFO] [stdout] test resample::affine::tests::identity_nearest_two_band_preserves_samples_without_alpha_unpremultiplication ... ok
[INFO] [stdout] test morphology::count_lines::tests::count_lines_random_inputs_match_reference_and_transpose_symmetry ... ok
[INFO] [stdout] test morphology::median::tests::identity_window_1x1_is_noop ... ok
[INFO] [stdout] test resample::affine::tests::lbb_fractional_sample_stays_within_local_stencil_bounds ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::gauss_blur_h_avx2_matches_scalar ... ok
[INFO] [stdout] test morphology::median::tests::u8_3x3_fast_path_matches_sort_reference ... ok
[INFO] [stdout] test resample::affine::tests::node_spec_caps_input_tile_to_source_bounds ... ok
[INFO] [stdout] test resample::affine::tests::negative_output_origin_falls_back_to_generic_path ... ok
[INFO] [stdout] test resample::affine::tests::node_spec_identity_nohalo_allocates_six_tap_halo ... ok
[INFO] [stdout] test resample::affine::tests::node_spec_identity_bilinear_allocates_interpolation_halo ... ok
[INFO] [stdout] test resample::affine::tests::nearest_half_pixel_translation_uses_floor ... ok
[INFO] [stdout] test resample::affine::tests::oob_fills_background ... ok
[INFO] [stdout] test resample::affine::tests::output_tile_fully_outside_input_fills_background ... ok
[INFO] [stdout] test resample::affine::tests::process_region_fast_path_rejects_tiles_outside_declared_output_bounds ... ok
[INFO] [stdout] test resample::affine::tests::required_input_region_clamps_to_declared_source_bounds ... ok
[INFO] [stdout] test resample::affine::tests::required_input_region_handles_empty_output_and_background_only_detection ... ok
[INFO] [stdout] test resample::affine::tests::required_input_region_identity_bilinear_adds_one_pixel_on_bottom_right ... ok
[INFO] [stdout] test resample::affine::tests::required_input_region_identity_nearest_matches_output ... ok
[INFO] [stdout] test resample::affine::tests::required_input_region_identity_nohalo_matches_six_tap_footprint ... ok
[INFO] [stdout] test resample::affine::tests::resolved_pixel_base_rejects_source_coords_outside_current_tile_region ... ok
[INFO] [stdout] test resample::affine::tests::sample_pixel_at_non_finite_coordinates_fill_background_for_general_kernels ... ok
[INFO] [stdout] test resample::affine::tests::skew_transform_uses_generic_path_and_matches_scalar_reference ... ok
[INFO] [stdout] test resample::affine::tests::try_new_rejects_non_finite_and_singular_matrices ... ok
[INFO] [stdout] test convolution::gauss_blur::tests::gauss_blur_v_avx2_matches_scalar ... ok
[INFO] [stdout] test morphology::erode::tests::symmetric_mask_commutes_with_horizontal_reflection ... ok
[INFO] [stdout] test resample::affine::tests::vsqbs_affine_matches_reference_copy_extend_2x2_to_4x4_upscale ... ok
[INFO] [stdout] test resample::affine::tests::lbb_output_is_locally_bounded ... ok
[INFO] [stdout] test resample::quadratic::tests::coefficient_constructors_populate_expected_slots ... ok
[INFO] [stdout] test resample::quadratic::tests::identity_nearest_preserves_pixels ... ok
[INFO] [stdout] test resample::quadratic::tests::node_spec_expands_for_quadratic_derivatives ... ok
[INFO] [stdout] test resample::quadratic::tests::order0_translation_shifts_samples_and_backgrounds_edge ... ok
[INFO] [stdout] test resample::quadratic::tests::order1_bilinear_matches_libvips_golden_for_coeff_row_order_and_right_border ... ok
[INFO] [stdout] test resample::quadratic::tests::order2_bilinear_matches_libvips_golden_for_bilinear_cross_term_and_zero_fill ... ok
[INFO] [stdout] test resample::quadratic::tests::order2_cross_term_warps_second_row ... ok
[INFO] [stdout] test resample::quadratic::tests::order3_bilinear_matches_libvips_golden_for_quadratic_terms_and_border_clip ... ok
[INFO] [stdout] test resample::affine::tests::integer_translation_correct ... ok
[INFO] [stdout] test resample::quadratic::tests::order3_quadratic_term_warps_last_column ... ok
[INFO] [stdout] test resample::quadratic::tests::required_input_region_identity_bilinear_matches_affine_halo ... ok
[INFO] [stdout] test resample::quadratic::tests::required_input_region_tracks_quadratic_extrema_inside_output_rect ... ok
[INFO] [stdout] test resample::affine::tests::nohalo_uniform_identity_preserves_constant_field ... ok
[INFO] [stdout] test resample::reduce_common::tests::bound_offset_matches_libvips_centering_for_factor2 ... ok
[INFO] [stdout] test resample::reduce_common::tests::linear_coefficients_normalize_for_every_phase ... ok
[INFO] [stdout] test resample::reduce_common::tests::fixed_point_coefficients_track_libvips_truncation_budget ... ok
[INFO] [stdout] test resample::reduce_common::tests::required_input_region_keeps_negative_halo_for_edge_copy ... ok
[INFO] [stdout] test resample::reduce_common::tests::lanczos3_coefficients_normalize_for_every_phase ... ok
[INFO] [stdout] test resample::reduce_common::tests::required_input_region_v_clamps_max_output_coordinates ... ok
[INFO] [stdout] test resample::reduce_common::tests::validate_tap_limits_accepts_factor_below_max_point ... ok
[INFO] [stdout] test resample::reduce_common::tests::validate_tap_limits_rejects_factor_exceeding_max_point ... ok
[INFO] [stdout] test resample::reduce_common::tests::required_input_region_h_clamps_max_output_coordinates ... ok
[INFO] [stdout] test resample::quadratic::tests::order0_shift_right_fills_last_column_with_background ... ok
[INFO] [stdout] test morphology::nearest::tests::nearest_random_inputs_match_reference_and_do_not_panic ... ok
[INFO] [stdout] test morphology::median::tests::u8_rgb_3x3_fast_path_matches_sort_reference ... ok
[INFO] [stdout] test morphology::labelregions::tests::labels_match_reference_connected_components ... ok
[INFO] [stdout] test resample::affine::tests::nohalo_output_is_locally_bounded ... ok
[INFO] [stdout] test resample::affine::tests::uniform_identity_all_kernels ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_h_f32_boundary_matches_scalar_bands_3 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_h_f32_boundary_matches_scalar_bands_1 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_h_f32_matches_scalar_bands_1 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_h_f32_matches_scalar_bands_2 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_h_f32_matches_scalar_bands_3 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_h_u16_boundary_matches_scalar_bands_1 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_h_u16_boundary_matches_scalar_bands_3 ... ok
[INFO] [stdout] test resample::affine::tests::identity_matrix_preserves_random_pixels ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_h_u16_matches_scalar_bands_1 ... ok
[INFO] [stdout] test resample::quadratic::tests::identity_coefficients_preserve_random_pixels ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_h_u8_boundary_matches_scalar_bands_3 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_h_u8_matches_scalar_bands_3 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_h_f32_matches_scalar_bands_4 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_h_u8_matches_scalar_bands_4 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_h_u8_matches_scalar_bands_1 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_h_u16_matches_scalar_bands_4 ... ok
[INFO] [stdout] test morphology::median::tests::u8_histogram_fast_path_matches_sort_reference_large_window ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_h_u8_matches_scalar_bands_2 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_h_u16_matches_scalar_bands_2 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_v_f32_matches_scalar_bands_1 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_h_u16_matches_scalar_bands_3 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_v_f32_boundary_matches_scalar_bands_1 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_v_u16_matches_scalar_bands_3 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_v_f32_matches_scalar_bands_4 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_v_u16_matches_scalar_bands_1 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_v_u16_boundary_matches_scalar_bands_1 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_v_u8_boundary_matches_scalar_bands_3 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_h_u8_boundary_matches_scalar_bands_1 ... ok
[INFO] [stdout] test resample::sample_conv::tests::f32_from_fixed_i64_panics_when_fixed_point_is_unavailable - should panic ... ok
[INFO] [stdout] test resample::sample_conv::tests::f32_to_i64_panics_when_fixed_point_is_unavailable - should panic ... ok
[INFO] [stdout] test resample::sample_conv::tests::f64_from_fixed_i64_panics_when_fixed_point_is_unavailable - should panic ... ok
[INFO] [stdout] test resample::sample_conv::tests::f64_to_i64_panics_when_fixed_point_is_unavailable - should panic ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_v_f32_boundary_matches_scalar_bands_3 ... ok
[INFO] [stdout] test resample::sample_conv::tests::from_f64_preserves_floating_point_types ... ok
[INFO] [stdout] test resample::sample_conv::tests::from_f64_clamps_and_rounds_integral_types ... ok
[INFO] [stdout] test resample::sample_conv::tests::reduce_sample_fixed_point_rounds_and_clamps ... ok
[INFO] [stdout] test resample::sample_conv::tests::to_f64_widens_supported_sample_types ... ok
[INFO] [stdout] test resample::similarity::tests::auto_canvas_identity_matches_input_dimensions ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_v_f32_matches_scalar_bands_3 ... ok
[INFO] [stdout] test resample::sample_conv::tests::reduce_sample_reports_fixed_point_support ... ok
[INFO] [stdout] test resample::similarity::tests::auto_canvas_scale_rounds_like_libvips_transform_rect ... ok
[INFO] [stdout] test resample::similarity::tests::auto_canvas_right_angle_matches_libvips_bbox ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_v_u16_matches_scalar_bands_2 ... ok
[INFO] [stdout] test resample::similarity::tests::invalid_scales_fall_back_to_unit_scale ... ok
[INFO] [stdout] test resample::similarity::tests::output_dimensions_stay_fixed_to_canvas ... ok
[INFO] [stdout] test resample::similarity::tests::scale1_angle0_is_identity ... ok
[INFO] [stdout] test structural::embed::tests::black_fill_multi_band ... ok
[INFO] [stdout] test structural::embed::tests::black_fill_bottom_right_border_zeroes_all_bands ... ok
[INFO] [stdout] test structural::embed::tests::black_fill_treats_large_offsets_as_out_of_bounds ... ok
[INFO] [stdout] test structural::embed::tests::black_fill_outside_source ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_v_f32_matches_scalar_bands_2 ... ok
[INFO] [stdout] test resample::similarity::tests::identity_preserves_uniform_input ... ok
[INFO] [stdout] test structural::embed::tests::edge_fill_copies_clamped_pixel ... ok
[INFO] [stdout] test structural::embed::tests::embed_bridge_delegates_dyn_contract_and_processing ... ok
[INFO] [stdout] test structural::embed::tests::edge_extend_can_mix_clamped_and_in_bounds_pixels ... ok
[INFO] [stdout] test structural::embed::tests::embed_with_zero_offset_and_same_size_is_identity ... ok
[INFO] [stdout] test resample::similarity::tests::round_vips_and_bridge_cover_negative_rounding_and_dyn_contract ... ok
[INFO] [stdout] test structural::embed::tests::output_dimensions_are_dst_dimensions ... ok
[INFO] [stdout] test structural::embed::tests::required_input_region_can_go_negative ... ok
[INFO] [stdout] test structural::embed::tests::required_input_region_clamps_large_offsets_to_i32_min ... ok
[INFO] [stdout] test structural::extract_area::tests::output_dimensions_override_input ... ok
[INFO] [stdout] test structural::extract_area::tests::required_input_region_clamps_offsets_above_i32_max ... ok
[INFO] [stdout] test structural::extract_area::tests::required_input_region_preserves_tile_offset ... ok
[INFO] [stdout] test structural::embed::tests::source_pixel_appears_at_correct_canvas_position ... ok
[INFO] [stdout] test structural::embed::tests::required_input_region_subtracts_offset ... ok
[INFO] [stdout] test structural::embed::tests::black_left_border_is_zero ... ok
[INFO] [stdout] test structural::extract_area::tests::required_input_region_shifts_by_offset ... ok
[INFO] [stdout] test structural::flatten::tests::f32_alpha_one_yields_source ... ok
[INFO] [stdout] test structural::embed::tests::embed_identity_zero_offset ... ok
[INFO] [stdout] test structural::flatten::tests::f32_half_alpha_blends_correctly ... ok
[INFO] [stdout] test structural::flatten::tests::f32_full_alpha_always_source ... ok
[INFO] [stdout] test structural::flatten::tests::flatten_bridge_f32_rgba_to_rgb_honours_transparency_extremes ... ok
[INFO] [stdout] test structural::flatten::tests::flatten_bridge_u8_rgb_is_noop ... ok
[INFO] [stdout] test structural::flatten::tests::flatten_bridge_u8_rgba_to_rgb_honours_transparency_extremes ... ok
[INFO] [stdout] test structural::flatten::tests::flatten_rgb_is_noop ... ok
[INFO] [stdout] test structural::flatten::tests::f32_alpha_zero_yields_background ... ok
[INFO] [stdout] test structural::flatten::tests::u8_alpha_max_yields_source ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_v_u8_matches_scalar_bands_1 ... ok
[INFO] [stdout] test structural::flatten::tests::u8_half_alpha_blends_correctly ... ok
[INFO] [stdout] test structural::flatten::tests::u8_uses_libvips_integer_division_semantics ... ok
[INFO] [stdout] test structural::flatten::tests::u8_alpha_zero_yields_background ... ok
[INFO] [stdout] test structural::flatten::tests::f32_zero_alpha_always_background ... ok
[INFO] [stdout] test structural::flip_horizontal::tests::process_region_reverses_single_row ... ok
[INFO] [stdout] test structural::extract_area::tests::required_input_region_shift_is_exact ... ok
[INFO] [stdout] test structural::flip_horizontal::tests::process_region_reverses_two_rows ... ok
[INFO] [stdout] test structural::flatten::tests::u8_zero_alpha_always_background ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_v_u16_boundary_matches_scalar_bands_3 ... ok
[INFO] [stdout] test structural::flip_horizontal::tests::required_input_region_y_unchanged ... ok
[INFO] [stdout] test structural::flip_horizontal::tests::flip_h_twice_is_identity ... ok
[INFO] [stdout] test structural::flip_vertical::tests::process_region_reverses_multi_column_rows ... ok
[INFO] [stdout] test structural::flip_horizontal::tests::required_input_region_clamps_large_image_width ... ok
[INFO] [stdout] test structural::flip_vertical::tests::process_region_reverses_rows ... ok
[INFO] [stdout] test structural::flip_vertical::tests::required_input_region_x_unchanged ... ok
[INFO] [stdout] test structural::flip_vertical::tests::required_input_region_reflects_y ... ok
[INFO] [stdout] test structural::insert::tests::expand_with_negative_offsets_keeps_main_extent ... ok
[INFO] [stdout] test structural::insert::tests::insert_at_origin_overlays_top_left_pixels ... ok
[INFO] [stdout] test structural::insert::tests::insert_dyn_metadata_matches_layout_configuration ... ok
[INFO] [stdout] test structural::insert::tests::insert_out_of_bounds_is_a_no_op_without_expand ... ok
[INFO] [stdout] test structural::insert::tests::insert_overwrites_main_at_offset ... ok
[INFO] [stdout] test structural::insert::tests::insert_supports_multibyte_formats ... ok
[INFO] [stdout] test structural::flip_vertical::tests::required_input_region_clamps_large_image_height ... ok
[INFO] [stdout] test structural::insert::tests::intersect_and_translate_clamps_large_right_and_bottom_edges ... ok
[INFO] [stdout] test structural::insert::tests::required_input_region_slot_clips_subimage_overlap ... ok
[INFO] [stdout] test structural::join::tests::horizontal_join_concatenates_rows ... ok
[INFO] [stdout] test structural::join::tests::horizontal_join_handles_one_pixel_strips ... ok
[INFO] [stdout] test structural::insert::tests::expand_true_grows_canvas_and_zero_fills_background ... ok
[INFO] [stdout] test structural::join::tests::intersect_and_translate_clamps_large_right_and_bottom_edges ... ok
[INFO] [stdout] test structural::join::tests::horizontal_join_output_width_clamps_large_sum_to_i32_max ... ok
[INFO] [stdout] test structural::join::tests::join_out_of_bounds_region_stays_zero_filled ... ok
[INFO] [stdout] test structural::join::tests::join_dyn_metadata_matches_layout_configuration ... ok
[INFO] [stdout] test structural::join::tests::join_output_dimensions_follow_direction ... ok
[INFO] [stdout] test structural::join::tests::join_supports_multibyte_formats ... ok
[INFO] [stdout] test structural::join::tests::vertical_join_concatenates_columns ... ok
[INFO] [stdout] test structural::join::tests::required_input_region_slot_clips_to_each_input ... ok
[INFO] [stdout] test structural::flip_horizontal::tests::required_input_region_reflects_x ... ok
[INFO] [stdout] test structural::flatten::tests::u8_full_alpha_always_source ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_v_u8_matches_scalar_bands_3 ... ok
[INFO] [stdout] test structural::join::tests::vertical_join_output_height_clamps_large_sum_to_i32_max ... ok
[INFO] [stdout] test structural::premultiply::tests::f32_half_alpha_halves_colour ... ok
[INFO] [stdout] test structural::join::tests::vertical_join_zero_fills_uncovered_area ... ok
[INFO] [stdout] test structural::premultiply::tests::f32_zero_alpha_produces_zero_colour ... ok
[INFO] [stdout] test structural::premultiply::tests::f32_fully_opaque_alpha_is_identity ... ok
[INFO] [stdout] test structural::premultiply::tests::f64_half_alpha_halves_colour ... ok
[INFO] [stdout] test structural::premultiply::tests::metadata_helpers_report_expected_defaults ... ok
[INFO] [stdout] test structural::premultiply::tests::u16_multiband_defaults_to_255_max_alpha ... ok
[INFO] [stdout] test structural::premultiply::tests::u16_rgb16_half_alpha_halves_colour ... ok
[INFO] [stdout] test structural::premultiply::tests::u8_fully_opaque_alpha_is_identity ... ok
[INFO] [stdout] test structural::flip_vertical::tests::flip_v_twice_is_identity ... ok
[INFO] [stdout] test structural::premultiply::tests::u8_zero_alpha_produces_zero_colour ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_v_u16_matches_scalar_bands_4 ... ok
[INFO] [stdout] test structural::premultiply::tests::u8_half_alpha_halves_colour ... ok
[INFO] [stdout] test structural::replicate::tests::bridge_dyn_process_region_tiles_multi_band_bytes ... ok
[INFO] [stdout] test structural::replicate::tests::bridge_metadata_matches_inner_operation ... ok
[INFO] [stdout] test structural::replicate::tests::output_dimensions_scale_by_repeat_count ... ok
[INFO] [stdout] test structural::replicate::tests::process_region_tiles_across_boundaries ... ok
[INFO] [stdout] test structural::replicate::tests::required_input_region_wraps_coordinates ... ok
[INFO] [stdout] test structural::rotate180::tests::preferred_tile_geometry_is_fat_strip ... ok
[INFO] [stdout] test structural::rotate180::tests::process_region_rotates_2x2 ... ok
[INFO] [stdout] test structural::rotate180::tests::process_region_rotates_multiband_pixels_without_reordering_channels ... ok
[INFO] [stdout] test structural::rotate180::tests::required_input_region_clamps_large_image_dimensions ... ok
[INFO] [stdout] test structural::rotate180::tests::required_input_region_reflects_both_axes ... ok
[INFO] [stdout] test structural::premultiply::tests::f32_zero_alpha_zeroes_colour_proptest ... ok
[INFO] [stdout] test structural::premultiply::tests::f32_fully_opaque_is_identity_proptest ... ok
[INFO] [stdout] test structural::rotate270::tests::output_dimensions_transpose ... ok
[INFO] [stdout] test structural::rotate270::tests::process_region_rotates_2x2 ... ok
[INFO] [stdout] test structural::rotate270::tests::required_input_region_transposes_and_reflects ... ok
[INFO] [stdout] test structural::rotate270::tests::rotate270_bridge_processes_bytes_and_reports_metadata ... ok
[INFO] [stdout] test structural::rotate270::tests::required_input_region_clamps_large_image_width ... ok
[INFO] [stdout] test structural::premultiply::tests::u8_zero_alpha_zeroes_colour_proptest ... ok
[INFO] [stdout] test structural::rotate90::tests::output_dimensions ... ok
[INFO] [stdout] test structural::rotate90::tests::process_region_correct ... ok
[INFO] [stdout] test structural::rotate180::tests::rotate_twice_is_identity ... ok
[INFO] [stdout] test structural::rotate90::tests::required_input_region_clamps_large_image_height ... ok
[INFO] [stdout] test structural::rotate90::tests::node_spec_transposes_dimensions ... ok
[INFO] [stdout] test structural::rotate90::tests::rotate90_bridge_processes_bytes_and_reports_metadata ... ok
[INFO] [stdout] test structural::replicate::tests::replicate_1x1_is_identity ... ok
[INFO] [stdout] test structural::rotate90::tests::required_input_region_correct ... ok
[INFO] [stdout] test structural::unpremultiply::tests::f32_half_alpha_recovers_original ... ok
[INFO] [stdout] test structural::replicate::tests::replicate_output_matches_modulo_tiling ... ok
[INFO] [stdout] test structural::unpremultiply::tests::f32_zero_alpha_leaves_colour_at_zero ... ok
[INFO] [stdout] test structural::unpremultiply::tests::f32_fully_opaque_alpha_is_identity ... ok
[INFO] [stdout] test structural::unpremultiply::tests::u8_fully_opaque_alpha_is_identity ... ok
[INFO] [stdout] test structural::unpremultiply::tests::f32_unpremultiply_clamps_to_one ... ok
[INFO] [stdout] test structural::unpremultiply::tests::u8_half_alpha_recovers_original ... ok
[INFO] [stdout] test structural::unpremultiply::tests::u8_zero_alpha_leaves_colour_at_zero ... ok
[INFO] [stdout] test structural::zoom::tests::bridge_metadata_and_dyn_dispatch_cover_offset_tiles ... ok
[INFO] [stdout] test structural::zoom::tests::output_dimensions_scale_by_factor ... ok
[INFO] [stdout] test structural::zoom::tests::process_region_handles_odd_offset_tiles_on_fast_u8_path ... ok
[INFO] [stdout] test structural::zoom::tests::node_spec_requests_overlap_for_non_identity_scale ... ok
[INFO] [stdout] test structural::zoom::tests::process_region_repeats_nearest_neighbour ... ok
[INFO] [stdout] test structural::premultiply::tests::u16_rgb16_fully_opaque_is_identity_proptest ... ok
[INFO] [stdout] test structural::zoom::tests::required_input_region_for_partial_tile_is_exact ... ok
[INFO] [stdout] test structural::premultiply::tests::u8_fully_opaque_is_identity_proptest ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_v_u8_boundary_matches_scalar_bands_1 ... ok
[INFO] [stdout] test structural::rotate270::tests::rotate_then_rotate90_is_identity ... ok
[INFO] [stdout] test structural::zoom::tests::zoom_factor_1_is_identity_for_multiband_images ... ok
[INFO] [stdout] test structural::unpremultiply::tests::f32_round_trip_proptest ... ok
[INFO] [stdout] test structural::unpremultiply::tests::u8_round_trip_error_within_one_lsb ... ok
[INFO] [stdout] test structural::zoom::tests::zoom_factor_1_is_identity ... ok
[INFO] [stdout] test structural::rotate90::tests::rotate_four_times_is_identity ... ok
[INFO] [stdout] test structural::zoom::tests::zoom_single_pixel_input_expands_to_uniform_block ... ok
[INFO] [stdout] test structural::zoom::tests::zoom_one_pixel_tall_images_repeat_each_column_horizontally ... ok
[INFO] [stdout] test structural::zoom::tests::zoom_one_pixel_wide_images_repeat_each_row_vertically ... ok
[INFO] [stdout] test structural::zoom::tests::zoom_large_factors_repeat_bottom_right_edge_pixels ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_v_u8_matches_scalar_bands_2 ... ok
[INFO] [stdout] test resample::reduce_simd::horizontal_multiband_tests::reduce_v_u8_matches_scalar_bands_4 ... ok
[INFO] [stdout] test structural::flatten::tests::avx2_rgba_path_matches_scalar_reference ... ok
[INFO] [stdout] test morphology::labelregions::tests::component_crossing_internal_tile_edges_keeps_one_label ... ok
[INFO] [stdout] test convolution::sharpen::tests::labs_sigma_zero_is_identity ... ok
[INFO] [stdout] test convolution::sharpen::tests::labs_lut_respects_y2_y3_clamps ... ok
[INFO] [stdout] test convolution::sharpen::tests::labs_zero_m1_m2_is_identity ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 434 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.08s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests viprs_ops_spatial
[INFO] [stdout] 
[INFO] [stdout] running 20 tests
[INFO] [stdout] test src/convolution/compass.rs - convolution::compass::CompassOp (line 20) ... ignored
[INFO] [stdout] test src/convolution/conv.rs - convolution::conv::ConvOp (line 46) ... ignored
[INFO] [stdout] test src/convolution/conva.rs - convolution::conva::ConvaOp (line 76) ... ignored
[INFO] [stdout] test src/convolution/convasep.rs - convolution::convasep::ConvaSepOp (line 50) ... ignored
[INFO] [stdout] test src/convolution/edge.rs - convolution::edge::EdgeOp (line 28) ... ignored
[INFO] [stdout] test src/convolution/fastcor.rs - convolution::fastcor::FastCorOp (line 20) ... ignored
[INFO] [stdout] test src/convolution/gauss_blur.rs - convolution::gauss_blur (line 13) ... ignored
[INFO] [stdout] test src/convolution/spcor.rs - convolution::spcor::SpcorOp (line 20) ... ignored
[INFO] [stdout] test src/morphology/count_lines.rs - morphology::count_lines::CountLinesOp (line 20) ... ignored
[INFO] [stdout] test src/morphology/labelregions.rs - morphology::labelregions::LabelRegionsOp (line 42) ... ignored
[INFO] [stdout] test src/morphology/nearest.rs - morphology::nearest::NearestOp (line 22) ... ignored
[INFO] [stdout] test src/morphology/rank.rs - morphology::rank::RankOp (line 20) ... ignored
[INFO] [stdout] test src/resample/mapim.rs - resample::mapim::MapImOp (line 53) ... ignored
[INFO] [stdout] test src/resample/quadratic.rs - resample::quadratic::Quadratic (line 276) ... ignored
[INFO] [stdout] test src/resample/reduce.rs - resample::reduce::ReduceOp (line 31) ... ignored
[INFO] [stdout] test src/resample/resize.rs - resample::resize::ResizeOp (line 82) ... ignored
[INFO] [stdout] test src/resample/shrinkh.rs - resample::shrinkh::ShrinkH (line 142) ... ignored
[INFO] [stdout] test src/resample/shrinkv.rs - resample::shrinkv::ShrinkV (line 47) ... ignored
[INFO] [stdout] test src/resample/similarity.rs - resample::similarity::SimilarityOp (line 25) ... ignored
[INFO] [stdout] test src/resample/thumbnail.rs - resample::thumbnail::Thumbnail (line 149) ... ignored
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 20 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.19s; merged doctests compilation took 0.18s
[INFO] running `Command { std: "docker" "inspect" "9587d359ab5518bac7a6ef41be491034fa6c8025de991c870724b9722209e4eb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9587d359ab5518bac7a6ef41be491034fa6c8025de991c870724b9722209e4eb", kill_on_drop: false }`
[INFO] [stdout] 9587d359ab5518bac7a6ef41be491034fa6c8025de991c870724b9722209e4eb
