[INFO] cloning repository https://github.com/davydbc/libreofficecalcmcp
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/davydbc/libreofficecalcmcp" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdavydbc%2Flibreofficecalcmcp", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdavydbc%2Flibreofficecalcmcp'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f3d62bcc2cb5693c8aaac39028f6d178ccf343a6
[INFO] testing davydbc/libreofficecalcmcp against try#0abe69e6c16114311cc2700e972492e64d69c28f for pr-154065
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdavydbc%2Flibreofficecalcmcp" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/davydbc/libreofficecalcmcp
[INFO] removed 0 missing tests
[INFO] finished tweaking git repo https://github.com/davydbc/libreofficecalcmcp
[INFO] tweaked toml for git repo https://github.com/davydbc/libreofficecalcmcp written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/davydbc/libreofficecalcmcp on toolchain 0abe69e6c16114311cc2700e972492e64d69c28f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/davydbc/libreofficecalcmcp 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" "+0abe69e6c16114311cc2700e972492e64d69c28f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 4192f3e6db8bbfcda8862aba477361922b49f1c3fb04c24b5d7ac35a33422201
[INFO] running `Command { std: "docker" "start" "-a" "4192f3e6db8bbfcda8862aba477361922b49f1c3fb04c24b5d7ac35a33422201", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4192f3e6db8bbfcda8862aba477361922b49f1c3fb04c24b5d7ac35a33422201", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4192f3e6db8bbfcda8862aba477361922b49f1c3fb04c24b5d7ac35a33422201", kill_on_drop: false }`
[INFO] [stdout] 4192f3e6db8bbfcda8862aba477361922b49f1c3fb04c24b5d7ac35a33422201
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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=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" "+0abe69e6c16114311cc2700e972492e64d69c28f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 9194a2d54c694b542a2c3f62364ce011f64730c808ae56a73f04208c3878854c
[INFO] running `Command { std: "docker" "start" "-a" "9194a2d54c694b542a2c3f62364ce011f64730c808ae56a73f04208c3878854c", kill_on_drop: false }`
[INFO] [stderr]    Compiling unicode-ident v1.0.23
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling regex-syntax v0.8.9
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling zip v2.4.2
[INFO] [stderr]    Compiling bumpalo v3.19.1
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling xml-rs v0.8.28
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling zopfli v0.8.3
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling syn v2.0.115
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling quick-xml v0.37.5
[INFO] [stderr]    Compiling xmltree v0.11.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling mcp-ods v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 36.38s
[INFO] running `Command { std: "docker" "inspect" "9194a2d54c694b542a2c3f62364ce011f64730c808ae56a73f04208c3878854c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9194a2d54c694b542a2c3f62364ce011f64730c808ae56a73f04208c3878854c", kill_on_drop: false }`
[INFO] [stdout] 9194a2d54c694b542a2c3f62364ce011f64730c808ae56a73f04208c3878854c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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=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" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 2f72336ff8bd337ae90ed503fe638a59f783ca315627f9a0bece3ea3f6c86379
[INFO] running `Command { std: "docker" "start" "-a" "2f72336ff8bd337ae90ed503fe638a59f783ca315627f9a0bece3ea3f6c86379", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling tempfile v3.25.0
[INFO] [stderr]    Compiling mcp-ods v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 7.63s
[INFO] running `Command { std: "docker" "inspect" "2f72336ff8bd337ae90ed503fe638a59f783ca315627f9a0bece3ea3f6c86379", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2f72336ff8bd337ae90ed503fe638a59f783ca315627f9a0bece3ea3f6c86379", kill_on_drop: false }`
[INFO] [stdout] 2f72336ff8bd337ae90ed503fe638a59f783ca315627f9a0bece3ea3f6c86379
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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=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" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 84cf4f1ec17e18aa1983b2943830963e45b9ff1bd4769f4e55d1634e414344c4
[INFO] running `Command { std: "docker" "start" "-a" "84cf4f1ec17e18aa1983b2943830963e45b9ff1bd4769f4e55d1634e414344c4", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.13s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/mcp_ods-1fcd5e1f6ca7793b)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/mcp_ods-42846bf98c01e09b)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running test/blackbox/mod.rs (/opt/rustwide/target/debug/deps/blackbox-ab772c2411f764d6)
[INFO] [stdout] 
[INFO] [stdout] running 76 tests
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_app_error_conversions_are_mapped ... ok
[INFO] [stdout] test common_raw::common_raw_integration_test::common_raw_fs_util_resolve_ods_path_covers_relative_absolute_and_errors ... ok
[INFO] [stdout] test add_sheet::add_sheet_integration_test::add_sheet_returns_file_not_found_for_missing_path ... ok
[INFO] [stdout] test common_raw::common_raw_integration_test::common_raw_cell_address_parse_and_to_a1_cover_edge_cases ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_common_helpers_cover_errors_and_json_paths ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_errors_for_covered_cell_target_inside_repeated_row_capture ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_handles_covered_cells_and_writes_after ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_handles_start_end_covered_table_cell_variants ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_helpers_and_templates_are_available ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_duplicate_sheet_supports_name_and_index ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_merged_anchor_maps_covered_cell_to_anchor ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_handles_repeated_row_split ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_parse_and_render_workbook_roundtrip ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_preserves_non_target_empty_table_nodes ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_rejects_repeated_non_empty_cell ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_rename_and_sheet_names_helpers_work ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_set_cell_writes_at_row_end_and_preserves_style ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_splits_empty_repeated_table_row_with_before_and_after ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_set_cell_supports_number_boolean_and_empty ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_supports_self_closing_table_set_cell ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_returns_error_when_target_sheet_is_missing ... ok
[INFO] [stdout] test create_ods::create_ods_integration_test::create_ods_rejects_non_ods_extension ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_splits_repeated_empty_cell_preserving_cell_attributes ... ok
[INFO] [stdout] test delete_sheet::delete_sheet_integration_test::delete_sheet_rejects_deleting_last_sheet ... ok
[INFO] [stdout] test create_ods::create_ods_integration_test::create_ods_overwrite_flag_is_enforced ... ok
[INFO] [stdout] test dispatcher::dispatcher_integration_test::dispatcher_returns_clear_errors_for_invalid_inputs ... ok
[INFO] [stdout] test add_sheet::add_sheet_integration_test::add_sheet_rejects_duplicate_name ... ok
[INFO] [stdout] test dispatcher::dispatcher_integration_test::dispatcher_returns_error_for_unknown_tool ... ok
[INFO] [stdout] test dispatcher::dispatcher_integration_test::dispatcher_supports_initialized_notifications ... ok
[INFO] [stdout] test dispatcher::dispatcher_integration_test::dispatcher_tools_call_validates_missing_payload_fields ... ok
[INFO] [stdout] test dispatcher::dispatcher_integration_test::dispatcher_allows_direct_tool_invocation_path ... ok
[INFO] [stdout] test add_sheet::add_sheet_integration_test::add_sheet_can_insert_at_start ... ok
[INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_duplicate_sheet_validates_error_cases ... ok
[INFO] [stdout] test add_sheet::add_sheet_integration_test::add_sheet_preserves_existing_automatic_styles_block ... ok
[INFO] [stdout] test add_sheet::add_sheet_integration_test::add_sheet_inserts_new_sheet_at_end ... ok
[INFO] [stdout] test duplicate_sheet::duplicate_sheet_integration_test::duplicate_sheet_returns_error_for_missing_source ... ok
[INFO] [stdout] test dispatcher::dispatcher_integration_test::dispatcher_tools_call_accepts_json_encoded_sheet_ref_string ... ok
[INFO] [stdout] test get_sheets::get_sheets_integration_test::get_sheets_returns_file_not_found_for_missing_path ... ok
[INFO] [stdout] test get_cell_value::get_cell_value_integration_test::get_cell_value_rejects_invalid_cell_address ... ok
[INFO] [stdout] test duplicate_sheet::duplicate_sheet_integration_test::duplicate_sheet_creates_named_copy ... ok
[INFO] [stderr] [2m2026-03-27T06:48:25.644588Z[0m [31mERROR[0m [2mmcp_ods::mcp::server[0m[2m:[0m failed to write response: Broken pipe (os error 32)
[INFO] [stderr] server error: io error: Broken pipe (os error 32)
[INFO] [stdout] test server_stdio::server_stdio_integration_test::server_stdio_exits_with_error_when_stdout_pipe_is_closed ... ok
[INFO] [stdout] test duplicate_sheet::duplicate_sheet_integration_test::duplicate_sheet_preserves_style_attributes ... ok
[INFO] [stdout] test get_sheet_content::get_sheet_content_integration_test::get_sheet_content_supports_trailing_trim_and_limits ... ok
[INFO] [stderr] [2m2026-03-27T06:48:25.685909Z[0m [31mERROR[0m [2mmcp_ods::mcp::server[0m[2m:[0m notification handling error: invalid input: unknown method/tool: missing_tool
[INFO] [stdout] test server_stdio::server_stdio_integration_test::server_stdio_ignores_empty_lines_and_continues_processing ... ok
[INFO] [stdout] test server_stdio::server_stdio_integration_test::server_stdio_handles_notification_error_without_response ... ok
[INFO] [stdout] test server_stdio::server_stdio_integration_test::server_stdio_ignores_notifications_without_id ... ok
[INFO] [stdout] test rename_sheet::rename_sheet_integration_test::rename_sheet_rejects_duplicate_name ... ok
[INFO] [stdout] test delete_sheet::delete_sheet_integration_test::delete_sheet_removes_selected_sheet_by_name ... ok
[INFO] [stdout] test server_stdio::server_stdio_integration_test::server_stdio_supports_initialize_and_tools_call_flow ... ok
[INFO] [stdout] test server_stdio::server_stdio_integration_test::server_stdio_returns_error_when_tools_call_payload_is_invalid ... ok
[INFO] [stdout] test server_stdio::server_stdio_integration_test::server_stdio_returns_application_error_for_unknown_tool ... ok
[INFO] [stdout] test server_stdio::server_stdio_integration_test::server_stdio_returns_parse_error_for_invalid_json ... ok
[INFO] [stdout] test get_cell_value::get_cell_value_integration_test::get_cell_value_supports_string_number_boolean_and_empty ... ok
[INFO] [stdout] test rename_sheet::rename_sheet_integration_test::rename_sheet_renames_target_sheet ... ok
[INFO] [stdout] test get_sheets::get_sheets_integration_test::get_sheets_add_sheet_and_duplicate_sheet_workflow ... ok
[INFO] [stdout] test set_cell_value::set_cell_value_integration_test::set_cell_value_handles_repeated_row_with_covered_cells_before_target ... ok
[INFO] [stdout] test set_cell_value::set_cell_value_integration_test::set_cell_value_can_create_missing_rows_before_target ... ok
[INFO] [stdout] test set_cell_value::set_cell_value_integration_test::set_cell_value_rejects_invalid_cell_address ... ok
[INFO] [stdout] test set_cell_value::set_cell_value_integration_test::set_cell_value_handles_self_closing_table_content ... ok
[INFO] [stdout] test set_cell_value::set_cell_value_integration_test::set_cell_value_inside_merged_range_writes_anchor_cell ... ok
[INFO] [stdout] test set_cell_value::set_cell_value_integration_test::set_cell_value_skips_covered_cells_and_writes_after_them ... ok
[INFO] [stdout] test set_cell_value::set_cell_value_integration_test::set_cell_value_rejects_repeated_non_empty_cell_in_integration_flow ... ok
[INFO] [stdout] test set_cell_value::set_cell_value_integration_test::set_cell_value_preserves_directory_entries_from_source_zip ... ok
[INFO] [stdout] test set_cell_value::set_cell_value_integration_test::set_cell_value_updates_and_persists_value ... ok
[INFO] [stdout] test set_cell_value::set_cell_value_integration_test::set_cell_value_replaces_non_repeated_non_empty_cell ... ok
[INFO] [stdout] test set_cell_value::set_cell_value_integration_test::set_cell_value_splits_repeated_row_and_only_updates_target ... ok
[INFO] [stdout] test set_cell_value::set_cell_value_integration_test::set_cell_value_updates_second_sheet_only ... ok
[INFO] [stdout] test set_cell_value::set_cell_value_integration_test::set_cell_value_supports_number_boolean_and_empty ... ok
[INFO] [stdout] test set_range_values::set_range_values_integration_test::set_range_values_rejects_invalid_sheet ... ok
[INFO] [stdout] test set_cell_value::set_cell_value_integration_test::set_cell_value_writes_far_cell_when_row_exists_but_target_col_is_after_existing_data ... ok
[INFO] [stdout] test set_range_values::set_range_values_integration_test::set_range_values_rejects_invalid_start_cell ... ok
[INFO] [stdout] test set_range_values::set_range_values_integration_test::set_range_values_preserves_unrelated_existing_styles ... ok
[INFO] [stdout] test set_range_values::set_range_values_integration_test::set_range_values_on_added_sheet_does_not_emit_unknown_default_style ... ok
[INFO] [stdout] test set_range_values::set_range_values_integration_test::set_range_values_accepts_sheet_by_name ... ok
[INFO] [stdout] test set_range_values::set_range_values_integration_test::set_range_values_uses_merged_anchor_when_start_cell_is_covered ... ok
[INFO] [stdout] test set_range_values::set_range_values_integration_test::set_range_values_writes_matrix_from_start_cell ... ok
[INFO] [stdout] 
[INFO] [stderr]      Running test/unit/mod.rs (/opt/rustwide/target/debug/deps/unit-6e0a15e7c8790462)
[INFO] [stdout] test result: ok. 76 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.79s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 144 tests
[INFO] [stdout] test common::fs_test::resolve_ods_path_accepts_ods_extension ... ok
[INFO] [stdout] test common::fs_test::resolve_ods_path_rejects_empty_path ... ok
[INFO] [stdout] test common::errors_test::app_error_codes_are_stable ... ok
[INFO] [stdout] test common::fs_test::resolve_ods_path_requires_ods_extension ... ok
[INFO] [stdout] test common::errors_test::app_error_from_conversions_are_mapped ... ok
[INFO] [stdout] test common::json_test::json_roundtrip_works ... ok
[INFO] [stdout] test common::json_test::json_from_value_returns_invalid_input_error ... ok
[INFO] [stdout] test mcp::dispatcher_test::dispatch_initialize_returns_server_info ... ok
[INFO] [stdout] test mcp::protocol_test::protocol_request_deserializes_minimal_payload ... ok
[INFO] [stdout] test mcp::protocol_test::protocol_success_response_serializes_without_error_field ... ok
[INFO] [stdout] test mcp::dispatcher_test::dispatch_tools_list_returns_registered_tools ... ok
[INFO] [stdout] test mcp::dispatcher_test::dispatch_unknown_tool_returns_error ... ok
[INFO] [stdout] test mcp::protocol_test::protocol_failure_response_serializes_without_result_field ... ok
[INFO] [stdout] test common::json_test::json_to_value_returns_invalid_input_for_nan ... ok
[INFO] [stdout] test ods::cell_address_test::invalid_cell_address_is_rejected ... ok
[INFO] [stdout] test ods::cell_address_test::parse_and_format_cell_address ... ok
[INFO] [stdout] test ods::content_xml_test::add_sheet_preserving_styles_raw_rejects_duplicate_name ... ok
[INFO] [stdout] test ods::content_xml_test::content_xml_parse_concatenates_multiple_text_nodes_in_single_cell ... ok
[INFO] [stdout] test ods::content_xml_test::content_xml_parse_returns_error_for_malformed_xml ... ok
[INFO] [stdout] test mcp::server_stdio_test::stdio_server_handles_initialize_and_tools_list ... ok
[INFO] [stdout] test ods::content_xml_test::content_xml_parse_supports_unprefixed_tags_and_self_closing_table ... ok
[INFO] [stdout] test ods::content_xml_test::add_sheet_preserving_styles_raw_requires_at_least_one_table ... ok
[INFO] [stdout] test ods::content_xml_test::content_xml_render_and_parse_preserves_basic_values ... ok
[INFO] [stdout] test ods::content_xml_test::content_xml_render_writes_empty_cells_as_empty_tags ... ok
[INFO] [stdout] test ods::content_xml_test::delete_sheet_preserving_styles_raw_deletes_by_index ... ok
[INFO] [stdout] test ods::content_xml_test::add_sheet_preserving_styles_raw_inserts_at_end_without_dropping_blocks ... ok
[INFO] [stdout] test ods::content_xml_test::add_sheet_preserving_styles_raw_inserts_at_start_and_escapes_name ... ok
[INFO] [stdout] test ods::content_xml_test::delete_sheet_preserving_styles_raw_requires_source_selector ... ok
[INFO] [stdout] test ods::content_xml_test::duplicate_sheet_preserving_styles_raw_rejects_content_without_tables ... ok
[INFO] [stdout] test ods::content_xml_test::duplicate_sheet_preserving_styles_raw_requires_source_selector ... ok
[INFO] [stdout] test ods::content_xml_test::duplicate_sheet_preserving_styles_raw_supports_name_and_index ... ok
[INFO] [stdout] test ods::content_xml_test::duplicate_sheet_preserving_styles_raw_validates_inputs ... ok
[INFO] [stdout] test ods::content_xml_test::rename_first_sheet_name_raw_escapes_xml_sensitive_chars ... ok
[INFO] [stdout] test ods::content_xml_test::duplicate_sheet_preserving_styles_raw_supports_plain_name_attribute ... ok
[INFO] [stdout] test mcp::server_stdio_test::stdio_server_returns_invalid_input_for_malformed_tools_call_payload ... ok
[INFO] [stdout] test ods::content_xml_test::rename_first_sheet_name_raw_requires_table_name_attribute ... ok
[INFO] [stdout] test ods::content_xml_test::rename_sheet_preserving_styles_raw_rejects_duplicate_name ... ok
[INFO] [stdout] test ods::content_xml_test::rename_sheet_preserving_styles_raw_rejects_missing_table_name_attribute ... ok
[INFO] [stdout] test ods::content_xml_test::rename_sheet_preserving_styles_raw_requires_source_selector ... ok
[INFO] [stdout] test ods::content_xml_test::resolve_merged_anchor_raw_returns_target_on_repeated_empty_row ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_does_not_expand_row_cells_individually ... ok
[INFO] [stdout] test ods::content_xml_test::resolve_merged_anchor_raw_maps_covered_cell_to_top_left_anchor ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_handles_nested_table_cell_tags_inside_target_cell ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_does_not_materialize_many_rows ... ok
[INFO] [stdout] test mcp::server_stdio_test::stdio_server_returns_parse_error_for_invalid_json ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_errors_when_sheet_index_does_not_exist ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_handles_repeated_row_with_covered_cells_before_target ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_preserves_style_attributes ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_rejects_repeated_non_empty_cell ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_repeated_row_capture_handles_invalid_repeat_number ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_rejects_target_inside_start_covered_cell_in_repeated_row ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_repeated_row_capture_preserves_non_target_row_content ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_repeated_row_capture_rejects_non_empty_repeated_cell ... ok
[INFO] [stdout] test ods::content_xml_test::rename_sheet_preserving_styles_raw_renames_by_name_and_keeps_order ... ok
[INFO] [stdout] test mcp::server_stdio_test::stdio_server_ignores_notification_without_id ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_splits_repeated_empty_row_when_target_is_last ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_repeated_row_capture_writes_after_target_gap ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_replaces_nested_non_empty_cell_content ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_splits_repeated_empty_row_with_before_and_after ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_returns_error_for_covered_cell_in_repeated_row ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_splits_repeated_row_and_updates_middle_copy ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_repeated_row_capture_rejects_target_inside_covered_range ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_splits_repeated_empty_cell ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_supports_number_boolean_and_empty ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_supports_self_closing_table ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_writes_inside_second_sheet_when_first_is_self_closing ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_writes_on_row_end_when_target_is_after_existing_cells ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_writes_missing_rows_before_table_end ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_updates_selected_sheet_index ... ok
[INFO] [stdout] test ods::content_xml_test::sheet_names_from_content_raw_rejects_unterminated_start_tag ... ok
[INFO] [stdout] test ods::content_xml_test::set_cell_value_preserving_styles_raw_supports_start_covered_table_cell_nodes ... ok
[INFO] [stdout] test ods::content_xml_test::sheet_names_from_content_raw_rejects_unterminated_table_block ... ok
[INFO] [stdout] test ods::manifest_test::manifest_xml_contains_required_entries ... ok
[INFO] [stdout] test ods::ods_file_test::ods_file_read_content_xml_rejects_invalid_mimetype ... ok
[INFO] [stdout] test ods::ods_templates_test::ods_templates_expose_expected_static_assets ... ok
[INFO] [stdout] test ods::sheet_model_test::workbook_sheet_index_by_name_returns_expected_index ... ok
[INFO] [stdout] test ods::ods_templates_test::ods_templates_content_xml_renders_initial_sheet ... ok
[INFO] [stdout] test ods::ods_file_test::ods_file_write_content_xml_adds_default_mimetype_when_missing ... ok
[INFO] [stdout] test ods::sheet_model_test::sheet_ensure_cell_mut_expands_matrix ... ok
[INFO] [stdout] test tools::add_sheet_test::add_sheet_returns_not_found_for_missing_file ... ok
[INFO] [stdout] test ods::ods_file_test::ods_file_create_and_read_workbook_roundtrip ... ok
[INFO] [stdout] test ods::content_xml_test::delete_sheet_preserving_styles_raw_rejects_deleting_last_sheet ... ok
[INFO] [stdout] test tools::add_sheet_test::add_sheet_rejects_duplicate_name ... ok
[INFO] [stdout] test tools::add_sheet_test::add_sheet_can_insert_at_start ... ok
[INFO] [stdout] test tools::create_ods_test::create_ods_rejects_non_ods_extension ... ok
[INFO] [stdout] test ods::ods_file_test::ods_file_write_content_xml_updates_entry_and_keeps_other_files ... ok
[INFO] [stdout] test tools::add_sheet_test::add_sheet_appends_new_sheet ... ok
[INFO] [stdout] test tools::delete_sheet_test::delete_sheet_returns_file_not_found_for_missing_file ... ok
[INFO] [stdout] test tools::create_ods_test::create_ods_respects_overwrite_flag ... ok
[INFO] [stdout] test tools::create_ods_test::create_ods_creates_parent_directories_when_missing ... ok
[INFO] [stdout] test tools::duplicate_sheet_test::duplicate_sheet_returns_file_not_found_for_missing_path ... ok
[INFO] [stdout] test ods::ods_file_test::ods_file_write_workbook_persists_new_values ... ok
[INFO] [stdout] test tools::create_ods_test::create_ods_creates_file ... ok
[INFO] [stdout] test tools::delete_sheet_test::delete_sheet_rejects_deleting_last_sheet ... ok
[INFO] [stdout] test tools::get_cell_value_test::get_cell_value_rejects_invalid_address ... ok
[INFO] [stdout] test tools::duplicate_sheet_test::duplicate_sheet_returns_error_for_missing_source ... ok
[INFO] [stdout] test tools::add_sheet_test::add_sheet_uses_end_as_default_position_when_omitted ... ok
[INFO] [stdout] test tools::get_cell_value_test::get_cell_value_returns_not_found_for_missing_file ... ok
[INFO] [stdout] test tools::get_cell_value_test::get_cell_value_reads_number_and_boolean_types ... ok
[INFO] [stdout] test tools::duplicate_sheet_test::duplicate_sheet_supports_source_by_index ... ok
[INFO] [stdout] test tools::delete_sheet_test::delete_sheet_removes_selected_sheet ... ok
[INFO] [stdout] test tools::duplicate_sheet_test::duplicate_sheet_creates_copy_after_source ... ok
[INFO] [stdout] test tools::get_sheet_content_test::get_sheet_content_returns_not_found_for_missing_file ... ok
[INFO] [stdout] test tools::get_sheets_test::get_sheets_rejects_non_ods_path_extension ... ok
[INFO] [stdout] test tools::get_cell_value_test::get_cell_value_returns_error_for_invalid_sheet_index ... ok
[INFO] [stdout] test tools::get_sheets_test::get_sheets_returns_not_found_for_missing_file ... ok
[INFO] [stdout] test tools::get_sheet_content_test::get_sheet_content_rejects_unsupported_mode ... ok
[INFO] [stdout] test tools::get_sheet_content_test::get_sheet_content_keeps_trailing_area_when_requested ... ok
[INFO] [stdout] test tools::get_cell_value_test::get_cell_value_returns_empty_for_unset_cell ... ok
[INFO] [stdout] test tools::get_sheet_content_test::get_sheet_content_uses_default_mode_and_limits ... ok
[INFO] [stdout] test tools::rename_sheet_test::rename_sheet_returns_file_not_found_for_missing_file ... ok
[INFO] [stdout] test tools::set_cell_value_test::set_cell_value_returns_error_for_invalid_cell_address ... ok
[INFO] [stdout] test tools::set_cell_value_test::set_cell_value_does_not_fill_previous_rows_when_target_is_d4 ... ok
[INFO] [stdout] test tools::set_cell_value_test::set_cell_value_returns_file_not_found_for_missing_file ... ok
[INFO] [stdout] test tools::set_cell_value_test::set_cell_value_returns_error_for_invalid_sheet_index ... ok
[INFO] [stdout] test tools::rename_sheet_test::rename_sheet_rejects_duplicate_name ... ok
[INFO] [stdout] test tools::get_sheets_test::get_sheets_returns_created_sheet ... ok
[INFO] [stdout] test tools::get_sheet_content_test::get_sheet_content_stringifies_number_and_boolean_values ... ok
[INFO] [stdout] test tools::get_sheet_content_test::get_sheet_content_returns_matrix ... ok
[INFO] [stdout] test tools::set_cell_value_test::set_cell_value_propagates_resolve_anchor_xml_errors ... ok
[INFO] [stdout] test tools::rename_sheet_test::rename_sheet_renames_selected_sheet ... ok
[INFO] [stdout] test tools::set_range_values_test::set_range_values_rejects_invalid_sheet_name ... ok
[INFO] [stdout] test tools::set_cell_value_test::set_cell_value_updates_single_cell ... ok
[INFO] [stdout] test tools::set_range_values_test::set_range_values_returns_file_not_found_for_missing_file ... ok
[INFO] [stdout] test tools::sheet_ref_test::sheet_ref_accepts_root_numeric_index ... ok
[INFO] [stdout] test tools::sheet_ref_test::sheet_ref_parses_json_encoded_sheet_object_string ... ok
[INFO] [stdout] test tools::set_range_values_test::set_range_values_accepts_sheet_name_reference ... ok
[INFO] [stdout] test tools::sheet_ref_test::sheet_ref_parses_object_by_index_string ... ok
[INFO] [stdout] test tools::sheet_ref_test::sheet_ref_parses_object_by_name ... ok
[INFO] [stdout] test tools::sheet_ref_test::sheet_ref_parses_object_by_index_number ... ok
[INFO] [stdout] test tools::sheet_ref_test::sheet_ref_parses_plain_sheet_name_string ... ok
[INFO] [stdout] test tools::sheet_ref_test::sheet_ref_rejects_invalid_index_value_type ... ok
[INFO] [stdout] test tools::set_range_values_test::set_range_values_rejects_invalid_start_cell ... ok
[INFO] [stdout] test tools::set_range_values_test::set_range_values_propagates_set_cell_errors_for_repeated_non_empty_cell ... ok
[INFO] [stdout] test tools::sheet_ref_test::sheet_ref_rejects_non_integer_number_index ... ok
[INFO] [stdout] test tools::sheet_ref_test::sheet_ref_rejects_non_object_non_string_non_number_value ... ok
[INFO] [stdout] test tools::sheet_ref_test::sheet_ref_rejects_invalid_shape ... ok
[INFO] [stdout] test tools::sheet_ref_test::sheet_ref_rejects_invalid_index_string ... ok
[INFO] [stdout] test tools::sheet_ref_test::sheet_ref_rejects_non_string_name ... ok
[INFO] [stdout] test tools::sheet_ref_test::sheet_ref_rejects_invalid_json_encoded_sheet_object_string ... ok
[INFO] [stdout] test tools::set_range_values_test::set_range_values_propagates_resolve_anchor_xml_errors ... ok
[INFO] [stdout] test tools::set_range_values_test::set_range_values_reports_zero_columns_for_empty_data ... ok
[INFO] [stdout] test tools::set_range_values_test::set_range_values_reports_written_shape ... ok
[INFO] [stdout] test tools::set_cell_value_test::set_cell_value_supports_number_boolean_and_empty_values ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 144 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.66s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests mcp_ods
[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" "84cf4f1ec17e18aa1983b2943830963e45b9ff1bd4769f4e55d1634e414344c4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "84cf4f1ec17e18aa1983b2943830963e45b9ff1bd4769f4e55d1634e414344c4", kill_on_drop: false }`
[INFO] [stdout] 84cf4f1ec17e18aa1983b2943830963e45b9ff1bd4769f4e55d1634e414344c4
