[INFO] fetching crate xcstrings-mcp 1.3.3...
[INFO] testing xcstrings-mcp-1.3.3 against master#ec6f9a5b4413f74386267ef8efc93712c2ce6db6 for pr-155739-1
[INFO] extracting crate xcstrings-mcp 1.3.3 into /workspace/builds/worker-2-tc1/source
[INFO] started tweaking crates.io crate xcstrings-mcp 1.3.3
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate xcstrings-mcp 1.3.3
[INFO] tweaked toml for crates.io crate xcstrings-mcp 1.3.3 written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate xcstrings-mcp 1.3.3 on toolchain ec6f9a5b4413f74386267ef8efc93712c2ce6db6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate xcstrings-mcp 1.3.3 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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.116
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.116
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.116
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.116
[INFO] [stderr]   Downloaded rmcp-macros v1.6.0
[INFO] [stderr]   Downloaded js-sys v0.3.93
[INFO] [stderr]   Downloaded clap_complete v4.6.3
[INFO] [stderr]   Downloaded rmcp v1.6.0
[INFO] [stderr]   Downloaded web-sys v0.3.93
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] cacb192dd75306f614e6a3d71d1d6990873108e61a7e2f5cd47151df1dcd1785
[INFO] running `Command { std: "docker" "start" "-a" "cacb192dd75306f614e6a3d71d1d6990873108e61a7e2f5cd47151df1dcd1785", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cacb192dd75306f614e6a3d71d1d6990873108e61a7e2f5cd47151df1dcd1785", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cacb192dd75306f614e6a3d71d1d6990873108e61a7e2f5cd47151df1dcd1785", kill_on_drop: false }`
[INFO] [stdout] cacb192dd75306f614e6a3d71d1d6990873108e61a7e2f5cd47151df1dcd1785
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 99ed032384bcdc59c78201f0a11ca61e86aa51034b6229df7e944b33bc6a6d93
[INFO] running `Command { std: "docker" "start" "-a" "99ed032384bcdc59c78201f0a11ca61e86aa51034b6229df7e944b33bc6a6d93", kill_on_drop: false }`
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling ref-cast-impl v1.0.25
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling tokio v1.52.1
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling rmcp v1.6.0
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling pastey v0.2.1
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling ref-cast v1.0.25
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling quick-xml v0.39.2
[INFO] [stderr]    Compiling schemars_derive v1.2.1
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling schemars v1.2.1
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling clap_complete v4.6.3
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling rmcp-macros v1.6.0
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling xcstrings-mcp v1.3.3 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 47.81s
[INFO] running `Command { std: "docker" "inspect" "99ed032384bcdc59c78201f0a11ca61e86aa51034b6229df7e944b33bc6a6d93", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "99ed032384bcdc59c78201f0a11ca61e86aa51034b6229df7e944b33bc6a6d93", kill_on_drop: false }`
[INFO] [stdout] 99ed032384bcdc59c78201f0a11ca61e86aa51034b6229df7e944b33bc6a6d93
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] a01728c513050fa79f1416601831023afcdf58cb81fb0354139685d9ce6c3a6a
[INFO] running `Command { std: "docker" "start" "-a" "a01728c513050fa79f1416601831023afcdf58cb81fb0354139685d9ce6c3a6a", kill_on_drop: false }`
[INFO] [stderr]    Compiling zerocopy-derive v0.8.48
[INFO] [stderr]    Compiling tokio v1.52.1
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling alloca v0.4.0
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling assert_cmd v2.2.1
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling criterion-plot v0.8.2
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling page_size v0.6.0
[INFO] [stderr]    Compiling console v0.16.3
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling pretty_assertions v1.4.1
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling schemars v1.2.1
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling insta v1.47.2
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling rmcp v1.6.0
[INFO] [stderr]    Compiling tokio-test v0.4.5
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling proptest v1.11.0
[INFO] [stderr]    Compiling criterion v0.8.2
[INFO] [stderr]    Compiling xcstrings-mcp v1.3.3 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 42.80s
[INFO] running `Command { std: "docker" "inspect" "a01728c513050fa79f1416601831023afcdf58cb81fb0354139685d9ce6c3a6a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a01728c513050fa79f1416601831023afcdf58cb81fb0354139685d9ce6c3a6a", kill_on_drop: false }`
[INFO] [stdout] a01728c513050fa79f1416601831023afcdf58cb81fb0354139685d9ce6c3a6a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 24207cbbb1393da92f36db29d380d6c51935e63c74dc3d7b87be5f7bc6159dc5
[INFO] running `Command { std: "docker" "start" "-a" "24207cbbb1393da92f36db29d380d6c51935e63c74dc3d7b87be5f7bc6159dc5", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.32s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/xcstrings_mcp-5e25551e66cce335)
[INFO] [stdout] 
[INFO] [stdout] running 346 tests
[INFO] [stdout] test error::tests::key_not_found_display ... ok
[INFO] [stdout] test error::tests::error_converts_to_mcp_error ... ok
[INFO] [stdout] test error::tests::key_already_exists_display ... ok
[INFO] [stdout] test error::tests::error_display ... ok
[INFO] [stdout] test error::tests::strings_parse_display_includes_line_and_message ... ok
[INFO] [stdout] test error::tests::stringsdict_parse_display_includes_message ... ok
[INFO] [stdout] test io::fs::tests::test_path_traversal_rejected ... ok
[INFO] [stdout] test io::fs::tests::test_default_impl ... ok
[INFO] [stdout] test io::fs::tests::test_file_not_found ... ok
[INFO] [stdout] test io::fs::tests::test_bom_stripping ... ok
[INFO] [stdout] test io::fs::tests::test_file_too_large ... ok
[INFO] [stdout] test io::fs::tests::test_read_bytes_file_not_found ... ok
[INFO] [stdout] test io::fs::tests::test_read_bytes_file_too_large ... ok
[INFO] [stdout] test model::plural::tests::test_arabic ... ok
[INFO] [stdout] test model::plural::tests::test_czech_slovak ... ok
[INFO] [stdout] test io::fs::tests::test_validate_path_no_parent ... ok
[INFO] [stdout] test io::fs::tests::test_read_write_roundtrip ... ok
[INFO] [stdout] test model::plural::tests::test_east_asian_all ... ok
[INFO] [stdout] test io::fs::tests::test_write_creates_file ... ok
[INFO] [stdout] test model::plural::tests::test_locale_with_region ... ok
[INFO] [stdout] test model::plural::tests::test_germanic_romance_all ... ok
[INFO] [stdout] test model::plural::tests::test_latvian ... ok
[INFO] [stdout] test model::plural::tests::test_slavic_all ... ok
[INFO] [stdout] test model::plural::tests::test_lithuanian ... ok
[INFO] [stdout] test model::plural::tests::test_unknown_locale ... ok
[INFO] [stdout] test model::xcstrings::tests::extraction_state_known_values_roundtrip ... ok
[INFO] [stdout] test model::plural::tests::test_welsh ... ok
[INFO] [stdout] test model::xcstrings::tests::extraction_state_unknown_value_roundtrip ... ok
[INFO] [stdout] test model::xcstrings::tests::translation_state_known_values_roundtrip ... ok
[INFO] [stdout] test io::fs::tests::test_validate_path_parent_not_exists ... ok
[INFO] [stdout] test model::xcstrings::tests::translation_state_unknown_roundtrip ... ok
[INFO] [stdout] test model::xcstrings::tests::parse_simple_fixture ... ok
[INFO] [stdout] test model::plural::tests::test_romanian ... ok
[INFO] [stdout] test model::specifier::tests::test_float_specifier ... ok
[INFO] [stdout] test model::specifier::tests::test_complex ... ok
[INFO] [stdout] test model::specifier::tests::test_simple_specifier ... ok
[INFO] [stdout] test model::specifier::tests::test_percent_escape ... ok
[INFO] [stdout] test io::fs::tests::test_flock_blocks_concurrent_write ... ok
[INFO] [stdout] test model::specifier::tests::test_multiple_specifiers ... ok
[INFO] [stdout] test prompts::tests::add_language_without_file_path ... ok
[INFO] [stdout] test io::fs::tests::test_read_bytes_roundtrip ... ok
[INFO] [stdout] test service::context::tests::test_count_limits_output ... ok
[INFO] [stdout] test service::context::tests::test_existing_translations_included ... ok
[INFO] [stdout] test service::context::tests::test_flat_keys_no_dots ... ok
[INFO] [stdout] test service::context::tests::test_key_not_in_file_returns_empty ... ok
[INFO] [stdout] test service::context::tests::test_no_prefix_match_alphabetical ... ok
[INFO] [stdout] test service::context::tests::test_prefix_match_returns_closest ... ok
[INFO] [stdout] test service::coverage::tests::all_translated_gives_100_percent ... ok
[INFO] [stdout] test service::coverage::tests::empty_file_returns_zeroes ... ok
[INFO] [stdout] test service::coverage::tests::locale_in_some_keys_only ... ok
[INFO] [stdout] test service::coverage::tests::multiple_locales_sorted_alphabetically ... ok
[INFO] [stdout] test service::coverage::tests::partial_translation_correct_percentage ... ok
[INFO] [stdout] test service::coverage::tests::should_translate_false_excluded ... ok
[INFO] [stdout] test prompts::tests::extract_strings_returns_content ... ok
[INFO] [stdout] test service::coverage::tests::variations_treated_as_translated ... ok
[INFO] [stdout] test prompts::tests::fix_validation_errors_returns_content ... ok
[INFO] [stdout] test io::fs::tests::test_modified_time ... ok
[INFO] [stdout] test io::fs::tests::test_exists ... ok
[INFO] [stdout] test service::creator::tests::add_keys_empty_list ... ok
[INFO] [stdout] test prompts::tests::cleanup_stale_returns_content ... ok
[INFO] [stdout] test prompts::tests::cleanup_stale_without_file_path ... ok
[INFO] [stdout] test service::creator::tests::add_keys_to_existing_file ... ok
[INFO] [stdout] test service::creator::tests::update_comments_nonexistent_key_skipped ... ok
[INFO] [stdout] test service::creator::tests::add_keys_to_empty_file ... ok
[INFO] [stdout] test service::creator::tests::create_empty_file_valid ... ok
[INFO] [stdout] test service::creator::tests::create_empty_file_empty_source_language ... ok
[INFO] [stdout] test service::diff::tests::added_key_appears_in_added ... ok
[INFO] [stdout] test service::diff::tests::both_without_localization_are_equal ... ok
[INFO] [stdout] test service::diff::tests::key_without_source_localization_compared_as_empty ... ok
[INFO] [stdout] test service::diff::tests::no_changes_all_lists_empty ... ok
[INFO] [stdout] test service::diff::tests::removed_key_appears_in_removed ... ok
[INFO] [stdout] test prompts::tests::review_translations_returns_content ... ok
[INFO] [stdout] test service::discovery::tests::finds_legacy_in_lproj ... ok
[INFO] [stdout] test service::discovery::tests::empty_directory_returns_nothing ... ok
[INFO] [stdout] test service::discovery::tests::finds_xcstrings_in_nested_dir ... ok
[INFO] [stdout] test service::creator::tests::update_comments_updates_existing ... ok
[INFO] [stdout] test service::diff::tests::changed_source_text_appears_in_modified ... ok
[INFO] [stdout] test service::discovery::tests::finds_xcstrings_in_root ... ok
[INFO] [stdout] test service::discovery::tests::ignores_non_localization_files ... ok
[INFO] [stdout] test service::discovery::tests::lproj_with_subdirectories_ignored ... ok
[INFO] [stdout] test prompts::tests::add_language_with_file_path ... ok
[INFO] [stdout] test prompts::tests::translate_batch_returns_content ... ok
[INFO] [stdout] test service::extractor::tests::test_empty_file ... ok
[INFO] [stdout] test service::extractor::tests::test_batch_pagination ... ok
[INFO] [stdout] test service::extractor::tests::test_format_specifiers_extracted ... ok
[INFO] [stdout] test service::extractor::tests::test_invalid_batch_size ... ok
[INFO] [stdout] test service::discovery::tests::multiple_xcstrings_sorted ... ok
[INFO] [stdout] test service::extractor::tests::test_already_translated_skipped ... ok
[INFO] [stdout] test service::extractor::tests::test_basic_untranslated ... ok
[INFO] [stdout] test service::discovery::tests::nonexistent_directory_returns_nothing ... ok
[INFO] [stdout] test service::extractor::tests::test_search_by_key_name ... ok
[INFO] [stdout] test service::extractor::tests::test_search_no_matches ... ok
[INFO] [stdout] test service::extractor::tests::test_source_text_fallback ... ok
[INFO] [stdout] test prompts::tests::translate_batch_default_count ... ok
[INFO] [stdout] test service::discovery::tests::max_depth_protection ... ok
[INFO] [stdout] test service::extractor::tests::test_search_by_source_text ... ok
[INFO] [stdout] test service::extractor::tests::test_search_case_insensitive ... ok
[INFO] [stdout] test service::extractor::tests::test_search_empty_pattern_returns_all ... ok
[INFO] [stdout] test service::extractor::tests::test_search_pagination ... ok
[INFO] [stdout] test service::extractor::tests::test_should_not_translate_filtered ... ok
[INFO] [stdout] test prompts::tests::localization_audit_returns_content ... ok
[INFO] [stdout] test service::extractor::tests::test_stale_keys_returned ... ok
[INFO] [stdout] test service::extractor::tests::test_stale_should_not_translate_excluded ... ok
[INFO] [stdout] test service::extractor::tests::test_stale_batch_pagination ... ok
[INFO] [stdout] test service::file_validator::tests::test_validate_file_specifier_type_mismatch ... ok
[INFO] [stdout] test service::file_validator::tests::test_validate_file_suspicious_length ... ok
[INFO] [stdout] test service::file_validator::tests::test_validate_file_all_locales ... ok
[INFO] [stdout] test service::extractor::tests::test_stale_no_stale_keys ... ok
[INFO] [stdout] test service::file_validator::tests::test_validate_file_specific_locale_filter ... ok
[INFO] [stdout] test service::file_validator::tests::test_validate_file_specifier_mismatch ... ok
[INFO] [stdout] test service::formatter::tests::basic_key_value ... ok
[INFO] [stdout] test service::formatter::tests::backslash_before_quote ... ok
[INFO] [stdout] test prompts::tests::full_translate_returns_content ... ok
[INFO] [stdout] test service::file_validator::tests::test_validate_file_identical_to_source ... ok
[INFO] [stdout] test service::formatter::tests::boolean_value ... ok
[INFO] [stdout] test service::formatter::tests::empty_string_value ... ok
[INFO] [stdout] test service::formatter::tests::double_backslash_ends_string ... ok
[INFO] [stdout] test service::formatter::tests::escaped_quotes ... ok
[INFO] [stdout] test service::formatter::tests::format_xcstrings_trailing_newline ... ok
[INFO] [stdout] test service::formatter::tests::nested_object ... ok
[INFO] [stdout] test service::formatter::tests::null_value ... ok
[INFO] [stdout] test service::formatter::tests::no_strings_passthrough ... ok
[INFO] [stdout] test service::formatter::tests::full_xcstrings_roundtrip ... ok
[INFO] [stdout] test service::formatter::tests::numeric_value ... ok
[INFO] [stdout] test service::formatter::tests::unicode_in_value ... ok
[INFO] [stdout] test service::formatter::tests::url_in_value_preserved ... ok
[INFO] [stdout] test service::glossary::tests::corrupt_json_returns_glossary_error ... ok
[INFO] [stdout] test service::glossary::tests::empty_glossary_returns_empty_map ... ok
[INFO] [stdout] test service::glossary::tests::filter_by_substring_key_and_value ... ok
[INFO] [stdout] test service::glossary::tests::multiple_locale_pairs_independent ... ok
[INFO] [stdout] test service::glossary::tests::overwrite_existing_entry ... ok
[INFO] [stdout] test service::keys::tests::test_delete_keys_not_found ... ok
[INFO] [stdout] test service::glossary::tests::serialize_then_parse_roundtrip ... ok
[INFO] [stdout] test service::keys::tests::test_delete_keys_preserves_order ... ok
[INFO] [stdout] test service::keys::tests::test_delete_translations_key_not_found ... ok
[INFO] [stdout] test service::keys::tests::test_delete_keys_success ... ok
[INFO] [stdout] test service::keys::tests::test_delete_translations_locale_not_present ... ok
[INFO] [stdout] test service::keys::tests::test_delete_keys_empty_list ... ok
[INFO] [stdout] test service::keys::tests::test_delete_translations_source_locale ... ok
[INFO] [stdout] test service::keys::tests::test_delete_keys_mixed ... ok
[INFO] [stdout] test service::glossary::tests::parse_none_returns_empty ... ok
[INFO] [stdout] test service::keys::tests::test_rename_key_already_exists ... ok
[INFO] [stdout] test service::file_validator::tests::test_validate_file_clean ... ok
[INFO] [stdout] test service::keys::tests::test_rename_key_empty_new_key ... ok
[INFO] [stdout] test service::keys::tests::test_rename_key_not_found ... ok
[INFO] [stdout] test service::locale::tests::add_locale_creates_entries ... ok
[INFO] [stdout] test service::locale::tests::add_locale_duplicate_returns_error ... ok
[INFO] [stdout] test service::keys::tests::test_rename_key_same_key ... ok
[INFO] [stdout] test service::keys::tests::test_delete_translations_success ... ok
[INFO] [stdout] test service::locale::tests::add_locale_empty_string_returns_error ... ok
[INFO] [stdout] test service::keys::tests::test_rename_key_success ... ok
[INFO] [stdout] test service::locale::tests::remove_locale_preserves_order ... ok
[INFO] [stdout] test service::locale::tests::remove_locale_rejects_source ... ok
[INFO] [stdout] test service::locale::tests::remove_locale_success ... ok
[INFO] [stdout] test service::locale::tests::list_locales_empty_file ... ok
[INFO] [stdout] test service::locale::tests::remove_locale_includes_nontranslatable ... ok
[INFO] [stdout] test service::locale::tests::remove_locale_not_found ... ok
[INFO] [stdout] test service::locale::tests::list_locales_correct_counts ... ok
[INFO] [stdout] test service::locale::tests::add_locale_excludes_nontranslatable ... ok
[INFO] [stdout] test service::merger::tests::test_merge_idempotent ... ok
[INFO] [stdout] test service::merger::tests::test_merge_into_empty_localizations ... ok
[INFO] [stdout] test service::merger::tests::test_merge_multiple_translations ... ok
[INFO] [stdout] test service::merger::tests::test_merge_plurals ... ok
[INFO] [stdout] test service::merger::tests::test_merge_substitution_plurals ... ok
[INFO] [stdout] test service::merger::tests::test_merge_substitution_preserves_arg_num ... ok
[INFO] [stdout] test service::merger::tests::test_merge_unknown_key ... ok
[INFO] [stdout] test service::merger::tests::test_merge_update_existing ... ok
[INFO] [stdout] test service::migrate::tests::build_warns_on_duplicate_key ... ok
[INFO] [stdout] test service::migrate::tests::build_with_empty_strings_value_gets_new_state ... ok
[INFO] [stdout] test service::migrate::tests::complex_plural_uses_substitutions ... ok
[INFO] [stdout] test service::migrate::tests::locale_import_stats_counted_correctly ... ok
[INFO] [stdout] test service::migrate::tests::merge_mode_skips_existing_keys ... ok
[INFO] [stdout] test service::migrate::tests::non_source_key_not_in_source_warns_and_adds ... ok
[INFO] [stdout] test service::migrate::tests::non_source_locale_adds_translations ... ok
[INFO] [stdout] test service::migrate::tests::non_source_stringsdict_key_not_in_source ... ok
[INFO] [stdout] test service::migrate::tests::replace_specifier_with_arg_mixed ... ok
[INFO] [stdout] test service::migrate::tests::replace_specifier_with_arg_plain ... ok
[INFO] [stdout] test service::migrate::tests::replace_specifier_with_arg_positional ... ok
[INFO] [stdout] test service::migrate::tests::stringsdict_overrides_strings_with_warning ... ok
[INFO] [stdout] test service::migrate::tests::test_build_substitutions_single_var ... ok
[INFO] [stdout] test service::migrate::tests::source_language_not_in_locale_data_errors ... ok
[INFO] [stdout] test service::migrate::tests::test_is_simple_plural_basic ... ok
[INFO] [stdout] test service::migrate::tests::test_is_simple_plural_complex ... ok
[INFO] [stdout] test service::migrate::tests::test_is_simple_plural_edge_cases ... ok
[INFO] [stdout] test service::migrate::tests::test_replace_specifier_at_sign ... ok
[INFO] [stdout] test service::migrate::tests::test_replace_specifier_basic ... ok
[INFO] [stdout] test service::migrate::tests::non_source_empty_value_gets_new_state ... ok
[INFO] [stdout] test service::migrate::tests::test_replace_specifier_positional ... ok
[INFO] [stdout] test service::parser::tests::test_parse_empty_source_language ... ok
[INFO] [stdout] test service::parser::tests::test_parse_invalid_json ... ok
[INFO] [stdout] test service::parser::tests::test_parse_unknown_enum_preserved ... ok
[INFO] [stdout] test service::parser::tests::test_parse_valid ... ok
[INFO] [stdout] test service::parser::tests::test_summarize ... ok
[INFO] [stdout] test service::plural_extractor::tests::test_batch_pagination ... ok
[INFO] [stdout] test service::plural_extractor::tests::test_device_variant_key ... ok
[INFO] [stdout] test service::plural_extractor::tests::test_empty_file ... ok
[INFO] [stdout] test service::parser::tests::test_summarize_with_should_not_translate ... ok
[INFO] [stdout] test service::plural_extractor::tests::test_partially_translated_included ... ok
[INFO] [stdout] test service::plural_extractor::tests::test_plural_key_needing_translation ... ok
[INFO] [stdout] test service::plural_extractor::tests::test_should_not_translate_excluded ... ok
[INFO] [stdout] test service::plural_extractor::tests::test_substitution_key_parsed ... ok
[INFO] [stdout] test service::plural_extractor::tests::test_fully_translated_plural_excluded ... ok
[INFO] [stdout] test service::strings_parser::tests::decode_invalid_encoding ... ok
[INFO] [stdout] test service::strings_parser::tests::decode_utf16le_no_bom_fallback ... ok
[INFO] [stdout] test service::strings_parser::tests::decode_utf16le_with_bom ... ok
[INFO] [stdout] test service::strings_parser::tests::decode_utf8_no_bom ... ok
[INFO] [stdout] test service::strings_parser::tests::decode_utf8_with_bom ... ok
[INFO] [stdout] test service::strings_parser::tests::decode_utf16be_with_bom ... ok
[INFO] [stdout] test service::strings_parser::tests::discover_nested_directories ... ok
[INFO] [stdout] test service::strings_parser::tests::escape_error_reports_correct_line ... ok
[INFO] [stdout] test service::strings_parser::tests::extract_locale_invalid ... ok
[INFO] [stdout] test service::strings_parser::tests::extract_locale_valid ... ok
[INFO] [stdout] test service::strings_parser::tests::parse_basic_key_value ... ok
[INFO] [stdout] test service::strings_parser::tests::parse_block_comment_attached ... ok
[INFO] [stdout] test service::strings_parser::tests::parse_duplicate_keys ... ok
[INFO] [stdout] test service::strings_parser::tests::parse_empty_input ... ok
[INFO] [stdout] test service::strings_parser::tests::discover_no_lproj ... ok
[INFO] [stdout] test service::strings_parser::tests::discover_multiple_tables ... ok
[INFO] [stdout] test service::strings_parser::tests::parse_empty_value ... ok
[INFO] [stdout] test service::strings_parser::tests::parse_line_comment_attached ... ok
[INFO] [stdout] test service::strings_parser::tests::parse_escape_sequences ... ok
[INFO] [stdout] test service::strings_parser::tests::parse_missing_semicolon ... ok
[INFO] [stdout] test service::strings_parser::tests::parse_multiple_entries_mixed_comments ... ok
[INFO] [stdout] test service::strings_parser::tests::parse_unicode_escape ... ok
[INFO] [stdout] test service::strings_parser::tests::parse_mark_comment_not_attached ... ok
[INFO] [stdout] test service::strings_parser::tests::discover_with_lproj_dirs ... ok
[INFO] [stdout] test service::strings_parser::tests::discover_skips_base_lproj ... ok
[INFO] [stdout] test service::strings_parser::tests::empty_block_comment_produces_none ... ok
[INFO] [stdout] test service::strings_parser::tests::parse_unicode_surrogate_pair ... ok
[INFO] [stdout] test service::strings_parser::tests::parse_unquoted_key_with_dots ... ok
[INFO] [stdout] test service::strings_parser::tests::test_unknown_escape_passthrough ... ok
[INFO] [stdout] test service::strings_parser::tests::parse_unquoted_key ... ok
[INFO] [stdout] test service::strings_parser::tests::whitespace_only_block_comment_produces_none ... ok
[INFO] [stdout] test service::strings_parser::tests::discover_both_file_types ... ok
[INFO] [stdout] test service::stringsdict_parser::tests::empty_format_value_type_key_is_error ... ok
[INFO] [stdout] test service::stringsdict_parser::tests::empty_stringsdict ... ok
[INFO] [stdout] test service::stringsdict_parser::tests::cdata_in_text_content ... ok
[INFO] [stdout] test service::stringsdict_parser::tests::format_specifier_preservation ... ok
[INFO] [stdout] test service::stringsdict_parser::tests::invalid_xml_is_error ... ok
[INFO] [stdout] test service::stringsdict_parser::tests::missing_other_category_is_error ... ok
[INFO] [stdout] test service::stringsdict_parser::tests::unsupported_rule_type_is_skipped ... ok
[INFO] [stdout] test service::stringsdict_parser::tests::multiple_variables_in_one_entry ... ok
[INFO] [stdout] test service::validator::tests::test_should_not_translate ... ok
[INFO] [stdout] test service::strings_parser::tests::discover_respects_max_depth ... ok
[INFO] [stdout] test service::validator::tests::test_missing_plural_form ... ok
[INFO] [stdout] test service::validator::tests::test_empty_value ... ok
[INFO] [stdout] test service::validator::tests::test_key_not_found ... ok
[INFO] [stdout] test service::validator::tests::test_extra_plural_forms_ok ... ok
[INFO] [stdout] test service::validator::tests::test_specifier_count_mismatch ... ok
[INFO] [stdout] test service::validator::tests::test_specifier_type_mismatch ... ok
[INFO] [stdout] test service::validator::tests::test_plural_only_key_specifier_validation ... ok
[INFO] [stdout] test service::stringsdict_parser::tests::simple_single_variable_plural ... ok
[INFO] [stdout] test service::stringsdict_parser::tests::multiple_plural_categories ... ok
[INFO] [stdout] test model::plural::tests::test_irish ... ok
[INFO] [stdout] test service::creator::tests::add_keys_comment_preserved ... ok
[INFO] [stdout] test service::creator::tests::add_keys_duplicate_skip ... ok
[INFO] [stdout] test model::specifier::tests::test_positional_specifier ... ok
[INFO] [stdout] test service::validator::tests::test_substitution_skips_specifier_validation ... ok
[INFO] [stdout] test service::validator::tests::test_valid_translation ... ok
[INFO] [stdout] test service::xliff::tests::export_import_roundtrip ... ok
[INFO] [stdout] test service::xliff::tests::export_escapes_xml_special_chars ... ok
[INFO] [stdout] test io::fs::tests::test_atomic_write_no_orphans ... ok
[INFO] [stdout] test service::xliff::tests::export_untranslated_only_true_excludes_translated ... ok
[INFO] [stdout] test service::xliff::tests::import_empty_xliff_returns_zero_translations ... ok
[INFO] [stdout] test service::xliff::tests::import_skips_empty_targets ... ok
[INFO] [stdout] test service::xliff::tests::import_missing_target_language_returns_error ... ok
[INFO] [stdout] test tools::create::tests::test_create_xcstrings_already_exists ... ok
[INFO] [stdout] test tools::coverage::tests::test_validate_file_clean ... ok
[INFO] [stdout] test tools::coverage::tests::test_get_coverage_returns_data ... ok
[INFO] [stdout] test tools::create::tests::test_add_keys_duplicate ... ok
[INFO] [stdout] test tools::create::tests::test_add_keys_success ... ok
[INFO] [stdout] test tools::create::tests::test_create_xcstrings_not_xcstrings_ext ... ok
[INFO] [stdout] test tools::diff::tests::test_handle_get_diff_no_cache ... ok
[INFO] [stdout] test service::xliff::tests::export_produces_well_formed_xml ... ok
[INFO] [stdout] test tools::create::tests::test_create_xcstrings_success ... ok
[INFO] [stdout] test service::xliff::tests::export_comment_appears_as_note ... ok
[INFO] [stdout] test tools::diff::tests::test_handle_get_diff_no_changes ... ok
[INFO] [stdout] test tools::create::tests::test_update_comments_success ... ok
[INFO] [stdout] test tools::diff::tests::test_handle_get_diff_rejects_non_xcstrings_path ... ok
[INFO] [stdout] test service::xliff::tests::export_untranslated_only_false_includes_all ... ok
[INFO] [stdout] test tools::extract::tests::test_get_stale_no_stale_keys ... ok
[INFO] [stdout] test tools::extract::tests::test_get_key_success ... ok
[INFO] [stdout] test tools::diff::tests::test_handle_get_diff_with_changes ... ok
[INFO] [stdout] test tools::extract::tests::test_get_key_not_found ... ok
[INFO] [stdout] test tools::extract::tests::test_get_stale_returns_stale_keys ... ok
[INFO] [stdout] test tools::extract::tests::test_get_untranslated_from_cache ... ok
[INFO] [stdout] test tools::extract::tests::test_get_untranslated_no_cache_no_path ... ok
[INFO] [stdout] test tools::files::tests::test_discover_files_invalid_dir ... ok
[INFO] [stdout] test tools::files::tests::test_list_files_empty_cache ... ok
[INFO] [stdout] test tools::keys::tests::test_delete_translations_success ... ok
[INFO] [stdout] test tools::files::tests::test_discover_files_on_fixtures ... ok
[INFO] [stdout] test tools::glossary::tests::handle_get_glossary_with_filter ... ok
[INFO] [stdout] test tools::glossary::tests::handle_get_glossary_empty ... ok
[INFO] [stdout] test tools::keys::tests::test_rename_key_not_found_error ... ok
[INFO] [stdout] test tools::glossary::tests::handle_update_then_get ... ok
[INFO] [stdout] test tools::extract::tests::test_get_untranslated_with_file_path ... ok
[INFO] [stdout] test tools::extract::tests::test_search_keys_handler ... ok
[INFO] [stdout] test tools::keys::tests::test_delete_keys_success ... ok
[INFO] [stdout] test tools::files::tests::test_list_files_after_parsing_two_files ... ok
[INFO] [stdout] test tools::keys::tests::test_delete_translations_source_locale_error ... ok
[INFO] [stdout] test tools::files::tests::test_discover_files_finds_legacy ... ok
[INFO] [stdout] test tools::keys::tests::test_rename_key_success ... ok
[INFO] [stdout] test tools::parse::tests::test_handle_parse_file_not_found ... ok
[INFO] [stdout] test tools::plural::tests::test_get_context_missing_key ... ok
[INFO] [stdout] test tools::parse::tests::test_handle_parse_success ... ok
[INFO] [stdout] test tools::manage::tests::test_add_locale_success ... ok
[INFO] [stdout] test tools::manage::tests::test_list_locales_returns_locales ... ok
[INFO] [stdout] test tools::manage::tests::test_add_locale_duplicate_error ... ok
[INFO] [stdout] test tools::manage::tests::test_remove_locale_success ... ok
[INFO] [stdout] test tools::parse::tests::test_handle_parse_not_xcstrings ... ok
[INFO] [stdout] test tools::manage::tests::test_remove_source_locale_error ... ok
[INFO] [stdout] test tools::plural::tests::test_get_context_success ... ok
[INFO] [stdout] test tools::plural::tests::test_get_plurals_empty ... ok
[INFO] [stdout] test service::xliff::tests::roundtrip_preserves_special_chars_in_target ... ok
[INFO] [stdout] test tools::plural::tests::test_get_plurals_success ... ok
[INFO] [stdout] test tools::strings::tests::test_import_both_params_error ... ok
[INFO] [stdout] test tools::strings::tests::test_import_invalid_output_extension ... ok
[INFO] [stdout] test tools::strings::tests::test_import_dry_run ... ok
[INFO] [stdout] test tools::strings::tests::test_import_key_in_target_not_source ... ok
[INFO] [stdout] test tools::tests::test_file_cache_insert_sets_active ... ok
[INFO] [stdout] test tools::strings::tests::test_import_merge_into_existing ... ok
[INFO] [stdout] test tools::strings::tests::test_import_stringsdict_complex_plural ... ok
[INFO] [stdout] test tools::strings::tests::test_import_source_language_not_found ... ok
[INFO] [stdout] test tools::strings::tests::test_import_stringsdict_simple_plural ... ok
[INFO] [stdout] test tools::tests::test_resolve_file_from_cache ... ok
[INFO] [stdout] test tools::strings::tests::test_import_single_locale_strings ... ok
[INFO] [stdout] test tools::strings::tests::test_import_source_and_target_locale ... ok
[INFO] [stdout] test tools::strings::tests::test_import_mixed_strings_and_stringsdict ... ok
[INFO] [stdout] test tools::tests::test_memory_store_binary_files ... ok
[INFO] [stdout] test tools::tests::test_resolve_file_no_cache_no_path ... ok
[INFO] [stdout] test tools::tests::test_file_cache_list_sorted ... ok
[INFO] [stdout] test tools::tests::test_resolve_file_rejects_non_xcstrings ... ok
[INFO] [stdout] test tools::tests::test_resolve_file_with_path ... ok
[INFO] [stdout] test tools::translate::tests::test_continue_on_error_default_is_true ... ok
[INFO] [stdout] test tools::translate::tests::test_continue_on_error_false_rejects_all ... ok
[INFO] [stdout] test tools::translate::tests::test_accepted_keys_returned ... ok
[INFO] [stdout] test tools::translate::tests::test_submit_dry_run ... ok
[INFO] [stdout] test tools::translate::tests::test_submit_rejects_invalid_specifier ... ok
[INFO] [stdout] test tools::translate::tests::test_continue_on_error_true_writes_valid ... ok
[INFO] [stdout] test tools::translate::tests::test_submit_no_active_file ... ok
[INFO] [stdout] test tools::translate::tests::test_submit_writes_file ... ok
[INFO] [stdout] test tools::xliff::tests::test_export_xliff_rejects_non_xliff_output_path ... ok
[INFO] [stdout] test tools::xliff::tests::test_import_xliff_writes_translations ... ok
[INFO] [stdout] test tools::xliff::tests::test_import_xliff_dry_run ... ok
[INFO] [stdout] test tools::xliff::tests::test_import_empty_xliff ... ok
[INFO] [stdout] test tools::xliff::tests::test_export_xliff_writes_file ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 346 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.22s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/xcstrings_mcp-f2173a7c88f760b0)
[INFO] [stdout] 
[INFO] [stdout] running 25 tests
[INFO] [stdout] test cli::coverage::tests::empty_locales ... ok
[INFO] [stdout] test cli::coverage::tests::json_output_is_valid ... ok
[INFO] [stdout] test cli::coverage::tests::coverage_percentage_values ... ok
[INFO] [stdout] test cli::export_cmd::tests::export_produces_xliff_output ... ok
[INFO] [stdout] test cli::export_cmd::tests::export_untranslated_only_filters ... ok
[INFO] [stdout] test cli::import_cmd::tests::import_validates_bad_translations ... ok
[INFO] [stdout] test cli::info::tests::json_output_is_valid ... ok
[INFO] [stdout] test cli::info::tests::summary_fields_correct ... ok
[INFO] [stdout] test cli::locale::tests::add_locale_initializes_keys ... ok
[INFO] [stdout] test cli::locale::tests::remove_locale_not_found_error ... ok
[INFO] [stdout] test cli::locale::tests::remove_locale_source_language_error ... ok
[INFO] [stdout] test cli::locale::tests::remove_locale_succeeds ... ok
[INFO] [stdout] test cli::search::tests::empty_results ... ok
[INFO] [stdout] test cli::stale::tests::empty_results ... ok
[INFO] [stdout] test cli::search::tests::json_output_is_valid ... ok
[INFO] [stdout] test cli::stale::tests::json_output_is_valid ... ok
[INFO] [stdout] test cli::search::tests::unit_fields_correct ... ok
[INFO] [stdout] test cli::stale::tests::stale_unit_fields ... ok
[INFO] [stdout] test cli::validate::tests::json_output_is_valid ... ok
[INFO] [stdout] test cli::validate::tests::empty_reports_vec ... ok
[INFO] [stdout] test cli::validate::tests::clean_report_has_no_issues ... ok
[INFO] [stdout] test cli::validate::tests::counts_errors_and_warnings ... ok
[INFO] [stdout] test cli::import_cmd::tests::dry_run_does_not_merge ... ok
[INFO] [stdout] test cli::import_cmd::tests::import_xliff_roundtrip ... ok
[INFO] [stdout] test cli::info::tests::empty_keys_by_state ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_tests.rs (/opt/rustwide/target/debug/deps/cli_tests-002cb0ff36deba8d)
[INFO] [stdout] 
[INFO] [stdout] running 86 tests
[INFO] [stdout] test add_locale_success ... ok
[INFO] [stdout] test add_locale_dry_run ... ok
[INFO] [stdout] test add_locale_json_dry_run ... ok
[INFO] [stdout] test add_locale_nonexistent_file ... ok
[INFO] [stdout] test auto_discovery_single_file ... ok
[INFO] [stdout] test completions_bash ... ok
[INFO] [stdout] test completions_invalid_shell ... ok
[INFO] [stdout] test coverage_locale_filter ... ok
[INFO] [stdout] test coverage_json ... ok
[INFO] [stdout] test auto_discovery_nested_xcstrings ... ok
[INFO] [stdout] test auto_discovery_multiple_files ... ok
[INFO] [stdout] test completions_fish ... ok
[INFO] [stdout] test auto_discovery_no_files ... ok
[INFO] [stdout] test coverage_nonexistent_file ... ok
[INFO] [stdout] test completions_zsh ... ok
[INFO] [stdout] test add_locale_json ... ok
[INFO] [stdout] test coverage_locale_filter_json ... ok
[INFO] [stdout] test export_missing_locale_flag ... ok
[INFO] [stdout] test help_flag ... ok
[INFO] [stdout] test export_all_flag ... ok
[INFO] [stdout] test export_nonexistent_file ... ok
[INFO] [stdout] test import_invalid_xliff ... ok
[INFO] [stdout] test import_invalid_json_xcstrings ... ok
[INFO] [stdout] test export_json ... ok
[INFO] [stdout] test export_json_dry_run_equivalent ... ok
[INFO] [stdout] test export_invalid_json_xcstrings ... ok
[INFO] [stdout] test export_creates_xliff ... ok
[INFO] [stdout] test import_nonexistent_xliff ... ok
[INFO] [stdout] test import_json_output ... ok
[INFO] [stdout] test info_nonexistent_file ... ok
[INFO] [stdout] test import_dry_run ... ok
[INFO] [stdout] test import_with_rejected_translations_json ... ok
[INFO] [stdout] test import_dry_run_with_valid_translations ... ok
[INFO] [stdout] test import_nonexistent_xcstrings ... ok
[INFO] [stdout] test info_json ... ok
[INFO] [stdout] test migrate_empty_directory ... ok
[INFO] [stdout] test import_with_rejected_translations_text ... ok
[INFO] [stdout] test migrate_both_dir_and_files_error ... ok
[INFO] [stdout] test info_with_fixture ... ok
[INFO] [stdout] test import_roundtrip ... ok
[INFO] [stdout] test migrate_bad_output_extension ... ok
[INFO] [stdout] test load_invalid_json_xcstrings ... ok
[INFO] [stdout] test import_json_dry_run ... ok
[INFO] [stdout] test migrate_dry_run ... ok
[INFO] [stdout] test migrate_json ... ok
[INFO] [stdout] test migrate_from_directory ... ok
[INFO] [stdout] test migrate_json_dry_run ... ok
[INFO] [stdout] test migrate_no_source_error ... ok
[INFO] [stdout] test migrate_from_files ... ok
[INFO] [stdout] test migrate_bad_file_extension ... ok
[INFO] [stdout] test migrate_missing_source_language ... ok
[INFO] [stdout] test import_with_all_flag ... ok
[INFO] [stdout] test migrate_json_with_warnings ... ok
[INFO] [stdout] test remove_locale_nonexistent_file ... ok
[INFO] [stdout] test migrate_with_stringsdict_files ... ok
[INFO] [stdout] test import_writes_valid_translations ... ok
[INFO] [stdout] test migrate_text_output_multiple_locales ... ok
[INFO] [stdout] test remove_locale_source_language_error ... ok
[INFO] [stdout] test migrate_stringsdict_with_skipped_keys ... ok
[INFO] [stdout] test remove_locale_json ... ok
[INFO] [stdout] test migrate_text_output_with_warnings ... ok
[INFO] [stdout] test remove_locale_not_found ... ok
[INFO] [stdout] test remove_locale_json_dry_run ... ok
[INFO] [stdout] test migrate_multiple_locales_with_stringsdict ... ok
[INFO] [stdout] test remove_locale_dry_run ... ok
[INFO] [stdout] test remove_locale_success ... ok
[INFO] [stdout] test search_json ... ok
[INFO] [stdout] test search_no_results ... ok
[INFO] [stdout] test stale_with_locale_and_limit ... ok
[INFO] [stdout] test coverage_with_fixture ... ok
[INFO] [stdout] test validate_clean_fixture ... ok
[INFO] [stdout] test validate_invalid_json_xcstrings ... ok
[INFO] [stdout] test search_limit ... ok
[INFO] [stdout] test stale_finds_stale_keys ... ok
[INFO] [stdout] test stale_clean_fixture ... ok
[INFO] [stdout] test search_matching_keys ... ok
[INFO] [stdout] test validate_json ... ok
[INFO] [stdout] test validate_with_locale_filter ... ok
[INFO] [stdout] test validate_json_with_locale ... ok
[INFO] [stdout] test validate_with_issues_text_output ... ok
[INFO] [stdout] test migrate_merge_mode ... ok
[INFO] [stdout] test validate_with_issues_json_output ... ok
[INFO] [stdout] test version_flag ... ok
[INFO] [stdout] test stale_json ... ok
[INFO] [stdout] test validate_nonexistent_file ... ok
[INFO] [stdout] test all_json_commands_produce_valid_json ... ok
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_tests.rs (/opt/rustwide/target/debug/deps/integration_tests-547bdfda12ad6315)
[INFO] [stdout] test result: ok. 86 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.24s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 53 tests
[INFO] [stdout] test add_then_remove_locale_roundtrip ... ok
[INFO] [stdout] test add_locale_format_roundtrip ... ok
[INFO] [stdout] test context_nearby_keys ... ok
[INFO] [stdout] test diff_detects_external_changes ... ok
[INFO] [stdout] test format_preserves_xcode_style ... ok
[INFO] [stdout] test interpolation_fixture_specifiers ... ok
[INFO] [stdout] test glossary_create_update_read ... ok
[INFO] [stdout] test multiline_roundtrip ... ok
[INFO] [stdout] test add_locale_then_get_untranslated ... ok
[INFO] [stdout] test parse_then_get_untranslated ... ok
[INFO] [stdout] test device_variant_extraction ... ok
[INFO] [stdout] test multi_locale_get_untranslated ... ok
[INFO] [stdout] test parse_validate_merge_roundtrip ... ok
[INFO] [stdout] test multiline_specifier_safe ... ok
[INFO] [stdout] test plural_extract_then_submit ... ok
[INFO] [stdout] test full_lifecycle_create_add_translate_coverage ... ok
[INFO] [stdout] test batch_retry_continue_on_error_writes_valid ... ok
[INFO] [stdout] test multi_file_parse_and_switch ... ok
[INFO] [stdout] test interpolation_long_key_full_flow ... ok
[INFO] [stdout] test plural_validate_then_merge_full_flow ... ok
[INFO] [stdout] test full_roundtrip_with_memory_store ... ok
[INFO] [stdout] test sequential_merges_no_corruption ... ok
[INFO] [stdout] test should_not_translate_filtered_in_flow ... ok
[INFO] [stdout] test test_delete_keys_then_verify ... ok
[INFO] [stdout] test test_get_key_all_locales ... ok
[INFO] [stdout] test substitution_roundtrip ... ok
[INFO] [stdout] test stale_keys_from_fixture ... ok
[INFO] [stdout] test specifier_mismatch_rejected ... ok
[INFO] [stdout] test test_import_strings_utf16 ... ok
[INFO] [stdout] test test_import_strings_creates_xcstrings ... ok
[INFO] [stdout] test test_import_strings_with_stringsdict ... ok
[INFO] [stdout] test test_import_strings_roundtrip_formatting ... ok
[INFO] [stdout] test test_rename_key_roundtrip ... ok
[INFO] [stdout] test xcode26_version_11_parses ... ok
[INFO] [stdout] test xcode26_version_11_merge_preserves_version ... ok
[INFO] [stdout] test xcode26_version_11_roundtrip_preserves_version ... ok
[INFO] [stdout] test update_comments_then_verify ... ok
[INFO] [stdout] test validate_after_bad_submit ... ok
[INFO] [stdout] test xliff_export_import_roundtrip ... ok
[INFO] [stdout] test create_then_add_keys_then_parse ... ok
[INFO] [stdout] test snapshot_roundtrip_formatting ... ok
[INFO] [stdout] test snapshot_file_summary ... ok
[INFO] [stdout] test snapshot_untranslated_batch ... ok
[INFO] [stdout] test test_import_strings_snapshot ... ok
[INFO] [stdout] test proptest_tests::remove_add_locale_preserves_key_count ... ok
[INFO] [stdout] test coverage_full_flow ... ok
[INFO] [stdout] test xcode_generated_get_untranslated ... ok
[INFO] [stdout] test proptest_tests::diff_identity ... ok
[INFO] [stdout] test xcode_generated_submit_and_reformat ... ok
[INFO] [stdout] test proptest_tests::coverage_monotonic_after_submit ... ok
[INFO] [stdout] test xcode_generated_roundtrip_byte_identical ... ok
[INFO] [stdout] test proptest_tests::merge_never_decreases_key_count ... ok
[INFO] [stdout] test proptest_tests::parse_format_roundtrip ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 53 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.15s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests xcstrings_mcp
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "24207cbbb1393da92f36db29d380d6c51935e63c74dc3d7b87be5f7bc6159dc5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "24207cbbb1393da92f36db29d380d6c51935e63c74dc3d7b87be5f7bc6159dc5", kill_on_drop: false }`
[INFO] [stdout] 24207cbbb1393da92f36db29d380d6c51935e63c74dc3d7b87be5f7bc6159dc5
