[INFO] cloning repository https://github.com/jac32/ent [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jac32/ent" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjac32%2Fent", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjac32%2Fent'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 6f67408f2970a37c741496fef4c0561703650c1c [INFO] testing jac32/ent against try#dec9417b8611e34e787a3e4c37686b5131f9e5c5 for pr-154210 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjac32%2Fent" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/jac32/ent [INFO] finished tweaking git repo https://github.com/jac32/ent [INFO] tweaked toml for git repo https://github.com/jac32/ent written to /workspace/builds/worker-4-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/jac32/ent on toolchain dec9417b8611e34e787a3e4c37686b5131f9e5c5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/jac32/ent 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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] a36236c770fae6fe7bc7a79d434f0a3757915fa5471234a044348ab1048b03b1 [INFO] running `Command { std: "docker" "start" "-a" "a36236c770fae6fe7bc7a79d434f0a3757915fa5471234a044348ab1048b03b1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "a36236c770fae6fe7bc7a79d434f0a3757915fa5471234a044348ab1048b03b1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a36236c770fae6fe7bc7a79d434f0a3757915fa5471234a044348ab1048b03b1", kill_on_drop: false }` [INFO] [stdout] a36236c770fae6fe7bc7a79d434f0a3757915fa5471234a044348ab1048b03b1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] f08d148e736f29b94a3543a5e81fbec65bcce77338b9368db57c9e45274e207d [INFO] running `Command { std: "docker" "start" "-a" "f08d148e736f29b94a3543a5e81fbec65bcce77338b9368db57c9e45274e207d", kill_on_drop: false }` [INFO] [stderr] Compiling shlex v1.3.0 [INFO] [stderr] Compiling find-msvc-tools v0.1.9 [INFO] [stderr] Compiling tree-sitter-language v0.1.7 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Compiling unicode-ident v1.0.24 [INFO] [stderr] Compiling libc v0.2.183 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling cc v1.2.56 [INFO] [stderr] Compiling object v0.37.3 [INFO] [stderr] Compiling cfg-if v1.0.4 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling gimli v0.32.3 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling adler2 v2.0.1 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling utf8parse v0.2.2 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling anstyle-parse v0.2.7 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling crossbeam-epoch v0.9.18 [INFO] [stderr] Compiling owo-colors v4.3.0 [INFO] [stderr] Compiling arborium-javascript v2.15.0 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling arborium-tree-sitter v2.15.0 [INFO] [stderr] Compiling arborium-c v2.15.0 [INFO] [stderr] Compiling arborium-css v2.15.0 [INFO] [stderr] Compiling addr2line v0.25.1 [INFO] [stderr] Compiling arborium-java v2.15.0 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling arborium-go v2.15.0 [INFO] [stderr] Compiling arborium-tsx v2.14.0 [INFO] [stderr] Compiling arborium-cpp v2.14.0 [INFO] [stderr] Compiling arborium-sql v2.15.0 [INFO] [stderr] Compiling arborium-typescript v2.14.0 [INFO] [stderr] Compiling arborium-yaml v2.15.0 [INFO] [stderr] Compiling arborium-xml v2.15.0 [INFO] [stderr] Compiling arborium-toml v2.15.0 [INFO] [stderr] Compiling arborium-rust v2.15.0 [INFO] [stderr] Compiling arborium-json v2.15.0 [INFO] [stderr] Compiling arborium-python v2.15.0 [INFO] [stderr] Compiling arborium-ruby v2.15.0 [INFO] [stderr] Compiling arborium-html v2.14.0 [INFO] [stderr] Compiling arborium-zig v2.15.0 [INFO] [stderr] Compiling arborium-lua v2.15.0 [INFO] [stderr] Compiling arborium-bash v2.15.0 [INFO] [stderr] Compiling streaming-iterator v0.1.9 [INFO] [stderr] Compiling is_terminal_polyfill v1.70.2 [INFO] [stderr] Compiling anstyle v1.0.13 [INFO] [stderr] Compiling zmij v1.0.21 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling anstyle-query v1.1.5 [INFO] [stderr] Compiling rustc-demangle v0.1.27 [INFO] [stderr] Compiling colorchoice v1.0.4 [INFO] [stderr] Compiling anstream v0.6.21 [INFO] [stderr] Compiling backtrace v0.3.76 [INFO] [stderr] Compiling crossbeam-deque v0.8.6 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Compiling unicode-width v0.2.2 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling clap_lex v1.0.0 [INFO] [stderr] Compiling is_ci v1.2.0 [INFO] [stderr] Compiling arborium-theme v2.15.0 [INFO] [stderr] Compiling unicode-linebreak v0.1.5 [INFO] [stderr] Compiling arborium v2.14.0 [INFO] [stderr] Compiling rayon-core v1.13.0 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Compiling textwrap v0.16.2 [INFO] [stderr] Compiling supports-color v3.0.2 [INFO] [stderr] Compiling clap_builder v4.5.60 [INFO] [stderr] Compiling arborium-highlight v2.15.0 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling backtrace-ext v0.2.1 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling miette-derive v7.6.0 [INFO] [stderr] Compiling terminal_size v0.4.3 [INFO] [stderr] Compiling bstr v1.12.1 [INFO] [stderr] Compiling itoa v1.0.17 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling fastrand v2.3.0 [INFO] [stderr] Compiling once_cell v1.21.3 [INFO] [stderr] Compiling supports-hyperlinks v3.2.0 [INFO] [stderr] Compiling same-file v1.0.6 [INFO] [stderr] Compiling supports-unicode v3.0.0 [INFO] [stderr] Compiling unicode-width v0.1.14 [INFO] [stderr] Compiling walkdir v2.5.0 [INFO] [stderr] Compiling tempfile v3.26.0 [INFO] [stderr] Compiling miette v7.6.0 [INFO] [stderr] Compiling globset v0.4.18 [INFO] [stderr] Compiling clap v4.5.60 [INFO] [stderr] Compiling is_executable v1.0.5 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling ignore v0.4.25 [INFO] [stderr] Compiling rayon v1.11.0 [INFO] [stderr] Compiling clap_complete v4.6.0 [INFO] [stderr] Compiling termcolor v1.4.1 [INFO] [stderr] Compiling ent-core v0.1.0 (/opt/rustwide/workdir/ent-core) [INFO] [stderr] Compiling ent v0.1.0 (/opt/rustwide/workdir/ent-cli) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 06s [INFO] running `Command { std: "docker" "inspect" "f08d148e736f29b94a3543a5e81fbec65bcce77338b9368db57c9e45274e207d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f08d148e736f29b94a3543a5e81fbec65bcce77338b9368db57c9e45274e207d", kill_on_drop: false }` [INFO] [stdout] f08d148e736f29b94a3543a5e81fbec65bcce77338b9368db57c9e45274e207d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 0061ac435cb7197202ad9cac203162c76d060d98ef61da392372114a9854ab40 [INFO] running `Command { std: "docker" "start" "-a" "0061ac435cb7197202ad9cac203162c76d060d98ef61da392372114a9854ab40", kill_on_drop: false }` [INFO] [stderr] Compiling ent-core v0.1.0 (/opt/rustwide/workdir/ent-core) [INFO] [stderr] Compiling ent v0.1.0 (/opt/rustwide/workdir/ent-cli) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 8.47s [INFO] running `Command { std: "docker" "inspect" "0061ac435cb7197202ad9cac203162c76d060d98ef61da392372114a9854ab40", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0061ac435cb7197202ad9cac203162c76d060d98ef61da392372114a9854ab40", kill_on_drop: false }` [INFO] [stdout] 0061ac435cb7197202ad9cac203162c76d060d98ef61da392372114a9854ab40 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 63fc1926d089dd0f735fd1e362dc07b773b4f07f943fd30d482efeed7cad3c71 [INFO] running `Command { std: "docker" "start" "-a" "63fc1926d089dd0f735fd1e362dc07b773b4f07f943fd30d482efeed7cad3c71", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.24s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/ent-c5a3094fa0d4cde9) [INFO] [stdout] [INFO] [stdout] running 44 tests [INFO] [stdout] test completions::tests::nushell_script_extracts_language_from_partial ... ok [INFO] [stdout] test completions::tests::nushell_script_has_correct_completer_signature ... ok [INFO] [stdout] test completions::tests::nushell_script_disables_nushell_filter_and_uses_span ... ok [INFO] [stdout] test completions::tests::nushell_script_always_prepends_bracket_to_query ... ok [INFO] [stdout] test completions::tests::nushell_script_uses_export_extern_not_def_wrapper ... ok [INFO] [stdout] test completions::tests::nushell_script_has_enum_completers_for_output_and_color ... ok [INFO] [stdout] test completions::tests::nushell_script_wires_query_to_completer ... ok [INFO] [stdout] test completions::tests::nushell_script_strips_leading_bracket_and_quotes_to_bare_prefix ... ok [INFO] [stdout] test completions::tests::nushell_script_has_env_lang_fallback ... ok [INFO] [stdout] test tests::insert_before_effective_insert ... ok [INFO] [stdout] test tests::insert_after_activates_edit_mode ... ok [INFO] [stdout] test tests::insert_before_activates_edit_mode ... ok [INFO] [stdout] test tests::insert_after_effective_insert ... ok [INFO] [stdout] test tests::extra_positional_args_are_rejected ... ok [INFO] [stdout] test tests::delete_activates_edit_mode ... ok [INFO] [stdout] test tests::delete_flag_sets_effective_replace_to_empty ... ok [INFO] [stdout] test completions::tests::nushell_script_has_no_module_wrapper ... ok [INFO] [stdout] test tests::no_file_flag_defaults_to_stdin ... ok [INFO] [stdout] test tests::query_is_first_positional_arg ... ok [INFO] [stdout] test tests::long_file_flag ... ok [INFO] [stdout] test tests::query_is_none_when_no_positional_given ... ok [INFO] [stdout] test tests::multiple_file_flags ... ok [INFO] [stdout] test tests::no_insert_flags_effective_insert_is_none ... ok [INFO] [stdout] test tests::query_with_dsl_syntax ... ok [INFO] [stdout] test tests::single_file_flag ... ok [INFO] [stdout] test tests::replace_activates_edit_mode ... ok [INFO] [stdout] test tests::validate_in_place_with_insert_before_is_ok ... ok [INFO] [stdout] test tests::validate_delete_without_query_is_error ... ok [INFO] [stdout] test tests::validate_in_place_with_replace_is_ok ... ok [INFO] [stdout] test tests::replace_flag_sets_effective_replace ... ok [INFO] [stdout] test tests::validate_in_place_with_insert_after_is_ok ... ok [INFO] [stdout] test tests::validate_insert_before_and_after_mutually_exclusive ... ok [INFO] [stdout] test tests::validate_insert_before_with_replace_is_error ... ok [INFO] [stdout] test tests::validate_list_languages_is_ok ... ok [INFO] [stdout] test tests::validate_no_query_is_ok ... ok [INFO] [stdout] test tests::validate_in_place_without_edit_flag_is_error ... ok [INFO] [stdout] test tests::validate_replace_and_delete_mutually_exclusive ... ok [INFO] [stdout] test tests::validate_insert_before_with_set_is_error ... ok [INFO] [stdout] test tests::no_edit_flags_effective_replace_is_none ... ok [INFO] [stdout] test tests::validate_query_only_is_ok ... ok [INFO] [stdout] test tests::no_edit_flags_is_not_edit_mode ... ok [INFO] [stdout] test tests::validate_insert_after_with_delete_is_error ... ok [INFO] [stdout] test tests::validate_in_place_with_delete_is_ok ... ok [INFO] [stdout] test tests::validate_replace_without_query_is_error ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 44 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stderr] Running tests/integration.rs (/opt/rustwide/target/debug/deps/integration-e24303f4f867bbf6) [INFO] [stdout] [INFO] [stdout] running 226 tests [INFO] [stdout] test color::color_invalid_value_is_rejected ... ok [INFO] [stdout] test color::color_always_auto_shows_line_numbers ... ok [INFO] [stdout] test color::color_always_heading_mode_structure ... ok [INFO] [stdout] test color::color_auto_is_accepted ... ok [INFO] [stdout] test color::explicit_n_flag_adds_line_numbers_when_piped ... ok [INFO] [stdout] test color::set_with_count_is_rejected ... ok [INFO] [stdout] test color::color_never_is_accepted ... ok [INFO] [stdout] test completions::complete_query_field_traversal_returns_field_names ... ok [INFO] [stdout] test color::color_never_suppresses_ansi_codes_multi_file ... ok [INFO] [stdout] test completions::complete_query_filter_field_returns_field_names ... ok [INFO] [stdout] test color::color_always_emits_ansi_codes_multi_file ... ok [INFO] [stdout] test completions::complete_query_prefix_filters_field_names ... ok [INFO] [stdout] test completions::complete_query_node_type_prefix_returns_matches ... ok [INFO] [stdout] test completions::complete_query_without_language_returns_empty ... ok [INFO] [stdout] test completions::completions_nushell_script_wires_query_completer ... ok [INFO] [stdout] test completions::completions_zsh_exits_zero_and_prints_script ... ok [INFO] [stdout] test completions::complete_query_open_bracket_returns_all_nodes ... ok [INFO] [stdout] test completions::completions_nushell_exits_zero_and_prints_script ... ok [INFO] [stdout] test color::color_never_uses_inline_format ... ok [INFO] [stdout] test completions::complete_query_filter_op_returns_operators ... ok [INFO] [stdout] test color::sexp_output_gets_color_with_color_always ... ok [INFO] [stdout] test count::count_omits_zero_match_files ... ok [INFO] [stdout] test count::count_with_replace_is_error ... ok [INFO] [stdout] test count::count_single_file_prints_number ... ok [INFO] [stdout] test dsl_queries::alternation ... ok [INFO] [stdout] test count::count_flag_is_accepted ... ok [INFO] [stdout] test count::count_multi_file_prints_path_and_count ... ok [INFO] [stdout] test dsl_queries::anonymous_node ... ok [INFO] [stdout] test color::color_auto_no_ansi_when_piped ... ok [INFO] [stdout] test color::json_output_never_has_color_with_color_always ... ok [INFO] [stdout] test dsl_queries::equality_filter_on_same_field ... ok [INFO] [stdout] test dsl_queries::deep_structural_path ... ok [INFO] [stdout] test dsl_queries::equality_filter_on_different_field ... ok [INFO] [stdout] test dsl_queries::combined_regex_and_negated_field ... ok [INFO] [stdout] test dsl_queries::impl_trait_filter ... ok [INFO] [stdout] test count::count_with_color_always_emits_ansi ... ok [INFO] [stdout] test count::count_with_color_never_is_plain ... ok [INFO] [stdout] test dsl_queries::equality_filter_on_terminal_bracket ... ok [INFO] [stdout] test dsl_queries::regex_filter_on_field ... ok [INFO] [stdout] test dsl_queries::nested_generic_types ... ok [INFO] [stdout] test dsl_queries::set_membership_filter ... ok [INFO] [stdout] test dsl_queries::negated_field_filter ... ok [INFO] [stdout] test dsl_queries::text_filter_on_parent_with_field_result ... ok [INFO] [stdout] test dsl_queries::simple_node_type_match ... ok [INFO] [stdout] test dsl_queries::dsl_auto_filters_to_result_capture ... ok [INFO] [stdout] test dsl_queries::field_traversal ... ok [INFO] [stdout] test dsl_queries::nested_functions ... ok [INFO] [stdout] test dsl_queries::text_meta_filter ... ok [INFO] [stdout] test editing::delete_console_log_statements_typescript ... ok [INFO] [stdout] test editing::replace_with_literal_dsl_syntax_is_not_reinterpreted ... ok [INFO] [stdout] test error_paths::empty_dsl_brackets_report_error ... ok [INFO] [stdout] test error_paths::delete_without_query_is_error ... ok [INFO] [stdout] test error_paths::in_place_without_edit_flag ... ok [INFO] [stdout] test error_paths::empty_input_produces_no_output ... ok [INFO] [stdout] test error_paths::in_place_with_stdin_reports_error ... ok [INFO] [stdout] test error_paths::invalid_node_type_for_language ... ok [INFO] [stdout] test error_paths::malformed_sexp_query_reports_error ... ok [INFO] [stdout] test editing::delete_removes_matched_text ... ok [INFO] [stdout] test error_paths::replace_and_delete_mutually_exclusive ... ok [INFO] [stdout] test error_paths::nonexistent_file_reports_error ... ok [INFO] [stdout] test error_paths::language_mismatch_produces_query_error ... ok [INFO] [stdout] test editing::delete_root_node_produces_empty_output ... ok [INFO] [stdout] test error_paths::no_arguments_requires_language ... ok [INFO] [stdout] test error_paths::zero_matches_succeeds_with_no_output ... ok [INFO] [stdout] test editing::set_membership_replace ... ok [INFO] [stdout] test error_paths::whitespace_only_input_produces_no_output ... ok [INFO] [stdout] test index_access::double_index_selects_correctly ... ok [INFO] [stdout] test index_access::double_index_with_count ... ok [INFO] [stdout] test editing::in_place_edit_writes_to_file ... ok [INFO] [stdout] test editing::replace_matched_nodes ... ok [INFO] [stdout] test index_access::double_index_with_per_ancestor_in_second_stage ... ok [INFO] [stdout] test index_access::grouped_index_0_first_parameter_of_each_function ... ok [INFO] [stdout] test index_access::double_index_last_fn_parameters ... ok [INFO] [stdout] test index_access::grouped_index_neg1_last_parameter_of_each_function ... ok [INFO] [stdout] test index_access::grouped_index_with_impl_block ... ok [INFO] [stdout] test index_access::grouped_index_1_second_parameter_of_each_function ... ok [INFO] [stdout] test index_access::grouped_index_out_of_bounds_per_group_returns_nothing_for_that_group ... ok [INFO] [stdout] test index_access::index_0_json_output ... ok [INFO] [stdout] test index_access::double_index_edit_replaces_only_matching_node ... ok [INFO] [stdout] test index_access::index_0_on_two_functions_returns_global_first_parameter ... ok [INFO] [stdout] test index_access::global_index_unchanged_for_outermost_bracket ... ok [INFO] [stdout] test index_access::double_index_no_second_filter_returns_all_within_first ... ok [INFO] [stdout] test index_access::index_0_selects_first_function ... ok [INFO] [stdout] test index_access::index_0_with_field_continuation ... ok [INFO] [stdout] test index_access::grouped_index_field_traversal_first_child_per_function ... ok [INFO] [stdout] test index_access::index_0_with_text_filter_selects_from_filtered_set ... ok [INFO] [stdout] test index_access::index_0_with_text_filter ... ok [INFO] [stdout] test index_access::index_1_selects_second_parameter ... ok [INFO] [stdout] test index_access::index_0_selects_first_parameter ... ok [INFO] [stdout] test index_access::index_0_skips_use_declarations ... ok [INFO] [stdout] test index_access::index_1_skips_use_declarations ... ok [INFO] [stdout] test index_access::double_index_with_json_output ... ok [INFO] [stdout] test index_access::index_1_with_impl_block_returns_global_second ... ok [INFO] [stdout] test index_access::index_0_with_count_flag ... ok [INFO] [stdout] test index_access::index_after_consecutive_brackets ... ok [INFO] [stdout] test index_access::index_2_selects_third_parameter ... ok [INFO] [stdout] test index_access::index_0_with_impl_block_returns_single_result ... ok [INFO] [stdout] test index_access::index_neg1_skips_use_declarations ... ok [INFO] [stdout] test index_access::index_after_field_access ... ok [INFO] [stdout] test index_access::index_beyond_last_matches_nothing ... ok [INFO] [stdout] test index_access::index_0_with_field_continuation_skips_use_declarations ... ok [INFO] [stdout] test index_access::negative_index_beyond_neg1_is_error ... ok [INFO] [stdout] test index_access::index_neg1_with_field_continuation ... ok [INFO] [stdout] test index_access::index_neg1_selects_last_function ... ok [INFO] [stdout] test index_access::index_neg1_selects_last_parameter ... ok [INFO] [stdout] test insert::insert_after_with_delete_is_error ... ok [INFO] [stdout] test index_access::three_bracket_path_groups_by_nearest_ancestor ... ok [INFO] [stdout] test index_access::index_neg1_with_impl_block_returns_last_function ... ok [INFO] [stdout] test insert::insert_before_and_after_together_is_error ... ok [INFO] [stdout] test index_access::index_neg1_with_field_continuation_skips_use_declarations ... ok [INFO] [stdout] test insert::insert_after_adds_text_after_match ... ok [INFO] [stdout] test insert::insert_after_in_place ... ok [INFO] [stdout] test insert::insert_after_with_template ... ok [INFO] [stdout] test insert::insert_after_inline ... ok [INFO] [stdout] test insert::insert_before_with_replace_is_error ... ok [INFO] [stdout] test insert::insert_before_multiline_inherits_indentation ... ok [INFO] [stdout] test insert::insert_before_with_set_is_error ... ok [INFO] [stdout] test json_output::dsl_json_uses_result_capture_key ... ok [INFO] [stdout] test insert::insert_before_adds_text_before_match ... ok [INFO] [stdout] test insert::insert_before_in_place ... ok [INFO] [stdout] test insert::insert_before_inline ... ok [INFO] [stdout] test index_access::triple_index_three_stage_pipeline ... ok [INFO] [stdout] test insert::insert_before_multiple_matches ... ok [INFO] [stdout] test insert::insert_before_with_template ... ok [INFO] [stdout] test json_output::json_structure_has_required_fields ... ok [INFO] [stdout] test json_output::zero_matches_produce_empty_json_array ... ok [INFO] [stdout] test json_output::json_unicode_byte_offsets ... ok [INFO] [stdout] test json_output::json_byte_offsets_are_correct ... ok [INFO] [stdout] test json_output::json_match_count_matches_text_line_count ... ok [INFO] [stdout] test multi_file::multi_file_omits_zero_match_files_json ... ok [INFO] [stdout] test multi_language::c_preproc_include_path ... ok [INFO] [stdout] test multi_language::go_goroutine_statement ... ok [INFO] [stdout] test multi_language::cross_language_identifier_consistency ... ok [INFO] [stdout] test json_output::sexp_json_uses_explicit_capture_names ... ok [INFO] [stdout] test multi_language::python_anonymous_keyword ... ok [INFO] [stdout] test multi_language::c_struct_specifier ... ok [INFO] [stdout] test multi_language::go_function_names ... ok [INFO] [stdout] test multi_file::multi_file_omits_zero_match_files ... ok [INFO] [stdout] test multi_language::go_interface_type ... ok [INFO] [stdout] test multi_file::multi_file_language_detection_per_file ... ok [INFO] [stdout] test multi_language::python_function_names ... ok [INFO] [stdout] test multi_language::python_decorated_function_names ... ok [INFO] [stdout] test multi_language::language_detection_from_extension ... ok [INFO] [stdout] test multi_language::python_fstring_interpolation ... ok [INFO] [stdout] test multi_language::ruby_do_block ... ok [INFO] [stdout] test multi_language::python_list_comprehension ... ok [INFO] [stdout] test multi_file::multi_file_text_output_has_filename_prefixes ... ok [INFO] [stdout] test multi_language::typescript_await_expressions ... ok [INFO] [stdout] test multi_language::typescript_arrow_function_names ... ok [INFO] [stdout] test multi_language::typescript_template_substitutions ... ok [INFO] [stdout] test multi_language::python_class_method_names ... ok [INFO] [stdout] test multiline::multiline_colored_heading_mode_line_numbers ... ok [INFO] [stdout] test multi_language::typescript_interface_properties ... ok [INFO] [stdout] test multi_language::typescript_type_alias_names ... ok [INFO] [stdout] test recursive::directory_without_recursive_flag_is_error ... ok [INFO] [stdout] test multiline::multiline_single_file_with_line_numbers ... ok [INFO] [stdout] test multiline::multiline_json_preserves_full_text ... ok [INFO] [stdout] test recursive::glob_filters_to_matching_files ... ok [INFO] [stdout] test multiline::multiline_multi_file_with_line_numbers ... ok [INFO] [stdout] test recursive::glob_without_recursive_is_error ... ok [INFO] [stdout] test multi_language::typescript_import_paths ... ok [INFO] [stdout] test recursive::line_number_flag_with_recursive ... ok [INFO] [stdout] test multiline::multiline_colored_single_file_line_numbers ... ok [INFO] [stdout] test multiline::multiline_multi_file_each_line_gets_path ... ok [INFO] [stdout] test recursive::language_flag_filters_files_in_recursive_mode ... ok [INFO] [stdout] test recursive::no_line_number_suppresses_explicit_n_flag ... ok [INFO] [stdout] test recursive::recursive_flag_is_accepted ... ok [INFO] [stdout] test recursive::no_line_number_suppresses_auto_line_numbers_in_color_mode ... ok [INFO] [stdout] test recursive::long_form_no_line_number_works ... ok [INFO] [stdout] test recursive::line_number_flag_multi_file ... ok [INFO] [stdout] test recursive::line_number_flag_single_file ... ok [INFO] [stdout] test recursive::recursive_no_file_flag_searches_cwd ... ok [INFO] [stdout] test recursive::recursive_respects_gitignore ... ok [INFO] [stdout] test recursive::recursive_no_query_dumps_sexp ... ok [INFO] [stdout] test recursive::recursive_skips_incompatible_languages_silently ... ok [INFO] [stdout] test security::non_utf8_input_reports_clean_error ... ok [INFO] [stdout] test recursive::recursive_replace_preview ... ok [INFO] [stdout] test recursive::recursive_finds_functions_across_files ... ok [INFO] [stdout] test recursive::recursive_skips_unknown_language_silently ... ok [INFO] [stdout] test security::null_bytes_in_source_do_not_crash ... ok [INFO] [stdout] test recursive::recursive_with_stdin_ignores_piped_input ... ok [INFO] [stdout] test security::shell_metacharacters_in_source_are_literal ... ok [INFO] [stdout] test security::catastrophic_regex_does_not_hang ... ok [INFO] [stdout] test separator::no_separator_for_single_match ... ok [INFO] [stdout] test separator::separator_between_matches_single_file ... ok [INFO] [stdout] test recursive::recursive_in_place_edit ... ok [INFO] [stdout] test separator::separator_flag_is_accepted ... ok [INFO] [stdout] test separator::separator_with_multiline_matches ... ok [INFO] [stdout] test separator::custom_separator_string ... ok [INFO] [stdout] test set_field::set_and_delete_are_mutually_exclusive ... ok [INFO] [stdout] test separator::separator_with_color ... ok [INFO] [stdout] test set_field::set_and_replace_are_mutually_exclusive ... ok [INFO] [stdout] test set_field::set_dry_run_prints_to_stdout ... ok [INFO] [stdout] test separator::separator_flag_with_custom_value ... ok [INFO] [stdout] test separator::separator_within_file_not_between_files ... ok [INFO] [stdout] test security::replacement_text_with_special_chars_is_literal ... ok [INFO] [stdout] test security::very_long_identifier_does_not_crash ... ok [INFO] [stdout] test set_field::set_multiple_fields ... ok [INFO] [stdout] test set_field::set_flag_is_accepted ... ok [INFO] [stdout] test set_field::set_in_place ... ok [INFO] [stdout] test set_field::set_template_missing_dot_gives_error ... ok [INFO] [stdout] test set_field::set_renames_function_name ... ok [INFO] [stdout] test set_field::set_nonexistent_field_gives_error ... ok [INFO] [stdout] test set_field::set_preserves_unmatched_code ... ok [INFO] [stdout] test set_field::set_template_escaped_braces_passthrough ... ok [INFO] [stdout] test set_field::set_with_count_is_rejected ... ok [INFO] [stdout] test set_field::set_template_multiple_references ... ok [INFO] [stdout] test set_field::set_template_invalid_unterminated_gives_error ... ok [INFO] [stdout] test set_field::set_template_nonexistent_field_ref_gives_error ... ok [INFO] [stdout] test sexp_output::list_languages_includes_common_languages ... ok [INFO] [stdout] test sexp_output::no_query_with_json_format_outputs_root_node ... ok [INFO] [stdout] test sexp_output::no_query_with_explicit_text_format_outputs_source ... ok [INFO] [stdout] test set_field::set_with_sexp_query ... ok [INFO] [stdout] test set_field::set_template_prefix_renames_functions ... ok [INFO] [stdout] test set_field::set_template_with_in_place_write ... ok [INFO] [stdout] test sexp_output::sexp_output_format_shows_node_structure ... ok [INFO] [stdout] test set_field::set_template_suffix_renames_functions ... ok [INFO] [stdout] test sexp_output::sexp_pretty_with_color_always ... ok [INFO] [stdout] test sexp_queries::python_class_scoped_methods ... ok [INFO] [stdout] test sexp_output::no_query_outputs_full_parse_tree_as_sexp ... ok [INFO] [stdout] test sexp_queries::sexp_with_eq_predicate ... ok [INFO] [stdout] test recursive::parallel_recursive_output_is_deterministic ... ok [INFO] [stdout] test sexp_output::sexp_compact_with_color_never ... ok [INFO] [stdout] test sexp_queries::basic_sexp_query ... ok [INFO] [stdout] test sexp_queries::sexp_with_multiple_captures_shows_all ... ok [INFO] [stdout] test sexp_queries::capture_filter_selects_one_capture ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 226 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.85s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ent_core-d71db21290341430) [INFO] [stdout] [INFO] [stdout] running 338 tests [INFO] [stdout] test complete::tests::at_alone_is_filter_field_empty_prefix ... ok [INFO] [stdout] test complete::tests::bang_with_partial_ident_is_filter_field ... ok [INFO] [stdout] test complete::tests::comma_alone_is_filter_field_empty_prefix ... ok [INFO] [stdout] test complete::tests::at_with_partial_ident_is_filter_field ... ok [INFO] [stdout] test complete::tests::bang_alone_is_filter_field_empty_prefix ... ok [INFO] [stdout] test complete::tests::comma_space_is_filter_field_empty_prefix ... ok [INFO] [stdout] test complete::tests::dot_with_partial_ident_is_field_traversal ... ok [INFO] [stdout] test complete::tests::dot_without_bracket_is_unknown ... ok [INFO] [stdout] test complete::tests::complete_typed_field_traversal_still_completes ... ok [INFO] [stdout] test complete::tests::field_traversal_prefix_returns_full_fragments ... ok [INFO] [stdout] test complete::tests::filter_field_empty_prefix_includes_meta_fields ... ok [INFO] [stdout] test complete::tests::field_traversal_does_not_include_meta_fields ... ok [INFO] [stdout] test complete::tests::empty_input_is_unknown ... ok [INFO] [stdout] test complete::tests::comma_with_partial_ident_cursor_inside_is_filter_field ... ok [INFO] [stdout] test complete::tests::node_type_nonexistent_prefix_returns_empty ... ok [INFO] [stdout] test complete::tests::comma_with_complete_ident_followed_by_space_is_filter_op ... ok [INFO] [stdout] test complete::tests::filter_field_prefix_returns_prefixed_fragments ... ok [INFO] [stdout] test complete::tests::filter_op_returns_four_full_fragments ... ok [INFO] [stdout] test complete::tests::node_type_prefix_returns_full_wrapped_fragments ... ok [INFO] [stdout] test complete::tests::open_bracket_alone_is_node_type_with_empty_prefix ... ok [INFO] [stdout] test complete::tests::dot_after_close_bracket_is_field_traversal_empty_prefix ... ok [INFO] [stdout] test complete::tests::node_type_empty_prefix_returns_many_wrapped_candidates ... ok [INFO] [stdout] test complete::tests::node_type_candidates_are_sorted_and_deduped ... ok [INFO] [stdout] test complete::tests::raw_sexp_with_no_bracket_returns_empty ... ok [INFO] [stdout] test complete::tests::open_bracket_with_longer_prefix ... ok [INFO] [stdout] test complete::tests::open_bracket_with_partial_ident_is_node_type ... ok [INFO] [stdout] test complete::tests::sexp_input_returns_empty ... ok [INFO] [stdout] test dsl::compiler::tests::alternation ... ok [INFO] [stdout] test dsl::compiler::tests::anonymous_node ... ok [INFO] [stdout] test dsl::compiler::tests::any_of_filter ... ok [INFO] [stdout] test dsl::compiler::tests::eq_filter_on_different_field_than_result ... ok [INFO] [stdout] test dsl::compiler::tests::enum_variants ... ok [INFO] [stdout] test dsl::compiler::tests::field_any_of_filter ... ok [INFO] [stdout] test dsl::compiler::tests::consecutive_brackets_with_alternation ... ok [INFO] [stdout] test dsl::compiler::tests::consecutive_brackets_nest_as_parent_child ... ok [INFO] [stdout] test dsl::compiler::tests::filter_on_different_field_from_continuation ... ok [INFO] [stdout] test dsl::compiler::tests::eq_filter_on_field ... ok [INFO] [stdout] test dsl::compiler::tests::filter_on_same_field_as_terminal_continuation ... ok [INFO] [stdout] test dsl::compiler::tests::filter_on_same_field_as_deep_continuation ... ok [INFO] [stdout] test dsl::compiler::tests::filter_on_same_field_as_non_terminal_continuation ... ok [INFO] [stdout] test dsl::compiler::tests::index_0_with_alternation ... ok [INFO] [stdout] test dsl::compiler::tests::index_1_second_match ... ok [INFO] [stdout] test dsl::compiler::tests::index_0_with_field_continuation ... ok [INFO] [stdout] test dsl::compiler::tests::index_0_with_field_filter ... ok [INFO] [stdout] test dsl::compiler::tests::index_2_third_match ... ok [INFO] [stdout] test dsl::compiler::tests::eq_filter_on_terminal_bracket ... ok [INFO] [stdout] test dsl::compiler::tests::index_0_first_match ... ok [INFO] [stdout] test dsl::compiler::tests::index_after_field_access_with_continuation ... ok [INFO] [stdout] test dsl::compiler::tests::index_after_field_access ... ok [INFO] [stdout] test dsl::compiler::tests::index_after_field_traversal_emits_group_on_bracket_ancestor ... ok [INFO] [stdout] test dsl::compiler::tests::index_neg1_after_consecutive_brackets_emits_group ... ok [INFO] [stdout] test dsl::compiler::tests::bracket_then_field ... ok [INFO] [stdout] test dsl::compiler::tests::index_neg1_with_field_continuation ... ok [INFO] [stdout] test dsl::compiler::tests::index_neg1_last_match ... ok [INFO] [stdout] test dsl::compiler::tests::index_neg1_with_text_filter ... ok [INFO] [stdout] test dsl::compiler::tests::index_after_consecutive_brackets ... ok [INFO] [stdout] test dsl::compiler::tests::index_nth_after_consecutive_brackets_emits_group ... ok [INFO] [stdout] test dsl::compiler::tests::index_after_consecutive_brackets_emits_group_on_ancestor ... ok [INFO] [stdout] test dsl::compiler::tests::call_expression_function ... ok [INFO] [stdout] test dsl::compiler::tests::index_on_outermost_bracket_is_global_no_group_capture ... ok [INFO] [stdout] test dsl::compiler::tests::json_keys ... ok [INFO] [stdout] test dsl::compiler::tests::let_declaration_value ... ok [INFO] [stdout] test dsl::compiler::tests::index_with_three_brackets_groups_by_nearest_ancestor ... ok [INFO] [stdout] test dsl::compiler::tests::match_filter ... ok [INFO] [stdout] test dsl::compiler::tests::multiple_filters_on_parent ... ok [INFO] [stdout] test dsl::compiler::tests::negated_field ... ok [INFO] [stdout] test dsl::compiler::tests::index_on_mid_path_bracket_is_global_no_group_capture ... ok [INFO] [stdout] test dsl::compiler::tests::not_any_of_filter ... ok [INFO] [stdout] test dsl::compiler::tests::no_index_has_no_filter ... ok [INFO] [stdout] test dsl::compiler::tests::not_eq_filter ... ok [INFO] [stdout] test dsl::compiler::tests::not_match_filter ... ok [INFO] [stdout] test dsl::compiler::tests::pipeline_double_index_splits_into_two_stages ... ok [INFO] [stdout] test dsl::compiler::tests::pipeline_index_then_field_continuation ... ok [INFO] [stdout] test dsl::compiler::tests::pipeline_index_then_no_index_tail ... ok [INFO] [stdout] test dsl::compiler::tests::pipeline_per_ancestor_within_stage_two ... ok [INFO] [stdout] test dsl::compiler::tests::pipeline_no_index_is_one_stage ... ok [INFO] [stdout] test dsl::compiler::tests::pipeline_triple_index_splits_into_three_stages ... ok [INFO] [stdout] test dsl::compiler::tests::pipeline_single_index_is_one_stage ... ok [INFO] [stdout] test dsl::compiler::tests::python_function_names ... ok [INFO] [stdout] test dsl::compiler::tests::struct_field_names ... ok [INFO] [stdout] test dsl::compiler::tests::single_node_type ... ok [INFO] [stdout] test dsl::compiler::tests::struct_field_with_filters ... ok [INFO] [stdout] test dsl::compiler::tests::text_filter_on_parent_with_field_result ... ok [INFO] [stdout] test dsl::compiler::tests::text_meta_filter ... ok [INFO] [stdout] test dsl::compiler::tests::text_meta_eq_filter ... ok [INFO] [stdout] test dsl::lexer::tests::alternation ... ok [INFO] [stdout] test dsl::lexer::tests::anonymous_node_in_brackets ... ok [INFO] [stdout] test dsl::lexer::tests::bang_alone_is_bang_token ... ok [INFO] [stdout] test dsl::lexer::tests::at_token ... ok [INFO] [stdout] test dsl::lexer::tests::bare_minus_is_error ... ok [INFO] [stdout] test dsl::lexer::tests::brace_tokens ... ok [INFO] [stdout] test dsl::lexer::tests::bracket_with_eq_filter ... ok [INFO] [stdout] test dsl::lexer::tests::bracket_with_field_traversal ... ok [INFO] [stdout] test dsl::lexer::tests::bracket_with_meta_filter ... ok [INFO] [stdout] test dsl::lexer::tests::deep_structural_path ... ok [INFO] [stdout] test dsl::lexer::tests::dot_token ... ok [INFO] [stdout] test dsl::lexer::tests::bracket_with_negated_field ... ok [INFO] [stdout] test dsl::lexer::tests::identifier_with_digits ... ok [INFO] [stdout] test dsl::lexer::tests::identifier_with_underscores ... ok [INFO] [stdout] test dsl::lexer::tests::multi_digit_number ... ok [INFO] [stdout] test dsl::lexer::tests::negative_number ... ok [INFO] [stdout] test dsl::lexer::tests::negative_number_span_includes_minus ... ok [INFO] [stdout] test dsl::lexer::tests::not_eq_filter ... ok [INFO] [stdout] test dsl::lexer::tests::eq_operator ... ok [INFO] [stdout] test dsl::lexer::tests::empty_input_produces_no_tokens ... ok [INFO] [stdout] test dsl::lexer::tests::not_eq_operator ... ok [INFO] [stdout] test dsl::lexer::tests::empty_string ... ok [INFO] [stdout] test dsl::lexer::tests::match_operator ... ok [INFO] [stdout] test dsl::lexer::tests::number_in_index_expression ... ok [INFO] [stdout] test dsl::lexer::tests::number_span_is_correct ... ok [INFO] [stdout] test dsl::lexer::tests::not_match_filter ... ok [INFO] [stdout] test dsl::compiler::tests::index_after_field_continuation_emits_group_on_bracket_ancestor ... ok [INFO] [stdout] test dsl::lexer::tests::comma_token ... ok [INFO] [stdout] test dsl::lexer::tests::not_match_operator ... ok [INFO] [stdout] test dsl::lexer::tests::open_and_close_bracket ... ok [INFO] [stdout] test dsl::lexer::tests::positive_number ... ok [INFO] [stdout] test dsl::lexer::tests::simple_bracket_expression ... ok [INFO] [stdout] test dsl::lexer::tests::simple_identifier ... ok [INFO] [stdout] test dsl::lexer::tests::span_of_multi_char_operator ... ok [INFO] [stdout] test dsl::lexer::tests::spans_are_accurate_with_whitespace ... ok [INFO] [stdout] test dsl::lexer::tests::span_of_string_includes_quotes ... ok [INFO] [stdout] test dsl::lexer::tests::set_membership_filter ... ok [INFO] [stdout] test dsl::lexer::tests::simple_string ... ok [INFO] [stdout] test dsl::lexer::tests::string_with_escaped_quote ... ok [INFO] [stdout] test dsl::lexer::tests::tilde_alone_is_error ... ok [INFO] [stdout] test dsl::lexer::tests::spans_are_accurate_for_simple_expression ... ok [INFO] [stdout] test dsl::lexer::tests::string_with_special_chars ... ok [INFO] [stdout] test dsl::lexer::tests::whitespace_is_skipped ... ok [INFO] [stdout] test dsl::parser::tests::alternation_node_types ... ok [INFO] [stdout] test dsl::parser::tests::anonymous_node ... ok [INFO] [stdout] test dsl::parser::tests::bare_field_name_without_bracket_is_error ... ok [INFO] [stdout] test dsl::parser::tests::bracket_expr_span_covers_brackets ... ok [INFO] [stdout] test dsl::parser::tests::deep_path ... ok [INFO] [stdout] test dsl::parser::tests::async_functions_with_text_filter ... ok [INFO] [stdout] test dsl::parser::tests::bracket_then_field ... ok [INFO] [stdout] test dsl::parser::tests::dot_before_bracket_expr_is_error ... ok [INFO] [stdout] test dsl::parser::tests::dot_before_bracket_after_field_is_error ... ok [INFO] [stdout] test dsl::parser::tests::dot_without_field_name_is_error ... ok [INFO] [stdout] test dsl::parser::tests::empty_input_is_error ... ok [INFO] [stdout] test dsl::parser::tests::eq_filter ... ok [INFO] [stdout] test dsl::parser::tests::field_access_span_covers_name_only ... ok [INFO] [stdout] test dsl::parser::tests::filter_missing_value_is_error ... ok [INFO] [stdout] test dsl::parser::tests::index_access_after_consecutive_brackets ... ok [INFO] [stdout] test dsl::parser::tests::index_access_after_field_access ... ok [INFO] [stdout] test dsl::parser::tests::index_access_mid_path ... ok [INFO] [stdout] test dsl::parser::tests::index_access_negative_one ... ok [INFO] [stdout] test dsl::parser::tests::index_access_negative_two_is_error ... ok [INFO] [stdout] test dsl::lexer::tests::unexpected_character_is_error ... ok [INFO] [stdout] test dsl::lexer::tests::unterminated_string_is_error ... ok [INFO] [stdout] test dsl::lexer::tests::unterminated_string_reports_correct_offset ... ok [INFO] [stdout] test dsl::parser::tests::empty_brackets_is_error ... ok [INFO] [stdout] test dsl::parser::tests::index_access_zero ... ok [INFO] [stdout] test dsl::parser::tests::match_filter ... ok [INFO] [stdout] test dsl::parser::tests::meta_text_filter ... ok [INFO] [stdout] test dsl::parser::tests::meta_type_filter_requires_node_type ... ok [INFO] [stdout] test dsl::parser::tests::multiple_filters ... ok [INFO] [stdout] test dsl::parser::tests::not_eq_set_membership ... ok [INFO] [stdout] test dsl::parser::tests::negated_field_filter ... ok [INFO] [stdout] test dsl::parser::tests::not_match_filter ... ok [INFO] [stdout] test dsl::parser::tests::function_without_return_type ... ok [INFO] [stdout] test dsl::parser::tests::negated_regex_match_with_set_is_error ... ok [INFO] [stdout] test dsl::lexer::tests::pipe_token ... ok [INFO] [stdout] test dsl::parser::tests::not_eq_filter ... ok [INFO] [stdout] test dsl::parser::tests::regex_match_with_set_is_error ... ok [INFO] [stdout] test dsl::parser::tests::index_access_positive ... ok [INFO] [stdout] test dsl::parser::tests::set_membership_filter ... ok [INFO] [stdout] test dsl::parser::tests::single_node_type ... ok [INFO] [stdout] test dsl::parser::tests::struct_field_rename_path ... ok [INFO] [stdout] test dsl::parser::tests::three_way_alternation ... ok [INFO] [stdout] test dsl::parser::tests::unclosed_bracket_is_error ... ok [INFO] [stdout] test edit::tests::apply_adjacent_replacements ... ok [INFO] [stdout] test edit::tests::apply_empty_replacement_deletes_text ... ok [INFO] [stdout] test dsl::parser::tests::dot_before_index_is_error ... ok [INFO] [stdout] test edit::tests::atomic_write_nonexistent_parent_returns_error ... ok [INFO] [stdout] test edit::tests::apply_replacement_with_different_length ... ok [INFO] [stdout] test edit::tests::apply_replacement_with_longer_text ... ok [INFO] [stdout] test edit::tests::apply_single_replacement ... ok [INFO] [stdout] test edit::tests::apply_multiple_replacements ... ok [INFO] [stdout] test edit::tests::atomic_write_creates_file_with_contents ... ok [INFO] [stdout] test edit::tests::atomic_write_replaces_content_completely ... ok [INFO] [stdout] test edit::tests::atomic_write_preserves_permissions ... ok [INFO] [stdout] test edit::tests::collect_set_replacements_basic_rename ... ok [INFO] [stdout] test edit::tests::collect_replacements_multiple_matches ... ok [INFO] [stdout] test edit::tests::collect_set_replacements_multiple_fields ... ok [INFO] [stdout] test edit::tests::collect_replacements_single_match ... ok [INFO] [stdout] test edit::tests::apply_replacements_end_to_end_with_real_query ... ok [INFO] [stdout] test edit::tests::collect_replacements_empty_replacement_for_deletion ... ok [INFO] [stdout] test edit::tests::collect_replacements_skips_missing_capture ... ok [INFO] [stdout] test edit::tests::detect_indentation_mid_line_returns_empty ... ok [INFO] [stdout] test edit::tests::detect_indentation_at_column_zero ... ok [INFO] [stdout] test edit::tests::detect_indentation_with_tabs ... ok [INFO] [stdout] test edit::tests::detect_indentation_empty_source ... ok [INFO] [stdout] test edit::tests::collect_replacements_sorted_by_start_byte ... ok [INFO] [stdout] test edit::tests::detect_indentation_with_spaces ... ok [INFO] [stdout] test edit::tests::detect_indentation_second_line ... ok [INFO] [stdout] test edit::tests::expand_template_bare_open_brace_returns_error ... ok [INFO] [stdout] test edit::tests::expand_template_basic_field_reference ... ok [INFO] [stdout] test edit::tests::expand_template_escape_double_close_brace ... ok [INFO] [stdout] test edit::tests::expand_template_escape_double_open_brace ... ok [INFO] [stdout] test edit::tests::expand_template_escaped_not_interpolated ... ok [INFO] [stdout] test edit::tests::expand_template_missing_dot_returns_error ... ok [INFO] [stdout] test edit::tests::expand_template_missing_field_returns_error ... ok [INFO] [stdout] test edit::tests::expand_template_multiple_different_fields ... ok [INFO] [stdout] test edit::tests::expand_template_multiple_same_references ... ok [INFO] [stdout] test edit::tests::expand_template_passthrough_no_braces ... ok [INFO] [stdout] test edit::tests::collect_set_replacements_multiple_matches ... ok [INFO] [stdout] test edit::tests::expand_template_prefix_pattern ... ok [INFO] [stdout] test edit::tests::expand_template_suffix_pattern ... ok [INFO] [stdout] test edit::tests::determine_capture_multiple_captures_no_filter_errors ... ok [INFO] [stdout] test edit::tests::determine_capture_explicit_filter_passes_through ... ok [INFO] [stdout] test edit::tests::expand_template_unterminated_brace_returns_error ... ok [INFO] [stdout] test edit::tests::expand_template_wrapping_pattern ... ok [INFO] [stdout] test edit::tests::indent_inserted_text_applies_to_subsequent_lines ... ok [INFO] [stdout] test edit::tests::indent_inserted_text_empty_indent ... ok [INFO] [stdout] test edit::tests::indent_inserted_text_no_newlines ... ok [INFO] [stdout] test edit::tests::indent_inserted_text_trailing_newline ... ok [INFO] [stdout] test edit::tests::insert_after_inherits_indentation ... ok [INFO] [stdout] test edit::tests::insert_after_inline_no_newline ... ok [INFO] [stdout] test edit::tests::insert_before_basic ... ok [INFO] [stdout] test edit::tests::collect_set_replacements_with_template_interpolation ... ok [INFO] [stdout] test edit::tests::insert_after_basic ... ok [INFO] [stdout] test edit::tests::collect_set_replacements_template_plain_string_unchanged ... ok [INFO] [stdout] test edit::tests::insert_before_inline_no_newline ... ok [INFO] [stdout] test edit::tests::determine_capture_single_capture_auto_selects ... ok [INFO] [stdout] test edit::tests::insert_before_multiple_matches ... ok [INFO] [stdout] test edit::tests::insert_before_inherits_indentation ... ok [INFO] [stdout] test edit::tests::validate_edit_broken_syntax_produces_warning ... ok [INFO] [stdout] test edit::tests::validate_edit_clean_edit_produces_no_warnings ... ok [INFO] [stdout] test edit::tests::validate_edit_fixing_error_produces_no_warnings ... ok [INFO] [stdout] test edit::tests::validate_edit_preexisting_errors_ignored ... ok [INFO] [stdout] test edit::tests::validate_edit_warning_has_position ... ok [INFO] [stdout] test edit::tests::validate_no_overlaps_adjacent_is_ok ... ok [INFO] [stdout] test edit::tests::insert_before_with_template_on_multiple_matches ... ok [INFO] [stdout] test edit::tests::validate_no_overlaps_empty_list ... ok [INFO] [stdout] test edit::tests::validate_no_overlaps_nested_returns_error ... ok [INFO] [stdout] test edit::tests::validate_no_overlaps_non_overlapping ... ok [INFO] [stdout] test edit::tests::validate_no_overlaps_overlapping_returns_error ... ok [INFO] [stdout] test edit::tests::validate_no_overlaps_single_replacement ... ok [INFO] [stdout] test error::tests::ambiguous_replace_capture_has_diagnostic_code ... ok [INFO] [stdout] test error::tests::ambiguous_replace_capture_help_suggests_c_flag ... ok [INFO] [stdout] test error::tests::ambiguous_replace_capture_lists_available ... ok [INFO] [stdout] test error::tests::cannot_detect_language_includes_path ... ok [INFO] [stdout] test edit::tests::insert_before_with_template ... ok [INFO] [stdout] test error::tests::capture_not_found_lists_available_captures ... ok [INFO] [stdout] test error::tests::dsl_parse_error_displays_message ... ok [INFO] [stdout] test error::tests::in_place_requires_edit_has_message_and_code ... ok [INFO] [stdout] test error::tests::in_place_requires_file_has_message_and_code ... ok [INFO] [stdout] test error::tests::invalid_args_displays_custom_message ... ok [INFO] [stdout] test error::tests::invalid_template_displays_message ... ok [INFO] [stdout] test error::tests::invalid_template_has_diagnostic_code ... ok [INFO] [stdout] test error::tests::invalid_template_help_shows_hint ... ok [INFO] [stdout] test error::tests::io_error_includes_path_and_source ... ok [INFO] [stdout] test error::tests::overlapping_matches_displays_byte_ranges ... ok [INFO] [stdout] test error::tests::overlapping_matches_has_diagnostic_code ... ok [INFO] [stdout] test error::tests::dsl_parse_error_has_source_span ... ok [INFO] [stdout] test error::tests::dsl_parse_error_has_diagnostic_code ... ok [INFO] [stdout] test error::tests::overlapping_matches_help_mentions_both_ranges ... ok [INFO] [stdout] test error::tests::parse_failed_has_help_text ... ok [INFO] [stdout] test error::tests::query_parse_error_has_source_span ... ok [INFO] [stdout] test error::tests::replace_requires_query_has_message_and_code ... ok [INFO] [stdout] test error::tests::unknown_language_has_diagnostic_code ... ok [INFO] [stdout] test error::tests::unknown_language_help_lists_supported_languages ... ok [INFO] [stdout] test language::tests::detect_fails_for_unknown_extension ... ok [INFO] [stdout] test language::tests::detect_handles_full_path ... ok [INFO] [stdout] test language::tests::detect_javascript_from_js_extension ... ok [INFO] [stdout] test language::tests::detect_json_from_json_extension ... ok [INFO] [stdout] test language::tests::detect_python_from_py_extension ... ok [INFO] [stdout] test language::tests::detect_rust_from_rs_extension ... ok [INFO] [stdout] test language::tests::detect_typescript_from_ts_extension ... ok [INFO] [stdout] test language::tests::get_language_error_lists_supported ... ok [INFO] [stdout] test language::tests::get_language_is_case_insensitive ... ok [INFO] [stdout] test language::tests::get_language_returns_python ... ok [INFO] [stdout] test language::tests::get_language_returns_rust ... ok [INFO] [stdout] test language::tests::get_language_trims_whitespace ... ok [INFO] [stdout] test language::tests::get_language_unknown_returns_error ... ok [INFO] [stdout] test language::tests::language_entry_produces_valid_language ... ok [INFO] [stdout] test language::tests::list_languages_contains_expected_entries ... ok [INFO] [stdout] test language::tests::list_languages_has_no_duplicates ... ok [INFO] [stdout] test language::tests::list_languages_is_sorted ... ok [INFO] [stdout] test output::tests::json_format_empty_matches ... ok [INFO] [stdout] test edit::tests::resolve_field_range_returns_error_for_missing_field ... ok [INFO] [stdout] test error::tests::unknown_language_displays_the_language_name ... ok [INFO] [stdout] test edit::tests::resolve_field_range_error_lists_available_fields ... ok [INFO] [stdout] test edit::tests::resolve_field_range_finds_name_on_function ... ok [INFO] [stdout] test edit::tests::resolve_field_range_finds_parameters_on_function ... ok [INFO] [stdout] test output::tests::text_format_empty_matches ... ok [INFO] [stdout] test output::tests::json_format_includes_file_when_provided ... ok [INFO] [stdout] test output::tests::sexp_format_with_file_path ... ok [INFO] [stdout] test output::tests::text_format_multiline_node ... ok [INFO] [stdout] test edit::tests::determine_capture_with_explicit_filter ... ok [INFO] [stdout] test output::tests::json_format_contains_capture_data ... ok [INFO] [stdout] test output::tests::json_format_produces_valid_json ... ok [INFO] [stdout] test output::tests::text_format_multiline_with_path_no_line_numbers ... ok [INFO] [stdout] test parse::tests::parse_empty_source ... ok [INFO] [stdout] test output::tests::json_format_omits_file_when_not_provided ... ok [INFO] [stdout] test parse::tests::parse_json_source ... ok [INFO] [stdout] test parse::tests::parse_python_source ... ok [INFO] [stdout] test output::tests::text_format_multiple_matches ... ok [INFO] [stdout] test parse::tests::pretty_sexp_nested_nodes ... ok [INFO] [stdout] test parse::tests::parse_rust_with_syntax_errors_still_succeeds ... ok [INFO] [stdout] test parse::tests::pretty_sexp_preserves_leaf_content ... ok [INFO] [stdout] test parse::tests::pretty_sexp_roundtrip_with_real_tree ... ok [INFO] [stdout] test parse::tests::parse_simple_rust_function ... ok [INFO] [stdout] test output::tests::text_format_multiline_with_line_numbers ... ok [INFO] [stdout] test parse::tests::read_existing_file_returns_contents ... ok [INFO] [stdout] test output::tests::sexp_format_outputs_sexpression ... ok [INFO] [stdout] test parse::tests::pretty_sexp_simple_node ... ok [INFO] [stdout] test parse::tests::pretty_sexp_with_field_names ... ok [INFO] [stdout] test output::tests::text_format_multiline_with_path_and_line_numbers ... ok [INFO] [stdout] test query::tests::compile_query_error_has_source_span ... ok [INFO] [stdout] test parse::tests::read_nonexistent_file_returns_io_error ... ok [INFO] [stdout] test query::tests::compile_invalid_query_returns_error ... ok [INFO] [stdout] test query::tests::compile_syntax_error ... ok [INFO] [stdout] test output::tests::text_format_with_file_path ... ok [INFO] [stdout] test output::tests::text_format_single_capture ... ok [INFO] [stdout] test query::tests::compile_valid_query ... ok [INFO] [stdout] test query::tests::query_json_keys ... ok [INFO] [stdout] test query::tests::capture_filter_error_lists_available ... ok [INFO] [stdout] test query::tests::query_python_function_names ... ok [INFO] [stdout] test query::tests::capture_filter_selects_specific_capture ... ok [INFO] [stdout] test query::tests::execute_query_no_matches_returns_empty ... ok [INFO] [stdout] test query::tests::capture_filter_unknown_name_returns_error ... ok [INFO] [stdout] test query::tests::execute_query_captures_have_correct_metadata ... ok [INFO] [stdout] test query::tests::execute_query_finds_function_names ... ok [INFO] [stdout] test tests::query_source_unknown_language_is_error ... ok [INFO] [stdout] test tests::resolve_query_compiles_dsl_to_sexp ... ok [INFO] [stdout] test tests::resolve_query_dsl_parse_error_has_diagnostic ... ok [INFO] [stdout] test tests::resolve_query_bare_string_passes_through ... ok [INFO] [stdout] test tests::resolve_query_multi_index_produces_multiple_stages ... ok [INFO] [stdout] test tests::list_languages_includes_common_langs ... ok [INFO] [stdout] test tests::resolve_query_handles_dsl_with_filters ... ok [INFO] [stdout] test tests::resolve_query_passes_sexp_through_unchanged ... ok [INFO] [stdout] test tests::resolve_query_trims_whitespace_before_detecting ... ok [INFO] [stdout] test query::tests::execute_query_with_multiple_captures ... ok [INFO] [stdout] test tests::edit_source_deletes_with_empty_replacement ... ok [INFO] [stdout] test tests::query_source_with_sexp ... ok [INFO] [stdout] test tests::query_source_finds_function_names ... ok [INFO] [stdout] test tests::edit_source_renames_function ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 338 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.17s [INFO] [stdout] [INFO] [stderr] Doc-tests ent_core [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test ent-core/src/lib.rs - query_source (line 247) - compile ... ok [INFO] [stdout] test ent-core/src/lib.rs - edit_source (line 303) - compile ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] all doctests ran in 0.99s; merged doctests compilation took 0.97s [INFO] running `Command { std: "docker" "inspect" "63fc1926d089dd0f735fd1e362dc07b773b4f07f943fd30d482efeed7cad3c71", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "63fc1926d089dd0f735fd1e362dc07b773b4f07f943fd30d482efeed7cad3c71", kill_on_drop: false }` [INFO] [stdout] 63fc1926d089dd0f735fd1e362dc07b773b4f07f943fd30d482efeed7cad3c71