[INFO] fetching crate oximedia-forensics 0.1.5...
[INFO] testing oximedia-forensics-0.1.5 against 1.95.0 for beta-1.96-2
[INFO] extracting crate oximedia-forensics 0.1.5 into /workspace/builds/worker-7-tc1/source
[INFO] started tweaking crates.io crate oximedia-forensics 0.1.5
[INFO] finished tweaking crates.io crate oximedia-forensics 0.1.5
[INFO] tweaked toml for crates.io crate oximedia-forensics 0.1.5 written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate oximedia-forensics 0.1.5 on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate oximedia-forensics 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.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rawpointer v0.2.1
[INFO] [stderr]   Downloaded oxifft-codegen v0.2.0
[INFO] [stderr]   Downloaded matrixmultiply v0.3.10
[INFO] [stderr]   Downloaded portable-atomic-util v0.2.7
[INFO] [stderr]   Downloaded ndarray v0.17.2
[INFO] [stderr]   Downloaded oxifft v0.2.0
[INFO] [stderr]   Downloaded oximedia-cv v0.1.5
[INFO] [stderr]   Downloaded oximedia-codec v0.1.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 76c2b805292f1a9680cffd0dbe345eed015e4555816210da75f59e81d9810bb4
[INFO] running `Command { std: "docker" "start" "-a" "76c2b805292f1a9680cffd0dbe345eed015e4555816210da75f59e81d9810bb4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "76c2b805292f1a9680cffd0dbe345eed015e4555816210da75f59e81d9810bb4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "76c2b805292f1a9680cffd0dbe345eed015e4555816210da75f59e81d9810bb4", kill_on_drop: false }`
[INFO] [stdout] 76c2b805292f1a9680cffd0dbe345eed015e4555816210da75f59e81d9810bb4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] aa0bd74590608ef6059108880fa7bfa7a8cee5804886f5796f4a2168ba354caf
[INFO] running `Command { std: "docker" "start" "-a" "aa0bd74590608ef6059108880fa7bfa7a8cee5804886f5796f4a2168ba354caf", kill_on_drop: false }`
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling matrixmultiply v0.3.10
[INFO] [stderr]    Compiling fax_derive v0.2.0
[INFO] [stderr]    Compiling zune-core v0.5.1
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling pxfm v0.1.29
[INFO] [stderr]    Compiling weezl v0.1.12
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling zune-jpeg v0.5.15
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling quick-error v2.0.1
[INFO] [stderr]    Compiling rawpointer v0.2.1
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling fax v0.2.6
[INFO] [stderr]    Compiling num-complex v0.4.6
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling bytemuck v1.25.0
[INFO] [stderr]    Compiling byteorder-lite v0.1.0
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling ndarray v0.17.2
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling png v0.18.1
[INFO] [stderr]    Compiling tiff v0.11.3
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling moxcms v0.8.1
[INFO] [stderr]    Compiling image v0.25.10
[INFO] [stderr]    Compiling oximedia-forensics v0.1.5 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 50.58s
[INFO] running `Command { std: "docker" "inspect" "aa0bd74590608ef6059108880fa7bfa7a8cee5804886f5796f4a2168ba354caf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "aa0bd74590608ef6059108880fa7bfa7a8cee5804886f5796f4a2168ba354caf", kill_on_drop: false }`
[INFO] [stdout] aa0bd74590608ef6059108880fa7bfa7a8cee5804886f5796f4a2168ba354caf
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ec6458106d4c5f8129d2b0e263c359dc2ad691fed539482af115d8a71e931811
[INFO] running `Command { std: "docker" "start" "-a" "ec6458106d4c5f8129d2b0e263c359dc2ad691fed539482af115d8a71e931811", kill_on_drop: false }`
[INFO] [stderr]    Compiling approx v0.5.1
[INFO] [stderr]    Compiling oximedia-forensics v0.1.5 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 10.53s
[INFO] running `Command { std: "docker" "inspect" "ec6458106d4c5f8129d2b0e263c359dc2ad691fed539482af115d8a71e931811", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ec6458106d4c5f8129d2b0e263c359dc2ad691fed539482af115d8a71e931811", kill_on_drop: false }`
[INFO] [stdout] ec6458106d4c5f8129d2b0e263c359dc2ad691fed539482af115d8a71e931811
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 3b23f614c964feead8e285e2c3d9a57a5fab546e3be16b43d1c6b4d58423d07b
[INFO] running `Command { std: "docker" "start" "-a" "3b23f614c964feead8e285e2c3d9a57a5fab546e3be16b43d1c6b4d58423d07b", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.12s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/oximedia_forensics-5ac2d08d1b8b9955)
[INFO] [stdout] 
[INFO] [stdout] running 515 tests
[INFO] [stdout] test authenticity::tests::test_authenticity_checker_default_has_checks ... ok
[INFO] [stdout] test authenticity::tests::test_authenticity_issue_description ... ok
[INFO] [stdout] test authenticity::tests::test_compression_history_normal_gop ... ok
[INFO] [stdout] test authenticity::tests::test_metadata_consistency_encoding_before_creation ... ok
[INFO] [stdout] test authenticity::tests::test_metadata_consistency_modification_before_creation ... ok
[INFO] [stdout] test authenticity::tests::test_report_multiple_issues_can_flag_inauthentic ... ok
[INFO] [stdout] test authenticity::tests::test_authenticity_checker_none_is_empty ... ok
[INFO] [stdout] test authenticity::tests::test_report_new_is_authentic ... ok
[INFO] [stdout] test authenticity::tests::test_timestamp_anomalies_empty ... ok
[INFO] [stdout] test authenticity::tests::test_timestamp_anomalies_non_monotonic ... ok
[INFO] [stdout] test authenticity::tests::test_timestamp_anomalies_monotonic ... ok
[INFO] [stdout] test blocking::tests::test_analyze_blocking_report_structure ... ok
[INFO] [stdout] test blocking::tests::test_compression_ratio_range ... ok
[INFO] [stdout] test blocking::tests::test_analyze_blocking_per_block_scores_range ... ok
[INFO] [stdout] test authenticity::tests::test_compression_history_high_i_ratio ... ok
[INFO] [stdout] test blocking::tests::test_detect_blocking_blocked_image ... ok
[INFO] [stdout] test blocking::tests::test_estimate_quality_extremes ... ok
[INFO] [stdout] test blocking::tests::test_too_small_image ... ok
[INFO] [stdout] test chain_of_custody::tests::test_chain_add_events_chronological ... ok
[INFO] [stdout] test chain_of_custody::tests::test_chain_current_custodian ... ok
[INFO] [stdout] test chain_of_custody::tests::test_chain_detects_chronological_violation ... ok
[INFO] [stdout] test chain_of_custody::tests::test_chain_events_of_type ... ok
[INFO] [stdout] test authenticity::tests::test_report_add_issue_reduces_confidence ... ok
[INFO] [stdout] test blocking::tests::test_blockiness_score_range ... ok
[INFO] [stdout] test chain_of_custody::tests::test_chain_has_modifications ... ok
[INFO] [stdout] test chain_of_custody::tests::test_chain_of_custody_creation ... ok
[INFO] [stdout] test chain_of_custody::tests::test_custody_event_creation ... ok
[INFO] [stdout] test chain_of_custody::tests::test_custody_event_type_as_str ... ok
[INFO] [stdout] test chain_of_custody::tests::test_chain_time_span ... ok
[INFO] [stdout] test blocking::tests::test_detect_blocking_uniform ... ok
[INFO] [stdout] test chain_of_custody::tests::test_custody_event_type_is_modifying ... ok
[INFO] [stdout] test chain_of_custody::tests::test_custody_event_with_description ... ok
[INFO] [stdout] test chain_of_custody::tests::test_custody_event_with_hash ... ok
[INFO] [stdout] test chain_of_custody::tests::test_provenance_registry_add_event ... ok
[INFO] [stdout] test chain_of_custody::tests::test_provenance_registry_creation ... ok
[INFO] [stdout] test chain_of_custody::tests::test_provenance_registry_find_broken_chains ... ok
[INFO] [stdout] test chain_of_custody::tests::test_provenance_registry_register_and_get ... ok
[INFO] [stdout] test chain_of_custody::tests::test_provenance_registry_remove ... ok
[INFO] [stdout] test chain_of_custody::tests::test_source_attribution_builder ... ok
[INFO] [stdout] test chain_of_custody::tests::test_source_attribution_creation ... ok
[INFO] [stdout] test authenticity::tests::test_metadata_consistency_ok ... ok
[INFO] [stdout] test clone_detection::tests::test_detector_default_params ... ok
[INFO] [stdout] test clone_detection::tests::test_dct_features_length ... ok
[INFO] [stdout] test clone_detection::tests::test_detect_small_image_returns_empty ... ok
[INFO] [stdout] test compression::tests::test_blocking_detection ... ok
[INFO] [stdout] test compression::tests::test_dct_2d ... ok
[INFO] [stdout] test clone_detection::tests::test_feature_similarity_identical ... ok
[INFO] [stdout] test clone_detection::tests::test_with_params_constructor ... ok
[INFO] [stdout] test compression::tests::test_detect_double_jpeg_deep_valleys_high_confidence ... ok
[INFO] [stdout] test compression::tests::test_detect_double_jpeg_empty_returns_zero ... ok
[INFO] [stdout] test compression::tests::test_detect_double_jpeg_natural_image_like ... ok
[INFO] [stdout] test compression::tests::test_detect_double_jpeg_too_small_returns_zero ... ok
[INFO] [stdout] test compression::tests::test_detect_double_jpeg_result_in_unit_interval ... ok
[INFO] [stdout] test compression::tests::test_quality_estimation ... ok
[INFO] [stdout] test compression::tests::test_rgb_to_ycbcr ... ok
[INFO] [stdout] test compression_history::tests::test_benford_chi2_all_zeros ... ok
[INFO] [stdout] test compression_history::tests::test_benford_chi2_empty ... ok
[INFO] [stdout] test compression_history::tests::test_benford_chi2_nonnegative ... ok
[INFO] [stdout] test compression_history::tests::test_blocking_analyzer_empty ... ok
[INFO] [stdout] test compression::tests::test_detect_double_jpeg_uniform_low_confidence ... ok
[INFO] [stdout] test compression::tests::test_histogram_building ... ok
[INFO] [stdout] test compression_history::tests::test_blocking_analyzer_no_artifacts ... ok
[INFO] [stdout] test compression_history::tests::test_blocking_analyzer_ratio ... ok
[INFO] [stdout] test compression_history::tests::test_compression_history_single ... ok
[INFO] [stdout] test compression_history::tests::test_dct_analysis_empty_blocks ... ok
[INFO] [stdout] test compression_history::tests::test_dct_analysis_synthetic_periodicity ... ok
[INFO] [stdout] test clone_detection::tests::test_feature_similarity_orthogonal ... ok
[INFO] [stdout] test compression_history::tests::test_compression_history_multi ... ok
[INFO] [stdout] test compression_history::tests::test_dct_analysis_confidence_bounded ... ok
[INFO] [stdout] test compression_history::tests::test_dct_histogram_basic ... ok
[INFO] [stdout] test compression_history::tests::test_dct_histogram_empty ... ok
[INFO] [stdout] test compression_history::tests::test_dct_analysis_without_benford ... ok
[INFO] [stdout] test compression_history::tests::test_dct_histogram_zero_proportion ... ok
[INFO] [stdout] test compression_history::tests::test_double_compression_detected ... ok
[INFO] [stdout] test compression_history::tests::test_double_compression_not_detected ... ok
[INFO] [stdout] test compression_history::tests::test_estimate_quality_empty_scores ... ok
[INFO] [stdout] test compression_history::tests::test_estimate_quality_low_pos ... ok
[INFO] [stdout] test authenticity::tests::test_compression_history_consecutive_i_in_mixed_stream ... ok
[INFO] [stdout] test clone_detection::tests::test_detect_no_clone_on_uniform ... ok
[INFO] [stdout] test compression_history::tests::test_dct_config_defaults ... ok
[INFO] [stdout] test compression_history::tests::test_estimate_quality_mid_pos ... ok
[INFO] [stdout] test compression_history::tests::test_estimate_quality_none_when_low_score ... ok
[INFO] [stdout] test clone_detection::tests::test_clone_region_has_valid_coordinates ... ok
[INFO] [stdout] test compression_history::tests::test_dct_histogram_periodicity ... ok
[INFO] [stdout] test compression_history::tests::test_extract_dct_coefficients_dc_nonzero ... ok
[INFO] [stdout] test compression_history::tests::test_extract_dct_coefficients_basic ... ok
[INFO] [stdout] test compression_history::tests::test_extract_dct_coefficients_empty ... ok
[INFO] [stdout] test compression_history::tests::test_extract_dct_coefficients_too_small ... ok
[INFO] [stdout] test compression_history::tests::test_quality_factor_clamped_confidence ... ok
[INFO] [stdout] test compression_history::tests::test_quality_factor_creation ... ok
[INFO] [stdout] test compression_history::tests::test_quality_factor_low_high ... ok
[INFO] [stdout] test copy_detect::tests::test_copy_detection_report_finalize_exact_match ... ok
[INFO] [stdout] test copy_detect::tests::test_copy_detection_report_finalize_no_copies ... ok
[INFO] [stdout] test copy_detect::tests::test_copy_match_creation ... ok
[INFO] [stdout] test copy_detect::tests::test_copy_match_not_exact ... ok
[INFO] [stdout] test copy_detect::tests::test_copy_transformation_default ... ok
[INFO] [stdout] test copy_detect::tests::test_fingerprint_database_empty ... ok
[INFO] [stdout] test copy_detect::tests::test_fingerprint_database_find_exact_match ... ok
[INFO] [stdout] test copy_detect::tests::test_fingerprint_creation ... ok
[INFO] [stdout] test copy_detect::tests::test_fingerprint_database_no_self_match ... ok
[INFO] [stdout] test copy_detect::tests::test_fingerprint_database_remove_source ... ok
[INFO] [stdout] test copy_detect::tests::test_hamming_distance_identical ... ok
[INFO] [stdout] test copy_detect::tests::test_hamming_distance_one_bit ... ok
[INFO] [stdout] test copy_detect::tests::test_partial_copy_detector_no_copies ... ok
[INFO] [stdout] test copy_detect::tests::test_partial_copy_detector_exact_copy ... ok
[INFO] [stdout] test clone_detection::tests::test_detect_result_structure ... ok
[INFO] [stdout] test copy_detect::tests::test_partial_copy_region_len ... ok
[INFO] [stdout] test copy_detect::tests::test_similarity_all_different_bits ... ok
[INFO] [stdout] test copy_detect::tests::test_similarity_identical ... ok
[INFO] [stdout] test edit_history::tests::test_edit_operation_color_grade_not_destructive ... ok
[INFO] [stdout] test copy_detect::tests::test_window_similarity_identical ... ok
[INFO] [stdout] test compression_history::tests::test_dct_analysis_uniform_image ... ok
[INFO] [stdout] test edit_history::tests::test_edit_operation_crop_is_destructive ... ok
[INFO] [stdout] test edit_history::tests::test_edit_operation_transcode_is_destructive ... ok
[INFO] [stdout] test edit_history::tests::test_history_add_and_len ... ok
[INFO] [stdout] test edit_history::tests::test_history_destructive_ops ... ok
[INFO] [stdout] test edit_history::tests::test_edit_operation_metadata_not_destructive ... ok
[INFO] [stdout] test edit_history::tests::test_edit_operation_names ... ok
[INFO] [stdout] test edit_history::tests::test_history_entry_description_contains_operation ... ok
[INFO] [stdout] test edit_history::tests::test_edit_operation_overlay_is_destructive ... ok
[INFO] [stdout] test edit_history::tests::test_history_earliest_latest ... ok
[INFO] [stdout] test edit_history::tests::test_history_entry_non_destructive_description ... ok
[INFO] [stdout] test edit_history::tests::test_history_has_destructive_ops_false ... ok
[INFO] [stdout] test edit_history::tests::test_history_mean_confidence ... ok
[INFO] [stdout] test edit_history::tests::test_history_report_nonempty ... ok
[INFO] [stdout] test edit_history::tests::test_history_span ... ok
[INFO] [stdout] test edit_history::tests::test_history_timeline_sorted ... ok
[INFO] [stdout] test copy_detect::tests::test_fingerprint_database_add ... ok
[INFO] [stdout] test edit_history::tests::test_history_empty_defaults ... ok
[INFO] [stdout] test ela::tests::test_adaptive_threshold ... ok
[INFO] [stdout] test ela::tests::test_error_distribution ... ok
[INFO] [stdout] test ela::tests::test_error_to_color ... ok
[INFO] [stdout] test ela::tests::test_ela_on_small_image ... ok
[INFO] [stdout] test ela::tests::test_cross_quality_gradient_uniform ... ok
[INFO] [stdout] test ela::tests::test_multi_quality_ela_on_uniform_image ... ok
[INFO] [stdout] test ela::tests::test_multi_quality_ela_requires_two_levels ... ok
[INFO] [stdout] test ela_analysis::tests::test_analyze_ela_detects_suspicious ... ok
[INFO] [stdout] test ela::tests::test_pixel_error_calculation ... ok
[INFO] [stdout] test ela::tests::test_multi_quality_ela_variance_map_dims ... ok
[INFO] [stdout] test ela::tests::test_multi_quality_ela_sorting ... ok
[INFO] [stdout] test ela_analysis::tests::test_analyze_ela_empty_slices ... ok
[INFO] [stdout] test ela::tests::test_multi_quality_ela_default ... ok
[INFO] [stdout] test ela::tests::test_multi_quality_ela_detects_tampered_region ... ok
[INFO] [stdout] test ela_analysis::tests::test_analyze_ela_identical_images ... ok
[INFO] [stdout] test ela_analysis::tests::test_compute_ela_pixel_diff_of_one ... ok
[INFO] [stdout] test ela_analysis::tests::test_compute_ela_pixel_diff_of_ten ... ok
[INFO] [stdout] test ela_analysis::tests::test_compute_ela_pixel_identical ... ok
[INFO] [stdout] test ela_analysis::tests::test_ela_config_default ... ok
[INFO] [stdout] test ela_analysis::tests::test_ela_map_at ... ok
[INFO] [stdout] test ela_analysis::tests::test_ela_map_build ... ok
[INFO] [stdout] test ela_analysis::tests::test_ela_map_max ... ok
[INFO] [stdout] test ela_analysis::tests::test_ela_map_mean ... ok
[INFO] [stdout] test ela_analysis::tests::test_compute_ela_pixel_reversed_order ... ok
[INFO] [stdout] test ela_analysis::tests::test_ela_result_is_authentic_boundary ... ok
[INFO] [stdout] test ela_analysis::tests::test_ela_result_is_authentic_low_mean ... ok
[INFO] [stdout] test file_integrity::tests::test_checker_empty_file_critical ... ok
[INFO] [stdout] test file_integrity::tests::test_checker_truncation_warning ... ok
[INFO] [stdout] test file_integrity::tests::test_file_integrity_has_issues_with_warning ... ok
[INFO] [stdout] test file_integrity::tests::test_file_integrity_has_no_issues_when_empty ... ok
[INFO] [stdout] test file_integrity::tests::test_file_integrity_max_severity ... ok
[INFO] [stdout] test file_integrity::tests::test_integrity_check_is_problem ... ok
[INFO] [stdout] test file_integrity::tests::test_integrity_check_labels ... ok
[INFO] [stdout] test file_integrity::tests::test_integrity_check_severity_ordering ... ok
[INFO] [stdout] test file_integrity::tests::test_integrity_result_all_clean_false_when_issues ... ok
[INFO] [stdout] test file_integrity::tests::test_integrity_result_file_count ... ok
[INFO] [stdout] test file_integrity::tests::test_integrity_result_critical_count ... ok
[INFO] [stdout] test fingerprint::tests::test_audit_trail_indices_are_sequential ... ok
[INFO] [stdout] test fingerprint::tests::test_audit_trail_append_and_retrieve ... ok
[INFO] [stdout] test fingerprint::tests::test_audit_trail_empty ... ok
[INFO] [stdout] test fingerprint::tests::test_chain_of_custody_basic ... ok
[INFO] [stdout] test fingerprint::tests::test_chain_of_custody_single_link ... ok
[INFO] [stdout] test fingerprint::tests::test_chain_of_custody_empty_verifies ... ok
[INFO] [stdout] test fingerprint::tests::test_chain_of_custody_verify_tampered ... ok
[INFO] [stdout] test fingerprint::tests::test_compute_audio_fingerprint_empty ... ok
[INFO] [stdout] test fingerprint::tests::test_compute_metadata_hash ... ok
[INFO] [stdout] test fingerprint::tests::test_compute_perceptual_hash_deterministic ... ok
[INFO] [stdout] test fingerprint::tests::test_detect_metadata_inconsistencies_changed ... ok
[INFO] [stdout] test fingerprint::tests::test_detect_metadata_inconsistencies_removed ... ok
[INFO] [stdout] test fingerprint::tests::test_detect_timeline_gaps ... ok
[INFO] [stdout] test fingerprint::tests::test_fingerprint_creation ... ok
[INFO] [stdout] test fingerprint::tests::test_detect_timeline_no_gaps ... ok
[INFO] [stdout] test fingerprint::tests::test_hash_similarity ... ok
[INFO] [stdout] test fingerprint::tests::test_is_match ... ok
[INFO] [stdout] test fingerprint::tests::test_matcher_identical ... ok
[INFO] [stdout] test fingerprint::tests::test_matcher_totally_different ... ok
[INFO] [stdout] test fingerprint::tests::test_overall_score_empty ... ok
[INFO] [stdout] test fingerprint::tests::test_overall_score_nonzero ... ok
[INFO] [stdout] test ela_analysis::tests::test_ela_result_not_authentic_high_mean ... ok
[INFO] [stdout] test fingerprint::tests::test_watermark_detect_lsb_mismatch ... ok
[INFO] [stdout] test fingerprint::tests::test_chain_hashes_are_deterministic ... ok
[INFO] [stdout] test file_integrity::tests::test_checker_jpeg_magic_ok ... ok
[INFO] [stdout] test file_integrity::tests::test_file_integrity_count_at_level ... ok
[INFO] [stdout] test file_integrity::tests::test_checker_no_magic_error ... ok
[INFO] [stdout] test fingerprint::tests::test_watermark_detect_dct_pattern_uniform ... ok
[INFO] [stdout] test fingerprint::tests::test_watermark_detect_lsb_match ... ok
[INFO] [stdout] test flat_array2::tests::test_3d_dim ... ok
[INFO] [stdout] test flat_array2::tests::test_3d_index ... ok
[INFO] [stdout] test flat_array2::tests::test_zeros_shape ... ok
[INFO] [stdout] test format_forensics::tests::test_description_unexpected_header ... ok
[INFO] [stdout] test format_forensics::tests::test_format_forensics_scan_truncated ... ok
[INFO] [stdout] test format_forensics::tests::test_format_forensics_scan_valid_png ... ok
[INFO] [stdout] test format_forensics::tests::test_format_forensics_unknown_format_no_header_error ... ok
[INFO] [stdout] test flat_array2::tests::test_from_elem ... ok
[INFO] [stdout] test format_forensics::tests::test_format_forensics_scan_bad_header ... ok
[INFO] [stdout] test flat_array2::tests::test_index_readwrite ... ok
[INFO] [stdout] test format_forensics::tests::test_is_critical_high_severity ... ok
[INFO] [stdout] test format_forensics::tests::test_is_critical_low_severity ... ok
[INFO] [stdout] test format_forensics::tests::test_report_max_severity_empty ... ok
[INFO] [stdout] test format_forensics::tests::test_report_max_severity_populated ... ok
[INFO] [stdout] test format_forensics::tests::test_severity_mismatched_params ... ok
[INFO] [stdout] test format_forensics::tests::test_severity_unexpected_header ... ok
[INFO] [stdout] test frame_forensics::tests::test_analyze_empty ... ok
[INFO] [stdout] test frame_forensics::tests::test_config_default ... ok
[INFO] [stdout] test frame_forensics::tests::test_detect_noise_inconsistency ... ok
[INFO] [stdout] test frame_forensics::tests::test_detect_intensity_jump ... ok
[INFO] [stdout] test frame_forensics::tests::test_frame_hash_empty ... ok
[INFO] [stdout] test frame_forensics::tests::test_detect_duplicates ... ok
[INFO] [stdout] test format_forensics::tests::test_report_critical_count_empty ... ok
[INFO] [stdout] test format_forensics::tests::test_severity_truncated_data ... ok
[INFO] [stdout] test frame_forensics::tests::test_analyze_single_frame ... ok
[INFO] [stdout] test frame_forensics::tests::test_frame_hash_from_gradient ... ok
[INFO] [stdout] test frame_forensics::tests::test_frame_hash_from_grayscale ... ok
[INFO] [stdout] test frame_forensics::tests::test_frame_hash_hamming ... ok
[INFO] [stdout] test frame_forensics::tests::test_frame_hash_identical ... ok
[INFO] [stdout] test frame_forensics::tests::test_frame_hash_similarity ... ok
[INFO] [stdout] test frequency_forensics::tests::test_analyze_image_too_small ... ok
[INFO] [stdout] test frequency_forensics::tests::test_analyze_empty_blocks ... ok
[INFO] [stdout] test frequency_forensics::tests::test_dct_1d_constant_input ... ok
[INFO] [stdout] test frequency_forensics::tests::test_dct_block_ac_energy ... ok
[INFO] [stdout] test frequency_forensics::tests::test_dct_block_creation ... ok
[INFO] [stdout] test frequency_forensics::tests::test_dct_block_sparsity ... ok
[INFO] [stdout] test frequency_forensics::tests::test_config_default ... ok
[INFO] [stdout] test frequency_forensics::tests::test_dct_2d_constant_block ... ok
[INFO] [stdout] test frequency_forensics::tests::test_analyze_uniform_blocks ... ok
[INFO] [stdout] test frequency_forensics::tests::test_dct_block_zero_count ... ok
[INFO] [stdout] test frequency_forensics::tests::test_dct_histogram_empty ... ok
[INFO] [stdout] test geometric::tests::test_block_features ... ok
[INFO] [stdout] test frequency_forensics::tests::test_dct_histogram_from_values ... ok
[INFO] [stdout] test geometric::tests::test_compute_orientation_uniform ... ok
[INFO] [stdout] test geometric::tests::test_detect_copy_move_orb_uniform ... ok
[INFO] [stdout] test geometric::tests::test_detect_copy_move_orb_with_duplicate_block ... ok
[INFO] [stdout] test geometric::tests::test_detect_orb_keypoints_small_image ... ok
[INFO] [stdout] test geometric::tests::test_feature_similarity ... ok
[INFO] [stdout] test geometric::tests::test_harris_response ... ok
[INFO] [stdout] test geometric::tests::test_filter_geometric_matches_consistency ... ok
[INFO] [stdout] test geometric::tests::test_match_orb_keypoints_empty ... ok
[INFO] [stdout] test geometric::tests::test_detect_orb_keypoints_with_corners ... ok
[INFO] [stdout] test geometric::tests::test_orb_copy_move_result_fields ... ok
[INFO] [stdout] test geometric::tests::test_orb_descriptor_hamming_different ... ok
[INFO] [stdout] test geometric::tests::test_orb_descriptor_hamming_partial ... ok
[INFO] [stdout] test geometric::tests::test_orb_descriptor_hamming_same ... ok
[INFO] [stdout] test hash_registry::tests::test_algorithm_name ... ok
[INFO] [stdout] test hash_registry::tests::test_algorithm_is_cryptographic ... ok
[INFO] [stdout] test geometric::tests::test_orb_sampling_pattern_length ... ok
[INFO] [stdout] test hash_registry::tests::test_algorithm_output_bits_md5 ... ok
[INFO] [stdout] test frequency_forensics::tests::test_analyze_image_uniform ... ok
[INFO] [stdout] test hash_registry::tests::test_algorithm_output_bits_perceptual ... ok
[INFO] [stdout] test geometric::tests::test_rgb_to_grayscale ... ok
[INFO] [stdout] test hash_registry::tests::test_algorithm_output_bits_blake3 ... ok
[INFO] [stdout] test hash_registry::tests::test_algorithm_output_bits_sha256 ... ok
[INFO] [stdout] test hash_registry::tests::test_media_hash_matches_same ... ok
[INFO] [stdout] test geometric::tests::test_regions_overlap ... ok
[INFO] [stdout] test hash_registry::tests::test_media_hash_no_match_different_algorithm ... ok
[INFO] [stdout] test hash_registry::tests::test_media_hash_no_match_different_value ... ok
[INFO] [stdout] test hash_registry::tests::test_registry_insert_and_lookup ... ok
[INFO] [stdout] test hash_registry::tests::test_registry_unique_hash_count ... ok
[INFO] [stdout] test hash_registry::tests::test_registry_total_inserts ... ok
[INFO] [stdout] test hash_registry::tests::test_registry_collision_count_zero ... ok
[INFO] [stdout] test hash_registry::tests::test_registry_colliding_assets ... ok
[INFO] [stdout] test hash_registry::tests::test_registry_collision_count_nonzero ... ok
[INFO] [stdout] test lighting::tests::test_local_light_direction ... ok
[INFO] [stdout] test lighting::tests::test_rgb_to_grayscale ... ok
[INFO] [stdout] test lighting::tests::test_ambient_occlusion ... ok
[INFO] [stdout] test lighting::tests::test_light_source_3d_fields ... ok
[INFO] [stdout] test lighting::tests::test_light_source_estimation ... ok
[INFO] [stdout] test lighting::tests::test_shadow_direction_analysis_mixed_gradients ... ok
[INFO] [stdout] test lighting::tests::test_shadow_direction_analysis_gradient ... ok
[INFO] [stdout] test lighting::tests::test_vec3_angle_to ... ok
[INFO] [stdout] test lighting::tests::test_vec3_angle_to_same ... ok
[INFO] [stdout] test lighting::tests::test_vec3_length ... ok
[INFO] [stdout] test lighting::tests::test_vec3_normalize ... ok
[INFO] [stdout] test lighting::tests::test_shadow_direction_analysis_small_image ... ok
[INFO] [stdout] test lighting::tests::test_shadow_direction_analysis_uniform ... ok
[INFO] [stdout] test lighting::tests::test_shadow_direction_default ... ok
[INFO] [stdout] test lighting::tests::test_shadow_inconsistency ... ok
[INFO] [stdout] test lighting::tests::test_vec3_dot ... ok
[INFO] [stdout] test metadata::tests::test_editing_software_detection ... ok
[INFO] [stdout] test metadata::tests::test_exif_data_creation ... ok
[INFO] [stdout] test metadata::tests::test_find_pattern ... ok
[INFO] [stdout] test metadata_forensics::tests::test_all_timestamps_identical_is_consistent ... ok
[INFO] [stdout] test metadata_forensics::tests::test_analyze_exif_thumbnail_invalid_data ... ok
[INFO] [stdout] test metadata_forensics::tests::test_analyze_metadata_clean_image ... ok
[INFO] [stdout] test lighting::tests::test_vec3_normalize_zero ... ok
[INFO] [stdout] test metadata::tests::test_datetime_validation ... ok
[INFO] [stdout] test metadata::tests::test_gps_validation ... ok
[INFO] [stdout] test metadata::tests::test_metadata_inconsistency_detection ... ok
[INFO] [stdout] test metadata_forensics::tests::test_analyze_metadata_invalid_gps_lat ... ok
[INFO] [stdout] test metadata_forensics::tests::test_date_anomaly_severity ... ok
[INFO] [stdout] test metadata_forensics::tests::test_exif_anomaly_severity ... ok
[INFO] [stdout] test metadata_forensics::tests::test_exif_significantly_before_creation ... ok
[INFO] [stdout] test lighting::tests::test_shadow_direction_flagged_regions ... ok
[INFO] [stdout] test metadata_forensics::tests::test_analyze_metadata_missing_creation_date_flags_anomaly ... ok
[INFO] [stdout] test metadata_forensics::tests::test_analyze_metadata_photoshop_flags_mismatch ... ok
[INFO] [stdout] test metadata_forensics::tests::test_critical_issues_filters_by_severity ... ok
[INFO] [stdout] test metadata_forensics::tests::test_exif_minor_before_creation_not_flagged ... ok
[INFO] [stdout] test metadata_forensics::tests::test_exif_significantly_after_modification ... ok
[INFO] [stdout] test metadata_forensics::tests::test_has_gps_false_when_missing_lat ... ok
[INFO] [stdout] test metadata_forensics::tests::test_has_gps_true ... ok
[INFO] [stdout] test metadata_forensics::tests::test_is_not_edited_camera_software ... ok
[INFO] [stdout] test metadata_forensics::tests::test_report_is_not_suspicious_high_score ... ok
[INFO] [stdout] test metadata_forensics::tests::test_report_is_suspicious_low_score ... ok
[INFO] [stdout] test metadata_forensics::tests::test_gap_in_sequence_severity ... ok
[INFO] [stdout] test metadata_forensics::tests::test_is_edited_gimp ... ok
[INFO] [stdout] test metadata_forensics::tests::test_is_edited_photoshop ... ok
[INFO] [stdout] test metadata_forensics::tests::test_modification_predates_creation ... ok
[INFO] [stdout] test metadata_forensics::tests::test_software_mismatch_severity ... ok
[INFO] [stdout] test metadata_forensics::tests::test_suspicious_gps_severity ... ok
[INFO] [stdout] test metadata_forensics::tests::test_timestamp_deltas_are_computed ... ok
[INFO] [stdout] test metadata_forensics::tests::test_timestamps_consistent ... ok
[INFO] [stdout] test noise::tests::test_patch_correlation ... ok
[INFO] [stdout] test noise::tests::test_region_noise_calculation ... ok
[INFO] [stdout] test noise::tests::test_wiener_filter ... ok
[INFO] [stdout] test noise_analysis::tests::test_analyze_noise_consistency_empty ... ok
[INFO] [stdout] test noise_analysis::tests::test_analyze_noise_consistency_uniform ... ok
[INFO] [stdout] test noise_analysis::tests::test_estimate_noise_mad ... ok
[INFO] [stdout] test noise_analysis::tests::test_estimate_noise_mad_empty ... ok
[INFO] [stdout] test noise_analysis::tests::test_estimate_noise_std ... ok
[INFO] [stdout] test noise_analysis::tests::test_noise_level_plausible ... ok
[INFO] [stdout] test noise_analysis::tests::test_noise_level_snr ... ok
[INFO] [stdout] test noise_analysis::tests::test_noise_level_zero_sigma ... ok
[INFO] [stdout] test noise_analysis::tests::test_noise_map_empty ... ok
[INFO] [stdout] test noise_analysis::tests::test_noise_map_get ... ok
[INFO] [stdout] test noise_analysis::tests::test_noise_map_mean_sigma ... ok
[INFO] [stdout] test noise_analysis::tests::test_noise_map_outliers ... ok
[INFO] [stdout] test noise_analysis::tests::test_noise_summary_evaluate ... ok
[INFO] [stdout] test noise_analysis::tests::test_noise_summary_evaluate_below_threshold ... ok
[INFO] [stdout] test noise_analysis::tests::test_noise_type_labels ... ok
[INFO] [stdout] test noise_analysis::tests::test_prnu_camera_id ... ok
[INFO] [stdout] test noise_analysis::tests::test_prnu_fingerprint_self_correlation ... ok
[INFO] [stdout] test noise_analysis::tests::test_prnu_fingerprint_size_mismatch ... ok
[INFO] [stdout] test noise_analysis::tests::test_prnu_fingerprint_zero_correlation ... ok
[INFO] [stdout] test noise_analysis::tests::test_region_noise_variance_default_threshold ... ok
[INFO] [stdout] test noise_analysis::tests::test_region_noise_variance_empty ... ok
[INFO] [stdout] test noise_analysis::tests::test_region_noise_variance_get ... ok
[INFO] [stdout] test noise_analysis::tests::test_region_noise_variance_is_flagged ... ok
[INFO] [stdout] test noise_analysis::tests::test_region_noise_variance_region_too_large ... ok
[INFO] [stdout] test noise_analysis::tests::test_region_noise_variance_uniform ... ok
[INFO] [stdout] test noise_analysis::tests::test_region_noise_variance_with_outlier ... ok
[INFO] [stdout] test pattern::tests::test_analyze_block_uniformity_flat_image ... ok
[INFO] [stdout] test pattern::tests::test_analyze_block_uniformity_scores_in_range ... ok
[INFO] [stdout] test pattern::tests::test_cosine_similarity_different_lengths ... ok
[INFO] [stdout] test pattern::tests::test_cosine_similarity_empty ... ok
[INFO] [stdout] test pattern::tests::test_cosine_similarity_identical ... ok
[INFO] [stdout] test pattern::tests::test_cosine_similarity_opposite ... ok
[INFO] [stdout] test pattern::tests::test_cosine_similarity_orthogonal ... ok
[INFO] [stdout] test pattern::tests::test_detect_copy_paste_finds_duplicate_blocks ... ok
[INFO] [stdout] test pattern::tests::test_detect_copy_paste_no_copies_in_varied_image ... ok
[INFO] [stdout] test pattern::tests::test_extract_dct_pattern_empty_input ... ok
[INFO] [stdout] test pattern::tests::test_extract_dct_pattern_returns_correct_length ... ok
[INFO] [stdout] test pattern::tests::test_extract_dct_pattern_zero_block_size ... ok
[INFO] [stdout] test pattern::tests::test_pattern_signature_similarity ... ok
[INFO] [stdout] test pattern::tests::test_pattern_type_variants ... ok
[INFO] [stdout] test provenance::tests::test_event_metadata ... ok
[INFO] [stdout] test provenance::tests::test_export_count_multiple ... ok
[INFO] [stdout] test provenance::tests::test_export_count_zero ... ok
[INFO] [stdout] test provenance::tests::test_new_chain_is_empty ... ok
[INFO] [stdout] test provenance::tests::test_original_creator_absent ... ok
[INFO] [stdout] test provenance::tests::test_original_creator_present ... ok
[INFO] [stdout] test provenance::tests::test_provenance_action_label ... ok
[INFO] [stdout] test provenance::tests::test_verify_chain_empty_is_invalid ... ok
[INFO] [stdout] test provenance::tests::test_verify_chain_must_start_with_created ... ok
[INFO] [stdout] test provenance::tests::test_verify_chain_non_monotonic_timestamps ... ok
[INFO] [stdout] test provenance::tests::test_verify_chain_valid_single ... ok
[INFO] [stdout] test provenance::tests::test_was_edited_after_edit_event ... ok
[INFO] [stdout] test noise_analysis::tests::test_region_noise_variance_mean ... ok
[INFO] [stdout] test provenance::tests::test_was_edited_false_initially ... ok
[INFO] [stdout] test report::tests::test_export_json ... ok
[INFO] [stdout] test report::tests::test_export_markdown ... ok
[INFO] [stdout] test report::tests::test_export_text ... ok
[INFO] [stdout] test report::tests::test_recommendations_generation ... ok
[INFO] [stdout] test report::tests::test_report_id_generation ... ok
[INFO] [stdout] test report::tests::test_statistics_calculation ... ok
[INFO] [stdout] test shadow_analysis::tests::test_analyze_consistent_regions ... ok
[INFO] [stdout] test shadow_analysis::tests::test_analyze_empty_regions ... ok
[INFO] [stdout] test shadow_analysis::tests::test_analyze_inconsistent_directions ... ok
[INFO] [stdout] test shadow_analysis::tests::test_config_default ... ok
[INFO] [stdout] test shadow_analysis::tests::test_detect_shadows_empty ... ok
[INFO] [stdout] test shadow_analysis::tests::test_light_source_creation ... ok
[INFO] [stdout] test shadow_analysis::tests::test_light_source_distance ... ok
[INFO] [stdout] test shadow_analysis::tests::test_shadow_direction_angle ... ok
[INFO] [stdout] test noise::tests::test_noise_inconsistency_detection ... ok
[INFO] [stdout] test shadow_analysis::tests::test_shadow_direction_consistency ... ok
[INFO] [stdout] test shadow_analysis::tests::test_shadow_direction_creation ... ok
[INFO] [stdout] test shadow_analysis::tests::test_shadow_direction_zero ... ok
[INFO] [stdout] test shadow_analysis::tests::test_shadow_region_center ... ok
[INFO] [stdout] test shadow_analysis::tests::test_shadow_direction_angular_difference ... ok
[INFO] [stdout] test source_camera::tests::test_build_prnu_fingerprint_no_images ... ok
[INFO] [stdout] test source_camera::tests::test_build_prnu_fingerprint_single_image ... ok
[INFO] [stdout] test source_camera::tests::test_camera_database_add_lookup ... ok
[INFO] [stdout] test source_camera::tests::test_camera_database_empty ... ok
[INFO] [stdout] test source_camera::tests::test_camera_database_find_best_match ... ok
[INFO] [stdout] test source_camera::tests::test_camera_match_weighted_score ... ok
[INFO] [stdout] test metadata_forensics::tests::test_analyze_exif_thumbnail_valid_image ... ok
[INFO] [stdout] test source_camera::tests::test_cfa_analysis_artifacts_present ... ok
[INFO] [stdout] test source_camera::tests::test_camera_match_zero_weights ... ok
[INFO] [stdout] test source_camera::tests::test_cfa_pattern_labels ... ok
[INFO] [stdout] test source_camera::tests::test_extract_noise_residual_empty ... ok
[INFO] [stdout] test source_camera::tests::test_lens_fingerprint_different ... ok
[INFO] [stdout] test source_camera::tests::test_lens_fingerprint_self_similarity ... ok
[INFO] [stdout] test source_camera::tests::test_lens_low_distortion ... ok
[INFO] [stdout] test source_camera::tests::test_prnu_config_default ... ok
[INFO] [stdout] test source_camera::tests::test_prnu_database_add_and_query ... ok
[INFO] [stdout] test source_camera::tests::test_cfa_analysis_low_confidence ... ok
[INFO] [stdout] test source_camera::tests::test_extract_noise_residual_gradient ... ok
[INFO] [stdout] test source_camera::tests::test_extract_noise_residual_uniform ... ok
[INFO] [stdout] test source_camera::tests::test_prnu_database_query_no_match ... ok
[INFO] [stdout] test source_camera::tests::test_prnu_database_size_mismatch ... ok
[INFO] [stdout] test source_camera::tests::test_prnu_multiple_images_averaging ... ok
[INFO] [stdout] test source_camera::tests::test_sensor_type_labels ... ok
[INFO] [stdout] test source_camera::tests::test_source_camera_result_identified ... ok
[INFO] [stdout] test source_camera::tests::test_source_camera_result_not_identified ... ok
[INFO] [stdout] test source_camera::tests::test_prnu_fingerprint_matches ... ok
[INFO] [stdout] test source_camera::tests::test_prnu_fingerprint_self_correlation ... ok
[INFO] [stdout] test source_camera::tests::test_source_camera_result_findings ... ok
[INFO] [stdout] test splicing::tests::test_detect_splicing_empty_noise_map ... ok
[INFO] [stdout] test splicing::tests::test_mad_noise_uniform ... ok
[INFO] [stdout] test splicing::tests::test_partial_block_at_edge ... ok
[INFO] [stdout] test splicing::tests::test_estimate_noise_by_region_size ... ok
[INFO] [stdout] test splicing::tests::test_mad_noise_noisy ... ok
[INFO] [stdout] test steganalysis::tests::test_anomaly_detector_default ... ok
[INFO] [stdout] test steganalysis::tests::test_entropy_map_compute ... ok
[INFO] [stdout] test splicing::tests::test_splicing_indicator_fields ... ok
[INFO] [stdout] test steganalysis::tests::test_entropy_map_constant_is_zero_entropy ... ok
[INFO] [stdout] test steganalysis::tests::test_entropy_map_mean ... ok
[INFO] [stdout] test steganalysis::tests::test_lsb_analysis_all_ones ... ok
[INFO] [stdout] test splicing::tests::test_uniform_image_no_splicing ... ok
[INFO] [stdout] test steganalysis::tests::test_lsb_analysis_all_zeros ... ok
[INFO] [stdout] test steganalysis::tests::test_anomaly_detector_clamps_sensitivity ... ok
[INFO] [stdout] test steganalysis::tests::test_entropy_map_uniform_is_high_entropy ... ok
[INFO] [stdout] test steganalysis::tests::test_lsb_analysis_empty ... ok
[INFO] [stdout] test steganalysis::tests::test_lsb_analysis_natural_image ... ok
[INFO] [stdout] test steganalysis::tests::test_lsb_analysis_result_creation ... ok
[INFO] [stdout] test steganalysis::tests::test_shannon_entropy_zero_total ... ok
[INFO] [stdout] test steganalysis::tests::test_shannon_entropy_uniform ... ok
[INFO] [stdout] test steganalysis::tests::test_rs_analysis_all_lsb_set ... ok
[INFO] [stdout] test steganalysis::tests::test_steganalysis_report_compute_confidence ... ok
[INFO] [stdout] test steganalysis::tests::test_steganalysis_report_creation ... ok
[INFO] [stdout] test steganalysis::tests::test_stego_detected_threshold ... ok
[INFO] [stdout] test tampering::tests::test_analyze_block_consistency_detects_outlier ... ok
[INFO] [stdout] test tampering::tests::test_analyzer_global_noise_empty ... ok
[INFO] [stdout] test tampering::tests::test_analyze_block_consistency_no_tamper ... ok
[INFO] [stdout] test tampering::tests::test_block_consistency_consistent ... ok
[INFO] [stdout] test tampering::tests::test_analyzer_global_noise_estimate ... ok
[INFO] [stdout] test tampering::tests::test_block_consistency_inconsistent_too_high ... ok
[INFO] [stdout] test tampering::tests::test_block_consistency_inconsistent_too_low ... ok
[INFO] [stdout] test tampering::tests::test_color_manipulation_is_spatial ... ok
[INFO] [stdout] test tampering::tests::test_copy_move_is_spatial ... ok
[INFO] [stdout] test tampering::tests::test_inpainting_is_spatial ... ok
[INFO] [stdout] test tampering::tests::test_splicing_is_spatial ... ok
[INFO] [stdout] test tampering::tests::test_recompress_artifact_is_not_spatial ... ok
[INFO] [stdout] test tampering::tests::test_suspicious_region_area ... ok
[INFO] [stdout] test splicing::tests::test_noisy_patch_detected ... ok
[INFO] [stdout] test tests::test_analyze_batch_empty_paths ... ok
[INFO] [stdout] test tampering::tests::test_suspicious_region_is_confident_true ... ok
[INFO] [stdout] test tests::test_analyze_batch_nonexistent_path ... ok
[INFO] [stdout] test tampering::tests::test_suspicious_region_is_confident_false ... ok
[INFO] [stdout] test steganalysis::tests::test_rs_analysis_natural ... ok
[INFO] [stdout] test tests::test_confidence_level_conversion ... ok
[INFO] [stdout] test tests::test_tampering_report_to_json_empty ... ok
[INFO] [stdout] test tests::test_forensic_test_creation ... ok
[INFO] [stdout] test tests::test_reliability_weight_categories ... ok
[INFO] [stdout] test tests::test_tampering_report_to_json_is_valid_json ... ok
[INFO] [stdout] test tests::test_tampering_report_unweighted ... ok
[INFO] [stdout] test tests::test_tampering_report_to_json_with_tests ... ok
[INFO] [stdout] test tests::test_tampering_report_weighted_confidence_single_test ... ok
[INFO] [stdout] test tests::test_tampering_report_weighted_confidence_empty ... ok
[INFO] [stdout] test tests::test_test_weight_custom_values ... ok
[INFO] [stdout] test tests::test_test_weight_defaults ... ok
[INFO] [stdout] test tests::test_test_weight_lookup ... ok
[INFO] [stdout] test tests::test_weighted_confidence_all_below_threshold ... ok
[INFO] [stdout] test tests::test_weighted_confidence_clamped_to_unit ... ok
[INFO] [stdout] test tests::test_weighted_confidence_detection_boost ... ok
[INFO] [stdout] test tests::test_weighted_confidence_strong_test_dominates ... ok
[INFO] [stdout] test time_forensics::tests::test_time_anomaly_report_empty ... ok
[INFO] [stdout] test splicing::tests::test_sigma_threshold_sensitivity ... ok
[INFO] [stdout] test noise::tests::test_prnu_extraction ... ok
[INFO] [stdout] test time_forensics::tests::test_time_anomaly_report_max_delta ... ok
[INFO] [stdout] test time_forensics::tests::test_time_forensics_add_observation ... ok
[INFO] [stdout] test time_forensics::tests::test_time_forensics_consistent_timestamps ... ok
[INFO] [stdout] test time_forensics::tests::test_time_forensics_no_observations ... ok
[INFO] [stdout] test time_forensics::tests::test_timestamp_anomaly_is_suspicious_high_rel_large_delta ... ok
[INFO] [stdout] test time_forensics::tests::test_timestamp_anomaly_is_suspicious_high_rel_small_delta ... ok
[INFO] [stdout] test time_forensics::tests::test_timestamp_anomaly_not_suspicious_low_rel ... ok
[INFO] [stdout] test time_forensics::tests::test_timestamp_source_gps_reliability ... ok
[INFO] [stdout] test time_forensics::tests::test_time_forensics_observation_count ... ok
[INFO] [stdout] test time_forensics::tests::test_time_forensics_suspicious_pair ... ok
[INFO] [stdout] test time_forensics::tests::test_timestamp_anomaly_delta_seconds ... ok
[INFO] [stdout] test time_forensics::tests::test_timestamp_source_label ... ok
[INFO] [stdout] test time_forensics::tests::test_timestamp_source_reliability_ordering ... ok
[INFO] [stdout] test watermark_detect::tests::test_detector_detected_count_zero_initially ... ok
[INFO] [stdout] test watermark_detect::tests::test_detector_empty_frame_no_signals ... ok
[INFO] [stdout] test watermark_detect::tests::test_detector_frames_scanned_increases ... ok
[INFO] [stdout] test watermark_detect::tests::test_detector_reset_clears_results ... ok
[INFO] [stdout] test watermark_detect::tests::test_frame_scan_result_any_confident ... ok
[INFO] [stdout] test watermark_detect::tests::test_frame_scan_result_confident_signals ... ok
[INFO] [stdout] test watermark_detect::tests::test_signal_with_detail ... ok
[INFO] [stdout] test watermark_detect::tests::test_signal_with_location ... ok
[INFO] [stdout] test watermark_detect::tests::test_signal_confidence_ok_false ... ok
[INFO] [stdout] test watermark_detect::tests::test_watermark_type_forensic_not_detectable ... ok
[INFO] [stdout] test watermark_detect::tests::test_watermark_type_invisible_not_detectable ... ok
[INFO] [stdout] test watermark_detect::tests::test_signal_confidence_clamps ... ok
[INFO] [stdout] test watermark_detect::tests::test_signal_confidence_ok_true ... ok
[INFO] [stdout] test watermark_detect::tests::test_watermark_type_visible_is_detectable ... ok
[INFO] [stdout] test watermark_detect::tests::test_watermark_type_labels ... ok
[INFO] [stdout] test tests::test_analyze_batch_valid_images ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 515 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.53s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests oximedia_forensics
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "3b23f614c964feead8e285e2c3d9a57a5fab546e3be16b43d1c6b4d58423d07b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3b23f614c964feead8e285e2c3d9a57a5fab546e3be16b43d1c6b4d58423d07b", kill_on_drop: false }`
[INFO] [stdout] 3b23f614c964feead8e285e2c3d9a57a5fab546e3be16b43d1c6b4d58423d07b
