[INFO] cloning repository https://github.com/lloydsmart/retromount
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/lloydsmart/retromount" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flloydsmart%2Fretromount", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flloydsmart%2Fretromount'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 9e948a47f75d6b683ba1bd8a554ca3ed551117be
[INFO] testing lloydsmart/retromount against beta-2026-04-21 for beta-1.96-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flloydsmart%2Fretromount" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-1-tc2/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/lloydsmart/retromount
[INFO] finished tweaking git repo https://github.com/lloydsmart/retromount
[INFO] tweaked toml for git repo https://github.com/lloydsmart/retromount written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/lloydsmart/retromount on toolchain beta-2026-04-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/lloydsmart/retromount 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" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] a63e337d7069de7f197085f86575493a7b4d4710637ecc3c8f1d062f90604fd3
[INFO] running `Command { std: "docker" "start" "-a" "a63e337d7069de7f197085f86575493a7b4d4710637ecc3c8f1d062f90604fd3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a63e337d7069de7f197085f86575493a7b4d4710637ecc3c8f1d062f90604fd3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a63e337d7069de7f197085f86575493a7b4d4710637ecc3c8f1d062f90604fd3", kill_on_drop: false }`
[INFO] [stdout] a63e337d7069de7f197085f86575493a7b4d4710637ecc3c8f1d062f90604fd3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] d5d567a397af7a885da218caec586494d7e0729a0410d811c3aa61e028128aa2
[INFO] running `Command { std: "docker" "start" "-a" "d5d567a397af7a885da218caec586494d7e0729a0410d811c3aa61e028128aa2", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling libc v0.2.185
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling winnow v1.0.1
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling memoffset v0.9.1
[INFO] [stderr]    Compiling cfg_aliases v0.2.1
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling inout v0.1.4
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling cc v1.2.60
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling toml_edit v0.25.11+spec-1.1.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling ref-cast v1.0.25
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling proc-macro-crate v3.5.0
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling cipher v0.4.4
[INFO] [stderr]    Compiling fuser v0.17.0
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling bumpalo v3.20.2
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling libbz2-rs-sys v0.2.2
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling num-conv v0.2.1
[INFO] [stderr]    Compiling zlib-rs v0.6.3
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling zopfli v0.8.3
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling num_enum_derive v0.7.6
[INFO] [stderr]    Compiling zerocopy-derive v0.8.48
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling ref-cast-impl v1.0.25
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling num_enum v0.7.6
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling env_filter v1.0.1
[INFO] [stderr]    Compiling bzip2 v0.6.1
[INFO] [stderr]    Compiling lzma-rust2 v0.16.2
[INFO] [stderr]    Compiling pbkdf2 v0.12.2
[INFO] [stderr]    Compiling aes v0.8.4
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling page_size v0.6.0
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling jiff v0.2.23
[INFO] [stderr]    Compiling constant_time_eq v0.4.2
[INFO] [stderr]    Compiling ppmd-rust v1.4.0
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling typed-path v0.12.3
[INFO] [stderr]    Compiling deflate64 v0.1.12
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling zstd v0.13.3
[INFO] [stderr]    Compiling zip v8.5.1
[INFO] [stderr]    Compiling env_logger v0.11.10
[INFO] [stderr]    Compiling retromount v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 49s
[INFO] running `Command { std: "docker" "inspect" "d5d567a397af7a885da218caec586494d7e0729a0410d811c3aa61e028128aa2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d5d567a397af7a885da218caec586494d7e0729a0410d811c3aa61e028128aa2", kill_on_drop: false }`
[INFO] [stdout] d5d567a397af7a885da218caec586494d7e0729a0410d811c3aa61e028128aa2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 07df1259ebd3d702cdc476f878248386b33debeccc04c8ae9cfccafa042e45ef
[INFO] running `Command { std: "docker" "start" "-a" "07df1259ebd3d702cdc476f878248386b33debeccc04c8ae9cfccafa042e45ef", kill_on_drop: false }`
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling fuser v0.17.0
[INFO] [stderr]    Compiling retromount v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 25.56s
[INFO] running `Command { std: "docker" "inspect" "07df1259ebd3d702cdc476f878248386b33debeccc04c8ae9cfccafa042e45ef", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "07df1259ebd3d702cdc476f878248386b33debeccc04c8ae9cfccafa042e45ef", kill_on_drop: false }`
[INFO] [stdout] 07df1259ebd3d702cdc476f878248386b33debeccc04c8ae9cfccafa042e45ef
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 648473bd7faf3fcca65f9789aa49f959f4009b225433862d3ebb0e312a4b3c7b
[INFO] running `Command { std: "docker" "start" "-a" "648473bd7faf3fcca65f9789aa49f959f4009b225433862d3ebb0e312a4b3c7b", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.18s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/retromount-168476decfe92844)
[INFO] [stdout] 
[INFO] [stdout] running 159 tests
[INFO] [stdout] test core::content::tests::formats_platform_as_expected ... ok
[INFO] [stdout] test core::content::tests::returns_decoded_content_kind ... ok
[INFO] [stdout] test core::content::tests::returns_normalized_content_kind ... ok
[INFO] [stdout] test core::content::tests::returns_decoded_content_metadata_via_trait ... ok
[INFO] [stdout] test core::cue::tests::converts_cue_to_disc_model ... ok
[INFO] [stdout] test core::content::tests::returns_normalized_content_metadata_via_trait ... ok
[INFO] [stdout] test core::disc::tests::creates_disc_with_tracks ... ok
[INFO] [stdout] test core::normalizer::tests::derives_platform_from_path ... ok
[INFO] [stdout] test core::normalizer::tests::derives_platform_from_zip_member_source ... ok
[INFO] [stdout] test core::normalizer::tests::derives_rom_game_title_from_source_leaf_name ... ok
[INFO] [stdout] test core::normalizer::tests::does_not_merge_same_title_from_different_directories ... ok
[INFO] [stdout] test core::normalizer::tests::groups_discs_into_single_game ... ok
[INFO] [stdout] test core::cue::tests::defaults_unknown_data_mode_to_2048_sector_size ... ok
[INFO] [stdout] test core::normalizer::tests::normalizes_rom_to_game ... ok
[INFO] [stdout] test core::normalizer::tests::returns_expected_decoded_content_kind ... ok
[INFO] [stdout] test core::normalizer::tests::returns_expected_normalized_content_kind ... ok
[INFO] [stdout] test core::source::tests::derives_file_name_from_filesystem_source ... ok
[INFO] [stdout] test core::cue::tests::parses_file_and_track_entries ... ok
[INFO] [stdout] test core::normalizer::tests::suppresses_roms_consumed_by_discs ... ok
[INFO] [stdout] test core::track::tests::creates_data_track ... ok
[INFO] [stdout] test core::vfs::tests::add_child_maintains_stable_ordering ... ok
[INFO] [stdout] test core::vfs::tests::builds_inline_file ... ok
[INFO] [stdout] test core::vfs::tests::builds_simple_tree ... ok
[INFO] [stdout] test core::vfs::tests::exposes_directory_browse_helpers ... ok
[INFO] [stdout] test core::vfs::tests::finds_node_for_directory ... ok
[INFO] [stdout] test core::vfs::tests::finds_node_for_root_file ... ok
[INFO] [stdout] test core::vfs::tests::finds_nested_file_in_directory ... ok
[INFO] [stdout] test core::vfs::tests::finds_root_directory_for_empty_path ... ok
[INFO] [stdout] test core::vfs::tests::finds_root_file_with_slash_in_name ... ok
[INFO] [stdout] test core::vfs::tests::normalizes_repeated_slashes_in_paths ... ok
[INFO] [stdout] test core::vfs::tests::finds_directory_by_path ... ok
[INFO] [stdout] test core::vfs::tests::sorts_directories_before_files_case_insensitively ... ok
[INFO] [stdout] test core::vfs::tests::sorts_names_case_insensitively_for_browse_order ... ok
[INFO] [stdout] test core::source::tests::creates_source_ref ... ok
[INFO] [stdout] test core::source::tests::derives_file_name_from_zip_member_source ... ok
[INFO] [stdout] test core::vfs_reader::tests::opens_inline_backed_vfs_file ... ok
[INFO] [stdout] test core::vfs_reader::tests::reads_inline_backed_vfs_file_from_offset ... ok
[INFO] [stdout] test core::vfs_reader::tests::opens_filesystem_backed_vfs_file ... ok
[INFO] [stdout] test core::vfs_resolver::tests::finds_directory_by_path ... ok
[INFO] [stdout] test core::vfs_resolver::tests::finds_root_directory_for_empty_path ... ok
[INFO] [stdout] test core::vfs_resolver::tests::finds_root_file_by_path ... ok
[INFO] [stdout] test core::vfs_resolver::tests::normalizes_backslashes_in_resolved_paths ... ok
[INFO] [stdout] test core::vfs_resolver::tests::opens_inline_file_by_path ... ok
[INFO] [stdout] test engine::preview::tests::writes_simple_vfs_tree ... ok
[INFO] [stdout] test core::vfs_resolver::tests::opens_source_backed_file_by_path ... ok
[INFO] [stdout] test core::vfs_reader::tests::opens_zip_backed_vfs_file ... ok
[INFO] [stdout] test input::basic_decoder::tests::decodes_rom_file_as_rom_content ... ok
[INFO] [stdout] test core::vfs_reader::tests::reads_zip_backed_vfs_file_from_offset ... ok
[INFO] [stdout] test core::vfs_resolver::tests::returns_not_found_when_opening_missing_file ... ok
[INFO] [stdout] test input::basic_decoder::tests::decodes_text_file_as_text_content ... ok
[INFO] [stdout] test engine::preview::tests::writes_nested_vfs_tree ... ok
[INFO] [stdout] test input::basic_decoder::tests::defaults_to_disc_one_when_no_disc_suffix_exists ... ok
[INFO] [stdout] test input::basic_decoder::tests::parses_disc_suffix_from_filename ... ok
[INFO] [stdout] test input::basic_decoder::tests::parses_disc_suffix_with_parentheses_cleanly ... ok
[INFO] [stdout] test input::basic_decoder::tests::decodes_text_file_with_relative_path_id ... ok
[INFO] [stdout] test input::basic_identifier::tests::identifies_disc_image ... ok
[INFO] [stdout] test input::basic_decoder::tests::disc_content_tracks_consumed_sources_for_filesystem_cue ... ok
[INFO] [stdout] test input::basic_identifier::tests::identifies_text_file ... ok
[INFO] [stdout] test input::file_source::tests::enumerates_single_file_object ... ok
[INFO] [stdout] test input::basic_decoder::tests::decodes_text_file_with_normalized_relative_path_id ... ok
[INFO] [stdout] test input::directory_source::tests::ignores_directories_and_sorts_nested_results ... ok
[INFO] [stdout] test input::basic_decoder::tests::decodes_zip_source_with_entry_size ... ok
[INFO] [stdout] test input::directory_source::tests::enumerates_regular_files_in_directory_recursively ... ok
[INFO] [stdout] test input::zip_source::tests::enumerates_regular_files_in_zip_archive ... ok
[INFO] [stdout] test input::directory_source::tests::reports_directory_kind ... ok
[INFO] [stdout] test input::file_source::tests::reports_file_kind ... ok
[INFO] [stdout] test mount::fuse_fs::tests::file_attr_uses_backing_file_size ... ok
[INFO] [stdout] test input::zip_source::tests::reports_zip_kind ... ok
[INFO] [stdout] test mount::fuse_fs::tests::read_file_range_returns_empty_at_eof ... ok
[INFO] [stdout] test mount::fuse_fs::tests::read_file_range_returns_error_for_directory_inode ... ok
[INFO] [stdout] test mount::fuse_fs::tests::read_file_range_reads_partial_inline_file ... ok
[INFO] [stdout] test mount::session::tests::children_returns_directory_entries ... ok
[INFO] [stdout] test mount::session::tests::children_returns_none_for_file_inode ... ok
[INFO] [stdout] test mount::fuse_fs::tests::read_file_range_reads_full_inline_file ... ok
[INFO] [stdout] test input::basic_decoder::tests::disc_content_tracks_consumed_sources_for_zip_cue ... ok
[INFO] [stdout] test output::basic_encoder::tests::exposes_expected_capabilities ... ok
[INFO] [stdout] test output::basic_encoder::tests::materializes_playlist_inline ... ok
[INFO] [stdout] test output::basic_encoder::tests::materializes_single_source_artifact ... ok
[INFO] [stdout] test mount::session::tests::node_count_covers_root_and_all_descendants ... ok
[INFO] [stdout] test output::basic_encoder::tests::rejects_multi_source_source_backed_artifact ... ok
[INFO] [stdout] test output::capabilities::tests::capability_requirements_builder_sets_fields ... ok
[INFO] [stdout] test output::capabilities::tests::encoder_capability_builder_sets_fields ... ok
[INFO] [stdout] test mount::session::tests::nested_nodes_have_correct_parent_inode ... ok
[INFO] [stdout] test mount::session::tests::root_inode_is_one ... ok
[INFO] [stdout] test mount::session::tests::can_lookup_child_by_name ... ok
[INFO] [stdout] test mount::session::tests::indexes_nested_directories ... ok
[INFO] [stdout] test mount::session::tests::lookup_child_returns_none_for_missing_entry ... ok
[INFO] [stdout] test mount::session::tests::file_accessor_returns_backing_file ... ok
[INFO] [stdout] test output::flat_presenter::tests::conflict_policy_can_disambiguate_playlist_between_duplicate_multi_disc_games ... ok
[INFO] [stdout] test output::flat_presenter::tests::multi_disc_plan_emits_playlist_artifact_referencing_disc_artifacts ... ok
[INFO] [stdout] test output::flat_presenter::tests::presents_mixed_content_at_root ... ok
[INFO] [stdout] test output::flat_presenter::tests::materialized_multi_disc_output_contains_playlist_contents ... ok
[INFO] [stdout] test output::grouped_presenter::tests::conflict_policy_can_disambiguate_game_directory_names_under_same_platform ... ok
[INFO] [stdout] test output::grouped_presenter::tests::naming_policy_can_change_grouped_output_names_without_changing_structure ... ok
[INFO] [stdout] test output::grouped_presenter::tests::presents_mixed_content_in_library_view ... ok
[INFO] [stdout] test output::materialize::tests::materializes_plan_with_explicit_encoder_set ... ok
[INFO] [stdout] test output::grouped_presenter::tests::presents_multi_disc_game_as_directory_with_playlist_in_library_view ... ok
[INFO] [stdout] test output::materialize::tests::materializes_playlist_file_from_referenced_artifact_names ... ok
[INFO] [stdout] test output::plan::tests::source_artifact_multiple_is_multi_source ... ok
[INFO] [stdout] test output::materialize::tests::rejects_multi_source_source_backed_artifact ... ok
[INFO] [stdout] test output::plan::tests::presentation_plan_empty_constructor_returns_no_entries ... ok
[INFO] [stdout] test output::materialize::tests::materializes_source_backed_file ... ok
[INFO] [stdout] test output::plugin_client::tests::materializes_inline_playlist_output_via_plugin_client ... ok
[INFO] [stdout] test output::plugin_client::tests::materializes_source_backed_artifact_via_plugin_client ... ok
[INFO] [stdout] test output::plugin_client::tests::rejects_request_when_selected_capability_is_unknown ... ok
[INFO] [stdout] test output::plan::tests::source_artifact_single_is_not_multi_source ... ok
[INFO] [stdout] test output::plugin_encoder::tests::builds_plugin_encoder_from_manifest ... ok
[INFO] [stdout] test output::plugin_discovery::tests::skips_non_executable_files ... ok
[INFO] [stdout] test output::plugin_protocol::tests::accepts_valid_manifest ... ok
[INFO] [stdout] test output::plugin_encoder::tests::plugin_encoder_integrates_with_output_encoder_trait ... ok
[INFO] [stdout] test output::plugin_protocol::tests::protocol_types_round_trip_through_json ... ok
[INFO] [stdout] test output::plugin_protocol::tests::rejects_duplicate_capability_ids ... ok
[INFO] [stdout] test output::plugin_protocol::tests::rejects_empty_plugin_id ... ok
[INFO] [stdout] test output::plugin_protocol::tests::rejects_incompatible_protocol_version ... ok
[INFO] [stdout] test output::plugin_protocol::tests::request_validation_accepts_playlist_with_context ... ok
[INFO] [stdout] test output::plugin_protocol::tests::request_validation_rejects_playlist_without_context ... ok
[INFO] [stdout] test output::plugin_protocol_conversion::tests::converts_artifact_request_to_materialization_request ... ok
[INFO] [stdout] test output::plugin_protocol_conversion::tests::converts_encoder_capability_to_protocol_capability ... ok
[INFO] [stdout] test output::plugin_protocol_conversion::tests::converts_materialization_response_to_materialized_artifact ... ok
[INFO] [stdout] test output::plugin_protocol_conversion::tests::converts_protocol_capability_to_encoder_capability ... ok
[INFO] [stdout] test output::plugin_protocol_conversion::tests::rejects_empty_protocol_source_when_decoding_request ... ok
[INFO] [stdout] test output::grouped_presenter::tests::grouped_presenter_plan_places_game_under_platform_directory ... ok
[INFO] [stdout] test output::materialize::tests::materializes_plan_with_plugin_registry ... ok
[INFO] [stdout] test output::plugin_protocol::tests::request_validation_rejects_unknown_capability_id ... ok
[INFO] [stdout] test output::plugin_registry::tests::registers_valid_plugin_client ... ok
[INFO] [stdout] test output::plugin_registry::tests::rejects_invalid_plugin_manifest_during_registration ... ok
[INFO] [stdout] test output::plugin_runtime::tests::executable_path_is_exposed ... ok
[INFO] [stdout] test output::plugin_protocol_conversion::tests::round_trips_request_through_protocol_conversion ... ok
[INFO] [stdout] test output::plugin_registry::tests::builds_encoders_from_registered_clients ... ok
[INFO] [stdout] test output::plugin_discovery::tests::discovers_valid_plugin ... ok
[INFO] [stdout] test output::presentation_expansion::tests::identifies_multi_disc_games ... ok
[INFO] [stdout] test output::plugin_runtime::tests::subprocess_client_rejects_unexpected_response_type ... ok
[INFO] [stdout] test output::plugin_runtime::tests::subprocess_client_surfaces_invalid_json ... ok
[INFO] [stdout] test output::plugin_runtime::tests::subprocess_client_surfaces_non_zero_exit ... ok
[INFO] [stdout] test output::plugin_runtime::tests::subprocess_client_reads_valid_manifest ... ok
[INFO] [stdout] test output::presentation_expansion::tests::rejects_mixed_part_games_as_multi_disc ... ok
[INFO] [stdout] test output::resolution::tests::higher_priority_wins_when_scores_match ... ok
[INFO] [stdout] test output::presentation_expansion::tests::sorts_disc_parts_by_disc_number ... ok
[INFO] [stdout] test output::resolution::tests::diagnostics_capture_scores_for_accepted_candidates ... ok
[INFO] [stdout] test output::resolution::tests::prefers_more_preferred_features ... ok
[INFO] [stdout] test output::resolution::tests::prefers_more_specific_capability_when_other_scores_match ... ok
[INFO] [stdout] test output::resolution::tests::rejects_forbidden_feature ... ok
[INFO] [stdout] test output::resolution::tests::rejects_multi_source_when_not_supported ... ok
[INFO] [stdout] test output::resolution::tests::resolves_exact_match ... ok
[INFO] [stdout] test output::resolution::tests::tie_breaks_deterministically ... ok
[INFO] [stdout] test policy::default::tests::default_formatting_policy_is_passthrough ... ok
[INFO] [stdout] test policy::default::tests::default_naming_policy_formats_disc_parts_like_current_behavior ... ok
[INFO] [stdout] test policy::default::tests::default_naming_policy_formats_playlist_like_current_behavior ... ok
[INFO] [stdout] test policy::default::tests::default_naming_policy_uses_source_file_name_for_rom_parts ... ok
[INFO] [stdout] test policy::default::tests::default_conflict_policy_preserves_proposed_name ... ok
[INFO] [stdout] test readers::inline_reader::tests::reads_inline_bytes ... ok
[INFO] [stdout] test output::plugin_discovery::tests::discovered_plugin_can_materialize_plan ... ok
[INFO] [stdout] test output::plugin_discovery::tests::rejects_invalid_plugin ... ok
[INFO] [stdout] test readers::inline_reader::tests::returns_zero_when_offset_is_past_end ... ok
[INFO] [stdout] test readers::dir_reader::tests::test_dir_reader_reads_file_contents ... ok
[INFO] [stdout] test readers::zip_reader::tests::test_zip_reader_reads_compressed_entry_from_offset ... ok
[INFO] [stdout] test readers::zip_reader::tests::test_zip_reader_reads_entry_contents ... ok
[INFO] [stdout] test readers::zip_reader::tests::test_zip_reader_reads_stored_entry_from_offset ... ok
[INFO] [stdout] test output::plugin_discovery::tests::builds_registry_from_discovered_plugins ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 159 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/retromount-d84ca409a27fee9c)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/plugin_integration.rs (/opt/rustwide/target/debug/deps/plugin_integration-faade7f64e30660d)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test load_plugin_registry_fails_for_invalid_discovered_plugin ... ok
[INFO] [stdout] test mount_preparation_fails_when_no_encoder_matches ... ok
[INFO] [stdout] test mount_preparation_fails_when_selected_plugin_returns_malformed_response ... ok
[INFO] [stdout] test mount_preparation_uses_runtime_plugin_materialization ... ok
[INFO] [stdout] test mount_preparation_fails_when_selected_plugin_materialization_fails ... ok
[INFO] [stderr]    Doc-tests retromount
[INFO] [stdout] test pipeline_materializes_disc_via_fixture_plugin ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "648473bd7faf3fcca65f9789aa49f959f4009b225433862d3ebb0e312a4b3c7b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "648473bd7faf3fcca65f9789aa49f959f4009b225433862d3ebb0e312a4b3c7b", kill_on_drop: false }`
[INFO] [stdout] 648473bd7faf3fcca65f9789aa49f959f4009b225433862d3ebb0e312a4b3c7b
