[INFO] cloning repository https://github.com/tylerbutler/repoverlay
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/tylerbutler/repoverlay" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftylerbutler%2Frepoverlay", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftylerbutler%2Frepoverlay'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 2247e87922d6dfa3f08d73d6e3ce775d69db0621
[INFO] testing tylerbutler/repoverlay against beta-2026-03-05 for beta-1.95-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftylerbutler%2Frepoverlay" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-0-tc2/source/.cargo/config.toml
[INFO] removed /workspace/builds/worker-0-tc2/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/tylerbutler/repoverlay
[INFO] finished tweaking git repo https://github.com/tylerbutler/repoverlay
[INFO] tweaked toml for git repo https://github.com/tylerbutler/repoverlay written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/tylerbutler/repoverlay on toolchain beta-2026-03-05
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-03-05" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/tylerbutler/repoverlay 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-03-05" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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-03-05" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 57596570d4f99c5cdcd322163ef38750972c0e27b826f315adaec4ba0da56c0e
[INFO] running `Command { std: "docker" "start" "-a" "57596570d4f99c5cdcd322163ef38750972c0e27b826f315adaec4ba0da56c0e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "57596570d4f99c5cdcd322163ef38750972c0e27b826f315adaec4ba0da56c0e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "57596570d4f99c5cdcd322163ef38750972c0e27b826f315adaec4ba0da56c0e", kill_on_drop: false }`
[INFO] [stdout] 57596570d4f99c5cdcd322163ef38750972c0e27b826f315adaec4ba0da56c0e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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-03-05" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 120576d2adc4c3bd82b7614eaf43bc4efa8c31ebd4a49747e24e5012461a461f
[INFO] running `Command { std: "docker" "start" "-a" "120576d2adc4c3bd82b7614eaf43bc4efa8c31ebd4a49747e24e5012461a461f", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling vergen-lib v9.1.0
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling vergen v9.1.0
[INFO] [stderr]    Compiling num-conv v0.2.0
[INFO] [stderr]    Compiling num_threads v0.1.7
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling base64ct v1.8.3
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling pem-rfc7468 v0.7.0
[INFO] [stderr]    Compiling clap_builder v4.5.60
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling ureq-proto v0.5.3
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling der v0.7.10
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling webpki-root-certs v1.0.6
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling console v0.16.2
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling tempfile v3.26.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling env_filter v1.0.0
[INFO] [stderr]    Compiling shell-words v1.1.1
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling jiff v0.2.23
[INFO] [stderr]    Compiling semver v1.0.27
[INFO] [stderr]    Compiling dialoguer v0.12.0
[INFO] [stderr]    Compiling fuzzy-matcher v0.3.7
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling directories v6.0.0
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling derive_builder_core v0.20.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling derive_builder_macro v0.20.2
[INFO] [stderr]    Compiling clap v4.5.60
[INFO] [stderr]    Compiling clap_complete v4.5.66
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling derive_builder v0.20.2
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling clap-markdown v0.1.5
[INFO] [stderr]    Compiling env_logger v0.11.9
[INFO] [stderr]    Compiling repoverlay v0.10.1 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling colored v3.1.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling ureq v3.2.0
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling sickle v0.1.3
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling tiny-update-check v1.0.0
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 52s
[INFO] running `Command { std: "docker" "inspect" "120576d2adc4c3bd82b7614eaf43bc4efa8c31ebd4a49747e24e5012461a461f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "120576d2adc4c3bd82b7614eaf43bc4efa8c31ebd4a49747e24e5012461a461f", kill_on_drop: false }`
[INFO] [stdout] 120576d2adc4c3bd82b7614eaf43bc4efa8c31ebd4a49747e24e5012461a461f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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-03-05" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 6596995d6e7060e9e44d4bd340d4c9200000140a637a32dfe1e5bde3e514ab6e
[INFO] running `Command { std: "docker" "start" "-a" "6596995d6e7060e9e44d4bd340d4c9200000140a637a32dfe1e5bde3e514ab6e", kill_on_drop: false }`
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling assert_cmd v2.1.2
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling env_filter v1.0.0
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling env_logger v0.11.9
[INFO] [stderr]    Compiling repoverlay v0.10.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 38.30s
[INFO] running `Command { std: "docker" "inspect" "6596995d6e7060e9e44d4bd340d4c9200000140a637a32dfe1e5bde3e514ab6e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6596995d6e7060e9e44d4bd340d4c9200000140a637a32dfe1e5bde3e514ab6e", kill_on_drop: false }`
[INFO] [stdout] 6596995d6e7060e9e44d4bd340d4c9200000140a637a32dfe1e5bde3e514ab6e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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-03-05" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 52a1c05ac3930216642743b018a8ab151f91cb49ff16000a48b3e2b07644ab48
[INFO] running `Command { std: "docker" "start" "-a" "52a1c05ac3930216642743b018a8ab151f91cb49ff16000a48b3e2b07644ab48", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.19s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/repoverlay-cb7d59c465452cbf)
[INFO] [stdout] 
[INFO] [stdout] running 984 tests
[INFO] [stdout] test cache::tests::test_cache_dir_function ... ok
[INFO] [stdout] test cache::tests::test_cache_manager_cache_dir_accessor ... ok
[INFO] [stdout] test cache::tests::test_cache_manager_creation ... ok
[INFO] [stdout] test cache::tests::test_cache_meta_roundtrip ... ok
[INFO] [stdout] test cache::tests::test_clear_cache_empty ... ok
[INFO] [stdout] test cache::tests::test_check_for_updates_nonexistent_repo ... ok
[INFO] [stdout] test cache::tests::test_clear_cache_with_repos ... ok
[INFO] [stdout] test cache::tests::check_for_updates_handles_fetch_failure_gracefully ... ok
[INFO] [stdout] test cache::tests::test_list_cached_empty_cache ... ok
[INFO] [stdout] test cache::tests::test_list_cached_skips_files_in_owner_directory ... ok
[INFO] [stdout] test cache::tests::test_list_cached_skips_non_directories ... ok
[INFO] [stdout] test cache::tests::test_list_cached_with_metadata ... ok
[INFO] [stdout] test cache::tests::test_list_cached_with_repos ... ok
[INFO] [stdout] test cache::tests::test_load_meta_returns_none_for_invalid_content ... ok
[INFO] [stdout] test cache::tests::test_load_meta_returns_none_for_missing_file ... ok
[INFO] [stdout] test cache::tests::test_get_current_commit_succeeds_on_git_repo ... ok
[INFO] [stdout] test cache::tests::test_check_for_updates_tag_returns_none ... ok
[INFO] [stdout] test cache::tests::test_remove_cached_cleans_empty_owner_dir ... ok
[INFO] [stdout] test cache::tests::test_remove_cached_existing ... ok
[INFO] [stdout] test cache::tests::test_remove_cached_nonexistent ... ok
[INFO] [stdout] test cache::tests::test_remove_cached_preserves_sibling_repos ... ok
[INFO] [stdout] test cache::tests::test_ref_exists_returns_false_for_nonexistent_ref ... ok
[INFO] [stdout] test cache::tests::test_repo_path ... ok
[INFO] [stdout] test cache::tests::test_repo_path_with_subpath ... ok
[INFO] [stdout] test cache::tests::test_save_and_load_meta_roundtrip ... ok
[INFO] [stdout] test cli::tests::apply::applies_directory_with_copy_mode ... ok
[INFO] [stdout] test cache::tests::test_check_for_updates_commit_returns_none ... ok
[INFO] [stdout] test cli::tests::apply::applies_nested_files ... ok
[INFO] [stdout] test cache::tests::test_ref_exists_returns_true_for_existing_ref ... ok
[INFO] [stdout] test cli::tests::apply::applies_single_file ... ok
[INFO] [stdout] test cli::tests::apply::applies_directory_symlink ... ok
[INFO] [stdout] test cli::tests::apply::applies_with_copy_mode ... ok
[INFO] [stdout] test cli::tests::apply::directory_path_not_a_directory_warning ... ok
[INFO] [stdout] test cli::tests::apply::directory_symlink_updates_git_exclude_with_trailing_slash ... ok
[INFO] [stdout] test cli::tests::apply::directory_symlink_skips_files_inside ... ok
[INFO] [stdout] test cli::tests::apply::directory_symlink_warns_on_nonexistent ... ok
[INFO] [stdout] test cli::tests::apply::dry_run_does_not_apply_overlay ... ok
[INFO] [stdout] test cache::tests::save_meta_fails_gracefully_when_dir_read_only ... FAILED
[INFO] [stdout] test cache::tests::ensure_cached_propagates_git_errors_cleanly ... ok
[INFO] [stdout] test cache::tests::clone_repo_propagates_errors_for_invalid_repo ... ok
[INFO] [stdout] test cache::tests::test_get_current_commit_fails_on_non_git_dir ... ok
[INFO] [stdout] test cli::tests::apply::fails_on_duplicate_overlay_name ... ok
[INFO] [stdout] test cli::tests::apply::fails_on_empty_overlay ... ok
[INFO] [stdout] test cli::tests::apply::fails_on_non_git_directory ... ok
[INFO] [stdout] test cli::tests::apply::directory_conflict_with_existing_path ... ok
[INFO] [stdout] test cli::tests::apply::directory_conflict_with_existing_overlay ... ok
[INFO] [stdout] test cli::tests::apply::fails_on_nonexistent_source ... ok
[INFO] [stdout] test cli::tests::apply::force_overwrites_existing_directory ... ok
[INFO] [stdout] test cli::tests::apply::mapping_supports_nested_paths_in_key_and_value ... ignored, tylerbutler/santa#71: forward slashes in map keys cause parsing errors in sickle
[INFO] [stdout] test cli::tests::apply::fails_on_file_conflict_with_repo ... ok
[INFO] [stdout] test cli::tests::apply::force_fails_on_cross_overlay_directory_conflict ... ok
[INFO] [stdout] test cli::tests::apply::fails_on_file_conflict_between_overlays ... ok
[INFO] [stdout] test cli::tests::apply::nested_directory_symlinks_use_forward_slashes ... ok
[INFO] [stdout] test cli::tests::apply::force_fails_on_cross_overlay_file_conflict ... ok
[INFO] [stdout] test cli::tests::apply::skip_conflicts_skips_existing_directory ... ok
[INFO] [stdout] test cli::tests::apply::force_overwrites_existing_file ... ok
[INFO] [stdout] test cli::tests::apply::skip_conflicts_fails_on_same_name_overlay ... ok
[INFO] [stdout] test cli::tests::apply::respects_path_mappings ... ok
[INFO] [stdout] test cli::tests::cache_command_tests::cache_remove_fails_on_invalid_format ... ok
[INFO] [stdout] test cli::tests::cache_command_tests::cache_remove_fails_on_too_many_slashes ... ok
[INFO] [stdout] test cli::tests::cache_command_tests::cache_remove_fails_when_no_repo_or_all ... ok
[INFO] [stdout] test cli::tests::apply::updates_git_exclude_with_overlay_section ... ok
[INFO] [stdout] test cli::tests::apply::uses_name_override ... ok
[INFO] [stdout] test cli::tests::apply::skip_conflicts_skips_cross_overlay_file_conflict ... ok
[INFO] [stdout] test cli::tests::apply::skip_conflicts_skips_existing_file ... ok
[INFO] [stdout] test cli::tests::apply::skip_conflicts_skips_cross_overlay_directory_conflict ... ok
[INFO] [stdout] test cli::tests::apply::force_reapplies_same_name_overlay ... ok
[INFO] [stdout] test cli::tests::apply::uses_overlay_name_from_config ... ok
[INFO] [stdout] test cli::tests::cli::apply_help_displays ... ok
[INFO] [stdout] test cli::tests::cli::apply_requires_source_argument ... ok
[INFO] [stdout] test cli::tests::cli::cache_list_empty ... ok
[INFO] [stdout] test cli::tests::cli::cache_path_shows_location ... ok
[INFO] [stdout] test cli::tests::cli::help_displays ... ok
[INFO] [stdout] test cli::tests::cli::apply_and_remove_workflow ... ok
[INFO] [stdout] test cli::tests::cli::cache_help_displays ... ok
[INFO] [stdout] test cli::tests::cli::remove_when_no_overlay ... ok
[INFO] [stdout] test cli::tests::cli::restore_help_displays ... ok
[INFO] [stdout] test cli::tests::cli::status_help_displays ... ok
[INFO] [stdout] test cli::tests::cli::remove_help_displays ... ok
[INFO] [stdout] test cli::tests::cli::apply_and_remove_all_workflow ... ok
[INFO] [stdout] test cli::tests::cli_parsing::apply_parses_dry_run ... ok
[INFO] [stdout] test cli::tests::cli_parsing::apply_merge_combinable_with_skip_conflicts ... ok
[INFO] [stdout] test cli::tests::cli_parsing::apply_parses_all_options ... ok
[INFO] [stdout] test cli::tests::cli_parsing::apply_parses_interactive_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::apply_merge_combinable_with_force ... ok
[INFO] [stdout] test cli::tests::cli_parsing::apply_parses_interactive_short_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::apply_parses_merge_flag ... ok
[INFO] [stdout] test cli::tests::cli::version_displays ... ok
[INFO] [stdout] test cli::tests::cli_parsing::apply_parses_force_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::apply_parses_source_argument ... ok
[INFO] [stdout] test cli::tests::cli_parsing::apply_rejects_skip_conflicts_and_interactive_together ... ok
[INFO] [stdout] test cli::tests::cli_parsing::apply_rejects_force_and_interactive_together ... ok
[INFO] [stdout] test cli::tests::cli::update_help_displays ... ok
[INFO] [stdout] test cli::tests::cli_parsing::apply_rejects_force_and_skip_conflicts_together ... ok
[INFO] [stdout] test cli::tests::cli_parsing::apply_requires_source ... ok
[INFO] [stdout] test cli::tests::cli_parsing::browse_parses_no_interactive ... ok
[INFO] [stdout] test cli::tests::cli_parsing::browse_defaults_show_all_false ... ok
[INFO] [stdout] test cli::tests::cli_parsing::browse_parses_show_all ... ok
[INFO] [stdout] test cli::tests::cli_parsing::browse_parses_source_argument ... ok
[INFO] [stdout] test cli::tests::cli_parsing::browse_parses_target ... ok
[INFO] [stdout] test cli::tests::cli_parsing::browse_source_with_other_flags ... ok
[INFO] [stdout] test cli::tests::cli_parsing::browse_parses_dry_run ... ok
[INFO] [stdout] test cli::tests::cli_parsing::browse_source_is_optional ... ok
[INFO] [stdout] test cli::tests::cli_parsing::cache_list_subcommand ... ok
[INFO] [stdout] test cli::tests::cli_parsing::cache_path_subcommand ... ok
[INFO] [stdout] test cli::tests::cli_parsing::cache_remove_all_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::cache_clear_with_yes_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::apply_parses_skip_conflicts_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::cache_clear_subcommand ... ok
[INFO] [stdout] test cli::tests::cli::apply_with_copy_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::browse_parses_filter ... ok
[INFO] [stdout] test cli::tests::cli_parsing::create_with_output_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::cache_remove_no_args_parses_ok ... ok
[INFO] [stdout] test cli::tests::cli_parsing::cache_remove_parses_repo ... ok
[INFO] [stdout] test cli::tests::cli_parsing::edit_add_subcommand_parses ... ok
[INFO] [stdout] test cli::tests::cli_parsing::cli_structure_is_valid ... ok
[INFO] [stdout] test cli::tests::cli_parsing::edit_add_subcommand_with_target_and_dry_run ... ok
[INFO] [stdout] test cli::tests::cli_parsing::create_accepts_no_args ... ok
[INFO] [stdout] test cli::tests::cli_parsing::edit_deprecated_add_flag_parses ... ok
[INFO] [stdout] test cli::tests::cli_parsing::edit_deprecated_dry_run_parses ... ok
[INFO] [stdout] test cli::tests::cli_parsing::create_parses_options ... ok
[INFO] [stdout] test cli::tests::cli_parsing::edit_deprecated_combined_add_remove ... ok
[INFO] [stdout] test cli::tests::cli::status_when_no_overlay ... ok
[INFO] [stdout] test cli::tests::cli_parsing::edit_deprecated_interactive_conflicts_with_add ... ok
[INFO] [stdout] test cli::tests::cli_parsing::edit_deprecated_interactive_conflicts_with_remove ... ok
[INFO] [stdout] test cli::tests::cli_parsing::edit_no_args_parses_for_interactive_selection ... ok
[INFO] [stdout] test cli::tests::cli_parsing::edit_remove_subcommand_parses ... ok
[INFO] [stdout] test cli::tests::cli_parsing::edit_deprecated_target_flag_parses ... ok
[INFO] [stdout] test cli::tests::cli_parsing::invalid_command_rejected ... ok
[INFO] [stdout] test cli::tests::cli_parsing::edit_name_only_is_interactive ... ok
[INFO] [stdout] test cli::tests::cli_parsing::edit_deprecated_remove_flag_parses ... ok
[INFO] [stdout] test cli::tests::cli_parsing::remove_parses_dry_run ... ok
[INFO] [stdout] test cli::tests::cli_parsing::remove_parses_interactive ... ok
[INFO] [stdout] test cli::tests::cli_parsing::restore_parses_force_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::remove_parses_short_interactive ... ok
[INFO] [stdout] test cli::tests::cli_parsing::remove_parses_all_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::restore_parses_dry_run ... ok
[INFO] [stdout] test cli::tests::cli_parsing::short_flags_work ... ok
[INFO] [stdout] test cli::tests::cli_parsing::restore_parses_interactive_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::restore_parses_skip_conflicts_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::restore_rejects_force_and_skip_conflicts_together ... ok
[INFO] [stdout] test cli::tests::cli_parsing::remove_parses_name_argument ... ok
[INFO] [stdout] test cli::tests::cli_parsing::restore_rejects_force_and_interactive_together ... ok
[INFO] [stdout] test cli::tests::cli_parsing::status_json_with_name_filter ... ok
[INFO] [stdout] test cli::tests::cli_parsing::status_parses_json_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::status_parses_name_filter ... ok
[INFO] [stdout] test cli::tests::cli_parsing::status_parses_quiet_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::status_parses_without_arguments ... ok
[INFO] [stdout] test cli::tests::cli_parsing::switch_parses_force_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::switch_parses_interactive_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::status_parses_short_quiet ... ok
[INFO] [stdout] test cli::tests::cli_parsing::switch_parses_source ... ok
[INFO] [stdout] test cli::tests::cli_parsing::switch_rejects_force_and_interactive_together ... ok
[INFO] [stdout] test cli::tests::cli_parsing::sync_parses_name ... ok
[INFO] [stdout] test cli::tests::cli_parsing::switch_rejects_force_and_skip_conflicts_together ... ok
[INFO] [stdout] test cli::tests::cli_parsing::sync_parses_all_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::switch_parses_skip_conflicts_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::sync_parses_no_args ... ok
[INFO] [stdout] test cli::tests::cli_parsing::unknown_flag_rejected ... ok
[INFO] [stdout] test cli::tests::cli_parsing::update_parses_force_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::sync_parses_target_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::update_parses_interactive_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::sync_parses_dry_run ... ok
[INFO] [stdout] test cli::tests::cli_parsing::sync_parses_all_with_dry_run ... ok
[INFO] [stdout] test cli::tests::cli_parsing::update_parses_overlay_name ... ok
[INFO] [stdout] test cli::tests::cli_parsing::update_rejects_force_and_skip_conflicts_together ... ok
[INFO] [stdout] test cli::tests::cli_parsing::update_parses_skip_conflicts_flag ... ok
[INFO] [stdout] test cli::tests::cli_parsing::update_rejects_force_and_interactive_together ... ok
[INFO] [stdout] test cli::tests::create::create_local_creates_overlay_in_output_directory ... ok
[INFO] [stdout] test cli::tests::create::fails_on_non_git_source ... ok
[INFO] [stdout] test cli::tests::create::generates_repoverlay_ccl_with_name ... ok
[INFO] [stdout] test cli::tests::create::creates_overlay_with_single_file ... ok
[INFO] [stdout] test cli::tests::create::fails_on_nonexistent_include_path ... ok
[INFO] [stdout] test cli::tests::create::create_local_dry_run_does_not_create_files ... ok
[INFO] [stdout] test cli::tests::detect_target_repo_tests::detects_ssh_github_remote ... ok
[INFO] [stdout] test cli::tests::parse_overlay_name_arg_additional_tests::empty_name_in_full_form ... ok
[INFO] [stdout] test cli::tests::create::fails_when_no_files_specified_and_none_discovered ... ok
[INFO] [stdout] test cli::tests::parse_overlay_name_arg_additional_tests::two_slash_path_with_hyphens_and_underscores ... ok
[INFO] [stdout] test cli::tests::parse_overlay_name_arg_additional_tests::five_slash_path_errors ... ok
[INFO] [stdout] test cli::tests::detect_target_repo_tests::fails_without_remote ... ok
[INFO] [stdout] test cli::tests::parse_overlay_name_arg_tests::fails_on_empty_parts_in_full_form ... ok
[INFO] [stdout] test cli::tests::detect_target_repo_tests::detects_https_github_remote ... ok
[INFO] [stdout] test cli::tests::create::creates_overlay_with_directory ... ok
[INFO] [stdout] test cli::tests::create::dry_run_shows_discovered_files ... ok
[INFO] [stdout] test cli::tests::create::dry_run_does_not_create_files ... ok
[INFO] [stdout] test cli::tests::parse_overlay_name_arg_tests::parses_full_form_org_repo_name ... ok
[INFO] [stdout] test cli::tests::parse_overlay_name_arg_tests::fails_on_invalid_single_slash ... ok
[INFO] [stdout] test cli::tests::remove::cleans_git_exclude_for_overlay ... ok
[INFO] [stdout] test cli::tests::parse_overlay_name_arg_tests::fails_on_too_many_slashes ... ok
[INFO] [stdout] test cli::tests::parse_overlay_name_arg_tests::short_form_requires_git_remote ... ok
[INFO] [stdout] test cli::tests::remove::handle_remove_requires_name_or_interactive_flag ... ok
[INFO] [stdout] test cli::tests::detect_target_repo_tests::fails_for_non_github_remote ... ok
[INFO] [stdout] test cli::tests::remove::handles_already_deleted_files ... ok
[INFO] [stdout] test cli::tests::remove::fails_on_unknown_overlay_name ... ok
[INFO] [stdout] test cli::tests::remove::dry_run_does_not_remove_overlay ... ok
[INFO] [stdout] test cli::tests::remove::handle_remove_with_name_succeeds ... ok
[INFO] [stdout] test cli::tests::remove::preserves_non_empty_parent_directories ... ok
[INFO] [stdout] test cli::tests::parse_overlay_name_arg_tests::short_form_works_with_github_remote ... ok
[INFO] [stdout] test cli::tests::remove::dry_run_all_does_not_remove_overlays ... ok
[INFO] [stdout] test cli::tests::remove::handle_remove_with_all_flag_succeeds ... ok
[INFO] [stdout] test cli::tests::remove::fails_when_no_overlay_applied ... ok
[INFO] [stdout] test cli::tests::remove_section::empty_content ... ok
[INFO] [stdout] test cli::tests::remove_section::no_section_present ... ok
[INFO] [stdout] test cli::tests::remove_section::only_section ... ok
[INFO] [stdout] test cli::tests::remove_section::removes_only_specified_overlay ... ok
[INFO] [stdout] test cli::tests::remove_section::section_at_beginning ... ok
[INFO] [stdout] test cli::tests::remove_section::section_at_end ... ok
[INFO] [stdout] test cli::tests::remove_section::section_in_middle ... ok
[INFO] [stdout] test cli::tests::remove::removes_overlay_by_name ... ok
[INFO] [stdout] test cli::tests::remove::removes_one_overlay_preserves_others ... ok
[INFO] [stdout] test cli::tests::source_resolver_bugs::issue_143_add_files_should_check_source_type_for_local ... ok
[INFO] [stdout] test cli::tests::source_resolver_bugs::issue_145_update_code_should_handle_overlay_repo_separately ... ok
[INFO] [stdout] test cli::tests::source_resolver_bugs::issue_147_resolve_should_use_source_name ... ok
[INFO] [stdout] test cli::tests::source_resolver_bugs::issue_146_sync_single_name_should_check_source_type ... ok
[INFO] [stdout] test cli::tests::source_resolver_bugs::issue_143_add_files_should_reject_github_clearly ... ok
[INFO] [stdout] test cli::tests::source_resolver_bugs::issue_142_resolve_source_path_github_should_not_bail ... ok
[INFO] [stdout] test cli::tests::source_resolver_bugs::issue_148_add_should_check_mutability_before_filesystem_changes ... ok
[INFO] [stdout] test cli::tests::remove::removes_all_overlays ... ok
[INFO] [stdout] test cli::tests::status::fails_on_unknown_overlay_filter ... ok
[INFO] [stdout] test cli::tests::status::shows_no_overlay_when_none_applied ... ok
[INFO] [stdout] test cli::tests::status::shows_status_for_specific_overlay ... ok
[INFO] [stdout] test cli::tests::source_resolver_bugs::issue_171_sync_single_name_calls_try_upgrade_github_source ... ok
[INFO] [stdout] test cli::tests::remove::removes_empty_parent_directories ... ok
[INFO] [stdout] test cli::tests::remove::removes_copied_directory ... ok
[INFO] [stdout] test cli::tests::switch::fails_on_non_git_target ... ok
[INFO] [stdout] test cli::tests::status::shows_status_when_overlay_applied ... ok
[INFO] [stdout] test cli::tests::remove::removes_directory_symlink ... ok
[INFO] [stdout] test cli::tests::switch::applies_to_empty_repo ... ok
[INFO] [stdout] test cli::tests::switch::force_overwrites_existing_repo_file ... ok
[INFO] [stdout] test cli::tests::sync::handle_sync_all_skips_github_sources ... ok
[INFO] [stdout] test cli::tests::switch::default_fails_on_existing_repo_file ... ok
[INFO] [stdout] test cli::tests::sync::handle_sync_all_skips_local_sources ... ok
[INFO] [stdout] test cli::tests::sync::handle_sync_fails_on_non_git_target ... ok
[INFO] [stdout] test cli::tests::sync::handle_sync_all_identifies_overlay_repo_sources ... ok
[INFO] [stdout] test cli::tests::switch::removes_existing_overlays_before_applying ... ok
[INFO] [stdout] test cli::tests::sync::handle_sync_all_with_mixed_sources_identifies_correctly ... ok
[INFO] [stdout] test cli::tests::sync::handle_sync_all_with_no_overlays ... ok
[INFO] [stdout] test cli::tests::status::shows_status_for_multiple_overlays ... ok
[INFO] [stdout] test cli::tests::switch::skip_conflicts_skips_existing_repo_file ... ok
[INFO] [stdout] test cli::tests::switch::removes_multiple_overlays_before_applying ... ok
[INFO] [stdout] test cli::tests::sync::sync_single_overlay_creates_parent_directories ... ok
[INFO] [stdout] test cli::tests::sync::try_upgrade_github_source_four_part_subpath_no_upgrade ... ok
[INFO] [stdout] test cli::tests::sync::try_upgrade_github_source_happy_path_with_configured_source ... ok
[INFO] [stdout] test cli::tests::sync::handle_sync_requires_name_or_all ... ok
[INFO] [stdout] test cli::tests::sync::try_upgrade_github_source_empty_subpath_parts_no_upgrade ... ok
[INFO] [stdout] test cli::tests::sync::try_upgrade_github_source_invalid_subpath_no_upgrade ... ok
[INFO] [stdout] test cli::tests::sync::try_upgrade_github_source_no_matching_configured_source ... ok
[INFO] [stdout] test cli::tests::sync::sync_single_overlay_copies_multiple_files ... ok
[INFO] [stdout] test config::tests::test_bare_owner_to_url_uses_custom_repo_name ... ok
[INFO] [stdout] test config::tests::test_config_dir ... ok
[INFO] [stdout] test cli::tests::sync::sync_single_overlay_copies_files_back ... ok
[INFO] [stdout] test config::tests::test_config_dir_without_xdg_uses_home ... ok
[INFO] [stdout] test config::tests::test_config_merge_repo_sources_come_first ... ok
[INFO] [stdout] test cli::tests::sync::sync_single_overlay_dry_run_does_not_modify ... ok
[INFO] [stdout] test config::tests::test_default_overlay_repo_name_with_env_falls_back_to_constant ... ok
[INFO] [stdout] test config::tests::test_default_overlay_repo_name_with_env_uses_value ... ok
[INFO] [stdout] test config::tests::test_default_repoverlay_config ... ok
[INFO] [stdout] test config::tests::test_deserialize_source_with_github_shorthand ... ok
[INFO] [stdout] test config::tests::test_empty_config_file ... ok
[INFO] [stdout] test config::tests::test_get_default_overlay_repo_config_from_sources ... ok
[INFO] [stdout] test config::tests::test_get_default_overlay_repo_config_no_sources ... ok
[INFO] [stdout] test config::tests::test_get_overlay_repo_config_by_name_found ... ok
[INFO] [stdout] test config::tests::test_get_overlay_repo_config_by_name_none_falls_back_to_default ... ok
[INFO] [stdout] test config::tests::test_get_overlay_repo_config_by_name_not_found ... ok
[INFO] [stdout] test config::tests::test_global_config_path ... ok
[INFO] [stdout] test cli::tests::sync::try_upgrade_github_source_single_part_subpath_no_upgrade ... ok
[INFO] [stdout] test config::tests::test_config_dir_with_xdg_value ... ok
[INFO] [stdout] test config::tests::test_deserialize_source_with_bare_owner_expands ... ok
[INFO] [stdout] test config::tests::test_load_config_merges_repo_before_global ... ok
[INFO] [stdout] test config::tests::test_load_repo_config_ignores_unknown_keys ... ok
[INFO] [stdout] test cli::tests::sync::try_upgrade_github_source_non_github_source_no_upgrade ... ok
[INFO] [stdout] test config::tests::test_load_repo_config_no_file_returns_none ... ok
[INFO] [stdout] test config::tests::test_load_config_none_returns_global_only ... ok
[INFO] [stdout] test config::tests::test_load_global_config_missing ... ok
[INFO] [stdout] test config::tests::test_load_config_uses_global_when_no_repo ... ok
[INFO] [stdout] test config::tests::test_load_repo_config_valid ... ok
[INFO] [stdout] test config::tests::test_load_repo_config_missing ... ok
[INFO] [stdout] test config::tests::test_load_repo_config_with_url_source ... ok
[INFO] [stdout] test config::tests::test_mixed_sources_ccl_roundtrip ... ok
[INFO] [stdout] test config::tests::test_parse_sources_missing_url_and_path ... ok
[INFO] [stdout] test config::tests::test_parse_sources_multiple ... ok
[INFO] [stdout] test config::tests::test_parse_sources_single ... ok
[INFO] [stdout] test config::tests::test_repo_config_path ... ok
[INFO] [stdout] test config::tests::test_parse_sources_empty ... ok
[INFO] [stdout] test config::tests::test_parse_sources_missing_name ... ok
[INFO] [stdout] test config::tests::test_source_equality ... ok
[INFO] [stdout] test config::tests::test_source_url_input_absolute_path_is_local ... ok
[INFO] [stdout] test config::tests::test_source_url_input_bare_owner ... ok
[INFO] [stdout] test config::tests::test_parse_repo_config_with_path_source ... ok
[INFO] [stdout] test config::tests::test_source_url_input_bare_owner_not_local ... ok
[INFO] [stdout] test config::tests::test_source_url_input_display ... ok
[INFO] [stdout] test config::tests::test_source_url_input_dot_dot_is_local ... ok
[INFO] [stdout] test config::tests::test_save_repo_config_with_path_source_roundtrip ... ok
[INFO] [stdout] test config::tests::test_source_url_input_empty_rejected ... ok
[INFO] [stdout] test config::tests::test_save_repo_config_creates_directory ... ok
[INFO] [stdout] test config::tests::test_source_url_input_dot_slash_is_local ... ok
[INFO] [stdout] test config::tests::test_source_url_input_git_url ... ok
[INFO] [stdout] test config::tests::test_source_url_input_github_shorthand ... ok
[INFO] [stdout] test config::tests::test_source_url_input_local_path_relative ... ok
[INFO] [stdout] test config::tests::test_source_url_input_local_path_tilde ... ok
[INFO] [stdout] test config::tests::test_source_url_input_owner_repo_not_local ... ok
[INFO] [stdout] test config::tests::test_source_url_input_local_path_parent ... ok
[INFO] [stdout] test config::tests::test_source_url_input_local_path_absolute ... ok
[INFO] [stdout] test config::tests::test_source_url_input_owner_repo_still_github_shorthand ... ok
[INFO] [stdout] test config::tests::test_save_repo_config_roundtrip ... ok
[INFO] [stdout] test config::tests::test_source_url_input_ssh_url ... ok
[INFO] [stdout] test config::tests::test_source_validate_both_set_err ... ok
[INFO] [stdout] test config::tests::test_source_url_input_whitespace_rejected ... ok
[INFO] [stdout] test config::tests::test_source_url_input_tilde_is_local ... ok
[INFO] [stdout] test cli::tests::sync::sync_single_overlay_fails_if_overlay_not_in_repo ... ok
[INFO] [stdout] test cli::tests::sync::try_upgrade_github_source_without_subpath_no_upgrade ... ok
[INFO] [stdout] test config::tests::test_source_validate_path_only_ok ... ok
[INFO] [stdout] test config::tests::test_source_validate_url_only_ok ... ok
[INFO] [stdout] test config::tests::test_validate_source_url_bare_owner_with_hyphens ... ok
[INFO] [stdout] test config::tests::test_validate_source_url_bare_owner_with_whitespace_rejected ... ok
[INFO] [stdout] test config::tests::test_validate_source_url_empty_rejected ... ok
[INFO] [stdout] test config::tests::test_validate_source_url_bare_owner_expanded ... ok
[INFO] [stdout] test config::tests::test_validate_source_url_full_https ... ok
[INFO] [stdout] test config::tests::test_sources_roundtrip ... ok
[INFO] [stdout] test config::tests::test_validate_source_url_git_protocol ... ok
[INFO] [stdout] test config::tests::test_validate_source_url_github_shorthand ... ok
[INFO] [stdout] test config::tests::test_validate_source_url_whitespace_only_rejected ... ok
[INFO] [stdout] test detection::tests::test_ai_config_directory_category_equality ... ok
[INFO] [stdout] test config::tests::test_validate_source_url_whitespace_rejected ... ok
[INFO] [stdout] test config::tests::test_whitespace_only_config_file ... ok
[INFO] [stdout] test config::tests::test_source_validate_neither_set_err ... ok
[INFO] [stdout] test config::tests::test_source_with_path_ccl_roundtrip ... ok
[INFO] [stdout] test config::tests::test_validate_source_url_full_ssh ... ok
[INFO] [stdout] test cli::tests::sync::sync_single_overlay_skips_missing_target_files ... ok
[INFO] [stdout] test detection::tests::test_detect_directory_children_includes_subdirectories ... ok
[INFO] [stdout] test detection::tests::test_detect_ai_config_directories_empty_repo ... ok
[INFO] [stdout] test detection::tests::test_detect_gitignored_files_non_git_directory ... ok
[INFO] [stdout] test detection::tests::test_detect_ai_configs ... ok
[INFO] [stdout] test detection::tests::test_detect_ai_config_directories ... ok
[INFO] [stdout] test detection::tests::test_detect_directory_children_deeply_nested ... ok
[INFO] [stdout] test detection::tests::test_detect_untracked_files_non_git_directory ... ok
[INFO] [stdout] test detection::tests::test_detected_file_clone ... ok
[INFO] [stdout] test detection::tests::test_detect_gitignored_files ... ok
[INFO] [stdout] test detection::tests::test_file_category_equality ... ok
[INFO] [stdout] test detection::tests::test_group_by_category ... ok
[INFO] [stdout] test detection::tests::test_group_by_category_empty ... ok
[INFO] [stdout] test detection::tests::test_group_by_category_single_category ... ok
[INFO] [stdout] test detection::tests::test_group_by_category_with_directories ... ok
[INFO] [stdout] test detection::tests::test_is_ai_config_aider ... ok
[INFO] [stdout] test detection::tests::test_is_ai_config_cody ... ok
[INFO] [stdout] test detection::tests::test_is_ai_config_continue ... ok
[INFO] [stdout] test detection::tests::test_detect_ai_configs_empty_repo ... ok
[INFO] [stdout] test detection::tests::test_is_ai_config_exact_match ... ok
[INFO] [stdout] test detection::tests::test_is_ai_config_generic ... ok
[INFO] [stdout] test detection::tests::test_is_ai_config_github_copilot ... ok
[INFO] [stdout] test detection::tests::test_is_ai_config_non_match ... ok
[INFO] [stdout] test detection::tests::test_is_ai_config_subdirectory ... ok
[INFO] [stdout] test detection::tests::test_is_ai_config_windsurf ... ok
[INFO] [stdout] test fuzzy::tests::empty_candidates_returns_empty ... ok
[INFO] [stdout] test fuzzy::tests::empty_query_still_works ... ok
[INFO] [stdout] test fuzzy::tests::find_exact_match ... ok
[INFO] [stdout] test detection::tests::test_detect_ai_config_directories_skips_files ... ok
[INFO] [stdout] test detection::tests::test_detect_gitignored_excludes_ai_configs ... ok
[INFO] [stdout] test fuzzy::tests::find_partial_match ... ok
[INFO] [stdout] test fuzzy::tests::find_typo_match ... ok
[INFO] [stdout] test fuzzy::tests::matches_sorted_by_score_descending ... ok
[INFO] [stdout] test fuzzy::tests::max_results_zero_returns_empty ... ok
[INFO] [stdout] test fuzzy::tests::no_match_returns_empty ... ok
[INFO] [stdout] test fuzzy::tests::overlay_matcher_default ... ok
[INFO] [stdout] test fuzzy::tests::scored_match_clone_and_eq ... ok
[INFO] [stdout] test fuzzy::tests::scored_match_debug ... ok
[INFO] [stdout] test fuzzy::tests::scored_match_fields ... ok
[INFO] [stdout] test fuzzy::tests::suggest_formats_correctly ... ok
[INFO] [stdout] test fuzzy::tests::suggest_returns_values_only ... ok
[INFO] [stdout] test github::tests::test_cache_key ... ok
[INFO] [stdout] test detection::tests::test_detect_untracked_excludes_ai_configs ... ok
[INFO] [stdout] test github::tests::test_cache_key_tag ... ok
[INFO] [stdout] test github::tests::test_clone_url ... ok
[INFO] [stdout] test fuzzy::tests::respects_max_results ... ok
[INFO] [stdout] test github::tests::test_git_ref_allows_hyphen_not_at_start ... ok
[INFO] [stdout] test github::tests::test_git_ref_display ... ok
[INFO] [stdout] test github::tests::test_git_ref_display_short_commit ... ok
[INFO] [stdout] test github::tests::test_display_url ... ok
[INFO] [stdout] test github::tests::test_display_url_default_with_subpath ... ok
[INFO] [stdout] test github::tests::test_git_ref_as_str ... ok
[INFO] [stdout] test github::tests::test_git_ref_from_str_not_commit_wrong_length ... ok
[INFO] [stdout] test github::tests::test_git_ref_from_str_branch ... ok
[INFO] [stdout] test github::tests::test_git_ref_from_str_commit ... ok
[INFO] [stdout] test github::tests::test_git_ref_from_str_not_commit_non_hex ... ok
[INFO] [stdout] test github::tests::test_git_ref_parse_almost_commit_sha ... ok
[INFO] [stdout] test github::tests::test_git_ref_rejects_flag_injection ... ok
[INFO] [stdout] test github::tests::test_is_github_url ... ok
[INFO] [stdout] test github::tests::test_is_github_url_case_insensitivity ... ok
[INFO] [stdout] test github::tests::test_is_github_url_with_trailing_slash ... ok
[INFO] [stdout] test github::tests::test_parse_github_url_with_dots_in_repo_name ... ok
[INFO] [stdout] test github::tests::test_parse_github_url_with_hyphens_and_underscores ... ok
[INFO] [stdout] test github::tests::test_git_ref_is_default ... ok
[INFO] [stdout] test detection::tests::test_detect_untracked_files ... ok
[INFO] [stdout] test github::tests::test_parse_basic_url ... ok
[INFO] [stdout] test github::tests::test_parse_github_url_with_numbers ... ok
[INFO] [stdout] test github::tests::test_parse_github_url_with_ref_containing_slashes ... ok
[INFO] [stdout] test github::tests::test_parse_remote_url_https_invalid_format ... ok
[INFO] [stdout] test github::tests::test_parse_remote_url_non_github ... ok
[INFO] [stdout] test github::tests::test_parse_remote_url_ssh_invalid_format ... ok
[INFO] [stdout] test github::tests::test_parse_remote_url_ssh_no_suffix ... ok
[INFO] [stdout] test github::tests::test_parse_remote_url_ssh ... ok
[INFO] [stdout] test github::tests::test_parse_remote_url_with_trailing_slash ... ok
[INFO] [stdout] test github::tests::test_parse_remote_url_with_trailing_whitespace ... ok
[INFO] [stdout] test github::tests::test_parse_url_rejects_flag_ref ... ok
[INFO] [stdout] test github::tests::test_parse_url_with_branch ... ok
[INFO] [stdout] test github::tests::test_parse_url_with_commit ... ok
[INFO] [stdout] test github::tests::test_parse_unknown_path_component ... ok
[INFO] [stdout] test github::tests::test_parse_url_with_branch_and_subpath ... ok
[INFO] [stdout] test github::tests::test_parse_remote_url_https ... ok
[INFO] [stdout] test github::tests::test_parse_remote_url_with_extra_path_segments ... ok
[INFO] [stdout] test github::tests::test_parse_url_with_subpath_deep ... ok
[INFO] [stdout] test github::tests::test_parse_url_with_tag ... ok
[INFO] [stdout] test github::tests::test_reject_non_github_url ... ok
[INFO] [stdout] test github::tests::test_reject_invalid_url ... ok
[INFO] [stdout] test github::tests::test_reject_missing_repo ... ok
[INFO] [stdout] test github::tests::test_reject_blob_url ... ok
[INFO] [stdout] test github::tests::test_sanitize_for_path ... ok
[INFO] [stdout] test github::tests::test_with_ref_override_rejects_flag ... ok
[INFO] [stdout] test github::tests::test_with_ref_override ... ok
[INFO] [stdout] test github::tests::test_with_ref_override_commit ... ok
[INFO] [stdout] test github::tests::test_with_ref_override_none ... ok
[INFO] [stdout] test json_merge::tests::is_json_file_detects_extension ... ok
[INFO] [stdout] test json_merge::tests::merge_bool_to_string_type_mismatch ... ok
[INFO] [stdout] test json_merge::tests::merge_deeply_nested_type_mismatch_has_full_path ... ok
[INFO] [stdout] test json_merge::tests::merge_array_to_object_type_mismatch ... ok
[INFO] [stdout] test json_merge::tests::merge_arrays_overlay_replaces ... ok
[INFO] [stdout] test json_merge::tests::merge_empty_overlay_preserves_base ... ok
[INFO] [stdout] test github::tests::test_parse_url_with_git_suffix ... ok
[INFO] [stdout] test json_merge::tests::merge_nested_objects_recursively ... ok
[INFO] [stdout] test json_merge::tests::merge_disjoint_objects ... ok
[INFO] [stdout] test json_merge::tests::merge_empty_base_takes_overlay ... ok
[INFO] [stdout] test json_merge::tests::merge_null_values ... ok
[INFO] [stdout] test json_merge::tests::merge_overlapping_scalars_overlay_wins ... ok
[INFO] [stdout] test detection::tests::test_discover_files_deduplicates ... ok
[INFO] [stdout] test overlay_name::tests::overlay_name_as_str ... ok
[INFO] [stdout] test overlay_name::tests::overlay_name_display ... ok
[INFO] [stdout] test overlay_name::tests::overlay_name_eq_str ... ok
[INFO] [stdout] test overlay_name::tests::overlay_name_equality ... ok
[INFO] [stdout] test json_merge::tests::merge_type_mismatch_overlay_wins_and_logs ... ok
[INFO] [stdout] test json_merge::tests::merge_root_level_type_mismatch_uses_root_path ... ok
[INFO] [stdout] test overlay_repo::tests::test_copy_dir_recursive_basic ... ok
[INFO] [stdout] test overlay_repo::tests::test_available_overlay_clone ... ok
[INFO] [stdout] test overlay_name::tests::overlay_name_rejects_paths_in_debug - should panic ... ok
[INFO] [stdout] test overlay_repo::tests::available_overlay_display ... ok
[INFO] [stdout] test overlay_repo::tests::available_overlay_display_bold_contains_name ... ok
[INFO] [stdout] test detection::tests::test_discover_files_combines_all ... ok
[INFO] [stdout] test overlay_repo::tests::test_copy_dir_recursive_skips_git_dir ... ok
[INFO] [stdout] test overlay_repo::tests::test_copy_dir_recursive_rejects_symlink_escape ... ok
[INFO] [stdout] test overlay_repo::tests::test_copy_dir_recursive_allows_internal_symlinks ... ok
[INFO] [stdout] test overlay_repo::tests::test_copy_dir_recursive_fails_on_non_directory ... ok
[INFO] [stdout] test overlay_repo::tests::test_copy_dir_recursive_skips_dangling_symlinks ... ok
[INFO] [stdout] test overlay_repo::tests::test_default_overlay_repo_path ... ok
[INFO] [stdout] test overlay_repo::tests::test_copy_dir_recursive_nested ... ok
[INFO] [stdout] test overlay_repo::tests::test_get_overlay_path_nonexistent ... ok
[INFO] [stdout] test overlay_repo::tests::test_get_overlay_path_exists ... ok
[INFO] [stdout] test overlay_repo::tests::test_get_overlay_path_with_fallback_direct_match ... ok
[INFO] [stdout] test overlay_repo::tests::test_get_overlay_path_rejects_traversal ... ok
[INFO] [stdout] test overlay_repo::tests::test_get_current_commit_on_non_git_directory ... ok
[INFO] [stdout] test overlay_repo::tests::test_ensure_cloned_when_already_cloned ... ok
[INFO] [stdout] test overlay_repo::tests::test_get_overlay_path_with_fallback_no_upstream_fails ... ok
[INFO] [stdout] test overlay_repo::tests::test_list_overlays_empty_repo ... ok
[INFO] [stdout] test overlay_repo::tests::test_list_overlays_for_repo_filters_correctly ... ok
[INFO] [stdout] test overlay_repo::tests::test_get_overlay_path_with_fallback_uses_upstream ... ok
[INFO] [stdout] test overlay_repo::tests::test_list_overlays_for_repo_no_matches ... ok
[INFO] [stdout] test overlay_repo::tests::test_list_overlays_for_repo_case_insensitive ... ok
[INFO] [stdout] test overlay_repo::tests::test_list_overlays_for_repo_multiple_overlays ... ok
[INFO] [stdout] test overlay_repo::tests::test_list_overlays_skips_hidden_dirs ... ok
[INFO] [stdout] test overlay_repo::tests::test_list_overlays_skips_hidden_and_files ... ok
[INFO] [stdout] test overlay_repo::tests::test_overlay_repo_manager_does_not_need_clone_with_git_dir ... ok
[INFO] [stdout] test overlay_repo::tests::test_overlay_repo_manager_needs_clone_no_git_dir ... ok
[INFO] [stdout] test overlay_repo::tests::test_overlay_repo_manager_needs_clone_no_path ... ok
[INFO] [stdout] test overlay_repo::tests::test_overlay_repo_manager_path_getter ... ok
[INFO] [stdout] test overlay_repo::tests::test_overlay_repo_meta_roundtrip ... ok
[INFO] [stdout] test overlay_repo::tests::test_list_overlays_with_overlays ... ok
[INFO] [stdout] test overlay_repo::tests::test_parse_overlay_reference_empty_parts ... ok
[INFO] [stdout] test overlay_repo::tests::test_parse_overlay_reference_invalid_path ... ok
[INFO] [stdout] test overlay_repo::tests::test_parse_overlay_reference_valid ... ok
[INFO] [stdout] test overlay_repo::tests::test_parse_overlay_reference_invalid_url ... ok
[INFO] [stdout] test overlay_repo::tests::test_parse_overlay_reference_wrong_parts ... ok
[INFO] [stdout] test overlay_repo::tests::test_list_overlays_not_cloned ... ok
[INFO] [stdout] test overlay_repo::tests::test_pull_not_cloned ... ok
[INFO] [stdout] test overlay_repo::tests::test_list_overlays_skips_files ... ok
[INFO] [stdout] test overlay_repo::tests::test_validate_clone_url_allows_https ... ok
[INFO] [stdout] test overlay_repo::tests::test_validate_clone_url_rejects_file_scheme ... ok
[INFO] [stdout] test overlay_repo::tests::test_validate_clone_url_rejects_flag ... ok
[INFO] [stdout] test overlay_repo::tests::test_validate_path_component_allows_valid ... ok
[INFO] [stdout] test overlay_repo::tests::test_validate_path_component_rejects_traversal ... ok
[INFO] [stdout] test reference::tests::needs_local_path_warning_returns_false_for_explicit_paths ... ok
[INFO] [stdout] test reference::tests::needs_local_path_warning_returns_false_for_non_local_path ... ok
[INFO] [stdout] test reference::tests::needs_local_path_warning_returns_true_for_ambiguous_paths ... ok
[INFO] [stdout] test overlay_repo::tests::test_validate_clone_url_allows_ssh ... ok
[INFO] [stdout] test reference::tests::parse_bare_tilde ... ok
[INFO] [stdout] test reference::tests::parse_empty_input ... ok
[INFO] [stdout] test reference::tests::parse_explicit_local_path_absolute ... ok
[INFO] [stdout] test reference::tests::parse_explicit_local_path_dot_slash ... ok
[INFO] [stdout] test reference::tests::parse_four_parts_invalid ... ok
[INFO] [stdout] test reference::tests::parse_github_url ... ok
[INFO] [stdout] test reference::tests::parse_github_url_case_insensitive ... ok
[INFO] [stdout] test reference::tests::parse_github_url_with_tree ... ok
[INFO] [stdout] test reference::tests::parse_http_github_url ... ok
[INFO] [stdout] test reference::tests::parse_one_part_nonexistent ... ok
[INFO] [stdout] test reference::tests::parse_three_part_empty_parts_invalid ... ok
[INFO] [stdout] test reference::tests::parse_three_part_reference ... ok
[INFO] [stdout] test reference::tests::parse_tilde_with_path ... ok
[INFO] [stdout] test reference::tests::parse_two_part_empty_parts_invalid ... ok
[INFO] [stdout] test reference::tests::parse_two_part_reference ... ok
[INFO] [stdout] test reference::tests::parse_url_like_not_github ... ok
[INFO] [stdout] test reference::tests::parse_with_whitespace ... ok
[INFO] [stdout] test reference::tests::source_reference_clone_and_eq ... ok
[INFO] [stdout] test reference::tests::source_reference_debug ... ok
[INFO] [stdout] test selection::tests::is_interactive_returns_false_in_tests ... ok
[INFO] [stdout] test selection::tests::test_adjust_flat_scroll_cursor_above_viewport ... ok
[INFO] [stdout] test selection::tests::test_adjust_flat_scroll_cursor_below_viewport ... ok
[INFO] [stdout] test selection::tests::test_all_ancestors_expanded_root_level ... ok
[INFO] [stdout] test selection::tests::test_all_visible_selected_all ... ok
[INFO] [stdout] test selection::tests::test_all_visible_selected_partial ... ok
[INFO] [stdout] test selection::tests::test_all_visible_selected_with_filter ... ok
[INFO] [stdout] test selection::tests::test_all_visible_selected_empty ... ok
[INFO] [stdout] test selection::tests::test_cannot_hide_all_categories ... ok
[INFO] [stdout] test selection::tests::test_children_of ... ok
[INFO] [stdout] test selection::tests::test_clamp_cursor_empty_list ... ok
[INFO] [stdout] test selection::tests::test_clamp_cursor_when_filter_reduces_list ... ok
[INFO] [stdout] test selection::tests::test_collapse_current_navigates_to_parent ... ok
[INFO] [stdout] test selection::tests::test_collapse_current_on_nested_child_navigates_to_immediate_parent ... ok
[INFO] [stdout] test selection::tests::test_collapse_intermediate_directory_hides_nested_children ... ok
[INFO] [stdout] test selection::tests::test_collapse_parent_hides_all_even_if_child_expanded ... ok
[INFO] [stdout] test selection::tests::test_cursor_bounds ... ok
[INFO] [stdout] test selection::tests::test_cursor_clamp_on_collapse ... ok
[INFO] [stdout] test overlay_repo::tests::test_stage_overlay_with_nonexistent_source ... ok
[INFO] [stdout] test selection::tests::test_collapse_current_on_top_level_file_is_noop ... ok
[INFO] [stdout] test selection::tests::test_descendants_of ... ok
[INFO] [stdout] test selection::tests::test_descendants_of_nonexistent_dir ... ok
[INFO] [stdout] test selection::tests::test_deselect_all_visible ... ok
[INFO] [stdout] test selection::tests::test_dir_selection_state_empty_dir ... ok
[INFO] [stdout] test selection::tests::test_dir_selection_state_enum_equality ... ok
[INFO] [stdout] test selection::tests::test_dir_selection_state_all ... ok
[INFO] [stdout] test selection::tests::test_dir_selection_state_none ... ok
[INFO] [stdout] test selection::tests::test_dir_selection_state_partial ... ok
[INFO] [stdout] test selection::tests::test_directory_preselection ... ok
[INFO] [stdout] test selection::tests::test_expand_current_on_already_expanded_directory ... ok
[INFO] [stdout] test selection::tests::test_expanded_dirs_default_state ... ok
[INFO] [stdout] test selection::tests::test_flat_selection_config_fields ... ok
[INFO] [stdout] test selection::tests::test_flat_selection_result_fields ... ok
[INFO] [stdout] test overlay_repo::tests::test_has_staged_changes_with_staged_files ... ok
[INFO] [stdout] test selection::tests::test_flat_state_clamp_cursor_empty ... ok
[INFO] [stdout] test selection::tests::test_flat_state_clamp_cursor_within_range ... ok
[INFO] [stdout] test selection::tests::test_expand_current_on_non_directory ... ok
[INFO] [stdout] test selection::tests::test_flat_state_new_sets_preselections ... ok
[INFO] [stdout] test selection::tests::test_flat_state_new_excludes_disabled_from_preselection ... ok
[INFO] [stdout] test selection::tests::test_flat_state_search_filters ... ok
[INFO] [stdout] test selection::tests::test_flat_state_select_all_visible_deselects_when_all_selected ... ok
[INFO] [stdout] test selection::tests::test_flat_state_select_all_skips_disabled ... ok
[INFO] [stdout] test selection::tests::test_flat_state_toggle_out_of_bounds ... ok
[INFO] [stdout] test selection::tests::test_flat_state_toggle_on_and_off ... ok
[INFO] [stdout] test selection::tests::test_flat_state_visible_items_empty_query ... ok
[INFO] [stdout] test selection::tests::test_flat_state_visible_items_case_insensitive ... ok
[INFO] [stdout] test selection::tests::test_flat_state_with_descriptions ... ok
[INFO] [stdout] test selection::tests::test_handle_flat_search_key_backspace_pops ... ok
[INFO] [stdout] test selection::tests::test_handle_flat_search_key_char_appends ... ok
[INFO] [stdout] test selection::tests::test_handle_flat_search_key_ctrl_c_clears ... ok
[INFO] [stdout] test selection::tests::test_handle_flat_search_key_enter_returns_true ... ok
[INFO] [stdout] test selection::tests::test_handle_flat_search_key_esc_returns_true ... ok
[INFO] [stdout] test selection::tests::test_has_active_filters ... ok
[INFO] [stdout] test selection::tests::test_has_active_filters_with_four_categories ... ok
[INFO] [stdout] test selection::tests::test_humanize_count_millions ... ok
[INFO] [stdout] test selection::tests::test_humanize_count_small_numbers ... ok
[INFO] [stdout] test selection::tests::test_humanize_count_thousands ... ok
[INFO] [stdout] test overlay_repo::tests::test_copy_dir_recursive_depth_limit ... ok
[INFO] [stdout] test selection::tests::test_is_expandable ... ok
[INFO] [stdout] test selection::tests::test_mode_enum_equality ... ok
[INFO] [stdout] test selection::tests::test_flat_state_toggle_skips_disabled ... ok
[INFO] [stdout] test selection::tests::test_resolve_paths_all_children_selected_emits_directory ... ok
[INFO] [stdout] test selection::tests::test_resolve_paths_no_selections ... ok
[INFO] [stdout] test selection::tests::test_resolve_paths_partial_children_emits_individuals ... ok
[INFO] [stdout] test overlay_repo::tests::test_has_staged_changes_empty_repo ... ok
[INFO] [stdout] test selection::tests::test_scroll_offset_adjustment_up ... ok
[INFO] [stdout] test selection::tests::test_scroll_offset_adjustment_down ... ok
[INFO] [stdout] test selection::tests::test_search_filters_by_path ... ok
[INFO] [stdout] test selection::tests::test_selection_config_default ... ok
[INFO] [stdout] test selection::tests::test_search_filters_within_expanded_children ... ok
[INFO] [stdout] test selection::tests::test_select_all_visible_includes_expanded_children ... ok
[INFO] [stdout] test selection::tests::test_selection_result_fields ... ok
[INFO] [stdout] test selection::tests::test_selection_counts ... ok
[INFO] [stdout] test selection::tests::test_select_all_visible_respects_filters ... ok
[INFO] [stdout] test selection::tests::test_selection_counts_includes_directories ... ok
[INFO] [stdout] test selection::tests::test_toggle_current ... ok
[INFO] [stdout] test selection::tests::test_selections_persist_across_filter_changes ... ok
[INFO] [stdout] test selection::tests::test_toggle_ai_config_directory_category ... ok
[INFO] [stdout] test selection::tests::test_toggle_category_hides_files ... ok
[INFO] [stdout] test selection::tests::test_selection_state_default_hidden_categories ... ok
[INFO] [stdout] test selection::tests::test_toggle_current_empty_visible_list ... ok
[INFO] [stdout] test selection::tests::test_toggle_expand_collapses_directory ... ok
[INFO] [stdout] test selection::tests::test_toggle_current_moves_with_cursor ... ok
[INFO] [stdout] test selection::tests::test_toggle_directory_deselects_all_children ... ok
[INFO] [stdout] test selection::tests::test_toggle_directory_selects_all_children ... ok
[INFO] [stdout] test selection::tests::test_visible_files_respects_category_and_search ... ok
[INFO] [stdout] test selection::tests::test_toggle_nested_directory_selects_its_children ... ok
[INFO] [stdout] test sources::tests::sources_cache_dir_fails_without_project_dirs ... ok
[INFO] [stdout] test selection::tests::test_visible_categories_includes_directory_by_default ... ok
[INFO] [stdout] test selection::tests::test_visible_files_hides_collapsed_children ... ok
[INFO] [stdout] test sources::tests::test_get_source_not_found ... ok
[INFO] [stdout] test sources::tests::test_get_overlay_path_in_dir_rejects_traversal_components ... ok
[INFO] [stdout] test sources::tests::test_get_source_found ... ok
[INFO] [stdout] test selection::tests::test_select_all ... ok
[INFO] [stdout] test sources::tests::test_list_overlays_in_dir_empty ... ok
[INFO] [stdout] test sources::tests::test_list_overlays_in_dir_local ... ok
[INFO] [stdout] test sources::tests::test_list_overlays_in_dir_nonexistent ... ok
[INFO] [stdout] test sources::tests::test_list_overlays_in_dir_skips_hidden ... ok
[INFO] [stdout] test sources::tests::test_local_source_absolute_path_rejected ... ok
[INFO] [stdout] test sources::tests::test_local_source_ensure_cloned_skipped ... ok
[INFO] [stdout] test sources::tests::test_local_source_find_all_matches ... ok
[INFO] [stdout] test sources::tests::test_local_source_get_source_commit_returns_local ... ok
[INFO] [stdout] test sources::tests::test_local_source_list_all_overlays ... ok
[INFO] [stdout] test sources::tests::test_local_source_list_overlays_for_repo ... ok
[INFO] [stdout] test sources::tests::test_local_source_needs_clone_false ... ok
[INFO] [stdout] test sources::tests::test_local_source_no_repo_root_errors ... ok
[INFO] [stdout] test sources::tests::test_local_source_nonexistent_path_errors ... ok
[INFO] [stdout] test sources::tests::test_local_source_path_escape_rejected ... ok
[INFO] [stdout] test sources::tests::test_local_source_pull_all_skipped ... ok
[INFO] [stdout] test sources::tests::test_local_source_repo_path ... ok
[INFO] [stdout] test sources::tests::test_local_source_resolve_finds_overlay ... ok
[INFO] [stdout] test sources::tests::test_local_source_resolve_not_found ... ok
[INFO] [stdout] test sources::tests::test_local_source_with_upstream_fallback ... ok
[INFO] [stdout] test overlay_repo::tests::test_get_current_commit_on_valid_repo ... ok
[INFO] [stdout] test sources::tests::test_find_all_matches ... ok
[INFO] [stdout] test overlay_repo::tests::test_stage_overlay_with_source_files ... ok
[INFO] [stdout] test sources::tests::test_list_overlays_for_repo_no_matches ... ok
[INFO] [stdout] test sources::tests::test_mixed_local_and_git_sources ... ok
[INFO] [stdout] test sources::tests::test_resolve_not_found_in_any ... ok
[INFO] [stdout] test sources::tests::test_list_all_overlays ... ok
[INFO] [stdout] test sources::tests::test_list_overlays_for_repo_with_mixed_sources ... ok
[INFO] [stdout] test sources::tests::test_source_names ... ok
[INFO] [stdout] test state::tests::external_state_dir_returns_valid_path ... ok
[INFO] [stdout] test state::tests::remove_file_returns_matching_entry ... ok
[INFO] [stdout] test state::tests::remove_file_returns_none_for_missing ... ok
[INFO] [stdout] test state::tests::save_external_state_propagates_errors_for_invalid_target ... ok
[INFO] [stdout] test state::tests::source_resolver_github_is_not_mutable ... ok
[INFO] [stdout] test state::tests::source_resolver_github_is_not_syncable ... ok
[INFO] [stdout] test state::tests::source_resolver_github_is_updatable ... ok
[INFO] [stdout] test state::tests::source_resolver_github_label ... ok
[INFO] [stdout] test state::tests::source_resolver_local_is_mutable ... ok
[INFO] [stdout] test state::tests::source_resolver_local_is_not_syncable ... ok
[INFO] [stdout] test state::tests::source_resolver_local_is_not_updatable ... ok
[INFO] [stdout] test state::tests::source_resolver_local_label ... ok
[INFO] [stdout] test state::tests::source_resolver_local_resolve_path ... ok
[INFO] [stdout] test sources::tests::test_list_overlays_for_repo_deduplication ... ok
[INFO] [stdout] test state::tests::source_resolver_overlay_repo_is_mutable ... ok
[INFO] [stdout] test state::tests::source_resolver_overlay_repo_is_syncable ... ok
[INFO] [stdout] test state::tests::source_resolver_overlay_repo_is_updatable ... ok
[INFO] [stdout] test state::tests::source_resolver_overlay_repo_label ... ok
[INFO] [stdout] test state::tests::test_backwards_compatible_entry_type ... ok
[INFO] [stdout] test state::tests::test_entry_type_default ... ok
[INFO] [stdout] test state::tests::test_entry_type_equality ... ok
[INFO] [stdout] test state::tests::test_entry_type_serde ... ok
[INFO] [stdout] test state::tests::test_exclude_markers ... ok
[INFO] [stdout] test state::tests::test_external_state_dir_deterministic ... ok
[INFO] [stdout] test state::tests::test_external_state_multiple_overlays ... ok
[INFO] [stdout] test state::tests::test_file_entry_with_directory_roundtrip ... ok
[INFO] [stdout] test state::tests::test_external_state_roundtrip ... ok
[INFO] [stdout] test state::tests::test_format_relative_time_days ... ok
[INFO] [stdout] test state::tests::test_format_relative_time_future ... ok
[INFO] [stdout] test state::tests::test_format_relative_time_hours ... ok
[INFO] [stdout] test state::tests::test_format_relative_time_just_now ... ok
[INFO] [stdout] test state::tests::test_format_relative_time_minutes ... ok
[INFO] [stdout] test state::tests::test_format_relative_time_months_and_years ... ok
[INFO] [stdout] test state::tests::test_format_relative_time_weeks ... ok
[INFO] [stdout] test state::tests::test_global_meta_default ... ok
[INFO] [stdout] test state::tests::test_hash_path_consistency ... ok
[INFO] [stdout] test state::tests::test_hash_path_uniqueness ... ok
[INFO] [stdout] test state::tests::test_link_type_serde ... ok
[INFO] [stdout] test sources::tests::test_source_filter_unknown_source_error ... ok
[INFO] [stdout] test state::tests::test_list_applied_overlays_empty ... ok
[INFO] [stdout] test state::tests::test_load_all_overlay_targets_empty ... ok
[INFO] [stdout] test state::tests::test_list_applied_overlays_ignores_non_ccl_files ... ok
[INFO] [stdout] test state::tests::test_list_applied_overlays_with_overlays ... ok
[INFO] [stdout] test state::tests::test_load_external_states_skips_invalid_files ... ok
[INFO] [stdout] test state::tests::test_load_all_overlay_targets_with_files ... ok
[INFO] [stdout] test state::tests::test_load_overlay_state_not_found ... ok
[INFO] [stdout] test state::tests::test_normalize_overlay_name ... ok
[INFO] [stdout] test state::tests::test_normalize_overlay_name_preserves_underscores ... ok
[INFO] [stdout] test state::tests::test_normalize_overlay_name_special_chars ... ok
[INFO] [stdout] test state::tests::test_normalize_overlay_name_with_special_characters ... ok
[INFO] [stdout] test state::tests::test_overlay_config_empty_directories ... ok
[INFO] [stdout] test state::tests::test_overlay_config_mappings_with_forward_slashes ... ignored, tylerbutler/santa#71: forward slashes in map keys cause parsing errors in sickle
[INFO] [stdout] test state::tests::test_overlay_config_minimal ... ok
[INFO] [stdout] test state::tests::test_overlay_config_missing_optional_sections ... ok
[INFO] [stdout] test state::tests::test_load_all_overlay_targets_with_directories ... ok
[INFO] [stdout] test state::tests::test_overlay_config_with_all_fields ... ok
[INFO] [stdout] test state::tests::test_overlay_source_display_overlay_repo_via_upstream ... ok
[INFO] [stdout] test state::tests::test_overlay_config_with_directories ... ok
[INFO] [stdout] test state::tests::test_overlay_source_display_github_short_commit ... ok
[INFO] [stdout] test state::tests::test_overlay_source_github ... ok
[INFO] [stdout] test state::tests::test_overlay_source_display_overlay_repo_with_source_name ... ok
[INFO] [stdout] test state::tests::test_overlay_source_local ... ok
[INFO] [stdout] test state::tests::test_overlay_source_overlay_repo ... ok
[INFO] [stdout] test state::tests::test_overlay_source_overlay_repo_with_resolved_via ... ok
[INFO] [stdout] test state::tests::test_overlay_source_serde_roundtrip_github ... ok
[INFO] [stdout] test state::tests::test_overlay_source_serde_roundtrip_local ... ok
[INFO] [stdout] test state::tests::test_overlay_state_with_github_source ... ok
[INFO] [stdout] test state::tests::test_overlay_state_methods ... ok
[INFO] [stdout] test state::tests::test_remove_external_state_nonexistent ... ok
[INFO] [stdout] test state::tests::test_overlay_state_with_overlay_repo_source ... ok
[INFO] [stdout] test state::tests::test_resolved_via_direct_is_default ... ok
[INFO] [stdout] test state::tests::test_resolved_via_serde ... ok
[INFO] [stdout] test sources::tests::test_resolve_skips_missing_sources ... ok
[INFO] [stdout] test state::tests::test_overlay_state_serde_roundtrip ... ok
[INFO] [stdout] test state::tests::test_save_and_load_overlay_state ... ok
[INFO] [stdout] test tests::any_overlay_sections_remain_tests::ignores_partial_markers ... ok
[INFO] [stdout] test tests::any_overlay_sections_remain_tests::returns_false_for_no_sections ... ok
[INFO] [stdout] test tests::any_overlay_sections_remain_tests::returns_false_for_only_managed_section ... ok
[INFO] [stdout] test tests::any_overlay_sections_remain_tests::returns_false_for_empty_content ... ok
[INFO] [stdout] test tests::any_overlay_sections_remain_tests::returns_true_for_multiple_overlay_sections ... ok
[INFO] [stdout] test tests::any_overlay_sections_remain_tests::returns_true_for_overlay_plus_managed_section ... ok
[INFO] [stdout] test tests::any_overlay_sections_remain_tests::returns_true_for_overlay_section ... ok
[INFO] [stdout] test tests::apply_multiple_overlays_conflict_strategy::skip_conflicts_skips_existing_repo_files_in_batch ... ok
[INFO] [stdout] test sources::tests::test_resolve_first_match_wins ... ok
[INFO] [stdout] test tests::apply_multiple_overlays_conflict_strategy::force_overwrites_existing_repo_files_in_batch ... ok
[INFO] [stdout] test tests::apply_multiple_overlays_conflict_strategy::skip_conflicts_bypasses_cross_overlay_file_check_in_batch ... ok
[INFO] [stdout] test tests::apply_multiple_overlays_conflict_strategy::force_reapplies_already_applied_overlay_in_batch ... ok
[INFO] [stdout] test tests::apply_multiple_overlays_edge_cases::dry_run_with_multiple_overlays ... ok
[INFO] [stdout] test tests::apply_multiple_overlays_conflict_strategy::skip_conflicts_still_rejects_already_applied_overlay_in_batch ... ok
[INFO] [stdout] test tests::apply_multiple_overlays_edge_cases::rejects_already_applied_overlay ... ok
[INFO] [stdout] test tests::apply_multiple_overlays_edge_cases::force_copy_applies_as_copies_not_symlinks ... ok
[INFO] [stdout] test tests::apply_multiple_overlays_edge_cases::applies_three_overlays_successfully ... ok
[INFO] [stdout] test tests::apply_multiple_overlays_tests::rejects_conflicting_overlays_before_applying ... ok
[INFO] [stdout] test tests::apply_multiple_overlays_tests::applies_multiple_non_conflicting_overlays ... ok
[INFO] [stdout] test sources::tests::test_resolve_with_upstream_fallback ... ok
[INFO] [stdout] test tests::apply_overlay_config_tests::overlay_uses_config_name ... ok
[INFO] [stdout] test tests::apply_multiple_overlays_tests::dry_run_does_not_apply ... ok
[INFO] [stdout] test sources::tests::test_source_filter_uses_specific_source ... ok
[INFO] [stdout] test tests::apply_overlay_config_tests::overlay_with_mappings ... ok
[INFO] [stdout] test tests::apply_overlay_conflict_tests::apply_same_name_twice_fails_by_default ... ok
[INFO] [stdout] test tests::apply_overlay_config_tests::overlay_with_directories ... ok
[INFO] [stdout] test tests::browse_mode_tests::get_cached_repo_commit_non_git_directory ... ok
[INFO] [stdout] test tests::apply_overlay_config_tests::name_override_beats_config ... ok
[INFO] [stdout] test tests::apply_overlay_conflict_tests::apply_same_name_with_force_succeeds ... ok
[INFO] [stdout] test tests::apply_overlay_conflict_tests::dry_run_does_not_apply ... ok
[INFO] [stdout] test tests::browse_mode_tests::list_overlays_from_cached_repo_path_matches_cache_manager ... ok
[INFO] [stdout] test tests::browse_mode_tests::list_overlays_from_cached_repo_nonexistent ... ok
[INFO] [stdout] test tests::browse_mode_tests::list_overlays_from_path_empty_directory ... ok
[INFO] [stdout] test tests::browse_mode_tests::list_overlays_from_cached_repo_finds_overlays_at_correct_path ... ok
[INFO] [stdout] test tests::browse_mode_tests::list_overlays_from_path_incomplete_nesting ... ok
[INFO] [stdout] test tests::browse_mode_tests::list_overlays_from_path_skips_files ... ok
[INFO] [stdout] test tests::browse_mode_tests::list_overlays_from_path_skips_hidden_dirs ... ok
[INFO] [stdout] test tests::browse_mode_tests::list_overlays_from_path_with_nested_structure ... ok
[INFO] [stdout] test tests::canonicalize_path_tests::succeeds_on_existing_path ... ok
[INFO] [stdout] test tests::check_files_against_existing_tests::directory_conflict_fails ... ok
[INFO] [stdout] test tests::check_files_against_existing_tests::file_conflict_fails ... ok
[INFO] [stdout] test tests::check_files_against_existing_tests::no_conflicts_succeeds ... ok
[INFO] [stdout] test tests::check_overlay_conflicts_edge_cases::allows_file_under_own_directory ... ok
[INFO] [stdout] test tests::check_overlay_conflicts_edge_cases::detects_file_under_claimed_directory ... ok
[INFO] [stdout] test tests::check_overlay_conflicts_edge_cases::detects_directory_overlapping_existing_file ... ok
[INFO] [stdout] test tests::check_overlay_conflicts_edge_cases::single_source_never_conflicts ... ok
[INFO] [stdout] test tests::check_overlay_conflicts_edge_cases::three_overlays_no_conflict ... ok
[INFO] [stdout] test tests::check_overlay_conflicts_tests::detects_file_conflict_between_overlays ... ok
[INFO] [stdout] test tests::check_overlay_conflicts_tests::detects_directory_conflict_between_overlays ... ok
[INFO] [stdout] test tests::check_overlay_conflicts_edge_cases::three_overlays_with_conflict_in_third ... ok
[INFO] [stdout] test tests::check_overlay_conflicts_tests::no_conflicts_between_non_overlapping_overlays ... ok
[INFO] [stdout] test tests::apply_multiple_overlays_tests::rolls_back_on_failure ... ok
[INFO] [stdout] test tests::collect_overlay_files_tests::collects_nested_files ... ok
[INFO] [stdout] test tests::check_overlay_conflicts_tests::skips_config_and_git_files_in_conflict_check ... ok
[INFO] [stdout] test tests::collect_overlay_files_tests::applies_mappings ... ok
[INFO] [stdout] test tests::collect_overlay_files_tests::empty_source_returns_empty ... ok
[INFO] [stdout] test tests::collect_overlay_files_tests::skips_config_file ... ok
[INFO] [stdout] test tests::collect_overlay_files_tests::skips_cache_meta_file ... ok
[INFO] [stdout] test tests::collect_overlay_files_tests::skips_files_in_configured_directories ... ok
[INFO] [stdout] test tests::collect_overlay_files_tests::collects_regular_files ... ok
[INFO] [stdout] test tests::collect_overlay_files_tests::skips_git_directory ... ok
[INFO] [stdout] test tests::conflict_strategy_tests::debug_format ... ok
[INFO] [stdout] test tests::conflict_strategy_tests::default_is_fail ... ok
[INFO] [stdout] test tests::conflict_strategy_tests::enum_equality ... ok
[INFO] [stdout] test tests::copy_files_to_overlay_additional_tests::preserves_file_content ... ok
[INFO] [stdout] test tests::browse_mode_tests::get_cached_repo_commit_empty_git_repo ... ok
[INFO] [stdout] test tests::copy_files_to_overlay_tests::copies_directory_recursively ... ok
[INFO] [stdout] test tests::determine_overlay_name_tests::name_override_is_normalized ... ok
[INFO] [stdout] test tests::copy_files_to_overlay_additional_tests::creates_output_dir_if_missing ... ok
[INFO] [stdout] test tests::determine_overlay_name_tests::returns_normalized_name ... ok
[INFO] [stdout] test tests::format_not_found_error_tests::basic_error_message ... ok
[INFO] [stdout] test tests::format_not_found_error_tests::empty_suggestions_no_did_you_mean ... ok
[INFO] [stdout] test tests::format_not_found_error_tests::with_both_suggestions_and_source_list ... ok
[INFO] [stdout] test tests::format_not_found_error_tests::special_characters_in_names ... ok
[INFO] [stdout] test tests::format_not_found_error_tests::with_suggestions ... ok
[INFO] [stdout] test tests::copy_files_to_overlay_tests::creates_parent_directories ... ok
[INFO] [stdout] test tests::copy_files_to_overlay_tests::copies_single_file ... ok
[INFO] [stdout] test tests::copy_files_to_overlay_additional_tests::copies_multiple_files ... ok
[INFO] [stdout] test tests::fuzzy_helper_tests::format_not_found_error_with_suggestions ... ok
[INFO] [stdout] test tests::fuzzy_helper_tests::format_not_found_error_without_suggestions ... ok
[INFO] [stdout] test tests::fuzzy_helper_tests::fuzzy_suggest_finds_matches ... ok
[INFO] [stdout] test tests::fuzzy_helper_tests::fuzzy_suggest_with_empty_candidates ... ok
[INFO] [stdout] test tests::fuzzy_suggest_tests::empty_candidates_returns_empty ... ok
[INFO] [stdout] test tests::fuzzy_suggest_tests::empty_query_returns_results ... ok
[INFO] [stdout] test tests::fuzzy_suggest_tests::exact_match_returns_match ... ok
[INFO] [stdout] test tests::fuzzy_suggest_tests::limits_to_three_results ... ok
[INFO] [stdout] test tests::fuzzy_suggest_tests::partial_match_returns_suggestions ... ok
[INFO] [stdout] test tests::generate_diff_tests::both_empty_returns_none ... ok
[INFO] [stdout] test tests::generate_diff_tests::different_content_returns_some ... ok
[INFO] [stdout] test tests::generate_diff_tests::diff_contains_header ... ok
[INFO] [stdout] test tests::generate_diff_tests::empty_existing_shows_additions ... ok
[INFO] [stdout] test tests::generate_diff_tests::multiline_diff ... ok
[INFO] [stdout] test tests::generate_diff_tests::single_line_no_trailing_newline ... ok
[INFO] [stdout] test tests::generate_diff_tests::identical_content_returns_none ... ok
[INFO] [stdout] test tests::generate_diff_tests::unicode_content ... ok
[INFO] [stdout] test tests::generate_diff_tests::whitespace_only_changes ... ok
[INFO] [stdout] test tests::generate_overlay_config_additional_tests::includes_comment_header ... ok
[INFO] [stdout] test tests::generate_overlay_config_additional_tests::includes_mappings_example ... ok
[INFO] [stdout] test sources::tests::test_resolve_priority_order ... ok
[INFO] [stdout] test tests::generate_overlay_config_tests::generates_valid_ccl ... ok
[INFO] [stdout] test tests::generate_overlay_config_tests::includes_commented_mappings ... ok
[INFO] [stdout] test tests::generate_overlay_config_tests::includes_overlay_name ... ok
[INFO] [stdout] test tests::canonicalize_path_tests::fails_on_nonexistent_path ... ok
[INFO] [stdout] test tests::generate_overlay_config_additional_tests::handles_special_characters_in_name ... ok
[INFO] [stdout] test tests::format_not_found_error_tests::with_source_list ... ok
[INFO] [stdout] test tests::fuzzy_helper_tests::format_not_found_error_with_source_list ... ok
[INFO] [stdout] test tests::generate_diff_tests::empty_overlay_shows_removals ... ok
[INFO] [stdout] test tests::interactive_input_tests::interactive_choice_clone_and_debug ... ok
[INFO] [stdout] test tests::interactive_input_tests::case_insensitive ... ok
[INFO] [stdout] test tests::interactive_input_tests::force_alias_case_insensitive ... ok
[INFO] [stdout] test tests::interactive_input_tests::invalid_input ... ok
[INFO] [stdout] test tests::interactive_input_tests::interactive_input_clone_and_debug ... ok
[INFO] [stdout] test tests::interactive_input_tests::long_force_alias ... ok
[INFO] [stdout] test tests::interactive_input_tests::long_abort ... ok
[INFO] [stdout] test tests::interactive_input_tests::long_diff ... ok
[INFO] [stdout] test tests::interactive_input_tests::partial_keywords_are_invalid ... ok
[INFO] [stdout] test tests::interactive_input_tests::short_abort ... ok
[INFO] [stdout] test tests::interactive_input_tests::short_diff ... ok
[INFO] [stdout] test tests::interactive_input_tests::short_force_alias ... ok
[INFO] [stdout] test tests::interactive_input_tests::short_overwrite ... ok
[INFO] [stdout] test tests::interactive_input_tests::short_skip ... ok
[INFO] [stdout] test tests::interactive_input_tests::whitespace_trimmed ... ok
[INFO] [stdout] test tests::line_ending_edge_cases::remove_overlay_section_preserves_trailing_newline ... ok
[INFO] [stdout] test tests::line_ending_edge_cases::remove_overlay_section_with_mixed_line_endings ... ok
[INFO] [stdout] test tests::line_ending_edge_cases::remove_overlay_section_with_no_trailing_newline ... ok
[INFO] [stdout] test tests::interactive_input_tests::long_skip ... ok
[INFO] [stdout] test tests::interactive_input_tests::newline_only_is_invalid ... ok
[INFO] [stdout] test tests::list_overlays_from_path_additional_tests::nonexistent_path_returns_error ... ok
[INFO] [stdout] test tests::interactive_input_tests::long_overwrite ... ok
[INFO] [stdout] test tests::list_overlays_from_path_additional_tests::handles_symlinks_in_directory ... ok
[INFO] [stdout] test tests::list_overlays_from_path_tests::empty_directory_returns_empty ... ok
[INFO] [stdout] test tests::line_ending_edge_cases::remove_overlay_section_with_only_crlf ... ok
[INFO] [stdout] test tests::list_overlays_from_path_tests::finds_overlays_in_nested_structure ... ok
[INFO] [stdout] test tests::list_overlays_from_path_tests::detects_has_config ... ok
[INFO] [stdout] test tests::list_overlays_from_path_tests::returns_sorted_overlays ... ok
[INFO] [stdout] test tests::list_overlays_from_path_tests::files_at_org_level_are_ignored ... ok
[INFO] [stdout] test tests::list_overlays_from_path_tests::skips_hidden_directories ... ok
[INFO] [stdout] test tests::list_overlays_from_path_tests::sets_org_and_repo_fields ... ok
[INFO] [stdout] test tests::list_overlays_from_path_tests::shallow_structure_returns_empty ... ok
[INFO] [stdout] test tests::list_overlays_from_path_tests::two_level_structure_returns_empty ... ok
[INFO] [stdout] test tests::malformed_section_tests::any_overlay_sections_remain_with_extra_spaces ... ok
[INFO] [stdout] test tests::malformed_section_tests::any_overlay_sections_remain_with_malformed_marker ... ok
[INFO] [stdout] test tests::malformed_section_tests::remove_overlay_section_cleans_many_trailing_newlines ... ok
[INFO] [stdout] test tests::interactive_apply_tests::interactive_reapplies_same_name_overlay ... ok
[INFO] [stdout] test tests::load_overlay_config_tests::empty_config_returns_default ... ok
[INFO] [stdout] test tests::malformed_section_tests::remove_overlay_section_with_duplicate_start_markers ... ok
[INFO] [stdout] test tests::malformed_section_tests::remove_overlay_section_with_nested_markers ... ok
[INFO] [stdout] test tests::load_overlay_config_tests::missing_config_returns_default ... ok
[INFO] [stdout] test tests::malformed_section_tests::remove_overlay_section_with_unclosed_section ... ok
[INFO] [stdout] test tests::overlay_name_integration_tests::as_ref_returns_inner_str ... ok
[INFO] [stdout] test tests::overlay_name_integration_tests::debug_format ... ok
[INFO] [stdout] test tests::overlay_name_integration_tests::hash_consistent_with_equality ... ok
[INFO] [stdout] test tests::load_overlay_config_tests::reads_config_with_name ... ok
[INFO] [stdout] test tests::overlay_name_integration_tests::partial_eq_str_ref ... ok
[INFO] [stdout] test tests::overlay_name_integration_tests::ordering_is_alphabetical ... ok
[INFO] [stdout] test tests::parse_github_owner_repo_tests::fails_on_empty_owner ... ok
[INFO] [stdout] test tests::parse_github_owner_repo_tests::fails_on_empty_repo ... ok
[INFO] [stdout] test tests::overlay_name_integration_tests::clone_produces_equal_value ... ok
[INFO] [stdout] test tests::parse_github_owner_repo_tests::fails_on_non_github_url ... ok
[INFO] [stdout] test tests::parse_github_owner_repo_tests::fails_on_malformed_url ... ok
[INFO] [stdout] test tests::parse_github_owner_repo_tests::handles_url_with_extra_path ... ok
[INFO] [stdout] test tests::parse_github_owner_repo_tests::parses_http_url ... ok
[INFO] [stdout] test tests::parse_github_owner_repo_tests::parses_https_url ... ok
[INFO] [stdout] test tests::parse_github_owner_repo_tests::parses_ssh_url ... ok
[INFO] [stdout] test tests::parse_github_owner_repo_tests::parses_ssh_url_with_git_suffix ... ok
[INFO] [stdout] test tests::browse_mode_tests::get_cached_repo_commit_valid_git_repo ... ok
[INFO] [stdout] test tests::malformed_section_tests::remove_overlay_section_cleans_multiple_trailing_newlines ... ok
[INFO] [stdout] test tests::parse_github_owner_repo_tests::parses_https_url_with_git_suffix ... ok
[INFO] [stdout] test tests::path_traversal_tests::allows_traversal_within_target ... ok
[INFO] [stdout] test tests::path_traversal_tests::rejects_absolute_unix_path_in_mapping ... ok
[INFO] [stdout] test tests::path_traversal_tests::allows_deeper_traversal_within_target ... ok
[INFO] [stdout] test tests::path_validation_tests::canonicalize_path_with_nonexistent_path ... ok
[INFO] [stdout] test tests::path_validation_tests::resolve_git_dir_fails_on_invalid_git_file ... ok
[INFO] [stdout] test tests::path_validation_tests::resolve_git_dir_fails_on_non_git_directory ... ok
[INFO] [stdout] test tests::path_validation_tests::resolve_git_dir_handles_worktree ... ok
[INFO] [stdout] test tests::path_validation_tests::resolve_git_dir_handles_relative_gitdir_path ... ok
[INFO] [stdout] test tests::path_validation_tests::validate_git_repo_fails_on_non_git_directory ... ok
[INFO] [stdout] test tests::path_traversal_tests::windows_style_absolute_path_in_mapping_on_unix ... ok
[INFO] [stdout] test tests::remove_overlay_section_additional_tests::handles_empty_section ... ok
[INFO] [stdout] test tests::remove_overlay_section_additional_tests::handles_similar_named_overlays ... ok
[INFO] [stdout] test tests::remove_overlay_section_additional_tests::handles_whitespace_around_markers ... ok
[INFO] [stdout] test tests::remove_overlay_section_additional_tests::handles_windows_line_endings ... ok
[INFO] [stdout] test tests::remove_overlay_section_additional_tests::preserves_content_before_and_after ... ok
[INFO] [stdout] test tests::remove_overlay_section_additional_tests::removes_only_specified_overlay ... ok
[INFO] [stdout] test tests::path_validation_tests::validate_git_repo_succeeds_on_git_directory ... ok
[INFO] [stdout] test tests::path_traversal_tests::rejects_escape_through_deep_chain ... ok
[INFO] [stdout] test tests::path_validation_tests::resolve_git_dir_returns_git_directory_for_regular_repo ... ok
[INFO] [stdout] test tests::path_traversal_tests::rejects_escape_at_root ... ok
[INFO] [stdout] test tests::remove_overlay_tests::remove_by_name_removes_single_overlay ... ok
[INFO] [stdout] test tests::remove_overlay_tests::dry_run_does_not_remove ... ok
[INFO] [stdout] test tests::remove_overlay_tests::remove_last_overlay_cleans_state_dir ... ok
[INFO] [stdout] test tests::interactive_apply_tests::interactive_batch_reapplies_same_name_overlay ... ok
[INFO] [stdout] test tests::remove_overlay_tests::remove_no_name_no_all_fails ... ok
[INFO] [stdout] test tests::remove_overlay_tests::remove_all_removes_all_overlays ... ok
[INFO] [stdout] test tests::remove_overlay_tests::remove_no_overlays_applied_fails ... ok
[INFO] [stdout] test tests::remove_single_overlay_tests::removes_git_exclude_section ... ok
[INFO] [stdout] test tests::line_ending_edge_cases::update_git_exclude_with_existing_crlf_content ... ok
[INFO] [stdout] test tests::resolve_git_dir_additional_tests::git_file_pointing_to_nonexistent_directory ... ok
[INFO] [stdout] test tests::resolve_git_dir_additional_tests::git_file_with_extra_whitespace ... ok
[INFO] [stdout] test tests::resolve_git_dir_tests::git_file_without_gitdir_prefix_fails ... ok
[INFO] [stdout] test tests::remove_single_overlay_tests::removes_state_file ... ok
[INFO] [stdout] test tests::remove_single_overlay_tests::removes_nested_file_and_cleans_parent_dir ... ok
[INFO] [stdout] test tests::resolve_git_dir_tests::worktree_with_relative_gitdir ... ok
[INFO] [stdout] test tests::resolve_local_path_tests::fails_on_nonexistent_path ... ok
[INFO] [stdout] test tests::resolve_git_dir_tests::no_git_at_all_fails ... ok
[INFO] [stdout] test tests::resolve_local_path_tests::resolves_file_as_well_as_directory ... ok
[INFO] [stdout] test tests::resolve_local_path_tests::returns_local_source_type ... ok
[INFO] [stdout] test tests::resolve_local_path_warning_tests::returns_canonical_path ... ok
[INFO] [stdout] test tests::resolve_local_path_warning_tests::warning_path_still_resolves_successfully ... ok
[INFO] [stdout] test tests::resolve_overlay_display_name_tests::config_name_used_when_no_override ... ok
[INFO] [stdout] test tests::resolve_overlay_display_name_tests::directory_name_used_as_fallback ... ok
[INFO] [stdout] test tests::resolve_overlay_display_name_tests::name_override_takes_priority ... ok
[INFO] [stdout] test tests::resolve_git_dir_tests::worktree_with_absolute_gitdir ... ok
[INFO] [stdout] test tests::remove_single_overlay_tests::nonexistent_overlay_with_no_overlays_applied ... ok
[INFO] [stdout] test tests::resolve_overlay_display_name_tests::root_path_returns_unnamed ... ok
[INFO] [stdout] test tests::remove_single_overlay_tests::removes_applied_overlay_files ... ok
[INFO] [stdout] test tests::resolve_local_path_tests::resolves_existing_directory ... ok
[INFO] [stdout] test tests::resolved_sources_tests::single_variant_holds_one_source ... ok
[INFO] [stdout] test tests::resolved_source_tests::resolved_source_struct_fields ... ok
[INFO] [stdout] test tests::resolved_sources_tests::multiple_variant_holds_vec_of_sources ... ok
[INFO] [stdout] test tests::resolved_types_tests::resolved_source_holds_path_and_source_info ... ok
[INFO] [stdout] test tests::resolved_types_tests::resolved_sources_multiple_variant ... ok
[INFO] [stdout] test tests::resolved_types_tests::resolved_sources_single_variant ... ok
[INFO] [stdout] test tests::show_file_diff_tests::handles_both_files_nonexistent ... ok
[INFO] [stdout] test tests::show_file_diff_tests::handles_different_files ... ok
[INFO] [stdout] test tests::path_traversal_tests::rejects_escape_through_parent ... ok
[INFO] [stdout] test tests::show_file_diff_tests::handles_identical_files ... ok
[INFO] [stdout] test tests::show_file_diff_tests::handles_nonexistent_existing_file ... ok
[INFO] [stdout] test tests::show_file_diff_tests::handles_nonexistent_overlay_file ... ok
[INFO] [stdout] test tests::show_file_diff_tests::handles_empty_files ... ok
[INFO] [stdout] test tests::show_status_json_tests::json_no_overlays_outputs_empty_array ... ok
[INFO] [stdout] test tests::restore_overlays_tests::restores_overlay_after_git_clean ... ok
[INFO] [stdout] test tests::restore_overlays_tests::does_not_restore_explicitly_removed_overlay ... ok
[INFO] [stdout] test tests::restore_overlays_tests::reapplying_overlay_clears_removed_marker ... ok
[INFO] [stdout] test tests::resolve_git_dir_tests::regular_git_repo_returns_git_dir ... ok
[INFO] [stdout] test tests::remove_single_overlay_tests::nonexistent_overlay_returns_error ... ok
[INFO] [stdout] test tests::show_status_json_tests::json_with_nonexistent_filter_fails ... ok
[INFO] [stdout] test tests::show_status_tests::status_no_overlays_succeeds ... ok
[INFO] [stdout] test tests::show_status_json_tests::json_with_name_filter ... ok
[INFO] [stdout] test tests::test_overlay_items_mark_applied_as_disabled ... ok
[INFO] [stdout] test tests::show_status_tests::status_with_filter_nonexistent_fails ... ok
[INFO] [stdout] test tests::status_has_overlays_tests::no_overlays_returns_false ... ok
[INFO] [stdout] test tests::update_git_exclude_multiple_tests::handles_multiple_overlays ... ok
[INFO] [stdout] test tests::symlink_escape_tests::symlinks_in_overlay_source_are_not_copied ... ok
[INFO] [stdout] test tests::update_git_exclude_multiple_tests::updates_existing_overlay_section ... ok
[INFO] [stdout] test tests::status_has_overlays_tests::with_overlay_returns_true ... ok
[INFO] [stdout] test tests::show_status_tests::status_with_filter_existing ... ok
[INFO] [stdout] test tests::update_git_exclude_multiple_tests::handles_multiple_entries_per_overlay ... ok
[INFO] [stdout] test tests::update_git_exclude_multiple_tests::keeps_managed_section_when_one_overlay_remains ... ok
[INFO] [stdout] test tests::update_git_exclude_tests::writes_to_correct_location_in_worktree ... ok
[INFO] [stdout] test tests::show_status_tests::status_with_overlay_succeeds ... ok
[INFO] [stdout] test tests::validate_git_repo_tests::fails_on_non_git_directory ... ok
[INFO] [stdout] test tests::show_status_json_tests::json_with_overlay_succeeds ... ok
[INFO] [stdout] test tests::visible_subdirs_edge_cases::mixed_visible_hidden_and_files ... ok
[INFO] [stdout] test tests::visible_subdirs_edge_cases::nonexistent_directory_returns_error ... ok
[INFO] [stdout] test tests::visible_subdirs_edge_cases::only_files_returns_empty ... ok
[INFO] [stdout] test tests::visible_subdirs_edge_cases::only_hidden_directories_returns_empty ... ok
[INFO] [stdout] test tests::visible_subdirs_tests::returns_empty_for_empty_dir ... ok
[INFO] [stdout] test tests::visible_subdirs_tests::returns_non_hidden_directories ... ok
[INFO] [stdout] test tests::visible_subdirs_tests::returns_paths_with_names ... ok
[INFO] [stdout] test tests::visible_subdirs_tests::skips_files ... ok
[INFO] [stdout] test tests::update_git_exclude_tests::removes_section_when_add_is_false ... ok
[INFO] [stdout] test upstream::tests::detect_identity_from_both_remotes ... ok
[INFO] [stdout] test upstream::tests::detect_identity_from_origin ... ok
[INFO] [stdout] test tests::update_git_exclude_tests::adds_managed_section_with_first_overlay ... ok
[INFO] [stdout] test upstream::tests::repo_identity_matches_case_insensitive ... ok
[INFO] [stdout] test upstream::tests::repo_identity_matches_origin ... ok
[INFO] [stdout] test upstream::tests::repo_identity_matches_upstream ... ok
[INFO] [stdout] test tests::update_git_exclude_tests::removes_managed_section_when_last_overlay_removed ... ok
[INFO] [stdout] test tests::update_git_exclude_tests::appends_to_existing_exclude_file ... ok
[INFO] [stdout] test tests::update_git_exclude_tests::creates_exclude_file_if_missing ... ok
[INFO] [stdout] test upstream::tests::handles_ssh_remote_url ... ok
[INFO] [stdout] test upstream::tests::detect_identity_returns_none_for_no_remotes ... ok
[INFO] [stdout] test tests::validate_git_repo_tests::succeeds_on_git_repo ... ok
[INFO] [stdout] test upstream::tests::detects_upstream_remote ... ok
[INFO] [stdout] test upstream::tests::returns_none_when_no_upstream ... ok
[INFO] [stdout] test upstream::tests::returns_none_for_non_github_remote ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- cache::tests::save_meta_fails_gracefully_when_dir_read_only stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'cache::tests::save_meta_fails_gracefully_when_dir_read_only' (21) panicked at src/cache.rs:1049:9:
[INFO] [stdout] save_meta should return Err when directory is read-only
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x607cce16259a - std[b80a194dd3c418bb]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x607cce16259a - std[b80a194dd3c418bb]::backtrace_rs::backtrace::trace_unsynchronized::<std[b80a194dd3c418bb]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x607cce16259a - std[b80a194dd3c418bb]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x607cce16259a - <<std[b80a194dd3c418bb]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[10b6fa85044e1869]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x607cce17b10a - <core[10b6fa85044e1869]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x607cce17b10a - core[10b6fa85044e1869]::fmt::write
[INFO] [stdout]    6:     0x607cce169182 - std[b80a194dd3c418bb]::io::default_write_fmt::<alloc[dd269455e567d8e9]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x607cce169182 - <alloc[dd269455e567d8e9]::vec::Vec<u8> as std[b80a194dd3c418bb]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x607cce13d08f - <std[b80a194dd3c418bb]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x607cce13d08f - std[b80a194dd3c418bb]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x607cce158869 - std[b80a194dd3c418bb]::panicking::default_hook
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x607ccde7b87c - <alloc[dd269455e567d8e9]::boxed::Box<dyn for<'a, 'b> core[10b6fa85044e1869]::ops::function::Fn<(&'a std[b80a194dd3c418bb]::panic::PanicHookInfo<'b>,), Output = ()> + core[10b6fa85044e1869]::marker::Sync + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::Fn<(&std[b80a194dd3c418bb]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   12:     0x607ccde7b87c - test[826cbc6ef54ab466]::test_main_with_exit_callback::<test[826cbc6ef54ab466]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x607cce158a22 - <alloc[dd269455e567d8e9]::boxed::Box<dyn for<'a, 'b> core[10b6fa85044e1869]::ops::function::Fn<(&'a std[b80a194dd3c418bb]::panic::PanicHookInfo<'b>,), Output = ()> + core[10b6fa85044e1869]::marker::Sync + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::Fn<(&std[b80a194dd3c418bb]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   14:     0x607cce158a22 - std[b80a194dd3c418bb]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x607cce13d17a - std[b80a194dd3c418bb]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x607cce134219 - std[b80a194dd3c418bb]::sys::backtrace::__rust_end_short_backtrace::<std[b80a194dd3c418bb]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x607cce13e11d - __rustc[9698a3e60dd14283]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x607cce17ba6c - core[10b6fa85044e1869]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x607ccdcf21f1 - repoverlay::cache::tests::save_meta_fails_gracefully_when_dir_read_only::h7212d69a9f9b7280
[INFO] [stdout]                                at /opt/rustwide/workdir/src/cache.rs:1049:9
[INFO] [stdout]   20:     0x607ccdcf2277 - repoverlay::cache::tests::save_meta_fails_gracefully_when_dir_read_only::{{closure}}::he2cc0041891631de
[INFO] [stdout]                                at /opt/rustwide/workdir/src/cache.rs:1026:55
[INFO] [stdout]   21:     0x607ccdc86246 - core::ops::function::FnOnce::call_once::h8b829850a37b4881
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x607ccde6f95b - <fn() -> core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x607ccde6f95b - test[826cbc6ef54ab466]::__rust_begin_short_backtrace::<core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>, fn() -> core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:663:18
[INFO] [stdout]   24:     0x607ccde7c34b - test[826cbc6ef54ab466]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:686:74
[INFO] [stdout]   25:     0x607ccde7c34b - <core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   26:     0x607ccde7c34b - std[b80a194dd3c418bb]::panicking::catch_unwind::do_call::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>, core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:581:40
[INFO] [stdout]   27:     0x607ccde7c34b - std[b80a194dd3c418bb]::panicking::catch_unwind::<core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>, core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:544:19
[INFO] [stdout]   28:     0x607ccde7c34b - std[b80a194dd3c418bb]::panic::catch_unwind::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>, core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x607ccde7c34b - test[826cbc6ef54ab466]::run_test_in_process
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:686:27
[INFO] [stdout]   30:     0x607ccde7c34b - test[826cbc6ef54ab466]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:607:43
[INFO] [stdout]   31:     0x607ccde77a64 - test[826cbc6ef54ab466]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:637:41
[INFO] [stdout]   32:     0x607ccde77a64 - std[b80a194dd3c418bb]::sys::backtrace::__rust_begin_short_backtrace::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x607ccde7ef52 - std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   34:     0x607ccde7ef52 - <core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   35:     0x607ccde7ef52 - std[b80a194dd3c418bb]::panicking::catch_unwind::do_call::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:581:40
[INFO] [stdout]   36:     0x607ccde7ef52 - std[b80a194dd3c418bb]::panicking::catch_unwind::<(), core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:544:19
[INFO] [stdout]   37:     0x607ccde7ef52 - std[b80a194dd3c418bb]::panic::catch_unwind::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x607ccde7ef52 - std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   39:     0x607ccde7ef52 - <std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1} as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x607cce16155f - <alloc[dd269455e567d8e9]::boxed::Box<dyn core[10b6fa85044e1869]::ops::function::FnOnce<(), Output = ()> + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2240:9
[INFO] [stdout]   41:     0x607cce16155f - <std[b80a194dd3c418bb]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   42:     0x7792fdaffaa4 - <unknown>
[INFO] [stdout]   43:     0x7792fdb8ca64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     cache::tests::save_meta_fails_gracefully_when_dir_read_only
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 981 passed; 1 failed; 2 ignored; 0 measured; 0 filtered out; finished in 1.81s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "52a1c05ac3930216642743b018a8ab151f91cb49ff16000a48b3e2b07644ab48", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "52a1c05ac3930216642743b018a8ab151f91cb49ff16000a48b3e2b07644ab48", kill_on_drop: false }`
[INFO] [stdout] 52a1c05ac3930216642743b018a8ab151f91cb49ff16000a48b3e2b07644ab48
