[INFO] fetching crate videre-core 0.63.2...
[INFO] testing videre-core-0.63.2 against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate videre-core 0.63.2 into /workspace/builds/worker-5-tc2/source
[INFO] started tweaking crates.io crate videre-core 0.63.2
[INFO] finished tweaking crates.io crate videre-core 0.63.2
[INFO] tweaked toml for crates.io crate videre-core 0.63.2 written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate videre-core 0.63.2 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate videre-core 0.63.2 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: version requirement `=1.1.6+spec-1.1.0` for dependency `toml` includes semver metadata which will be ignored, removing the metadata is recommended to avoid confusion
[INFO] [stderr] warning: `videre-core` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 63ac0a4fdf36f8333a3acc6560663fff01fa7c8d5febcf21ad12fa1f389c7c1f
[INFO] running `Command { std: "docker" "start" "63ac0a4fdf36f8333a3acc6560663fff01fa7c8d5febcf21ad12fa1f389c7c1f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "63ac0a4fdf36f8333a3acc6560663fff01fa7c8d5febcf21ad12fa1f389c7c1f", 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" "63ac0a4fdf36f8333a3acc6560663fff01fa7c8d5febcf21ad12fa1f389c7c1f" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "63ac0a4fdf36f8333a3acc6560663fff01fa7c8d5febcf21ad12fa1f389c7c1f", 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" "63ac0a4fdf36f8333a3acc6560663fff01fa7c8d5febcf21ad12fa1f389c7c1f" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: version requirement `=1.1.6+spec-1.1.0` for dependency `toml` includes semver metadata which will be ignored, removing the metadata is recommended to avoid confusion
[INFO] [stderr] warning: `videre-core` (manifest) generated 1 warning
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling zerocopy v0.8.56
[INFO] [stderr]    Compiling log v0.4.34
[INFO] [stderr]    Compiling crc32fast v1.5.1
[INFO] [stderr]    Compiling simd-adler32 v0.3.10
[INFO] [stderr]    Compiling cc v1.4.4
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling cfg_aliases v0.2.2
[INFO] [stderr]    Compiling bytemuck v1.25.2
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling syn v3.0.4
[INFO] [stderr]    Compiling doc-comment v0.3.4
[INFO] [stderr]    Compiling fixed v1.31.0
[INFO] [stderr]    Compiling thread_local v1.1.10
[INFO] [stderr]    Compiling nix v0.31.3
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling zune-core v0.5.3
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling rustls v0.23.45
[INFO] [stderr]    Compiling weezl v0.1.12
[INFO] [stderr]    Compiling az v1.3.0
[INFO] [stderr]    Compiling quick-error v2.0.1
[INFO] [stderr]    Compiling zune-jpeg v0.5.15
[INFO] [stderr]    Compiling http v1.5.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling csv-core v0.1.13
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling matrixmultiply v0.3.11
[INFO] [stderr]    Compiling ordered-float v4.6.0
[INFO] [stderr]    Compiling pxfm v0.1.30
[INFO] [stderr]    Compiling ubyte v0.10.4
[INFO] [stderr]    Compiling sorted-vec v0.8.11
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling generator v0.8.9
[INFO] [stderr]    Compiling libsqlite3-sys v0.38.2
[INFO] [stderr]    Compiling blake3 v1.8.7
[INFO] [stderr]    Compiling byteorder-lite v0.1.0
[INFO] [stderr]    Compiling color_quant v1.1.0
[INFO] [stderr]    Compiling elapsed v0.1.2
[INFO] [stderr]    Compiling winnow v1.0.4
[INFO] [stderr]    Compiling init_with v1.1.0
[INFO] [stderr]    Compiling divrem v1.0.0
[INFO] [stderr]    Compiling fax v0.2.7
[INFO] [stderr]    Compiling base64 v0.23.1
[INFO] [stderr]    Compiling toml_parser v1.1.3+spec-1.1.0
[INFO] [stderr]    Compiling gif v0.14.2
[INFO] [stderr]    Compiling image-webp v0.2.4
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling ureq-proto v0.6.1
[INFO] [stderr]    Compiling png v0.18.1
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling console v0.16.6
[INFO] [stderr]    Compiling hashlink v0.12.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling csv v1.4.0
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling webpki-roots v1.0.9
[INFO] [stderr]    Compiling cpufeatures v0.3.0
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling constant_time_eq v0.4.2
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling toml_writer v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling rawpointer v0.2.1
[INFO] [stderr]    Compiling utf8-zero v0.8.1
[INFO] [stderr]    Compiling toml v1.1.6+spec-1.1.0
[INFO] [stderr]    Compiling indicatif v0.18.6
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling ctrlc v3.5.2
[INFO] [stderr]    Compiling fs2 v0.4.3
[INFO] [stderr]    Compiling moxcms v0.8.1
[INFO] [stderr]    Compiling zerocopy-derive v0.8.56
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling tiff v0.11.3
[INFO] [stderr]    Compiling rustls-webpki v0.103.15
[INFO] [stderr]    Compiling image v0.25.10
[INFO] [stderr]    Compiling ureq v3.4.0
[INFO] [stderr]    Compiling kiddo v4.2.1
[INFO] [stderr]    Compiling reverse_geocoder v4.1.1
[INFO] [stderr]    Compiling rusqlite v0.40.2
[INFO] [stderr]    Compiling videre-core v0.63.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 3m 52s
[INFO] running `Command { std: "docker" "inspect" "63ac0a4fdf36f8333a3acc6560663fff01fa7c8d5febcf21ad12fa1f389c7c1f", 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" "63ac0a4fdf36f8333a3acc6560663fff01fa7c8d5febcf21ad12fa1f389c7c1f" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: version requirement `=1.1.6+spec-1.1.0` for dependency `toml` includes semver metadata which will be ignored, removing the metadata is recommended to avoid confusion
[INFO] [stderr] warning: `videre-core` (manifest) generated 1 warning
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling filetime v0.2.29
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling kiddo v4.2.1
[INFO] [stderr]    Compiling reverse_geocoder v4.1.1
[INFO] [stderr]    Compiling videre-core v0.63.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 40s
[INFO] running `Command { std: "docker" "inspect" "63ac0a4fdf36f8333a3acc6560663fff01fa7c8d5febcf21ad12fa1f389c7c1f", 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" "63ac0a4fdf36f8333a3acc6560663fff01fa7c8d5febcf21ad12fa1f389c7c1f" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: version requirement `=1.1.6+spec-1.1.0` for dependency `toml` includes semver metadata which will be ignored, removing the metadata is recommended to avoid confusion
[INFO] [stderr] warning: `videre-core` (manifest) generated 1 warning
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.33s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/videre-core/38875068ee735369/out/videre_core-38875068ee735369)
[INFO] [stdout] 
[INFO] [stdout] running 765 tests
[INFO] [stdout] test basemap_detail::tests::live_plan_for_one_cell ... ignored
[INFO] [stdout] test basemap_detail::tests::directories_round_trip_through_their_encoding ... ok
[INFO] [stdout] test basemap_detail::tests::tile_ids_follow_the_reference_numbering ... ok
[INFO] [stdout] test atomic_file::tests::failed_write_preserves_prior_bytes_and_removes_the_temporary_file ... ok
[INFO] [stdout] test basemap_detail::tests::a_place_maps_to_the_whole_degree_cells_its_box_touches ... ok
[INFO] [stdout] test capture_date::tests::a_file_time_lands_on_its_local_day ... ok
[INFO] [stdout] test basemap::tests::ensure_downloaded_bails_when_another_process_holds_the_lock ... ok
[INFO] [stdout] test capture_date::tests::an_instant_becomes_the_wall_clock_of_the_zone ... ok
[INFO] [stdout] test capture_date::tests::an_unusable_exif_date_falls_through ... ok
[INFO] [stdout] test capture_date::tests::each_source_wins_only_when_the_ones_above_are_absent ... ok
[INFO] [stdout] test basemap::tests::archive_path_prefers_an_existing_per_library_override ... ok
[INFO] [stdout] test capture_date::tests::hour_24_is_midnight_of_the_next_day ... ok
[INFO] [stdout] test capture_date::tests::sources_round_trip_through_their_names ... ok
[INFO] [stdout] test basemap::tests::status_reports_absent_partial_and_ready ... ok
[INFO] [stdout] test classify::tests::forgetting_a_hash_drops_its_category_under_every_model ... ok
[INFO] [stdout] test classify::tests::forgetting_before_any_classification_is_a_no_op ... ok
[INFO] [stdout] test capture_date::tests::a_valid_date_is_kept_and_garbage_is_not_a_date ... ok
[INFO] [stdout] test basemap::tests::ensure_downloaded_fetches_verifies_and_publishes_atomically ... ok
[INFO] [stdout] test atomic_file::tests::successful_write_atomically_replaces_prior_bytes ... ok
[INFO] [stdout] test atomic_file::tests::simultaneous_publications_use_distinct_temporary_files ... ok
[INFO] [stdout] test basemap_detail::tests::a_cut_copies_exactly_the_cells_tiles_and_reads_back ... ok
[INFO] [stdout] test classify::tests::ensure_classifications_table_is_idempotent ... ok
[INFO] [stdout] test db::tests::enabling_inside_a_transaction_is_rejected ... ok
[INFO] [stdout] test classify::tests::insert_classifications_upserts_on_conflict ... ok
[INFO] [stdout] test classify::tests::exclude_video_hashes_keeps_hashes_with_no_file_hashes_row ... ok
[INFO] [stdout] test classify::tests::paths_for_category_returns_matching_paths_with_hash ... ok
[INFO] [stdout] test classify::tests::exclude_video_hashes_filters_out_mov_and_mp4 ... ok
[INFO] [stdout] test db::tests::paths_with_known_mime_excludes_null_rows ... ok
[INFO] [stdout] test db::tests::paths_with_known_mime_includes_the_sentinel ... ok
[INFO] [stdout] test db::tests::paths_with_known_mime_on_a_table_that_does_not_exist_is_empty_not_an_error ... ok
[INFO] [stdout] test db::tests::stored_signatures_empty_without_the_table ... ok
[INFO] [stdout] test db::tests::stored_signatures_reads_size_mtime_and_completeness ... ok
[INFO] [stdout] test db::tests::table_exists_false_for_missing_table ... ok
[INFO] [stdout] test db::tests::table_exists_true_for_existing_table ... ok
[INFO] [stdout] test decode_failures::tests::a_broken_file_stays_skipped_and_a_timeout_is_retried_a_day_later ... ok
[INFO] [stdout] test decode_failures::tests::a_failure_of_unknown_kind_is_retried_like_a_timeout ... ok
[INFO] [stdout] test decode_failures::tests::a_table_from_before_the_kind_gains_it_in_place ... ok
[INFO] [stdout] test decode_failures::tests::clear_removes_a_hash_so_it_is_tried_again ... ok
[INFO] [stdout] test db::tests::is_current_only_when_unchanged_and_complete ... ok
[INFO] [stdout] test basemap::tests::ensure_downloaded_resumes_a_partial_file ... ok
[INFO] [stdout] test basemap_detail::tests::repeated_contents_are_stored_once_and_runs_stay_runs ... ok
[INFO] [stdout] test basemap_detail::tests::status_reports_absent_ready_and_stale_and_remove_clears_it ... ok
[INFO] [stdout] test decode_failures::tests::failed_hashes_on_a_missing_table_is_empty_not_an_error ... ok
[INFO] [stdout] test decode_failures::tests::record_creates_a_row_at_count_one ... ok
[INFO] [stdout] test disk::tests::a_missing_path_is_zero_not_an_error ... ok
[INFO] [stdout] test disk::tests::a_single_file_sizes_as_itself ... ok
[INFO] [stdout] test decode_failures::tests::failed_hashes_respects_the_threshold ... ok
[INFO] [stdout] test decode_failures::tests::clear_stage_removes_only_that_stage ... ok
[INFO] [stdout] test classify::tests::paths_for_category_returns_empty_for_unmatched_category ... ok
[INFO] [stdout] test disk::tests::directory_size_does_not_follow_symlinks ... ok
[INFO] [stdout] test decode_failures::tests::stages_are_independent ... ok
[INFO] [stdout] test disk::tests::bytes_read_the_way_a_person_says_them ... ok
[INFO] [stdout] test embeddings::model_id_tests::a_well_formed_id_passes_even_if_never_embedded ... ok
[INFO] [stdout] test disk::tests::sizes_a_tree_including_nested_files ... ok
[INFO] [stdout] test embeddings::model_id_tests::the_explicit_flag_is_validated_not_just_the_config_file ... ok
[INFO] [stdout] test embeddings::model_id_tests::an_id_without_a_slash_is_rejected ... ok
[INFO] [stdout] test embeddings::tests::default_model_id_is_a_siglip_checkpoint ... ok
[INFO] [stdout] test classify::tests::pending_hashes_returns_embedded_but_unclassified ... ok
[INFO] [stdout] test disk::tests::usage_counts_the_library_logs ... ok
[INFO] [stdout] test decode_failures::tests::record_increments_on_repeat_and_keeps_latest_error ... ok
[INFO] [stdout] test embeddings::tests::is_video_ext_matches_mov_and_mp4_case_insensitively ... ok
[INFO] [stdout] test embeddings::tests::library_config_model_is_used_unless_an_explicit_model_wins ... ok
[INFO] [stdout] test classify::tests::pending_hashes_is_model_aware ... ok
[INFO] [stdout] test db::tests::open_wal_enforces_foreign_keys ... ok
[INFO] [stdout] test disk::tests::explicit_usage_reports_only_the_selected_library_and_labels_shared_geo ... ok
[INFO] [stdout] test db::tests::open_wal_is_idempotent_across_repeated_opens ... ok
[INFO] [stdout] test db::tests::open_wal_sets_journal_mode ... ok
[INFO] [stdout] test classify::tests::paths_for_category_is_scoped_to_one_model ... ok
[INFO] [stdout] test classify::tests::the_same_hash_can_hold_one_row_per_model ... ok
[INFO] [stdout] test classify::tests::pending_hashes_returns_work_for_a_second_model ... ok
[INFO] [stdout] test embeddings::tests::insert_embeddings_empty_slice_succeeds ... ok
[INFO] [stdout] test classify::tests::pending_hashes_excludes_video_extensions ... ok
[INFO] [stdout] test embeddings::tests::pending_images_excludes_dng_since_it_cannot_be_decoded ... ok
[INFO] [stdout] test embeddings::tests::ensure_embeddings_index_creates_the_index_in_the_main_database ... ok
[INFO] [stdout] test embeddings::tests::paths_for_hash_returns_all_duplicates ... ok
[INFO] [stdout] test embeddings::tests::pending_images_falls_back_to_ext_when_mime_is_null ... ok
[INFO] [stdout] test embeddings::tests::embeddable_images_includes_already_embedded_rows ... ok
[INFO] [stdout] test embeddings::tests::load_embeddings_finds_the_table_in_the_attached_database ... ok
[INFO] [stdout] test embeddings::tests::insert_and_load_round_trip ... ok
[INFO] [stdout] test embeddings::tests::pending_images_still_excludes_dng_even_though_its_mime_is_tiff ... ok
[INFO] [stdout] test embeddings::tests::pending_images_uses_mime_over_a_wrong_extension ... ok
[INFO] [stdout] test embeddings::tests::pending_images_dedupes_by_hash_and_includes_video ... ok
[INFO] [stdout] test embeddings_db::tests::db_path_in_joins_the_embeddings_dir_and_model_slug ... ok
[INFO] [stdout] test embeddings::tests::pending_images_is_model_aware ... ok
[INFO] [stdout] test embeddings_db::tests::list_models_on_a_library_with_no_embeddings_is_empty_not_an_error ... ok
[INFO] [stdout] test embeddings::tests::pending_images_returns_embedded_rows_only_when_their_fingerprint_is_missing ... ok
[INFO] [stdout] test embeddings_db::tests::model_slug_contains_no_path_separator ... ok
[INFO] [stdout] test embeddings_db::tests::model_slug_replaces_the_owner_separator ... ok
[INFO] [stdout] test embeddings_db::tests::model_slug_round_trips_through_model_from_slug ... ok
[INFO] [stdout] test embeddings_db::tests::attach_with_create_repairs_a_file_that_exists_without_the_table ... ok
[INFO] [stdout] test embeddings_db::tests::standalone_model_open_enforces_foreign_keys ... ok
[INFO] [stdout] test embeddings_db::tests::path_computation_creates_nothing ... ok
[INFO] [stdout] test embeddings::tests::set_phashes_writes_every_path_with_that_content ... ok
[INFO] [stdout] test error_kind::tests::a_database_error_without_an_explicit_kind_is_the_database_kind ... ok
[INFO] [stdout] test error_kind::tests::a_fatal_error_is_found_through_its_context_chain ... ok
[INFO] [stdout] test error_kind::tests::a_kind_is_found_anywhere_in_the_context_chain ... ok
[INFO] [stdout] test error_kind::tests::a_read_only_connection_fails_fatal ... ok
[INFO] [stdout] test error_kind::tests::codes_are_unique_and_snake_case ... ok
[INFO] [stdout] test error_kind::tests::an_error_without_a_kind_has_none ... ok
[INFO] [stdout] test error_kind::tests::contention_and_logic_errors_are_not_fatal ... ok
[INFO] [stdout] test error_kind::tests::image_errors_are_classified_by_their_cause ... ok
[INFO] [stdout] test error_kind::tests::io_errors_carry_the_kind_their_cause_implies ... ok
[INFO] [stdout] test embeddings_db::tests::attach_with_create_makes_a_database_with_the_chosen_page_size ... ok
[INFO] [stdout] test error_kind::tests::the_label_reads_as_part_of_a_sentence ... ok
[INFO] [stdout] test error_kind::tests::the_ioerr_family_full_readonly_and_cantopen_are_fatal ... ok
[INFO] [stdout] test embeddings_db::tests::attached_table_is_visible_through_emb_sqlite_master ... ok
[INFO] [stdout] test embeddings_db::tests::attach_without_create_errors_and_names_available_models ... ok
[INFO] [stdout] test embeddings_db::tests::counts_by_model_reports_zero_dims_for_an_empty_model_database ... ok
[INFO] [stdout] test error_log::tests::a_new_log_file_is_owner_only ... ok
[INFO] [stdout] test error_log::tests::a_missing_logs_dir_reads_as_empty_and_creates_nothing ... ok
[INFO] [stdout] test error_log::tests::a_line_without_a_run_joins_the_run_before_it ... ok
[INFO] [stdout] test error_log::tests::empty_fields_read_as_absent_and_garbage_is_skipped ... ok
[INFO] [stdout] test embeddings_db::tests::attach_with_create_is_idempotent_and_preserves_rows ... ok
[INFO] [stdout] test error_log::tests::a_symlinked_logs_directory_is_refused ... ok
[INFO] [stdout] test error_log::tests::an_existing_log_file_is_tightened_to_owner_only ... ok
[INFO] [stdout] test error_log::tests::a_later_clean_run_is_the_latest_run ... ok
[INFO] [stdout] test error_log::tests::logfmt_escaped_newlines_come_back_as_newlines ... ok
[INFO] [stdout] test error_log::tests::parses_logfmt_with_quoted_values ... ok
[INFO] [stdout] test error_log::tests::parses_the_json_shape_tracing_writes ... ok
[INFO] [stdout] test error_log::tests::an_uninitialized_library_gets_no_logs_directory ... ok
[INFO] [stdout] test error_log::tests::no_logs_directory_means_no_runs ... ok
[INFO] [stdout] test error_log::tests::latest_run_spans_rotation_and_ignores_older_runs ... ok
[INFO] [stdout] test error_log::tests::a_page_never_splits_lines_of_one_instant ... ok
[INFO] [stdout] test error_log::tests::report_records_kind_remediation_and_path ... ok
[INFO] [stdout] test error_log::tests::report_carries_the_current_stage_even_from_another_thread ... ok
[INFO] [stdout] test error_log::tests::sweep_deletes_only_expired_rotations_of_this_command ... ok
[INFO] [stdout] test embeddings_db::tests::counts_by_model_reports_rows_dims_and_size ... ok
[INFO] [stdout] test error_log::tests::info_reads_trace_files_and_names_commands_without_one ... ok
[INFO] [stdout] test face_cluster::gemm_seeding_tests::gemm_seeding_matches_naive_scan_exactly_including_distance_values ... ok
[INFO] [stdout] test face_cluster::sums_distance_tests::merged_cluster_distance_matches_direct_average_over_all_cross_pairs ... ok
[INFO] [stdout] test face_cluster::gemm_seeding_tests::gemm_seeding_handles_n_equal_one_and_n_equal_block ... ok
[INFO] [stdout] test face_cluster::gemm_seeding_tests::gemm_seeding_handles_multiple_blocks_including_a_partial_trailing_block ... ok
[INFO] [stdout] test face_cluster::tests::a_genuinely_fragmented_person_is_still_merged ... ok
[INFO] [stdout] test face_cluster::tests::a_rejected_pair_does_not_stop_the_pass ... ok
[INFO] [stdout] test face_cluster::tests::all_noise_when_min_samples_too_high ... ok
[INFO] [stdout] test face_cluster::tests::average_linkage_alone_splits_the_two_subclusters ... ok
[INFO] [stdout] test error_log::tests::read_lines_orders_by_instant_not_by_text ... ok
[INFO] [stdout] test face_cluster::tests::centroid_merge_reunites_one_persons_fragmented_subclusters ... ok
[INFO] [stdout] test face_cluster::sums_distance_tests::singleton_clusters_match_plain_cosine_distance ... ok
[INFO] [stdout] test face_cluster::tests::centroid_merge_keeps_distinct_identities_apart ... ok
[INFO] [stdout] test face_cluster::tests::chain_of_similar_pairs_does_not_merge_into_one_cluster ... ok
[INFO] [stdout] test face_cluster::tests::empty_input_returns_empty ... ok
[INFO] [stdout] test face_cluster::tests::identical_vectors_cluster_together ... ok
[INFO] [stdout] test face_cluster::tests::centroid_merge_still_drops_small_clusters_below_min_samples ... ok
[INFO] [stdout] test face_cluster::tests::the_centroid_pass_refuses_a_merge_that_is_far_apart_in_linkage ... ok
[INFO] [stdout] test face_cluster::tests::incremental_centroid_merge_matches_full_rescan_reference ... ok
[INFO] [stdout] test face_cluster::tests::two_distinct_clusters ... ok
[INFO] [stdout] test face_cluster::tests::one_bad_pair_does_not_block_an_otherwise_strong_merge ... ok
[INFO] [stdout] test face_cluster::tests::two_close_vectors_form_cluster ... ok
[INFO] [stdout] test face_db::migration_tests::an_empty_library_is_not_an_error ... ok
[INFO] [stdout] test face_db::migration_tests::a_label_with_no_usable_identity_is_left_alone ... ok
[INFO] [stdout] test face_db::migration_tests::case_variants_merge_keeping_the_more_used_spelling ... ok
[INFO] [stdout] test face_db::migration_tests::labels_become_identities_and_display_names ... ok
[INFO] [stdout] test error_log::tests::unparseable_lines_are_counted_not_shown ... ok
[INFO] [stdout] test face_db::migration_tests::running_it_twice_changes_nothing ... ok
[INFO] [stdout] test face_db::overlay_label_tests::a_label_with_no_people_row_still_renders_as_itself ... ok
[INFO] [stdout] test error_log::tests::read_lines_merges_commands_newest_first_across_rotations ... ok
[INFO] [stdout] test error_log::tests::read_lines_pages_with_before_and_says_more ... ok
[INFO] [stdout] test face_db::overlay_label_tests::unconfirmed_faces_are_not_labelled_on_photos ... ok
[INFO] [stdout] test face_db::overlay_label_tests::face_overlays_show_the_display_name ... ok
[INFO] [stdout] test face_db::people_table_tests::a_tie_on_face_count_prefers_the_capitalised_spelling ... ok
[INFO] [stdout] test error_log::tests::read_lines_filters_command_level_since_and_text ... ok
[INFO] [stdout] test face_db::people_table_tests::ensure_people_table_is_idempotent_and_keeps_rows ... ok
[INFO] [stdout] test face_db::people_table_tests::two_people_cannot_share_an_identity ... ok
[INFO] [stdout] test face_db::tests::a_face_labeled_after_clustering_keeps_no_cluster_id ... ok
[INFO] [stdout] test face_db::people_table_tests::every_migrated_face_points_at_a_person_row ... ok
[INFO] [stdout] test face_db::tests::create_table_idempotent ... ok
[INFO] [stdout] test face_db::tests::advancing_over_an_empty_faces_table_records_zero ... ok
[INFO] [stdout] test face_db::people_table_tests::accented_and_unaccented_spellings_become_one_person ... ok
[INFO] [stdout] test face_db::tests::insert_and_load_embedding ... ok
[INFO] [stdout] test face_db::tests::load_confirmed_face_labels_returns_only_ordered_truth_without_mutation ... ok
[INFO] [stdout] test face_db::tests::labeled_faces_by_hash_returns_only_confirmed_labeled ... ok
[INFO] [stdout] test embeddings_db::tests::list_models_returns_sorted_ids_and_ignores_unrelated_files ... ok
[INFO] [stdout] test face_db::tests::hashes_with_faces_returns_inserted_hash ... ok
[INFO] [stdout] test basemap_detail::tests::parallel_reads_finishing_out_of_order_still_write_every_tile_in_place ... ok
[INFO] [stdout] test face_db::tests::mark_scanned_records_hash_even_with_zero_faces ... ok
[INFO] [stdout] test face_db::tests::labeled_state_counts_reports_what_the_reset_prompt_names ... ok
[INFO] [stdout] test face_db::tests::mark_scanned_is_idempotent ... ok
[INFO] [stdout] test face_db::tests::load_faces_for_clustering_returns_bbox_min_side ... ok
[INFO] [stdout] test embeddings_db::tests::detach_allows_attaching_a_different_model_on_the_same_connection ... ok
[INFO] [stdout] test face_db::tests::replace_marks_rows_as_display_canvas ... ok
[INFO] [stdout] test face_db::tests::replace_removes_old_rows_for_same_hash ... ok
[INFO] [stdout] test face_db::tests::select_unscanned_skips_dedups_and_limits ... ok
[INFO] [stdout] test face_db::tests::reset_counts_propagates_a_query_error_instead_of_reporting_zero ... ok
[INFO] [stdout] test face_db::tests::orphan_marker_without_faces_is_removed ... ok
[INFO] [stdout] test face_db::tests::reset_is_all_or_nothing_under_an_aborting_trigger ... ok
[INFO] [stdout] test face_db::tests::reset_counts_then_clears_faces_and_people ... ok
[INFO] [stdout] test face_db::tests::orphan_sweep_preserves_duplicate_hash_and_people ... ok
[INFO] [stdout] test face_db::tests::reset_all_returns_face_state_to_absolute_beginning ... ok
[INFO] [stdout] test face_evaluation::tests::duplicate_suggestion_predictions_are_rejected ... ok
[INFO] [stdout] test face_evaluation::tests::duplicate_cluster_predictions_are_rejected ... ok
[INFO] [stdout] test face_evaluation::tests::duplicate_truth_ids_are_rejected ... ok
[INFO] [stdout] test face_evaluation::tests::empty_suggestion_input_serializes_as_null ... ok
[INFO] [stdout] test face_evaluation::tests::evaluates_cluster_and_suggestion_predictions ... ok
[INFO] [stdout] test face_db::tests::the_detach_migration_clears_tombstones_and_keeps_labels ... ok
[INFO] [stdout] test face_evaluation::tests::missing_cluster_prediction_is_rejected ... ok
[INFO] [stdout] test face_evaluation::tests::no_labeled_faces_is_rejected ... ok
[INFO] [stdout] test face_evaluation::tests::evaluation_is_independent_of_input_order ... ok
[INFO] [stdout] test face_db::tests::the_detach_migration_is_idempotent ... ok
[INFO] [stdout] test face_evaluation::tests::non_finite_suggestion_confidence_is_rejected ... ok
[INFO] [stdout] test face_evaluation::tests::unknown_prediction_face_is_rejected ... ok
[INFO] [stdout] test face_db::tests::update_cluster_assignments_works ... ok
[INFO] [stdout] test face_evaluation::tests::pair_metrics_are_undefined_without_positive_or_predicted_pairs ... ok
[INFO] [stdout] test face_db::tests::the_watermark_starts_absent_and_advance_records_the_highest_face_id ... ok
[INFO] [stdout] test face_db::tests::sweep_failure_rolls_back_every_face_change ... ok
[INFO] [stdout] test face_match::tests::iou_of_identical_boxes_is_one ... ok
[INFO] [stdout] test geocode::tests::ensure_geocode_cache_table_is_idempotent ... ok
[INFO] [stdout] test face_match::tests::greedy_matches_best_first_one_to_one ... ok
[INFO] [stdout] test face_db::tests::preview_is_read_only_and_lower_bound ... ok
[INFO] [stdout] test face_match::tests::iou_of_disjoint_boxes_is_zero ... ok
[INFO] [stdout] test face_match::tests::iou_of_half_overlap ... ok
[INFO] [stdout] test geocode::tests::forward_geocode_network_resolves_a_real_place ... ignored, hits the real Nominatim API - run manually with --ignored
[INFO] [stdout] test geocode::tests::normalize_query_trims_and_lowercases ... ok
[INFO] [stdout] test geocode::tests::forward_geocode_cached_returns_cached_value_without_touching_network ... ok
[INFO] [stdout] test fix_dates_target::tests::target_is_none_for_a_wrong_shape_that_would_otherwise_parse ... ok
[INFO] [stdout] test face_match::tests::below_threshold_is_unmatched ... ok
[INFO] [stdout] test heic::tests::a_non_utf8_file_name_keeps_its_bytes_in_the_output_name ... ok
[INFO] [stdout] test heic::tests::only_a_timeout_is_warned_for_callers_that_swallow_the_error ... ok
[INFO] [stdout] test face_db::tests::sweep_commit_failure_rolls_back_and_closes_transaction ... ok
[INFO] [stdout] test heic::tests::resolve_qlmanage_concurrency_override_of_zero_is_honored_literally ... ok
[INFO] [stdout] test heic::tests::resolve_qlmanage_concurrency_uses_override_when_present ... ok
[INFO] [stdout] test heic::tests::simultaneous_conversions_of_one_file_all_succeed ... ok
[INFO] [stdout] test heic::tests::resolve_qlmanage_concurrency_falls_back_to_default_when_absent ... ok
[INFO] [stdout] test heic::tests::the_quicklook_warning_carries_its_kind_and_the_full_explanation ... ok
[INFO] [stdout] test heic::tests::without_quicklook_the_decode_fails_with_the_quicklook_unavailable_kind ... ok
[INFO] [stdout] test fix_dates_target::tests::target_is_none_for_garbage_and_some_for_a_valid_exif_date ... ok
[INFO] [stdout] test heic::tests::a_free_slot_is_taken ... ok
[INFO] [stdout] test heic::tests::a_filesystem_that_rejects_locking_is_an_error_not_a_wait ... ok
[INFO] [stdout] test heic::tests::a_released_slot_is_free_again ... ok
[INFO] [stdout] test hf_cache::tests::hub_cache_follows_hf_hub_environment_precedence ... ok
[INFO] [stdout] test image_decode::tests::a_pixel_signature_is_taken_from_the_upright_canvas ... FAILED
[INFO] [stdout] test image_decode::tests::a_resized_or_recompressed_copy_keeps_its_signature ... FAILED
[INFO] [stdout] test heic::tests::an_unusable_directory_is_an_error ... ok
[INFO] [stdout] test image_decode::tests::a_different_picture_has_a_distant_signature ... FAILED
[INFO] [stdout] test image_decode::tests::file_and_bytes_variants_agree ... ok
[INFO] [stdout] test image_decode::tests::dhash_of_a_flat_image_is_zero ... ok
[INFO] [stdout] test image_decode::tests::orientation6_yields_the_display_canvas ... ok
[INFO] [stdout] test image_decode::tests::signatures_of_different_sizes_never_compare_as_close ... ok
[INFO] [stdout] test image_decode::tests::untagged_file_passes_through_untouched ... ok
[INFO] [stdout] test import_location::tests::every_rung_failing_reports_what_was_tried ... ok
[INFO] [stdout] test import_location::tests::default_uses_the_folder_layout_rung_and_never_opens_a_database ... ok
[INFO] [stdout] test import_location::tests::a_required_sibling_must_exist ... ok
[INFO] [stdout] test import_location::access_tests::unreadable_directory_is_denied_not_absent ... ok
[INFO] [stdout] test import_location::tests::provenance_describes_how_files_were_found ... ok
[INFO] [stdout] test import_location::tests::finds_a_layout_directory_by_name ... ok
[INFO] [stdout] test import_location::tests::a_file_named_like_the_layout_does_not_match ... ok
[INFO] [stdout] test import_location::tests::rungs_order_from_most_to_least_precise ... ok
[INFO] [stdout] test image_decode::tests::raw_variant_returns_the_tag_for_the_caller_to_apply ... ok
[INFO] [stdout] test import_location::tests::no_layout_present_is_none_not_an_error ... ok
[INFO] [stdout] test import_location::tests::matches_case_insensitively_because_apple_renamed_the_folder ... ok
[INFO] [stdout] test import_location::tests::user_supplied_path_wins_over_every_rung ... ok
[INFO] [stdout] test import_providers::tests::a_bare_originals_folder_is_not_an_apple_library ... ok
[INFO] [stdout] test import_location::tests::tries_layout_names_in_order ... ok
[INFO] [stdout] test import_providers::tests::a_folder_merely_named_originals_is_not_an_apple_library ... ok
[INFO] [stdout] test import_providers::tests::a_missing_search_root_is_skipped_silently ... ok
[INFO] [stdout] test import_providers::tests::detects_takeout_by_sidecar_presence ... ok
[INFO] [stdout] test import_providers::tests::an_ordinary_folder_of_photos_detects_as_nothing ... ok
[INFO] [stdout] test import_providers::tests::detects_a_modern_apple_library_by_structure_not_name ... ok
[INFO] [stdout] test import_providers::tests::detects_lightroom_by_catalog_file ... ok
[INFO] [stdout] test heic::tests::a_published_original_opens_as_a_jpeg ... ok
[INFO] [stdout] test import_providers::tests::every_provider_has_a_unique_id_and_a_display_name ... ok
[INFO] [stdout] test import_providers::tests::detects_takeout_when_sidecars_are_one_level_down ... ok
[INFO] [stdout] test io_timeout::absence_tests::a_path_without_a_usable_parent_is_not_trustworthy ... ok
[INFO] [stdout] test import_providers::tests::only_lightroom_starts_on_the_database_rung ... ok
[INFO] [stdout] test import_providers::tests::detects_a_kept_originals_backup_with_no_catalog_beside_it ... ok
[INFO] [stdout] test import_providers::tests::finds_a_library_in_a_search_root ... ok
[INFO] [stdout] test io_timeout::absence_tests::a_missing_file_in_a_missing_directory_is_not ... ok
[INFO] [stdout] test io_timeout::absence_tests::a_missing_file_in_an_existing_directory_is_trustworthy ... ok
[INFO] [stdout] test import_providers::tests::finds_several_libraries_and_reports_all ... ok
[INFO] [stdout] test io_timeout::absence_tests::a_real_present_file_is_trustworthy_too ... ok
[INFO] [stdout] test io_timeout::progress_tests::nonzero_reads_count_bytes_zero_reads_and_seeks_do_not ... ok
[INFO] [stdout] test io_timeout::progress_tests::cancelled_reader_stops_before_next_read_or_seek ... ok
[INFO] [stdout] test io_timeout::progress_tests::a_caller_held_handle_sees_the_worker_s_bytes ... ok
[INFO] [stdout] test io_timeout::size_timeout_tests::a_dead_path_fails_at_the_stat_rather_than_running_the_body ... ok
[INFO] [stdout] test io_timeout::size_timeout_tests::a_small_file_gets_exactly_the_old_constant ... ok
[INFO] [stdout] test io_timeout::progress_tests::zero_byte_eof_does_not_refresh_progress ... ok
[INFO] [stdout] test io_timeout::progress_tests::no_bytes_for_idle_window_times_out ... ok
[INFO] [stdout] test io_timeout::size_timeout_tests::a_zero_rate_falls_back_rather_than_dividing_by_zero ... ok
[INFO] [stdout] test io_timeout::size_timeout_tests::resolve_uses_the_override_but_refuses_zero ... ok
[INFO] [stdout] test io_timeout::size_timeout_tests::absurd_sizes_neither_panic_nor_overflow ... ok
[INFO] [stdout] test io_timeout::tests::capacity_converts_to_would_block_not_timeout ... ok
[INFO] [stdout] test embeddings_db::tests::two_models_do_not_see_each_others_rows ... ok
[INFO] [stdout] test io_timeout::size_timeout_tests::the_file_that_produced_this_bug_now_gets_enough_time ... ok
[INFO] [stdout] test io_timeout::size_timeout_tests::the_largest_file_in_the_measured_library_is_bounded_and_finite ... ok
[INFO] [stdout] test io_timeout::size_timeout_tests::a_real_file_runs_the_body ... ok
[INFO] [stdout] test io_timeout::tests::returns_ok_when_operation_finishes_before_timeout ... ok
[INFO] [stdout] test io_timeout::tests::panic_and_spawn_failure_release_reservations ... ok
[INFO] [stdout] test io_timeout::tests::timeout_keeps_permit_until_worker_exits ... ok
[INFO] [stdout] test io_timeout::tests::returns_timed_out_when_operation_exceeds_timeout ... ok
[INFO] [stdout] test io_timeout::timeout_reporting_tests::an_unreachable_path_reports_the_stat_phase_not_a_read ... ok
[INFO] [stdout] test io_timeout::timeout_reporting_tests::describe_distinguishes_a_dead_drive_from_a_slow_file ... ok
[INFO] [stdout] test io_timeout::timeout_reporting_tests::path_capacity_is_not_described_as_a_dead_drive ... ok
[INFO] [stdout] test library::tests::a_dangling_root_symlink_is_rejected ... ok
[INFO] [stdout] test library::tests::a_directory_named_videre_is_rejected ... ok
[INFO] [stdout] test io_timeout::tests::wait_with_timeout_returns_success_for_fast_process ... ok
[INFO] [stdout] test library::tests::a_file_where_the_root_should_be_is_rejected ... ok
[INFO] [stdout] test library::tests::a_missing_root_is_rejected_with_its_path ... ok
[INFO] [stdout] test library::tests::a_new_context_carries_the_built_in_settings ... ok
[INFO] [stdout] test library::tests::a_root_swapped_for_a_symlink_during_open_is_rejected ... ok
[INFO] [stderr] SKIP: running as root, so chmod 000 does not block opening a directory
[INFO] [stdout] test library::tests::an_inaccessible_root_is_rejected_with_its_path ... ok
[INFO] [stdout] test io_timeout::progress_tests::completion_at_idle_deadline_has_one_result_and_releases_permit ... ok
[INFO] [stdout] test library::tests::clones_share_the_pinned_identity_and_the_validation_memo ... ok
[INFO] [stdout] test library::tests::context_rejects_redirected_state_before_loading_its_config ... ok
[INFO] [stdout] test library::tests::relative_inputs_are_rejected_rather_than_resolved_against_cwd ... ok
[INFO] [stdout] test library::tests::selecting_home_is_allowed_and_a_child_touches_nothing_outside_itself ... ok
[INFO] [stdout] test library::tests::paths_are_local_and_root_aliases_share_identity ... ok
[INFO] [stdout] test io_timeout::tests::completion_at_deadline_releases_permit_once ... ok
[INFO] [stdout] test library::tests::a_path_operation_past_its_budget_is_cut_off_and_names_the_path ... ok
[INFO] [stdout] test library::tests::sibling_roots_get_distinct_cache_namespaces ... ok
[INFO] [stdout] test library_config::tests::a_complete_valid_file_loads_every_setting ... ok
[INFO] [stdout] test library_config::tests::a_corrupt_file_is_an_error_never_defaults ... ok
[INFO] [stderr] SKIP: running as root, so chmod 000 does not block creating a file
[INFO] [stdout] test library_config::tests::a_failed_write_leaves_the_prior_bytes_unchanged ... ok
[INFO] [stdout] test face_cluster::tests::agglomerate_average_matches_dense_matrix_reference_on_synthetic_data ... ok
[INFO] [stdout] test library_config::tests::a_context_does_not_mutate_when_its_config_is_later_edited ... ok
[INFO] [stdout] test library_config::tests::a_config_read_past_its_budget_fails_closed_without_restatting_the_file ... ok
[INFO] [stdout] test library_config::tests::a_context_refuses_to_load_an_invalid_config ... ok
[INFO] [stdout] test library_config::tests::a_non_boolean_export_flag_is_rejected ... ok
[INFO] [stdout] test library_config::tests::a_first_edit_writes_the_six_declarations_and_no_database ... ok
[INFO] [stdout] test io_timeout::tests::wait_with_timeout_kills_and_returns_timed_out_for_slow_process ... ok
[INFO] [stdout] test library_config::tests::an_absent_config_means_defaults_and_creates_nothing ... ok
[INFO] [stdout] test library_config::tests::a_value_reads_back_as_json_with_its_built_in_default ... ok
[INFO] [stdout] test library_config::tests::a_noop_unset_still_validates_the_existing_file ... ok
[INFO] [stdout] test heic::tests::a_full_pool_waits_for_a_release ... ok
[INFO] [stdout] test library_config::tests::an_edit_does_not_launder_an_already_broken_file ... ok
[INFO] [stdout] test library_config::tests::an_edit_refuses_a_hard_linked_config ... ok
[INFO] [stdout] test library_config::tests::an_edit_refuses_a_config_symlinked_outside_the_library ... ok
[INFO] [stdout] test library_config::tests::an_edit_preserves_unknown_nested_tables ... ok
[INFO] [stdout] test embeddings_db::tests::explicit_read_attachment_does_not_create_a_missing_store ... ok
[INFO] [stdout] test embeddings_db::tests::forgetting_in_a_library_with_no_embeddings_is_a_no_op ... ok
[INFO] [stdout] test library_config::tests::an_invalid_model_id_is_rejected_at_load ... ok
[INFO] [stdout] test library_config::tests::an_edit_turns_the_gallery_watch_off_and_back_to_the_default ... ok
[INFO] [stdout] test library_config::tests::an_edit_writes_the_file_back_in_a_pinned_format ... ok
[INFO] [stdout] test image_decode::tests::aspect_is_width_over_height ... ok
[INFO] [stdout] test image_decode::tests::a_signature_is_64_by_64 ... ok
[INFO] [stdout] test library_config::tests::a_timed_out_config_write_cannot_publish_after_a_later_edit ... ok
[INFO] [stdout] test library_config::tests::an_unknown_xmp_precedence_is_rejected_and_known_values_load ... ok
[INFO] [stdout] test library_config::tests::edit_many_writes_every_change_or_none ... ok
[INFO] [stdout] test library_config::tests::an_invalid_edit_value_changes_no_bytes ... ok
[INFO] [stdout] test library_config::tests::edit_sets_watch_debounce_ms ... ok
[INFO] [stdout] test library_config::tests::removed_global_keys_are_rejected_with_an_actionable_error ... ok
[INFO] [stdout] test library_config::tests::local_config_rejects_redirects_and_preserves_unknown_fields ... ok
[INFO] [stdout] test library_config::tests::the_key_table_names_every_key_once ... ok
[INFO] [stdout] test library_config::tests::the_table_limits_are_the_limits_an_edit_enforces ... ok
[INFO] [stdout] test library_config::tests::io_workers_accepts_boundaries_and_rejects_bad_values_without_editing ... ok
[INFO] [stdout] test library_config::tests::read_rate_rejects_zero_negative_noninteger_and_overflow ... ok
[INFO] [stdout] test library_config::tests::edit_sets_the_watch_bulk_settings ... ok
[INFO] [stdout] test library_config::tests::unset_against_an_absent_config_is_a_noop_creating_nothing ... ok
[INFO] [stdout] test library_config::tests::the_gallery_starts_watch_unless_told_not_to ... ok
[INFO] [stdout] test library_config::tests::watch_debounce_ms_reads_rejects_zero_and_noninteger ... ok
[INFO] [stdout] test library_config::tests::invalid_log_settings_are_refused_by_edit_and_load ... ok
[INFO] [stdout] test library_config::tests::log_settings_default_and_round_trip ... ok
[INFO] [stdout] test library_config::tests::search_cutoffs_out_of_range_are_refused_by_edit_and_load ... ok
[INFO] [stdout] test library_config::tests::unset_removes_only_its_key ... ok
[INFO] [stdout] test library_config::tests::watch_bulk_settings_read_and_reject_zero ... ok
[INFO] [stdout] test library_config::tests::fixed_declarations_accept_only_the_exact_filenames ... ok
[INFO] [stdout] test library_config::tests::street_detail_is_off_unless_opted_into ... ok
[INFO] [stdout] test library_config::tests::search_cutoffs_default_and_round_trip ... ok
[INFO] [stdout] test library_db::tests::a_foreign_sqlite_database_is_refused_unchanged ... ok
[INFO] [stdout] test embeddings_db::tests::forgetting_a_hash_removes_it_from_every_model_and_nothing_else ... ok
[INFO] [stdout] test library_db::tests::a_config_without_a_database_is_not_a_library_and_initialize_keeps_the_config ... ok
[INFO] [stdout] test library_db::tests::complete_schema_rejects_cascading_person_and_location_keys ... ok
[INFO] [stdout] test library_db::tests::complete_schema_requires_declared_foreign_keys_not_only_columns ... ok
[INFO] [stdout] test library_db::tests::a_held_exclusive_activity_lock_blocks_readers_too ... ok
[INFO] [stdout] test library_db::tests::a_held_activity_lock_blocks_initialization_cleanly ... ok
[INFO] [stdout] test library_db::tests::fresh_database_publication_never_replaces_an_existing_destination ... ok
[INFO] [stdout] test library_db::tests::fresh_schema_rejects_orphan_references ... ok
[INFO] [stdout] test library_db::tests::corrupt_database_bytes_are_refused_unchanged ... ok
[INFO] [stdout] test library_db::tests::a_future_schema_version_is_refused_with_an_actionable_error ... ok
[INFO] [stdout] test library_db::tests::migration_adds_xmp_sidecar_mtime_to_an_older_file_hashes ... ok
[INFO] [stdout] test library_db::tests::a_database_without_a_config_reads_and_initialize_writes_six_declarations_once ... ok
[INFO] [stdout] test library_db::tests::a_foreign_row_refuses_the_whole_library_without_touching_it ... ok
[INFO] [stdout] test library_db::tests::a_busy_library_explains_the_pending_upgrade ... ok
[INFO] [stdout] test library_db::tests::a_library_from_a_newer_videre_is_refused_with_the_schema_kind ... ok
[INFO] [stdout] test library_db::tests::a_refused_foreign_row_validation_is_never_memoized_as_success ... ok
[INFO] [stdout] test library_db::tests::multiply_linked_state_files_are_refused ... ok
[INFO] [stdout] test library_db::tests::a_row_with_a_dot_component_is_refused_as_foreign ... ok
[INFO] [stdout] test io_timeout::tests::pool_never_exceeds_limit_and_refuses_after_one_second ... ok
[INFO] [stdout] test embeddings_db::tests::explicit_model_stores_are_isolated_and_keep_f16_dimensions ... ok
[INFO] [stdout] test library_db::tests::a_symlinked_embeddings_directory_is_refused ... ok
[INFO] [stdout] test library_db::tests::redirected_state_database_and_config_are_refused ... ok
[INFO] [stdout] test library_db::tests::scan_schema_indexes_hashes_without_an_embed_run ... ok
[INFO] [stdout] test library_db::tests::a_zero_byte_database_is_never_exposed_as_a_library ... ok
[INFO] [stdout] test library_db::tests::fresh_v4_face_ids_never_reuse_deleted_max ... ok
[INFO] [stdout] test library_db::tests::every_library_open_enforces_foreign_keys ... ok
[INFO] [stdout] test library_db::tests::open_existing_read_only_opens_current_schema_and_rejects_writes ... ok
[INFO] [stdout] test library_db::tests::known_missing_media_under_the_root_remains_a_valid_library ... ok
[INFO] [stdout] test library_db::tests::the_sqlite_probe_reads_any_path_and_says_no_to_other_files ... ok
[INFO] [stdout] test library_db::tests::open_existing_read_only_refuses_an_older_schema_without_changing_bytes ... ok
[INFO] [stdout] test library_db::tests::opening_an_existing_library_does_not_add_a_missing_hash_index ... ok
[INFO] [stdout] test library_db::tests::read_only_v6_refuses_without_writing ... ok
[INFO] [stdout] test library_db::tests::stale_build_wal_sidecars_are_swept_with_their_temporary ... ok
[INFO] [stdout] test library_db::tests::read_only_v3_refuses_without_writing ... ok
[INFO] [stdout] test library_db::tests::readers_never_initialize_and_repeated_initialization_preserves_config ... ok
[INFO] [stderr] SKIP: running as root, so chmod 000 does not block searching a directory
[INFO] [stdout] test library_guard::tests::an_unsearchable_directory_fails_closed ... ok
[INFO] [stdout] test library_db::tests::opening_a_multi_row_library_validates_every_row_without_filesystem_probes ... ok
[INFO] [stdout] test library_guard::tests::a_resolution_past_its_budget_is_cut_off_and_names_the_path ... ok
[INFO] [stdout] test library_db::tests::root_aliases_open_the_same_initialized_library ... ok
[INFO] [stdout] test library_guard::tests::forms_keep_the_given_spelling_alongside_the_resolved_one ... ok
[INFO] [stdout] test library_guard::tests::mixed_paths_reject_the_entire_selection ... ok
[INFO] [stdout] test library_guard::tests::one_invalid_filter_rejects_the_valid_ones_in_either_order ... ok
[INFO] [stdout] test library_guard::tests::one_resolution_per_supplied_filter_and_none_for_none ... ok
[INFO] [stdout] test library_db::tests::read_only_v4_refuses_without_writing ... ok
[INFO] [stdout] test library_io::tests::a_missing_parent_directory_is_refused_without_creating_anything ... ok
[INFO] [stdout] test library_io::tests::a_final_sidecar_symlink_cannot_overwrite_its_target ... ok
[INFO] [stdout] test library_io::tests::a_replaced_root_fails_the_operation ... ok
[INFO] [stdout] test library_db::tests::the_published_database_is_self_contained_and_leaves_no_temporaries ... ok
[INFO] [stderr] SKIP: running as root, so chmod 555 does not block creating a sidecar
[INFO] [stdout] test library_io::tests::an_unwritable_directory_refuses_the_sidecar ... ok
[INFO] [stdout] test library_io::tests::changed_descendant_link_cannot_redirect_a_sidecar ... ok
[INFO] [stdout] test library_io::tests::an_unchanged_in_root_symlink_still_reaches_its_target ... ok
[INFO] [stdout] test library_io::tests::a_staged_copy_preserves_bytes_and_extension_and_cleans_up ... ok
[INFO] [stdout] test library_io::tests::a_non_regular_sidecar_target_is_refused_not_replaced ... ok
[INFO] [stdout] test library_io::tests::an_alias_of_the_root_reaches_the_same_files ... ok
[INFO] [stdout] test library_io::tests::state_directory_targets_are_refused_for_sidecars ... ok
[INFO] [stdout] test library_io::tests::relative_paths_resolve_against_the_library_root ... ok
[INFO] [stdout] test library_io::tests::the_walk_refuses_a_component_that_is_now_a_symlink ... ok
[INFO] [stdout] test library_io::tests::open_media_returns_only_a_regular_in_library_file ... ok
[INFO] [stdout] test library_io::tests::unicode_and_spaces_round_trip ... ok
[INFO] [stdout] test library_io::tests::a_failed_write_discards_its_temporary ... ok
[INFO] [stdout] test library_locks::tests::a_command_guard_reports_the_library_and_command_it_was_taken_for ... ok
[INFO] [stdout] test library_io::tests::replace_sidecar_replaces_an_existing_sidecar_and_leaves_no_temporaries ... ok
[INFO] [stdout] test library_locks::tests::a_missing_state_directory_fails_without_creating_anything ... ok
[INFO] [stdout] test library_locks::tests::a_symlinked_state_directory_is_refused_for_locking ... ok
[INFO] [stdout] test library_locks::tests::command_names_that_cannot_be_one_file_are_refused ... ok
[INFO] [stdout] test library_locks::tests::an_held_init_lock_refuses_a_second_taker_and_an_edit ... ok
[INFO] [stdout] test library_io::tests::timed_out_staged_copy_removes_late_scratch_file ... ok
[INFO] [stdout] test library_locks::tests::only_contention_is_library_busy_and_other_lock_errors_keep_their_cause ... ok
[INFO] [stdout] test library_locks::tests::an_exclusive_activity_lock_refuses_both_modes ... ok
[INFO] [stdout] test library_locks::tests::a_refused_lock_carries_the_library_busy_kind ... ok
[INFO] [stdout] test library_locks::tests::redirected_lock_files_are_refused ... ok
[INFO] [stdout] test library_locks::tests::waiting_does_not_retry_an_error_that_is_not_contention ... ok
[INFO] [stdout] test library_locks::tests::a_lock_file_open_past_its_budget_fails_closed_without_restatting_it ... ok
[INFO] [stdout] test library_locks::tests::command_locks_contend_only_with_themselves ... ok
[INFO] [stdout] test library_state::tests::get_returns_none_before_the_first_set ... ok
[INFO] [stdout] test library_locks::tests::lock_files_are_never_unlinked ... ok
[INFO] [stdout] test library_state::tests::keys_are_independent ... ok
[INFO] [stdout] test library_state::tests::set_string_get_string_round_trips_text_and_coerced_numbers ... ok
[INFO] [stdout] test library_state::tests::set_then_get_round_trips_and_overwrites ... ok
[INFO] [stdout] test library_stats::tests::compute_counts_duplicate_groups_and_wasted_bytes ... ok
[INFO] [stdout] test library_stats::tests::compute_counts_total_files_and_size ... ok
[INFO] [stdout] test library_locks::tests::dropping_a_guard_releases_its_lock_while_a_copy_of_its_descriptor_lives ... ok
[INFO] [stdout] test library_stats::tests::compute_counts_video_exts_case_insensitively ... ok
[INFO] [stdout] test library_locks::tests::root_aliases_share_one_librarys_locks ... ok
[INFO] [stdout] test library_stats::tests::compute_counts_faces_and_named_people ... ok
[INFO] [stdout] test library_stats::tests::compute_on_empty_db_returns_zeros ... ok
[INFO] [stdout] test library_locks::tests::shared_activity_coexists_but_exclusive_does_not ... ok
[INFO] [stdout] test library_stats::tests::mismatched_files_counts_paths_not_hashes ... ok
[INFO] [stdout] test library_stats::tests::compute_with_no_duplicates_reports_zero ... ok
[INFO] [stdout] test library_stats::tests::compute_without_faces_table_returns_zero_not_error ... ok
[INFO] [stdout] test library_stats::tests::compute_splits_photos_and_videos_by_extension ... ok
[INFO] [stdout] test library_stats::tests::mismatched_files_propagates_sql_errors ... ok
[INFO] [stdout] test library_stats::tests::mismatched_files_samples_in_path_order ... ok
[INFO] [stdout] test io_timeout::absence_tests::saturated_parent_check_is_unknown_not_absent ... ok
[INFO] [stdout] test library_guard::tests::membership_is_decided_physically_and_component_wise ... ok
[INFO] [stdout] test location::tests::explicit_dataset_is_content_addressed_and_exact ... ok
[INFO] [stdout] test library_db::tests::two_simultaneous_initializers_produce_one_valid_library ... ok
[INFO] [stdout] test location::tests::numbered_administrative_slices_are_absent_from_the_data ... ok
[INFO] [stdout] test location::tests::the_bundled_data_is_actually_unicode ... ok
[INFO] [stdout] test location_cluster::tests::a_cell_stays_within_about_its_side ... ok
[INFO] [stdout] test location_cluster::tests::a_chain_is_not_strung_into_one_cluster ... ok
[INFO] [stdout] test library_locks::tests::waiting_takes_a_lock_released_within_the_deadline ... ok
[INFO] [stdout] test library_db::tests::v5_upgrade_adds_the_size_marker_and_keeps_every_row ... ok
[INFO] [stdout] test library_db::tests::v3_upgrade_rolls_back_on_failure ... ok
[INFO] [stdout] test location_cluster::tests::a_zero_radius_snaps_nothing ... ok
[INFO] [stdout] test library_db::tests::v4_upgrade_adds_the_date_columns_and_keeps_every_row ... ok
[INFO] [stdout] test location_cluster::tests::centroid_is_unweighted_mean ... ok
[INFO] [stdout] test location_cluster::tests::cluster_by_distance_empty_input_returns_empty ... ok
[INFO] [stdout] test location_cluster::tests::cluster_by_distance_groups_nearby_points_and_isolates_far_ones ... ok
[INFO] [stdout] test location_cluster::tests::cluster_by_distance_single_point_is_its_own_cluster ... ok
[INFO] [stdout] test location_cluster::tests::clusters_a_large_library_quickly ... ignored
[INFO] [stdout] test location_cluster::tests::continent_of_assigns_representative_points ... ok
[INFO] [stdout] test location_cluster::tests::cluster_by_distance_all_points_merge_when_radius_is_huge ... ok
[INFO] [stdout] test location_cluster::tests::continent_of_names_the_ocean_fallback_for_unmatched_points ... ok
[INFO] [stdout] test location_cluster::tests::ensure_location_clusters_table_is_idempotent ... ok
[INFO] [stdout] test location_cluster::tests::gps_fingerprint_changes_when_gps_data_changes ... ok
[INFO] [stdout] test location_cluster::tests::gps_fingerprint_is_stable_for_identical_data ... ok
[INFO] [stdout] test location_cluster::tests::gps_fingerprint_on_a_library_without_gps_is_a_known_value ... ok
[INFO] [stdout] test location_cluster::tests::haversine_one_degree_of_latitude_is_about_111_km ... ok
[INFO] [stdout] test location_cluster::tests::haversine_paris_to_london_is_about_343_km ... ok
[INFO] [stdout] test location_cluster::tests::nearby_coordinates_share_a_cell_and_distant_ones_do_not ... ok
[INFO] [stdout] test location_cluster::tests::haversine_zero_distance_for_identical_points ... ok
[INFO] [stdout] test library_locks::tests::waiting_gives_the_refusal_back_once_the_deadline_passes ... ok
[INFO] [stdout] test location_cluster::tests::recompute_all_on_empty_gps_wipes_cleanly ... ok
[INFO] [stdout] test location::tests::location_name_resolves_known_city ... ok
[INFO] [stdout] test location_cluster::tests::recompute_and_assign_cost ... ignored
[INFO] [stdout] test library_db::tests::v3_upgrade_preserves_faces_and_reserves_historical_ids ... ok
[INFO] [stdout] test library_db::tests::v6_upgrade_drops_face_learning_and_keeps_everything_else ... ok
[INFO] [stdout] test location_cluster::tests::registered_haversine_sql_function_matches_rust_distance ... ok
[INFO] [stdout] test location_cluster::tests::the_gps_index_exists_and_serves_an_exact_match ... ok
[INFO] [stdout] test location_cluster::tests::two_coordinates_that_round_alike_stay_separate ... ok
[INFO] [stdout] test location::tests::place_names_keep_their_diacritics ... ok
[INFO] [stdout] test location_cluster::tests::within_radius_pairs_finds_exactly_the_brute_force_pairs ... ok
[INFO] [stdout] test marks::tests::a_rating_change_is_a_change ... ok
[INFO] [stdout] test marks::tests::a_row_with_no_marks_left_is_deleted ... ok
[INFO] [stdout] test marks::tests::by_pick_and_liked_are_exact ... ok
[INFO] [stdout] test marks::tests::by_rating_is_at_least ... ok
[INFO] [stdout] test marks::tests::change_from_parts_maps_the_request_shapes ... ok
[INFO] [stdout] test marks::tests::clearing_only_touches_named_fields ... ok
[INFO] [stdout] test marks::tests::empty_change_touches_nothing ... ok
[INFO] [stdout] test marks::tests::ensure_marks_table_is_idempotent ... ok
[INFO] [stdout] test marks::tests::get_many_returns_only_marked_hashes ... ok
[INFO] [stdout] test marks::tests::get_of_unmarked_is_default ... ok
[INFO] [stdout] test marks::tests::import_db_precedence_fills_gaps_only ... ok
[INFO] [stdout] test marks::tests::import_file_precedence_overwrites ... ok
[INFO] [stdout] test marks::tests::import_nothing_to_do_is_none ... ok
[INFO] [stdout] test location_cluster::tests::recompute_all_clusters_assigns_and_counts ... ok
[INFO] [stdout] test marks::tests::set_then_get_roundtrips_each_field ... ok
[INFO] [stdout] test mime_probe::tests::a_misnamed_jpeg_is_embeddable ... ok
[INFO] [stdout] test mime_probe::tests::a_real_tiff_is_still_embeddable_so_the_veto_stays_narrow ... ok
[INFO] [stdout] test mime_probe::tests::a_file_with_the_sentinel_is_still_embeddable ... ok
[INFO] [stdout] test mime_probe::tests::an_unknown_type_is_not_embeddable ... ok
[INFO] [stdout] test mime_probe::tests::classic_quicktime_without_ftyp_is_detected ... ok
[INFO] [stdout] test mime_probe::tests::content_mismatch_requires_known_conflicting_evidence ... ok
[INFO] [stdout] test mime_probe::tests::dng_is_never_embeddable_even_though_it_reports_tiff ... ok
[INFO] [stdout] test mime_probe::tests::effective_mime_falls_back_to_the_extension_when_null ... ok
[INFO] [stdout] test mime_probe::tests::effective_mime_prefers_the_detected_value ... ok
[INFO] [stdout] test mime_probe::tests::bmp_is_detected ... ok
[INFO] [stdout] test mime_probe::tests::gif_both_versions_are_detected ... ok
[INFO] [stdout] test mime_probe::tests::heic_brands_are_images_not_video ... ok
[INFO] [stdout] test mime_probe::tests::jpeg_is_detected ... ok
[INFO] [stdout] test mime_probe::tests::mp4_and_quicktime_brands_are_distinguished ... ok
[INFO] [stdout] test mime_probe::tests::png_is_detected ... ok
[INFO] [stdout] test mime_probe::tests::short_input_is_none ... ok
[INFO] [stdout] test mime_probe::tests::the_sentinel_is_treated_as_unknown_not_as_a_type ... ok
[INFO] [stdout] test mime_probe::tests::tiff_both_endiannesses_are_detected ... ok
[INFO] [stdout] test mime_probe::tests::unrecognised_bytes_are_none ... ok
[INFO] [stdout] test mime_probe::tests::the_sentinel_with_an_unknown_extension_stays_unknown ... ok
[INFO] [stdout] test mime_probe::tests::videos_are_embeddable_and_identified_as_video ... ok
[INFO] [stdout] test mime_probe::tests::webp_needs_both_riff_and_webp ... ok
[INFO] [stdout] test person::tests::case_differences_collapse_to_one_identity ... ok
[INFO] [stdout] test person::tests::display_name_preserves_what_was_typed ... ok
[INFO] [stdout] test person::tests::display_name_keeps_joiners_that_real_scripts_need ... ok
[INFO] [stdout] test person::tests::display_name_strips_bidi_and_control_characters ... ok
[INFO] [stdout] test person::tests::normalizing_twice_changes_nothing ... ok
[INFO] [stdout] test person::tests::nothing_usable_is_none_rather_than_empty ... ok
[INFO] [stdout] test person::tests::punctuation_is_dropped_and_diacritics_are_folded ... ok
[INFO] [stdout] test person::tests::resolve_is_case_insensitive_for_non_ascii ... ok
[INFO] [stdout] test person::tests::names_normalize_the_way_the_spec_says ... ok
[INFO] [stdout] test person::tests::resolve_matches_the_identity_and_the_display_name ... ok
[INFO] [stdout] test location::tests::materialization_errors_do_not_fall_back_or_poison_another_cache ... ok
[INFO] [stdout] test person::tests::resolve_without_a_people_table_falls_back_to_the_normalized_name ... ok
[INFO] [stdout] test person::tests::separators_never_double_or_dangle ... ok
[INFO] [stdout] test person::tests::the_dotted_and_dotless_i_are_pinned ... ok
[INFO] [stdout] test person::tests::the_whole_turkish_alphabet_folds_to_ascii ... ok
[INFO] [stdout] test person::tests::resolve_returns_both_people_sharing_a_display_name ... ok
[INFO] [stdout] test person_search::tests::a_renamed_display_name_still_finds_the_person ... ok
[INFO] [stdout] test person::tests::resolve_never_returns_duplicates ... ok
[INFO] [stdout] test person_search::tests::limit_is_respected ... ok
[INFO] [stdout] test person_search::tests::list_persons_returns_confirmed_labels ... ok
[INFO] [stdout] test person_search::tests::unknown_person_returns_empty ... ok
[INFO] [stdout] test person_search::tests::returns_only_confirmed_paths_for_person ... ok
[INFO] [stdout] test pipeline_runs::tests::a_0_58_runs_table_links_its_latest_run_to_its_history_entry ... ok
[INFO] [stdout] test pipeline_runs::tests::a_run_that_died_is_archived_as_crashed_when_the_next_one_starts ... ok
[INFO] [stdout] test library_stats::tests::compute_full_in_reads_models_without_creating_missing_stores ... ok
[INFO] [stdout] test pipeline_runs::tests::ensure_pipeline_runs_table_is_idempotent ... ok
[INFO] [stdout] test location_cluster::tests::sparse_linkage_matches_the_dense_matrix ... ok
[INFO] [stdout] test pipeline_runs::tests::finished_runs_are_kept_newest_n_per_command ... ok
[INFO] [stdout] test location_cluster::tests::recompute_all_records_how_long_it_took ... ok
[INFO] [stdout] test pipeline_runs::tests::install_sigint_handler_in_is_idempotent_within_a_process ... ok
[INFO] [stdout] test pipeline_runs::tests::install_sigint_handler_in_validates_the_library_before_installing ... ok
[INFO] [stdout] test pipeline_runs::tests::face_recluster_stage_surfaces_only_once_a_row_exists ... ok
[INFO] [stdout] test pipeline_runs::tests::a_running_face_recluster_stage_reads_running_not_crashed ... ok
[INFO] [stdout] test pipeline_runs::tests::a_running_location_names_stage_reads_running_not_crashed ... ok
[INFO] [stdout] test pipeline_runs::tests::start_run_then_finish_run_records_success ... ok
[INFO] [stdout] test pipeline_runs::tests::start_run_upserts_resetting_prior_finish_fields ... ok
[INFO] [stdout] test location::tests::name_unnamed_rows_fills_only_nulls_once_per_coordinate ... ok
[INFO] [stdout] test pipeline_runs::tests::skipped_files_are_noted_on_the_run_and_its_history ... ok
[INFO] [stdout] test location_cluster::tests::a_copy_joins_its_originals_place ... ok
[INFO] [stdout] test pipeline_runs::tests::location_names_stage_surfaces_only_once_a_row_exists ... ok
[INFO] [stdout] test pipeline_runs::tests::track_in_as_records_a_label_under_another_commands_guard ... ok
[INFO] [stdout] test pixel_signatures::tests::a_signature_round_trips ... ok
[INFO] [stdout] test pixel_signatures::tests::a_table_without_decoded_sizes_is_taken_again ... ok
[INFO] [stdout] test pipeline_runs::tests::a_stale_names_row_does_not_mask_a_running_recompute ... ok
[INFO] [stdout] test pipeline_runs::tests::track_in_records_runs_under_an_already_held_command_guard ... ok
[INFO] [stdout] test pixel_signatures::tests::prune_drops_signatures_of_hashes_with_no_path ... ok
[INFO] [stdout] test progress::duration_tests::no_unit_is_ever_shown_as_zero ... ok
[INFO] [stdout] test pixel_signatures::tests::nothing_is_stored_before_the_table_exists ... ok
[INFO] [stdout] test progress::duration_tests::the_millisecond_form_matches ... ok
[INFO] [stdout] test progress::duration_tests::reads_the_way_a_person_would_say_it ... ok
[INFO] [stdout] test progress::tests::a_caller_can_count_something_other_than_images ... ok
[INFO] [stdout] test progress::tests::a_file_without_a_rate_yet_reads_without_one ... ok
[INFO] [stdout] test progress::tests::a_skip_is_a_warning_with_the_subject_as_its_path_even_when_silent ... ok
[INFO] [stdout] test progress::tests::done_never_exceeds_size ... ok
[INFO] [stdout] test progress::tests::files_below_a_gibibyte_or_without_a_size_are_not_shown ... ok
[INFO] [stdout] test progress::tests::finish_stops_the_ticker ... ok
[INFO] [stdout] test progress::tests::one_large_file_reads_with_its_name ... ok
[INFO] [stdout] test progress::tests::concurrent_tick_from_multiple_threads_reaches_correct_total ... ok
[INFO] [stdout] test progress::tests::silent_mode_tick_by_does_not_panic ... ok
[INFO] [stdout] test pixel_signatures::tests::forget_drops_one_hash ... ok
[INFO] [stdout] test progress::tests::several_large_files_are_summed ... ok
[INFO] [stdout] test progress::tests::the_rate_is_the_last_five_seconds ... ok
[INFO] [stdout] test progress::tests::zero_total_does_not_panic ... ok
[INFO] [stdout] test query::person_matching_tests::a_display_name_that_normalizes_differently_still_matches ... ok
[INFO] [stdout] test query::person_matching_tests::a_renamed_person_is_found_by_a_turkish_display_name ... ok
[INFO] [stdout] test query::person_matching_tests::a_label_with_no_people_row_still_matches_by_identity ... ok
[INFO] [stdout] test query::person_matching_tests::case_and_accents_are_ignored_on_both_forms ... ok
[INFO] [stdout] test query::person_matching_tests::an_unknown_person_is_empty_not_an_error ... ok
[INFO] [stdout] test query::person_matching_tests::the_identity_matches ... ok
[INFO] [stdout] test pipeline_runs::tests::track_in_refuses_a_guard_from_another_command_or_library ... ok
[INFO] [stdout] test query::person_matching_tests::two_people_sharing_a_display_name_are_both_returned ... ok
[INFO] [stdout] test query::person_matching_tests::the_display_name_matches_too ... ok
[INFO] [stdout] test progress::tests::silent_mode_tick_does_not_panic ... ok
[INFO] [stdout] test query::person_matching_tests::unconfirmed_faces_are_excluded_whichever_form_is_used ... ok
[INFO] [stdout] test query::tests::a_place_matches_whole_words_ignoring_case_and_accents ... ok
[INFO] [stdout] test query::tests::category_predicate_is_model_scoped ... ok
[INFO] [stdout] test query::tests::an_unknown_place_matches_nothing_rather_than_failing ... ok
[INFO] [stdout] test query::tests::bad_dates_are_rejected_with_a_helpful_message ... ok
[INFO] [stdout] test query::tests::before_is_exclusive_so_ranges_tile ... ok
[INFO] [stdout] test query::tests::date_filter_falls_back_to_modified_at ... ok
[INFO] [stdout] test query::tests::date_filter_ignores_zero_exif_dates ... ok
[INFO] [stdout] test query::tests::date_shorthand_expands_to_half_open_ranges ... ok
[INFO] [stdout] test query::tests::date_shorthand_handles_month_and_year_rollover ... ok
[INFO] [stdout] test query::tests::location_distance_is_roughly_correct_over_a_long_span ... ok
[INFO] [stdout] test query::tests::date_filter_matches_on_exif_when_present ... ok
[INFO] [stdout] test query::tests::location_predicate_returns_only_within_radius_with_distances ... ok
[INFO] [stdout] test query::tests::missing_sort_values_sort_last_in_both_directions ... ok
[INFO] [stdout] test query::tests::multi_field_sort_uses_later_fields_as_tie_breakers ... ok
[INFO] [stdout] test query::tests::open_ended_ranges_work ... ok
[INFO] [stdout] test query::tests::normalise_bound_accepts_date_or_datetime ... ok
[INFO] [stdout] test query::tests::people_matches_whole_words_of_any_name_folded ... ok
[INFO] [stdout] test query::tests::person_predicate_returns_confirmed_only ... ok
[INFO] [stdout] test query::tests::sort_accepts_explicit_directions ... ok
[INFO] [stdout] test query::tests::sort_defaults_direction_per_field ... ok
[INFO] [stdout] test query::tests::sort_is_stable_on_full_ties ... ok
[INFO] [stdout] test query::tests::sort_rejects_bad_specs_naming_valid_values ... ok
[INFO] [stdout] test recompute_cost::tests::under_the_budget_is_cheap_and_over_is_not ... ok
[INFO] [stdout] test recompute_cost::tests::the_two_keys_are_independent ... ok
[INFO] [stdout] test recompute_cost::tests::unknown_is_not_cheap ... ok
[INFO] [stdout] test query::tests::sort_tolerates_spaces_and_case ... ok
[INFO] [stdout] test selection::path_selection_tests::an_empty_selection_accepts_everything ... ok
[INFO] [stdout] test selection::path_selection_tests::axes_intersect ... ok
[INFO] [stdout] test selection::path_selection_tests::kinds_and_exts_and_paths_all_narrow ... ok
[INFO] [stdout] test pipeline_runs::tests::heartbeat_records_last_cycle_and_reads_back ... ok
[INFO] [stdout] test selection::path_selection_tests::type_here_is_by_extension_and_that_differs_from_rows ... ok
[INFO] [stdout] test selection::resolve_in_tests::paths_or_within_the_axis_and_intersect_across_it ... ok
[INFO] [stdout] test selection::resolve_in_tests::no_filter_is_unconstrained_and_a_matching_nothing_filter_is_empty ... ok
[INFO] [stdout] test pipeline_runs::tests::the_status_read_lists_previous_runs_newest_first ... ok
[INFO] [stdout] test selection::resolve_in_tests::guarded_paths_do_not_enter_the_ambient_canonicalizer ... ok
[INFO] [stdout] test selection::resolve_tests::a_place_alone_still_yields_distances ... ok
[INFO] [stdout] test selection::resolve_tests::a_place_name_is_a_predicate_and_intersects_like_the_others ... ok
[INFO] [stdout] test selection::resolve_tests::a_resolved_query_narrows_like_any_other_predicate ... ok
[INFO] [stdout] test selection::resolve_in_tests::relative_filters_resolve_against_the_library_root ... ok
[INFO] [stdout] test selection::resolve_tests::a_symlinked_root_matches_rows_stored_under_its_target ... ok
[INFO] [stdout] test selection::resolve_tests::category_without_a_model_is_an_error_naming_the_reason ... ok
[INFO] [stdout] test selection::resolve_in_tests::one_outside_path_rejects_the_whole_invocation_in_either_order ... ok
[INFO] [stdout] test selection::resolve_tests::contradictory_presence_filters_match_nothing ... ok
[INFO] [stdout] test selection::resolve_tests::dates_and_types_intersect ... ok
[INFO] [stdout] test selection::resolve_tests::describe_round_trips_the_flags_a_user_typed ... ok
[INFO] [stdout] test query::tests::predicates_return_empty_not_error_when_nothing_matches ... ok
[INFO] [stdout] test selection::resolve_in_tests::rows_under_a_missing_in_root_directory_stay_selectable ... ok
[INFO] [stdout] test selection::resolve_tests::no_selection_means_unconstrained_not_empty ... ok
[INFO] [stdout] test selection::resolve_tests::path_matches_components_not_string_prefixes ... ok
[INFO] [stdout] test selection::resolve_tests::or_within_an_axis ... ok
[INFO] [stdout] test selection::resolve_tests::presence_fields_participate_in_empty_and_describe ... ok
[INFO] [stdout] test selection::resolve_tests::distances_survive_intersection_with_another_predicate ... ok
[INFO] [stdout] test selection::resolve_tests::kind_uses_mime_and_covers_every_image_type ... ok
[INFO] [stdout] test selection::tests::a_symlinked_root_matches_paths_in_either_form ... ok
[INFO] [stdout] test selection::resolve_tests::presence_filters_select_gps_rows ... ok
[INFO] [stdout] test selection::resolve_tests::tag_predicate_narrows_and_ands_with_other_axes ... ok
[INFO] [stdout] test selection::tests::an_unidentified_file_is_still_its_extension ... ok
[INFO] [stdout] test selection::tests::extensions_normalise_to_one_spelling ... ok
[INFO] [stdout] test selection::tests::parse_names_every_valid_value_on_a_typo ... ok
[INFO] [stdout] test selection::tests::mime_beats_a_wrong_extension_for_rows ... ok
[INFO] [stdout] test selection::resolve_tests::presence_filters_select_effective_date_rows ... ok
[INFO] [stdout] test selection::tests::presence_field_parse_names_supported_values ... ok
[INFO] [stdout] test selection::tests::paths_are_judged_by_extension_only ... ok
[INFO] [stdout] test selection::resolve_tests::and_across_axes_can_be_empty_without_being_unconstrained ... ok
[INFO] [stdout] test semaphore::tests::semaphore_reports_its_max ... ok
[INFO] [stdout] test status_report::tests::cost_is_shown_only_when_it_can_be_measured ... ok
[INFO] [stdout] test pipeline_runs::tests::watch_cycles_update_the_latest_run_but_keep_out_of_the_history ... ok
[INFO] [stdout] test pipeline_runs::tests::read_all_in_answers_liveness_from_the_library_locks ... ok
[INFO] [stdout] test status_report::tests::a_single_decode_failure_still_counts_as_outstanding ... ok
[INFO] [stdout] test status_report::tests::a_date_fix_dates_cannot_read_is_skipped_not_done ... ok
[INFO] [stdout] test status_report::tests::faces_coverage_counts_unscanned_not_faceless ... ok
[INFO] [stdout] test semaphore::tests::never_exceeds_max_concurrent_holders ... ok
[INFO] [stdout] test tags::tests::blank_tags_are_skipped ... ok
[INFO] [stdout] test tags::tests::remove_tags_drops_only_named ... ok
[INFO] [stdout] test status_report::tests::coverage_counts_outstanding_per_stage ... ok
[INFO] [stdout] test tags::tests::set_is_idempotent_no_duplicate_rows ... ok
[INFO] [stdout] test tags::tests::set_and_query_tags ... ok
[INFO] [stdout] test takeout_names::tests::an_edit_names_its_original ... ok
[INFO] [stdout] test takeout_names::tests::google_creations_name_their_original ... ok
[INFO] [stdout] test takeout_names::tests::an_original_is_found_across_extension_case_and_a_creations_counter ... ok
[INFO] [stdout] test takeout_names::tests::other_names_are_not_edits ... ok
[INFO] [stdout] test takeout_names::tests::name_pairs_count_without_hashes ... ok
[INFO] [stdout] test status_report::tests::decode_failed_files_are_skipped_not_outstanding ... ok
[INFO] [stdout] test io_timeout::progress_tests::one_byte_keeps_a_read_alive_past_old_total_budget ... ok
[INFO] [stdout] test takeout_names::tests::pairs_are_same_folder_and_different_bytes ... ok
[INFO] [stdout] test selection::resolve_in_tests::resolution_scales_with_supplied_filters_not_with_matched_rows ... ok
[INFO] [stdout] test thumb_cache::tests::hash_from_cache_filename_parses_face_thumb_path ... ok
[INFO] [stdout] test thumb_cache::tests::hash_from_cache_filename_distinguishes_different_hashes ... ok
[INFO] [stdout] test thumb_cache::tests::hash_from_cache_filename_parses_thumb_path ... ok
[INFO] [stdout] test thumb_cache::tests::hash_from_cache_filename_parses_original_path ... ok
[INFO] [stdout] test thumb_cache::tests::hash_from_cache_filename_rejects_tmp_files ... ok
[INFO] [stdout] test thumb_cache::tests::hash_from_cache_filename_parses_video_poster_path ... ok
[INFO] [stdout] test thumb_cache::tests::hash_from_cache_filename_rejects_too_short_or_malformed_names ... ok
[INFO] [stdout] test thumb_cache::tests::explicit_cache_paths_are_isolated_by_library ... ok
[INFO] [stdout] test vectors::tests::cosine_ignores_magnitude ... ok
[INFO] [stdout] test vectors::tests::cosine_of_identical_vectors_is_one ... ok
[INFO] [stdout] test vectors::tests::cosine_of_mismatched_lengths_is_zero ... ok
[INFO] [stdout] test thumb_cache::tests::face_keys_include_id_geometry_size_and_format_version ... ok
[INFO] [stdout] test vectors::tests::cosine_of_orthogonal_is_zero_and_opposite_is_minus_one ... ok
[INFO] [stdout] test vectors::tests::cosine_with_a_zero_vector_is_zero_not_nan ... ok
[INFO] [stdout] test vectors::tests::f16_round_trip_preserves_values_within_tolerance ... ok
[INFO] [stdout] test vectors::tests::l2_normalize_zero_vector_stays_zero ... ok
[INFO] [stdout] test vectors::tests::realistic_scale_round_trip_preserves_dot_product ... ok
[INFO] [stdout] test vectors::tests::l2_normalize_produces_unit_vector ... ok
[INFO] [stdout] test video_meta::mvhd_date_tests::a_zero_creation_time_is_refused_rather_than_recorded_as_1904 ... ok
[INFO] [stdout] test video_meta::mvhd_date_tests::an_mvhd_only_clip_gets_a_local_wall_clock_and_its_source ... ok
[INFO] [stdout] test video_meta::mvhd_date_tests::the_apple_key_wins_when_both_are_present ... ok
[INFO] [stdout] test video_meta::mvhd_date_tests::mvhd_date_converts_from_the_1904_epoch ... ok
[INFO] [stdout] test video_meta::tests::a_malformed_container_yields_defaults_rather_than_panicking ... ok
[INFO] [stdout] test video_meta::tests::a_quarter_turn_matrix_swaps_the_size ... ok
[INFO] [stdout] test thumb_cache::tests::aliases_of_one_library_share_the_same_cache_identity ... ok
[INFO] [stdout] test thumb_cache::tests::video_poster_paths_are_versioned_and_isolated ... ok
[INFO] [stdout] test video_meta::tests::apple_date_keeps_local_wallclock_and_drops_the_offset ... ok
[INFO] [stdout] test video_meta::tests::iso6709_refuses_rather_than_guesses ... ok
[INFO] [stdout] test video_meta::tests::iso6709_parses_both_signs_and_optional_altitude ... ok
[INFO] [stdout] test video_meta::tests::real_video_from_the_corpus_parses ... ignored
[INFO] [stdout] test video_meta::tests::dimensions_come_from_the_video_track_not_the_first_one ... ok
[INFO] [stdout] test video_meta::tests::mvhd_duration_reads_the_version_rather_than_assuming ... ok
[INFO] [stdout] test video_meta::tests::stsd_yields_the_format_tag ... ok
[INFO] [stdout] test video_meta::tests::tkhd_dimensions_are_16_16_fixed_point ... ok
[INFO] [stdout] test video_probe::tests::a_box_smaller_than_its_own_header_fails_open_without_looping ... ok
[INFO] [stdout] test video_probe::tests::a_64_bit_size_header_is_handled ... ok
[INFO] [stdout] test video_probe::tests::a_64_bit_size_inside_moov_is_handled ... ok
[INFO] [stdout] test video_probe::tests::a_child_claiming_to_extend_past_its_parent_fails_open ... ok
[INFO] [stdout] test video_probe::tests::a_file_with_a_video_track_reports_true ... ok
[INFO] [stdout] test video_probe::tests::a_moov_larger_than_the_cap_is_refused_without_reading_it ... ok
[INFO] [stdout] test video_probe::tests::a_data_handler_is_not_mistaken_for_a_media_handler ... ok
[INFO] [stdout] test thumb_cache::tests::tmp_paths_differ_from_final_paths_and_are_keyed_by_hash ... ok
[INFO] [stdout] test video_probe::tests::a_size_zero_box_inside_moov_runs_to_end_of_parent ... ok
[INFO] [stdout] test video_probe::tests::a_nonexistent_path_fails_open ... ok
[INFO] [stdout] test video_probe::tests::a_truncated_64_bit_header_inside_moov_fails_open ... ok
[INFO] [stdout] test video_probe::tests::a_jpeg_fails_open ... ok
[INFO] [stdout] test video_probe::tests::an_audio_only_file_reports_false ... ok
[INFO] [stdout] test video_probe::tests::a_top_level_size_zero_box_runs_to_end_of_file ... ok
[INFO] [stdout] test video_probe::tests::an_oversized_moov_fails_open_rather_than_allocating ... ok
[INFO] [stdout] test video_probe::tests::empty_input_fails_open ... ok
[INFO] [stdout] test video_probe::tests::an_empty_file_fails_open ... ok
[INFO] [stdout] test video_probe::tests::truncated_input_fails_open ... ok
[INFO] [stdout] test video_probe::tests::no_moov_fails_open ... ok
[INFO] [stdout] test video_probe::tests::has_video_track_reads_a_real_file ... ok
[INFO] [stdout] test video_probe::tests::video_after_audio_is_still_found ... ok
[INFO] [stdout] test work::tests::a_caller_may_supply_its_own_empty_wording ... ok
[INFO] [stdout] test work::tests::a_selection_keeps_only_what_it_matched ... ok
[INFO] [stdout] test work::tests::an_error_from_the_closure_is_not_swallowed ... ok
[INFO] [stdout] test work::tests::an_empty_pending_set_is_nothing_to_do ... ok
[INFO] [stdout] test work::tests::no_selection_leaves_the_pending_set_untouched ... ok
[INFO] [stdout] test work::tests::the_closure_runs_and_returns_its_value_when_there_is_work ... ok
[INFO] [stdout] test work::tests::the_closure_never_runs_when_there_is_nothing_to_do ... ok
[INFO] [stdout] test xmp_gather::tests::gathers_dims_and_location ... ok
[INFO] [stdout] test work::tests::a_selection_that_matches_nothing_is_nothing_to_do ... ok
[INFO] [stdout] test xmp_gather::tests::missing_data_yields_none_not_error ... ok
[INFO] [stdout] test status_report::tests::fix_dates_coverage_compares_rfc3339_values_as_instants ... ok
[INFO] [stdout] test location::tests::explicit_geocoder_preserves_utf8_place_names ... ok
[INFO] [stdout] test status_report::tests::locations_coverage_tracks_cluster_assignment_not_place_name ... ok
[INFO] [stdout] test status_report::tests::compute_status_assembles_the_whole_report ... ok
[INFO] [stdout] test status_report::tests::locations_coverage_reports_staleness_the_outstanding_count_cannot_see ... ok
[INFO] [stdout] test location::tests::a_city_is_named_rather_than_one_of_its_administrative_slices ... ok
[INFO] [stdout] test location_cluster::tests::a_far_row_starts_its_own_named_place ... ok
[INFO] [stdout] test location_cluster::tests::placed_rows_are_left_alone_and_the_fingerprint_stays_stale ... ok
[INFO] [stdout] test location_cluster::tests::a_nearby_photo_joins_within_the_places_radius ... ok
[INFO] [stdout] test location_cluster::tests::recompute_clears_foreign_key_children_first ... ok
[INFO] [stdout] test location_cluster::tests::two_new_rows_at_one_new_coordinate_share_a_place ... ok
[INFO] [stdout] test video_meta::tests::video_metadata_refreshes_an_outer_progress_window ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- image_decode::tests::a_pixel_signature_is_taken_from_the_upright_canvas stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'image_decode::tests::a_pixel_signature_is_taken_from_the_upright_canvas' (3642) panicked at src/image_decode.rs:254:10:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: IoError(Os { code: 2, kind: NotFound, message: "No such file or directory" })
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x61cf60a4a301 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x61cf60a64d8a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x61cf60a4fcac - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x61cf60a1f296 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x61cf60a3f629 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x61cf6073e8e0 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x61cf60a3f952 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x61cf60a1f342 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x61cf60a17429 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x61cf60a205dd - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x61cf60a6552c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x61cf60a65302 - core[a373ad73a504971]::result::unwrap_failed
[INFO] [stdout]   12:     0x61cf60367e8e - videre_core[8b5e1e1d1291e948]::image_decode::tests::fixture
[INFO] [stdout]   13:     0x61cf6036f31d - <videre_core[8b5e1e1d1291e948]::image_decode::tests::a_pixel_signature_is_taken_from_the_upright_canvas::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   14:     0x61cf60731d2b - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   15:     0x61cf6073ef05 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   16:     0x61cf607387f4 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   17:     0x61cf60741f92 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   18:     0x61cf60a48a9f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   19:     0x73d1c155fdfa - <unknown>
[INFO] [stdout]   20:     0x73d1c15f33d4 - clone
[INFO] [stdout]   21:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- image_decode::tests::a_resized_or_recompressed_copy_keeps_its_signature stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'image_decode::tests::a_resized_or_recompressed_copy_keeps_its_signature' (3643) panicked at src/image_decode.rs:254:10:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: IoError(Os { code: 2, kind: NotFound, message: "No such file or directory" })
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x61cf60a4a301 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x61cf60a64d8a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x61cf60a4fcac - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x61cf60a1f296 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x61cf60a3f629 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x61cf6073e8e0 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x61cf60a3f952 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x61cf60a1f342 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x61cf60a17429 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x61cf60a205dd - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x61cf60a6552c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x61cf60a65302 - core[a373ad73a504971]::result::unwrap_failed
[INFO] [stdout]   12:     0x61cf60367e8e - videre_core[8b5e1e1d1291e948]::image_decode::tests::fixture
[INFO] [stdout]   13:     0x61cf6036f8b0 - <videre_core[8b5e1e1d1291e948]::image_decode::tests::a_resized_or_recompressed_copy_keeps_its_signature::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   14:     0x61cf60731d2b - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   15:     0x61cf6073ef05 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   16:     0x61cf607387f4 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   17:     0x61cf60741f92 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   18:     0x61cf60a48a9f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   19:     0x73d1c155fdfa - <unknown>
[INFO] [stdout]   20:     0x73d1c15f33d4 - clone
[INFO] [stdout]   21:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- image_decode::tests::a_different_picture_has_a_distant_signature stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'image_decode::tests::a_different_picture_has_a_distant_signature' (3640) panicked at src/image_decode.rs:254:10:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: IoError(Os { code: 2, kind: NotFound, message: "No such file or directory" })
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x61cf60a4a301 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x61cf60a64d8a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x61cf60a4fcac - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x61cf60a1f296 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x61cf60a3f629 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x61cf6073e8e0 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x61cf60a3f952 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x61cf60a1f342 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x61cf60a17429 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x61cf60a205dd - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x61cf60a6552c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x61cf60a65302 - core[a373ad73a504971]::result::unwrap_failed
[INFO] [stdout]   12:     0x61cf60367e8e - videre_core[8b5e1e1d1291e948]::image_decode::tests::fixture
[INFO] [stdout]   13:     0x61cf6036f03d - <videre_core[8b5e1e1d1291e948]::image_decode::tests::a_different_picture_has_a_distant_signature::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   14:     0x61cf60731d2b - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   15:     0x61cf6073ef05 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   16:     0x61cf607387f4 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   17:     0x61cf60741f92 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   18:     0x61cf60a48a9f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   19:     0x73d1c155fdfa - <unknown>
[INFO] [stdout]   20:     0x73d1c15f33d4 - clone
[INFO] [stdout]   21:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     image_decode::tests::a_different_picture_has_a_distant_signature
[INFO] [stdout]     image_decode::tests::a_pixel_signature_is_taken_from_the_upright_canvas
[INFO] [stdout]     image_decode::tests::a_resized_or_recompressed_copy_keeps_its_signature
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 757 passed; 3 failed; 5 ignored; 0 measured; 0 filtered out; finished in 5.55s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "63ac0a4fdf36f8333a3acc6560663fff01fa7c8d5febcf21ad12fa1f389c7c1f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "63ac0a4fdf36f8333a3acc6560663fff01fa7c8d5febcf21ad12fa1f389c7c1f", kill_on_drop: false }`
[INFO] [stdout] 63ac0a4fdf36f8333a3acc6560663fff01fa7c8d5febcf21ad12fa1f389c7c1f
