[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#8da20828b6ea601dfd8e2448cb50ace88876bd78 for pr-150933 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdavydbc%2Flibreofficecalcmcp" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-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-0-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/davydbc/libreofficecalcmcp on toolchain 8da20828b6ea601dfd8e2448cb50ace88876bd78 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8da20828b6ea601dfd8e2448cb50ace88876bd78" "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" "+8da20828b6ea601dfd8e2448cb50ace88876bd78" "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:cfa559dde23f44738f9990739aaa3487d8df3af37eb5df0572f7cf76004a604a" "/opt/rustwide/cargo-home/bin/cargo" "+8da20828b6ea601dfd8e2448cb50ace88876bd78" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 33b8be0611f9f2069e8020922ade624f3fa0d618ce6c4fa7f5feb0d7c2679ad8 [INFO] running `Command { std: "docker" "start" "-a" "33b8be0611f9f2069e8020922ade624f3fa0d618ce6c4fa7f5feb0d7c2679ad8", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "33b8be0611f9f2069e8020922ade624f3fa0d618ce6c4fa7f5feb0d7c2679ad8", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "33b8be0611f9f2069e8020922ade624f3fa0d618ce6c4fa7f5feb0d7c2679ad8", kill_on_drop: false }` [INFO] [stdout] 33b8be0611f9f2069e8020922ade624f3fa0d618ce6c4fa7f5feb0d7c2679ad8 [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=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:cfa559dde23f44738f9990739aaa3487d8df3af37eb5df0572f7cf76004a604a" "/opt/rustwide/cargo-home/bin/cargo" "+8da20828b6ea601dfd8e2448cb50ace88876bd78" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 744d6e6ab8f49991d4ccf215c043b0f68b66b00cd656edb8ae61f213d89e28ea [INFO] running `Command { std: "docker" "start" "-a" "744d6e6ab8f49991d4ccf215c043b0f68b66b00cd656edb8ae61f213d89e28ea", kill_on_drop: false }` [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Compiling unicode-ident v1.0.23 [INFO] [stderr] Compiling simd-adler32 v0.3.8 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling zmij v1.0.21 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling regex-syntax v0.8.9 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling bumpalo v3.19.1 [INFO] [stderr] Compiling zip v2.4.2 [INFO] [stderr] Compiling indexmap v2.13.0 [INFO] [stderr] Compiling thread_local v1.1.9 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling xml-rs v0.8.28 [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling zopfli v0.8.3 [INFO] [stderr] Compiling quick-xml v0.37.5 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling flate2 v1.1.9 [INFO] [stderr] Compiling syn v2.0.115 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling xmltree v0.11.0 [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 serde_derive v1.0.228 [INFO] [stderr] Compiling displaydoc v0.2.5 [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 27.65s [INFO] running `Command { std: "docker" "inspect" "744d6e6ab8f49991d4ccf215c043b0f68b66b00cd656edb8ae61f213d89e28ea", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "744d6e6ab8f49991d4ccf215c043b0f68b66b00cd656edb8ae61f213d89e28ea", kill_on_drop: false }` [INFO] [stdout] 744d6e6ab8f49991d4ccf215c043b0f68b66b00cd656edb8ae61f213d89e28ea [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=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:cfa559dde23f44738f9990739aaa3487d8df3af37eb5df0572f7cf76004a604a" "/opt/rustwide/cargo-home/bin/cargo" "+8da20828b6ea601dfd8e2448cb50ace88876bd78" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 2076f67594c8808dc6ed51c52ddb3a7b5beb41a5eb644b3932b00e5bbfaedb50 [INFO] running `Command { std: "docker" "start" "-a" "2076f67594c8808dc6ed51c52ddb3a7b5beb41a5eb644b3932b00e5bbfaedb50", kill_on_drop: false }` [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling getrandom v0.4.1 [INFO] [stderr] Compiling linux-raw-sys v0.11.0 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling fastrand v2.3.0 [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.15s [INFO] running `Command { std: "docker" "inspect" "2076f67594c8808dc6ed51c52ddb3a7b5beb41a5eb644b3932b00e5bbfaedb50", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2076f67594c8808dc6ed51c52ddb3a7b5beb41a5eb644b3932b00e5bbfaedb50", kill_on_drop: false }` [INFO] [stdout] 2076f67594c8808dc6ed51c52ddb3a7b5beb41a5eb644b3932b00e5bbfaedb50 [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=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:cfa559dde23f44738f9990739aaa3487d8df3af37eb5df0572f7cf76004a604a" "/opt/rustwide/cargo-home/bin/cargo" "+8da20828b6ea601dfd8e2448cb50ace88876bd78" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 13302816a431ff794db1ba73855985a828c2078977026612cf90c21b017c8a32 [INFO] running `Command { std: "docker" "start" "-a" "13302816a431ff794db1ba73855985a828c2078977026612cf90c21b017c8a32", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.10s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/mcp_ods-1fcd5e1f6ca7793b) [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] [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 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_app_error_conversions_are_mapped ... 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_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_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_returns_error_when_target_sheet_is_missing ... 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_splits_repeated_empty_cell_preserving_cell_attributes ... 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 common_raw::common_raw_integration_test::common_raw_fs_util_resolve_ods_path_covers_relative_absolute_and_errors ... 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_duplicate_sheet_supports_name_and_index ... ok [INFO] [stdout] test content_xml_raw::content_xml_raw_integration_test::content_xml_raw_duplicate_sheet_validates_error_cases ... 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 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_parse_and_render_workbook_roundtrip ... 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_merged_anchor_maps_covered_cell_to_anchor ... 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 add_sheet::add_sheet_integration_test::add_sheet_rejects_duplicate_name ... ok [INFO] [stdout] test add_sheet::add_sheet_integration_test::add_sheet_can_insert_at_start ... ok [INFO] [stdout] test get_sheets::get_sheets_integration_test::get_sheets_returns_file_not_found_for_missing_path ... 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_allows_direct_tool_invocation_path ... ok [INFO] [stdout] test dispatcher::dispatcher_integration_test::dispatcher_tools_call_accepts_json_encoded_sheet_ref_string ... ok [INFO] [stderr] 2026-03-06T10:50:59.563170Z ERROR mcp_ods::mcp::server: notification handling error: invalid input: unknown method/tool: missing_tool [INFO] [stdout] test delete_sheet::delete_sheet_integration_test::delete_sheet_rejects_deleting_last_sheet ... ok [INFO] [stdout] test dispatcher::dispatcher_integration_test::dispatcher_returns_clear_errors_for_invalid_inputs ... ok [INFO] [stdout] test duplicate_sheet::duplicate_sheet_integration_test::duplicate_sheet_returns_error_for_missing_source ... ok [INFO] [stdout] test server_stdio::server_stdio_integration_test::server_stdio_handles_notification_error_without_response ... ok [INFO] [stdout] test get_cell_value::get_cell_value_integration_test::get_cell_value_rejects_invalid_cell_address ... ok [INFO] [stdout] test add_sheet::add_sheet_integration_test::add_sheet_preserves_existing_automatic_styles_block ... ok [INFO] [stderr] 2026-03-06T10:50:59.575261Z ERROR mcp_ods::mcp::server: 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_ignores_empty_lines_and_continues_processing ... ok [INFO] [stdout] test server_stdio::server_stdio_integration_test::server_stdio_exits_with_error_when_stdout_pipe_is_closed ... ok [INFO] [stdout] test add_sheet::add_sheet_integration_test::add_sheet_inserts_new_sheet_at_end ... 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 server_stdio::server_stdio_integration_test::server_stdio_ignores_notifications_without_id ... ok [INFO] [stdout] test server_stdio::server_stdio_integration_test::server_stdio_supports_initialize_and_tools_call_flow ... 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 rename_sheet::rename_sheet_integration_test::rename_sheet_renames_target_sheet ... ok [INFO] [stdout] test duplicate_sheet::duplicate_sheet_integration_test::duplicate_sheet_creates_named_copy ... 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 duplicate_sheet::duplicate_sheet_integration_test::duplicate_sheet_preserves_style_attributes ... 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_inside_merged_range_writes_anchor_cell ... 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 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_skips_covered_cells_and_writes_after_them ... ok [INFO] [stdout] test get_sheet_content::get_sheet_content_integration_test::get_sheet_content_supports_trailing_trim_and_limits ... 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_range_values::set_range_values_integration_test::set_range_values_rejects_invalid_sheet ... 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 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_updates_and_persists_value ... 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_rejects_invalid_start_cell ... ok [INFO] [stdout] test set_range_values::set_range_values_integration_test::set_range_values_writes_matrix_from_start_cell ... 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_splits_repeated_row_and_only_updates_target ... 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_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_second_sheet_only ... 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_preserves_unrelated_existing_styles ... 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_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] [INFO] [stdout] test result: ok. 76 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.40s [INFO] [stdout] [INFO] [stderr] Running test/unit/mod.rs (/opt/rustwide/target/debug/deps/unit-6e0a15e7c8790462) [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_from_value_returns_invalid_input_error ... ok [INFO] [stdout] test common::json_test::json_roundtrip_works ... 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 mcp::dispatcher_test::dispatch_unknown_tool_returns_error ... ok [INFO] [stdout] test mcp::protocol_test::protocol_request_deserializes_minimal_payload ... ok [INFO] [stdout] test mcp::dispatcher_test::dispatch_tools_list_returns_registered_tools ... ok [INFO] [stdout] test mcp::dispatcher_test::dispatch_initialize_returns_server_info ... ok [INFO] [stdout] test mcp::protocol_test::protocol_success_response_serializes_without_error_field ... ok [INFO] [stdout] test ods::cell_address_test::invalid_cell_address_is_rejected ... 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_returns_error_for_malformed_xml ... 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::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_deletes_by_index ... ok [INFO] [stdout] test ods::cell_address_test::parse_and_format_cell_address ... 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::content_xml_parse_concatenates_multiple_text_nodes_in_single_cell ... ok [INFO] [stdout] test ods::content_xml_test::delete_sheet_preserving_styles_raw_rejects_deleting_last_sheet ... ok [INFO] [stdout] test ods::content_xml_test::duplicate_sheet_preserving_styles_raw_requires_source_selector ... 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_supports_name_and_index ... 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::rename_sheet_preserving_styles_raw_renames_by_name_and_keeps_order ... 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::content_xml_render_and_parse_preserves_basic_values ... ok [INFO] [stdout] test ods::content_xml_test::duplicate_sheet_preserving_styles_raw_supports_plain_name_attribute ... ok [INFO] [stdout] test ods::content_xml_test::duplicate_sheet_preserving_styles_raw_validates_inputs ... 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_first_sheet_name_raw_requires_table_name_attribute ... 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::resolve_merged_anchor_raw_returns_target_on_repeated_empty_row ... ok [INFO] [stdout] test ods::content_xml_test::rename_sheet_preserving_styles_raw_requires_source_selector ... 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::set_cell_value_preserving_styles_raw_does_not_materialize_many_rows ... 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::set_cell_value_preserving_styles_raw_errors_when_sheet_index_does_not_exist ... 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_handles_nested_table_cell_tags_inside_target_cell ... 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_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_handles_invalid_repeat_number ... 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_repeated_row_capture_writes_after_target_gap ... 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_splits_repeated_row_and_updates_middle_copy ... 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_rejects_non_empty_repeated_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_returns_error_for_covered_cell_in_repeated_row ... 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_splits_repeated_empty_row_with_before_and_after ... 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_on_row_end_when_target_is_after_existing_cells ... 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_updates_selected_sheet_index ... 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::set_cell_value_preserving_styles_raw_writes_inside_second_sheet_when_first_is_self_closing ... 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::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::sheet_model_test::workbook_sheet_index_by_name_returns_expected_index ... ok [INFO] [stdout] test ods::ods_templates_test::ods_templates_expose_expected_static_assets ... ok [INFO] [stdout] test ods::ods_templates_test::ods_templates_content_xml_renders_initial_sheet ... 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 tools::create_ods_test::create_ods_respects_overwrite_flag ... ok [INFO] [stdout] test mcp::server_stdio_test::stdio_server_handles_initialize_and_tools_list ... ok [INFO] [stdout] test tools::create_ods_test::create_ods_rejects_non_ods_extension ... 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_creates_parent_directories_when_missing ... ok [INFO] [stdout] test tools::create_ods_test::create_ods_creates_file ... ok [INFO] [stdout] test tools::duplicate_sheet_test::duplicate_sheet_returns_file_not_found_for_missing_path ... ok [INFO] [stdout] test mcp::server_stdio_test::stdio_server_ignores_notification_without_id ... ok [INFO] [stdout] test ods::ods_file_test::ods_file_create_and_read_workbook_roundtrip ... ok [INFO] [stdout] test ods::ods_file_test::ods_file_write_workbook_persists_new_values ... ok [INFO] [stdout] test ods::ods_file_test::ods_file_write_content_xml_adds_default_mimetype_when_missing ... 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_returns_not_found_for_missing_file ... ok [INFO] [stdout] test tools::get_cell_value_test::get_cell_value_rejects_invalid_address ... ok [INFO] [stdout] test tools::get_cell_value_test::get_cell_value_returns_error_for_invalid_sheet_index ... ok [INFO] [stdout] test tools::add_sheet_test::add_sheet_uses_end_as_default_position_when_omitted ... ok [INFO] [stdout] test tools::get_sheet_content_test::get_sheet_content_returns_not_found_for_missing_file ... 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_rejects_duplicate_name ... ok [INFO] [stdout] test tools::add_sheet_test::add_sheet_appends_new_sheet ... ok [INFO] [stdout] test tools::get_cell_value_test::get_cell_value_reads_number_and_boolean_types ... ok [INFO] [stdout] test tools::get_cell_value_test::get_cell_value_returns_empty_for_unset_cell ... ok [INFO] [stdout] test tools::duplicate_sheet_test::duplicate_sheet_supports_source_by_index ... ok [INFO] [stdout] test tools::get_sheet_content_test::get_sheet_content_rejects_unsupported_mode ... ok [INFO] [stdout] test tools::get_sheets_test::get_sheets_rejects_non_ods_path_extension ... ok [INFO] [stdout] test tools::get_sheet_content_test::get_sheet_content_returns_matrix ... 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::ods_file_test::ods_file_write_content_xml_updates_entry_and_keeps_other_files ... ok [INFO] [stdout] test tools::duplicate_sheet_test::duplicate_sheet_creates_copy_after_source ... ok [INFO] [stdout] test mcp::server_stdio_test::stdio_server_returns_invalid_input_for_malformed_tools_call_payload ... ok [INFO] [stdout] test tools::get_sheet_content_test::get_sheet_content_keeps_trailing_area_when_requested ... ok [INFO] [stdout] test tools::set_cell_value_test::set_cell_value_returns_file_not_found_for_missing_file ... ok [INFO] [stdout] test tools::get_sheets_test::get_sheets_returns_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::add_sheet_test::add_sheet_can_insert_at_start ... ok [INFO] [stdout] test tools::get_sheet_content_test::get_sheet_content_uses_default_mode_and_limits ... ok [INFO] [stdout] test tools::set_cell_value_test::set_cell_value_returns_error_for_invalid_cell_address ... 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_updates_single_cell ... ok [INFO] [stdout] test tools::set_cell_value_test::set_cell_value_propagates_resolve_anchor_xml_errors ... ok [INFO] [stdout] test tools::get_sheet_content_test::get_sheet_content_stringifies_number_and_boolean_values ... ok [INFO] [stdout] test tools::delete_sheet_test::delete_sheet_removes_selected_sheet ... ok [INFO] [stdout] test tools::get_sheets_test::get_sheets_returns_created_sheet ... 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_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_string ... ok [INFO] [stdout] test tools::sheet_ref_test::sheet_ref_rejects_invalid_index_value_type ... 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_json_encoded_sheet_object_string ... 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::set_range_values_test::set_range_values_reports_written_shape ... ok [INFO] [stdout] test tools::sheet_ref_test::sheet_ref_parses_object_by_name ... ok [INFO] [stdout] test tools::set_range_values_test::set_range_values_accepts_sheet_name_reference ... ok [INFO] [stdout] test tools::set_range_values_test::set_range_values_rejects_invalid_sheet_name ... 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_returns_file_not_found_for_missing_file ... ok [INFO] [stdout] test tools::set_range_values_test::set_range_values_propagates_resolve_anchor_xml_errors ... ok [INFO] [stdout] test tools::sheet_ref_test::sheet_ref_rejects_invalid_json_encoded_sheet_object_string ... ok [INFO] [stdout] test tools::sheet_ref_test::sheet_ref_rejects_invalid_shape ... ok [INFO] [stdout] test tools::sheet_ref_test::sheet_ref_rejects_non_object_non_string_non_number_value ... ok [INFO] [stdout] test tools::rename_sheet_test::rename_sheet_renames_selected_sheet ... ok [INFO] [stdout] test tools::sheet_ref_test::sheet_ref_rejects_non_integer_number_index ... 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_range_values_test::set_range_values_reports_zero_columns_for_empty_data ... ok [INFO] [stdout] test tools::rename_sheet_test::rename_sheet_rejects_duplicate_name ... ok [INFO] [stdout] test tools::set_cell_value_test::set_cell_value_supports_number_boolean_and_empty_values ... ok [INFO] [stdout] test tools::sheet_ref_test::sheet_ref_rejects_non_string_name ... ok [INFO] [stderr] Doc-tests mcp_ods [INFO] [stdout] [INFO] [stdout] test result: ok. 144 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.71s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "13302816a431ff794db1ba73855985a828c2078977026612cf90c21b017c8a32", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "13302816a431ff794db1ba73855985a828c2078977026612cf90c21b017c8a32", kill_on_drop: false }` [INFO] [stdout] 13302816a431ff794db1ba73855985a828c2078977026612cf90c21b017c8a32