[INFO] cloning repository https://github.com/rust-mcp-stack/rust-mcp-filesystem
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/rust-mcp-stack/rust-mcp-filesystem" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frust-mcp-stack%2Frust-mcp-filesystem", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frust-mcp-stack%2Frust-mcp-filesystem'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d374610bde0c870324f715d166a80df869d75d1b
[INFO] testing rust-mcp-stack/rust-mcp-filesystem against master#0d162b25edd5bf0dba9a22e83b614f1113e90474 for pr-150681
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frust-mcp-stack%2Frust-mcp-filesystem" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-6-tc1/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/rust-mcp-stack/rust-mcp-filesystem
[INFO] finished tweaking git repo https://github.com/rust-mcp-stack/rust-mcp-filesystem
[INFO] tweaked toml for git repo https://github.com/rust-mcp-stack/rust-mcp-filesystem written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/rust-mcp-stack/rust-mcp-filesystem on toolchain 0d162b25edd5bf0dba9a22e83b614f1113e90474
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/rust-mcp-stack/rust-mcp-filesystem 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" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded grep-matcher v0.1.8
[INFO] [stderr]   Downloaded grep-regex v0.1.14
[INFO] [stderr]   Downloaded encoding_rs_io v0.1.7
[INFO] [stderr]   Downloaded grep v0.3.2
[INFO] [stderr]   Downloaded rust-mcp-transport v0.8.0
[INFO] [stderr]   Downloaded rust-mcp-macros v0.8.0
[INFO] [stderr]   Downloaded globset v0.4.18
[INFO] [stderr]   Downloaded grep-cli v0.1.12
[INFO] [stderr]   Downloaded liblzma v0.4.5
[INFO] [stderr]   Downloaded grep-printer v0.2.2
[INFO] [stderr]   Downloaded grep-searcher v0.1.16
[INFO] [stderr]   Downloaded async_zip v0.0.18
[INFO] [stderr]   Downloaded rust-mcp-sdk v0.8.1
[INFO] [stderr]   Downloaded rust-mcp-schema v0.9.4
[INFO] [stderr]   Downloaded liblzma-sys v0.4.4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 3b443b54dc644cc52365667311a233b920c44c91d2e58ddbbf700320e523d217
[INFO] running `Command { std: "docker" "start" "-a" "3b443b54dc644cc52365667311a233b920c44c91d2e58ddbbf700320e523d217", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3b443b54dc644cc52365667311a233b920c44c91d2e58ddbbf700320e523d217", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3b443b54dc644cc52365667311a233b920c44c91d2e58ddbbf700320e523d217", kill_on_drop: false }`
[INFO] [stdout] 3b443b54dc644cc52365667311a233b920c44c91d2e58ddbbf700320e523d217
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] cca318fdd76919a800b8165e931da9d96799bf3e3193d45a4eb74e372002df6f
[INFO] running `Command { std: "docker" "start" "-a" "cca318fdd76919a800b8165e931da9d96799bf3e3193d45a4eb74e372002df6f", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]    Compiling quote v1.0.41
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling generic-array v0.14.9
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling log v0.4.28
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling simd-adler32 v0.3.7
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling grep-matcher v0.1.8
[INFO] [stderr]    Compiling libbz2-rs-sys v0.2.2
[INFO] [stderr]    Compiling syn v2.0.108
[INFO] [stderr]    Compiling flate2 v1.1.5
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling cc v1.2.44
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling signal-hook-registry v1.4.6
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling socket2 v0.6.1
[INFO] [stderr]    Compiling mio v1.1.0
[INFO] [stderr]    Compiling uuid v1.18.1
[INFO] [stderr]    Compiling bzip2 v0.6.1
[INFO] [stderr]    Compiling memmap2 v0.9.9
[INFO] [stderr]    Compiling encoding_rs_io v0.1.7
[INFO] [stderr]    Compiling anstyle-query v1.1.4
[INFO] [stderr]    Compiling deranged v0.5.5
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling time-core v0.1.6
[INFO] [stderr]    Compiling num_threads v0.1.7
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling liblzma-sys v0.4.4
[INFO] [stderr]    Compiling futures-lite v2.6.1
[INFO] [stderr]    Compiling clap_builder v4.5.51
[INFO] [stderr]    Compiling time v0.3.44
[INFO] [stderr]    Compiling cfb v0.7.3
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling rayon v1.11.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling grep-searcher v0.1.16
[INFO] [stderr]    Compiling grep-cli v0.1.12
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling tokio v1.48.0
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]    Compiling liblzma v0.4.5
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]    Compiling grep-regex v0.1.14
[INFO] [stderr]    Compiling infer v0.19.0
[INFO] [stderr]    Compiling rust-mcp-schema v0.9.4
[INFO] [stderr]    Compiling rust-mcp-macros v0.8.0
[INFO] [stderr]    Compiling pin-project v1.1.10
[INFO] [stderr]    Compiling grep-printer v0.2.2
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling glob-match v0.2.1
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling clap v4.5.51
[INFO] [stderr]    Compiling grep v0.3.2
[INFO] [stderr]    Compiling zstd v0.13.3
[INFO] [stderr]    Compiling compression-codecs v0.4.31
[INFO] [stderr]    Compiling tokio-stream v0.1.17
[INFO] [stderr]    Compiling tokio-util v0.7.16
[INFO] [stderr]    Compiling async-compression v0.4.32
[INFO] [stderr]    Compiling async_zip v0.0.18
[INFO] [stderr]    Compiling rust-mcp-transport v0.8.0
[INFO] [stderr]    Compiling rust-mcp-sdk v0.8.1
[INFO] [stderr]    Compiling rust-mcp-filesystem v0.4.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `arg` and `command`
[INFO] [stdout]  --> src/cli.rs:1:20
[INFO] [stdout]   |
[INFO] [stdout] 1 | use clap::{Parser, arg, command};
[INFO] [stdout]   |                    ^^^  ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 14s
[INFO] running `Command { std: "docker" "inspect" "cca318fdd76919a800b8165e931da9d96799bf3e3193d45a4eb74e372002df6f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cca318fdd76919a800b8165e931da9d96799bf3e3193d45a4eb74e372002df6f", kill_on_drop: false }`
[INFO] [stdout] cca318fdd76919a800b8165e931da9d96799bf3e3193d45a4eb74e372002df6f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 32614934c31152af1a4900bf8fd68df3cc7977a04e019b28d3138326222b3b3b
[INFO] running `Command { std: "docker" "start" "-a" "32614934c31152af1a4900bf8fd68df3cc7977a04e019b28d3138326222b3b3b", kill_on_drop: false }`
[INFO] [stderr]    Compiling futures-lite v2.6.1
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling async_zip v0.0.18
[INFO] [stderr]    Compiling tempfile v3.23.0
[INFO] [stderr]    Compiling rust-mcp-filesystem v0.4.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `arg` and `command`
[INFO] [stdout]  --> src/cli.rs:1:20
[INFO] [stdout]   |
[INFO] [stdout] 1 | use clap::{Parser, arg, command};
[INFO] [stdout]   |                    ^^^  ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `arg` and `command`
[INFO] [stdout]  --> src/cli.rs:1:20
[INFO] [stdout]   |
[INFO] [stdout] 1 | use clap::{Parser, arg, command};
[INFO] [stdout]   |                    ^^^  ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 33.15s
[INFO] running `Command { std: "docker" "inspect" "32614934c31152af1a4900bf8fd68df3cc7977a04e019b28d3138326222b3b3b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "32614934c31152af1a4900bf8fd68df3cc7977a04e019b28d3138326222b3b3b", kill_on_drop: false }`
[INFO] [stdout] 32614934c31152af1a4900bf8fd68df3cc7977a04e019b28d3138326222b3b3b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] c95755b0a236a73c27dd1effb547445d6b2806df6306eb600b0fe1c7fb4c4674
[INFO] running `Command { std: "docker" "start" "-a" "c95755b0a236a73c27dd1effb547445d6b2806df6306eb600b0fe1c7fb4c4674", kill_on_drop: false }`
[INFO] [stderr] warning: unused imports: `arg` and `command`
[INFO] [stderr]  --> src/cli.rs:1:20
[INFO] [stderr]   |
[INFO] [stderr] 1 | use clap::{Parser, arg, command};
[INFO] [stderr]   |                    ^^^  ^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `rust-mcp-filesystem` (lib) generated 1 warning (run `cargo fix --lib -p rust-mcp-filesystem` to apply 1 suggestion)
[INFO] [stderr] warning: `rust-mcp-filesystem` (lib test) generated 1 warning (1 duplicate)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.25s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rust_mcp_filesystem-e48fd52e201c43b4)
[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/rust_mcp_filesystem-2eff652d06b2ef3f)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/main_test.rs (/opt/rustwide/target/debug/deps/main_test-04f70321018f7e95)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/test_cli.rs (/opt/rustwide/target/debug/deps/test_cli-17ef4cf5050d8721)
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test test_invalid_flag ... ok
[INFO] [stdout] test test_parse_with_multiple_directories ... ok
[INFO] [stdout] test test_parse_with_single_directory ... ok
[INFO] [stdout] test test_missing_required_directories ... ok
[INFO] [stdout] test test_parse_with_write_flag_long ... ok
[INFO] [stdout] test test_help_flag ... ok
[INFO] [stdout] test test_parse_with_write_flag_short ... ok
[INFO] [stdout] test test_version_flag ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/test_fs_service.rs (/opt/rustwide/target/debug/deps/test_fs_service-8eda018dcc3a21b3)
[INFO] [stdout] 
[INFO] [stdout] running 112 tests
[INFO] [stdout] test adhock ... ok
[INFO] [stdout] test test_apply_file_edits_dry_run ... ok
[INFO] [stdout] test test_allowed_directories ... ok
[INFO] [stdout] test test_apply_file_edits_mixed_indentation_2 ... ok
[INFO] [stdout] test test_apply_file_edits_mixed_indentation ... ok
[INFO] [stdout] test test_apply_file_edits ... ok
[INFO] [stdout] test test_contains_symlink_no_symlink ... ok
[INFO] [stdout] test test_calculate_directory_size_invalid_path ... ok
[INFO] [stdout] test test_calculate_directory_size_nested_files ... ok
[INFO] [stdout] test test_apply_file_edits_no_match ... ok
[INFO] [stdout] test test_contains_symlink_with_symlink ... ok
[INFO] [stdout] test test_display_format_for_empty_timestamps ... ok
[INFO] [stdout] test test_calculate_directory_size_normal ... ok
[INFO] [stdout] test test_calculate_directory_size_empty_dir ... ok
[INFO] [stdout] test test_create_unified_diff ... ok
[INFO] [stdout] test test_create_directory ... ok
[INFO] [stdout] test test_display_format_for_file ... ok
[INFO] [stdout] test test_expand_home ... ok
[INFO] [stdout] test test_dry_run_mode ... ok
[INFO] [stdout] test test_exact_snippet_end ... ok
[INFO] [stdout] test test_extract_snippet_bug_37 ... ok
[INFO] [stdout] test test_file_info_for_regular_file ... ok
[INFO] [stdout] test test_exact_match ... ok
[INFO] [stdout] test test_file_info_for_directory ... ok
[INFO] [stdout] test test_exact_match_edit2 ... ok
[INFO] [stdout] test test_diff_backtick_formatting ... ok
[INFO] [stdout] test test_find_duplicate_files_invalid_path ... ok
[INFO] [stdout] test test_find_duplicate_files_nested_duplicates ... ok
[INFO] [stdout] test test_find_duplicate_files_empty_dir ... ok
[INFO] [stdout] test test_find_empty_directories_empty_root ... ok
[INFO] [stdout] test test_find_duplicate_files_no_duplicates ... ok
[INFO] [stdout] test test_find_duplicate_files_with_exclude_patterns ... ok
[INFO] [stdout] test test_find_duplicate_files_normal ... ok
[INFO] [stdout] test test_find_duplicate_files_size_filters ... ok
[INFO] [stdout] test test_find_duplicate_files_with_pattern ... ok
[INFO] [stdout] test test_find_empty_directories_invalid_path ... ok
[INFO] [stdout] test test_format_permissions_unix ... ok
[INFO] [stdout] test test_format_system_time ... ok
[INFO] [stdout] test test_format_bytes ... ok
[INFO] [stdout] test test_find_empty_directories_no_empty_dirs ... ok
[INFO] [stdout] test test_get_file_stats ... ok
[INFO] [stdout] test test_find_empty_directories_exclude_patterns ... ok
[INFO] [stdout] test test_find_empty_directories_normal ... ok
[INFO] [stdout] test test_find_empty_directories_exclude_patterns_2 ... ok
[INFO] [stdout] test test_head_file_invalid_path ... ok
[INFO] [stdout] test test_head_file_n_larger_than_file ... ok
[INFO] [stdout] test test_head_file_n_zero ... ok
[INFO] [stdout] test test_head_file_no_trailing_newline ... ok
[INFO] [stdout] test test_head_file_normal ... ok
[INFO] [stdout] test test_match_near_start_short_line ... ok
[INFO] [stdout] test test_line_by_line_match_with_indent ... ok
[INFO] [stdout] test test_head_file_single_line ... ok
[INFO] [stdout] test test_list_directory ... ok
[INFO] [stdout] test test_match_triggers_only_end_ellipsis ... ok
[INFO] [stdout] test test_match_triggers_only_start_ellipsis ... ok
[INFO] [stdout] test test_move_file ... ok
[INFO] [stdout] test test_normalize_line_endings ... ok
[INFO] [stdout] test test_head_file_windows_line_endings ... ok
[INFO] [stdout] test test_normalize_path ... ok
[INFO] [stdout] test test_no_edits_provided ... ok
[INFO] [stdout] test test_panic_on_out_of_bounds_edit ... ok
[INFO] [stdout] test test_preserve_windows_line_endings ... ok
[INFO] [stdout] test test_preserve_unix_line_endings ... ok
[INFO] [stdout] test test_read_file ... ok
[INFO] [stdout] test test_read_file_lines_invalid_path ... ok
[INFO] [stdout] test test_read_file_lines_empty_file ... ok
[INFO] [stdout] test test_head_file_empty_file ... ok
[INFO] [stdout] test test_read_file_lines_offset_beyond_file ... ok
[INFO] [stdout] test test_read_file_lines_windows_line_endings ... ok
[INFO] [stdout] test test_read_text_file_with_line_numbers ... ok
[INFO] [stdout] test test_read_text_file_with_line_numbers_empty_file ... ok
[INFO] [stdout] test test_read_text_file_with_line_numbers_large_file ... ok
[INFO] [stdout] test test_read_file_lines_exact_file_length ... ok
[INFO] [stdout] test test_read_file_lines_limit_zero ... ok
[INFO] [stdout] test test_read_file_lines_no_limit ... ok
[INFO] [stdout] test test_read_file_lines_normal ... ok
[INFO] [stdout] test test_read_file_lines_no_newline_at_end ... ok
[INFO] [stdout] test test_read_text_file_without_line_numbers ... ok
[INFO] [stdout] test test_save_to_different_path ... ok
[INFO] [stdout] test test_read_text_file_with_line_numbers_no_trailing_newline ... ok
[INFO] [stdout] test test_read_text_file_with_line_numbers_single_newline_unix ... ok
[INFO] [stdout] test test_read_text_file_with_line_numbers_single_line ... ok
[INFO] [stdout] test test_search_files ... ok
[INFO] [stdout] test test_search_files_with_exclude ... ok
[INFO] [stdout] test test_search_files_brace_expanded_github_issue_50 ... ok
[INFO] [stdout] test test_read_text_file_with_line_numbers_single_newline_windows ... ok
[INFO] [stdout] test test_snippet_back_chars ... ok
[INFO] [stdout] test test_tail_file_empty_file ... ok
[INFO] [stdout] test test_tail_file_invalid_path ... ok
[INFO] [stdout] test test_read_text_file_with_line_numbers_windows_line_endings ... ok
[INFO] [stdout] test test_tail_file_single_line ... ok
[INFO] [stdout] test test_tail_file_normal ... ok
[INFO] [stdout] test test_trim_applied ... ok
[INFO] [stdout] test test_try_new_success ... ok
[INFO] [stdout] test test_tail_file_n_zero ... ok
[INFO] [stdout] test test_tail_file_n_larger_than_file ... ok
[INFO] [stdout] test test_unzip_file_non_existent ... ok
[INFO] [stdout] test test_validate_path_allowed ... ok
[INFO] [stdout] test test_validate_path_denied ... ok
[INFO] [stdout] test test_tail_file_windows_line_endings ... ok
[INFO] [stdout] test test_write_zip_entry_non_existent_file ... ok
[INFO] [stdout] test test_write_file ... ok
[INFO] [stdout] test test_tail_file_no_newline_at_end ... ok
[INFO] [stdout] test test_zip_directory_already_exists ... ok
[INFO] [stdout] test test_zip_files_empty_input ... ok
[INFO] [stdout] test test_unzip_file ... ok
[INFO] [stdout] test test_write_zip_entry ... ok
[INFO] [stdout] test test_zip_directory ... ok
[INFO] [stdout] test test_zip_files ... ok
[INFO] [stdout] test test_content_search ... ok
[INFO] [stdout] test search_files_content ... ok
[INFO] [stdout] test test_try_new_invalid_directory - should panic ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 112 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.24s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/test_tools.rs (/opt/rustwide/target/debug/deps/test_tools-379771d7313aa0d2)
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test adhoc ... ok
[INFO] [stdout] test test_create_directory_new_directory ... ok
[INFO] [stdout] test test_create_directory_nested ... ok
[INFO] [stdout] test test_create_directory_outside_allowed ... ok
[INFO] [stdout] test ensure_tools_duplication ... ok
[INFO] [stdout] test test_create_directory_existing_directory ... ok
[INFO] [stdout] test test_create_directory_invalid_path ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests rust_mcp_filesystem
[INFO] [stdout] 
[INFO] [stdout] running 27 tests
[INFO] [stdout] test src/tools/calculate_directory_size.rs - tools::calculate_directory_size::CalculateDirectorySize::request_params (line 21) ... ignored
[INFO] [stdout] test src/tools/create_directory.rs - tools::create_directory::CreateDirectory::request_params (line 14) ... ignored
[INFO] [stdout] test src/tools/directory_tree.rs - tools::directory_tree::DirectoryTree::request_params (line 14) ... ignored
[INFO] [stdout] test src/tools/edit_file.rs - tools::edit_file::EditFile::request_params (line 25) ... ignored
[INFO] [stdout] test src/tools/find_duplicate_files.rs - tools::find_duplicate_files::FindDuplicateFiles::request_params (line 14) ... ignored
[INFO] [stdout] test src/tools/find_empty_directories.rs - tools::find_empty_directories::FindEmptyDirectories::request_params (line 16) ... ignored
[INFO] [stdout] test src/tools/get_file_info.rs - tools::get_file_info::GetFileInfo::request_params (line 14) ... ignored
[INFO] [stdout] test src/tools/head_file.rs - tools::head_file::HeadFile::request_params (line 16) ... ignored
[INFO] [stdout] test src/tools/list_allowed_directories.rs - tools::list_allowed_directories::ListAllowedDirectories::request_params (line 12) ... ignored
[INFO] [stdout] test src/tools/list_directory.rs - tools::list_directory::ListDirectory::request_params (line 14) ... ignored
[INFO] [stdout] test src/tools/list_directory_with_sizes.rs - tools::list_directory_with_sizes::ListDirectoryWithSizes::request_params (line 15) ... ignored
[INFO] [stdout] test src/tools/move_file.rs - tools::move_file::MoveFile::request_params (line 14) ... ignored
[INFO] [stdout] test src/tools/read_file_lines.rs - tools::read_file_lines::ReadFileLines::request_params (line 16) ... ignored
[INFO] [stdout] test src/tools/read_media_file.rs - tools::read_media_file::ReadMediaFile::request_params (line 15) ... ignored
[INFO] [stdout] test src/tools/read_multiple_media_files.rs - tools::read_multiple_media_files::ReadMultipleMediaFiles::request_params (line 11) ... ignored
[INFO] [stdout] test src/tools/read_multiple_text_files.rs - tools::read_multiple_text_files::ReadMultipleTextFiles::request_params (line 13) ... ignored
[INFO] [stdout] test src/tools/read_text_file.rs - tools::read_text_file::ReadTextFile::request_params (line 14) ... ignored
[INFO] [stdout] test src/tools/search_file.rs - tools::search_file::SearchFiles::request_params (line 13) ... ignored
[INFO] [stdout] test src/tools/search_files_content.rs - tools::search_files_content::SearchFilesContent::request_params (line 12) ... ignored
[INFO] [stdout] test src/tools/tail_file.rs - tools::tail_file::TailFile::request_params (line 16) ... ignored
[INFO] [stdout] test src/tools/write_file.rs - tools::write_file::WriteFile::request_params (line 15) ... ignored
[INFO] [stdout] test src/tools/zip_unzip.rs - tools::zip_unzip::UnzipFile::request_params (line 52) ... ignored
[INFO] [stdout] test src/tools/zip_unzip.rs - tools::zip_unzip::ZipDirectory::request_params (line 89) ... ignored
[INFO] [stdout] test src/tools/zip_unzip.rs - tools::zip_unzip::ZipFiles::request_params (line 12) ... ignored
[INFO] [stdout] test src/macros.rs - macros::invoke_tools (line 22) ... FAILED
[INFO] [stdout] test src/macros.rs - macros::invoke_tools (line 31) ... FAILED
[INFO] [stdout] test src/macros.rs - macros::invoke_tools (line 16) ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- src/macros.rs - macros::invoke_tools (line 22) stdout ----
[INFO] [stdout] error: cannot find macro `match_filesystem_tools` in this scope
[INFO] [stdout]   --> src/macros.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | match_filesystem_tools!(
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/macros.rs - macros::invoke_tools (line 31) stdout ----
[INFO] [stdout] error[E0425]: cannot find value `tool_params` in this scope
[INFO] [stdout]   --> src/macros.rs:32:7
[INFO] [stdout]    |
[INFO] [stdout] 32 | match tool_params {
[INFO] [stdout]    |       ^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `FileSystemTools`
[INFO] [stdout]   --> src/macros.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 |     FileSystemTools::ReadMediaFileTool(params) => ReadMediaFileTool::run_tool(params, &self.fs_service).await,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ use of undeclared type `FileSystemTools`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this enum
[INFO] [stdout]    |
[INFO] [stdout] 31 + use rust_mcp_filesystem::tools::FileSystemTools;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0424]: expected value, found module `self`
[INFO] [stdout]   --> src/macros.rs:33:88
[INFO] [stdout]    |
[INFO] [stdout] 31 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_macros_rs_31_0() {
[INFO] [stdout]    |                                         -------------------------------- this function can't have a `self` parameter
[INFO] [stdout] 32 | match tool_params {
[INFO] [stdout] 33 |     FileSystemTools::ReadMediaFileTool(params) => ReadMediaFileTool::run_tool(params, &self.fs_service).await,
[INFO] [stdout]    |                                                                                        ^^^^ `self` value is a keyword only available in methods with a `self` parameter
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `FileSystemTools`
[INFO] [stdout]   --> src/macros.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     FileSystemTools::WriteFileTool(params) => WriteFileTool::run_tool(params, &self.fs_service).await,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ use of undeclared type `FileSystemTools`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this enum
[INFO] [stdout]    |
[INFO] [stdout] 31 + use rust_mcp_filesystem::tools::FileSystemTools;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0424]: expected value, found module `self`
[INFO] [stdout]   --> src/macros.rs:34:80
[INFO] [stdout]    |
[INFO] [stdout] 31 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_macros_rs_31_0() {
[INFO] [stdout]    |                                         -------------------------------- this function can't have a `self` parameter
[INFO] [stdout] ...
[INFO] [stdout] 34 |     FileSystemTools::WriteFileTool(params) => WriteFileTool::run_tool(params, &self.fs_service).await,
[INFO] [stdout]    |                                                                                ^^^^ `self` value is a keyword only available in methods with a `self` parameter
[INFO] [stdout] 
[INFO] [stdout] error[E0728]: `await` is only allowed inside `async` functions and blocks
[INFO] [stdout]   --> src/macros.rs:33:105
[INFO] [stdout]    |
[INFO] [stdout] 31 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_macros_rs_31_0() {
[INFO] [stdout]    |                                      ------------------------------------- this is not `async`
[INFO] [stdout] 32 | match tool_params {
[INFO] [stdout] 33 |     FileSystemTools::ReadMediaFileTool(params) => ReadMediaFileTool::run_tool(params, &self.fs_service).await,
[INFO] [stdout]    |                                                                                                         ^^^^^ only allowed inside `async` functions and blocks
[INFO] [stdout] 
[INFO] [stdout] error[E0728]: `await` is only allowed inside `async` functions and blocks
[INFO] [stdout]   --> src/macros.rs:34:97
[INFO] [stdout]    |
[INFO] [stdout] 31 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_macros_rs_31_0() {
[INFO] [stdout]    |                                      ------------------------------------- this is not `async`
[INFO] [stdout] ...
[INFO] [stdout] 34 |     FileSystemTools::WriteFileTool(params) => WriteFileTool::run_tool(params, &self.fs_service).await,
[INFO] [stdout]    |                                                                                                 ^^^^^ only allowed inside `async` functions and blocks
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `ReadMediaFileTool`
[INFO] [stdout]   --> src/macros.rs:33:51
[INFO] [stdout]    |
[INFO] [stdout] 33 |     FileSystemTools::ReadMediaFileTool(params) => ReadMediaFileTool::run_tool(params, &self.fs_service).await,
[INFO] [stdout]    |                                                   ^^^^^^^^^^^^^^^^^ use of undeclared type `ReadMediaFileTool`
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `WriteFileTool`
[INFO] [stdout]   --> src/macros.rs:34:47
[INFO] [stdout]    |
[INFO] [stdout] 34 |     FileSystemTools::WriteFileTool(params) => WriteFileTool::run_tool(params, &self.fs_service).await,
[INFO] [stdout]    |                                               ^^^^^^^^^^^^^ use of undeclared type `WriteFileTool`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 9 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0424, E0425, E0433, E0728.
[INFO] [stdout] For more information about an error, try `rustc --explain E0424`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/macros.rs - macros::invoke_tools (line 16) stdout ----
[INFO] [stdout] error: expected one of `!`, `+`, `::`, `where`, or `{`, found `}`
[INFO] [stdout]   --> src/macros.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | async fn run_tool(params: ParamsType, fs_service: &FsService) -> ServiceResult<()>
[INFO] [stdout]    |          -------- while parsing this `fn`                                         - expected one of `!`, `+`, `::`, `where`, or `{`
[INFO] [stdout] 18 | } _doctest_main_src_macros_rs_16_0() }
[INFO] [stdout]    | ^ unexpected token
[INFO] [stdout] 
[INFO] [stdout] error: free function without a body
[INFO] [stdout]   --> src/macros.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | async fn run_tool(params: ParamsType, fs_service: &FsService) -> ServiceResult<()>
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- help: provide a definition for the function: `{ <body> }`
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `ParamsType` in this scope
[INFO] [stdout]   --> src/macros.rs:17:27
[INFO] [stdout]    |
[INFO] [stdout] 17 | async fn run_tool(params: ParamsType, fs_service: &FsService) -> ServiceResult<()>
[INFO] [stdout]    |                           ^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `FsService` in this scope
[INFO] [stdout]   --> src/macros.rs:17:52
[INFO] [stdout]    |
[INFO] [stdout] 17 | async fn run_tool(params: ParamsType, fs_service: &FsService) -> ServiceResult<()>
[INFO] [stdout]    |                                                    ^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `ServiceResult` in this scope
[INFO] [stdout]   --> src/macros.rs:17:66
[INFO] [stdout]    |
[INFO] [stdout] 17 | async fn run_tool(params: ParamsType, fs_service: &FsService) -> ServiceResult<()>
[INFO] [stdout]    |                                                                  ^^^^^^^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this type alias
[INFO] [stdout]    |
[INFO] [stdout] 16 + use rust_mcp_filesystem::error::ServiceResult;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 5 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0425`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     src/macros.rs - macros::invoke_tools (line 16)
[INFO] [stdout]     src/macros.rs - macros::invoke_tools (line 22)
[INFO] [stdout]     src/macros.rs - macros::invoke_tools (line 31)
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 0 passed; 3 failed; 24 ignored; 0 measured; 0 filtered out; finished in 0.39s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.65s; merged doctests compilation took 0.26s
[INFO] [stderr] error: doctest failed, to rerun pass `--doc`
[INFO] running `Command { std: "docker" "inspect" "c95755b0a236a73c27dd1effb547445d6b2806df6306eb600b0fe1c7fb4c4674", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c95755b0a236a73c27dd1effb547445d6b2806df6306eb600b0fe1c7fb4c4674", kill_on_drop: false }`
[INFO] [stdout] c95755b0a236a73c27dd1effb547445d6b2806df6306eb600b0fe1c7fb4c4674
