[INFO] fetching crate grox-cli 0.1.1...
[INFO] testing grox-cli-0.1.1 against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate grox-cli 0.1.1 into /workspace/builds/worker-1-tc2/source
[INFO] started tweaking crates.io crate grox-cli 0.1.1
[INFO] finished tweaking crates.io crate grox-cli 0.1.1
[INFO] tweaked toml for crates.io crate grox-cli 0.1.1 written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate grox-cli 0.1.1 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate grox-cli 0.1.1 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" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 44adb9b46edd806237fc42e6d49128441db5b58ad073585287b357a1df493017
[INFO] running `Command { std: "docker" "start" "44adb9b46edd806237fc42e6d49128441db5b58ad073585287b357a1df493017", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "44adb9b46edd806237fc42e6d49128441db5b58ad073585287b357a1df493017", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "44adb9b46edd806237fc42e6d49128441db5b58ad073585287b357a1df493017" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "44adb9b46edd806237fc42e6d49128441db5b58ad073585287b357a1df493017", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "44adb9b46edd806237fc42e6d49128441db5b58ad073585287b357a1df493017" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.184
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling cc v1.2.59
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling openssl v0.10.76
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling indexmap v2.13.1
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling nibble_vec v0.1.0
[INFO] [stderr]    Compiling endian-type v0.1.2
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]    Compiling iri-string v0.7.12
[INFO] [stderr]    Compiling radix_trie v0.2.1
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling home v0.5.12
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling colored v3.1.1
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling openssl-sys v0.9.112
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling fd-lock v4.0.4
[INFO] [stderr]    Compiling eventsource-stream v0.2.3
[INFO] [stderr]    Compiling rustyline v15.0.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling tokio v1.51.0
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling zerofrom v0.1.7
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling grox-cli v0.1.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: methods `mode`, `project_root`, `prompt_user`, and `grant_always` are never used
[INFO] [stdout]    --> src/permissions.rs:60:12
[INFO] [stdout]     |
[INFO] [stdout]  51 | impl SessionPermissions {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn mode(&self) -> PermissionMode {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn project_root(&self) -> &Path {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn prompt_user(&mut self, check: &PermissionCheck) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn grant_always(&mut self, dir: PathBuf) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DISPLAY_MAX_CHARS` is never used
[INFO] [stdout]  --> src/util.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const DISPLAY_MAX_CHARS: usize = 1_000;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clip_for_display` is never used
[INFO] [stdout]   --> src/util.rs:78:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub fn clip_for_display(output: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 12s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.29.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] running `Command { std: "docker" "inspect" "44adb9b46edd806237fc42e6d49128441db5b58ad073585287b357a1df493017", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "44adb9b46edd806237fc42e6d49128441db5b58ad073585287b357a1df493017" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling fastrand v2.4.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling grox-cli v0.1.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: methods `mode`, `project_root`, and `prompt_user` are never used
[INFO] [stdout]    --> src/permissions.rs:60:12
[INFO] [stdout]     |
[INFO] [stdout]  51 | impl SessionPermissions {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn mode(&self) -> PermissionMode {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn project_root(&self) -> &Path {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn prompt_user(&mut self, check: &PermissionCheck) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 5.10s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.29.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] running `Command { std: "docker" "inspect" "44adb9b46edd806237fc42e6d49128441db5b58ad073585287b357a1df493017", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "44adb9b46edd806237fc42e6d49128441db5b58ad073585287b357a1df493017" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: methods `mode`, `project_root`, and `prompt_user` are never used
[INFO] [stderr]    --> src/permissions.rs:60:12
[INFO] [stderr]     |
[INFO] [stderr]  51 | impl SessionPermissions {
[INFO] [stderr]     | ----------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  60 |     pub fn mode(&self) -> PermissionMode {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr]  64 |     pub fn project_root(&self) -> &Path {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 162 |     pub fn prompt_user(&mut self, check: &PermissionCheck) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `grox-cli` (bin "grox" test) generated 1 warning
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.18s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.29.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/build/grox-cli/192aaef7a70fda4f/out/grox-192aaef7a70fda4f)
[INFO] [stdout] 
[INFO] [stdout] running 79 tests
[INFO] [stdout] test agent::tests::permission_denied_returns_message_to_model ... ok
[INFO] [stdout] test permissions::tests::always_grant_is_per_directory ... ok
[INFO] [stdout] test agent::tests::unknown_tool_returns_error_to_model ... ok
[INFO] [stdout] test agent::tests::max_turns_stops_loop ... ok
[INFO] [stdout] test permissions::tests::always_grant_persists ... ok
[INFO] [stdout] test agent::tests::no_tool_calls_exits_immediately ... ok
[INFO] [stdout] test permissions::tests::trust_auto_approves_in_project_writes ... ok
[INFO] [stdout] test agent::tests::single_tool_call_round_trip ... ok
[INFO] [stdout] test permissions::tests::default_prompts_for_shell ... ok
[INFO] [stdout] test permissions::tests::trust_prompts_for_destructive ... ok
[INFO] [stdout] test permissions::tests::trust_prompts_for_outside_project_writes ... ok
[INFO] [stdout] test agent::tests::tool_error_returned_to_model ... ok
[INFO] [stdout] test permissions::tests::yolo_allows_destructive_shell ... ok
[INFO] [stdout] test permissions::tests::readonly_allows_reads_denies_writes ... ok
[INFO] [stdout] test permissions::tests::yolo_allows_everything ... ok
[INFO] [stdout] test permissions::tests::default_prompts_for_writes ... ok
[INFO] [stdout] test permissions::tests::trust_prompts_for_normal_shell ... ok
[INFO] [stdout] test permissions::tests::destructive_command_no_always ... ok
[INFO] [stdout] test permissions::tests::readonly_denies_shell ... ok
[INFO] [stdout] test prompt::tests::identity_is_first_section ... ok
[INFO] [stdout] test prompt::tests::prompt_contains_all_sections ... ok
[INFO] [stdout] test prompt::tests::prompt_excludes_grox_md_when_absent ... ok
[INFO] [stdout] test prompt::tests::prompt_includes_grox_md_when_present ... ok
[INFO] [stdout] test tools::tests::definition_has_required_fields ... ok
[INFO] [stdout] test tools::tests::file_read_missing_path_param ... ok
[INFO] [stdout] test tools::tests::file_read_not_found ... ok
[INFO] [stdout] test prompt::tests::prompt_emphasizes_reading_before_writing ... ok
[INFO] [stdout] test prompt::tests::prompt_sections_are_separated_by_blank_lines ... ok
[INFO] [stdout] test prompt::tests::prompt_mentions_all_tools ... ok
[INFO] [stdout] test prompt::tests::grox_md_is_last_section ... ok
[INFO] [stdout] test prompt::tests::prompt_includes_project_root ... ok
[INFO] [stdout] test tools::tests::file_read_success ... ok
[INFO] [stdout] test tools::tests::file_write_rejects_symlink_escape ... ok
[INFO] [stdout] test tools::tests::file_write_creates_file ... ok
[INFO] [stdout] test tools::tests::file_read_binary_rejected ... ok
[INFO] [stdout] test tools::tests::from_name_known ... ok
[INFO] [stdout] test tools::tests::file_write_creates_parent_dirs ... ok
[INFO] [stdout] test tools::tests::from_name_unknown ... ok
[INFO] [stdout] test tools::tests::file_read_large_file_clipped ... ok
[INFO] [stdout] test tools::tests::list_files_empty_dir ... ok
[INFO] [stdout] test tools::tests::list_files_populated_dir ... ok
[INFO] [stdout] test tools::tests::grep_defaults_to_project_root ... FAILED
[INFO] [stdout] test tools::tests::grep_case_insensitive ... FAILED
[INFO] [stdout] test tools::tests::grep_glob_filter ... FAILED
[INFO] [stdout] test tools::tests::list_files_nonexistent ... ok
[INFO] [stdout] test tools::tests::grep_matches_found ... FAILED
[INFO] [stdout] test tools::tests::shell_exec_captures_stderr ... ok
[INFO] [stdout] test tools::tests::grep_no_matches ... FAILED
[INFO] [stdout] test permissions::tests::always_grant_applies_to_shell_cwd ... ok
[INFO] [stdout] test tools::tests::grep_invalid_regex ... FAILED
[INFO] [stdout] test util::tests::binary_detection_binary ... ok
[INFO] [stdout] test util::tests::binary_detection_text ... ok
[INFO] [stdout] test util::tests::binary_detection_empty ... ok
[INFO] [stdout] test util::tests::clip_at_exact_boundary ... ok
[INFO] [stdout] test util::tests::clip_over_display_threshold ... ok
[INFO] [stdout] test tools::tests::shell_exec_nonexistent_cwd ... ok
[INFO] [stdout] test util::tests::clip_over_model_threshold ... ok
[INFO] [stdout] test tools::tests::grep_max_results_cap ... FAILED
[INFO] [stdout] test util::tests::detect_root_git_repo ... ok
[INFO] [stdout] test util::tests::detect_root_no_markers_falls_back ... ok
[INFO] [stdout] test util::tests::load_grox_md_absent ... ok
[INFO] [stdout] test tools::tests::shell_exec_nonzero_exit ... ok
[INFO] [stdout] test util::tests::clip_under_threshold ... ok
[INFO] [stdout] test util::tests::detect_root_cargo_project ... ok
[INFO] [stdout] test util::tests::load_grox_md_truncated_over_10k ... ok
[INFO] [stdout] test tools::tests::shell_exec_happy_path ... ok
[INFO] [stdout] test util::tests::load_grox_md_at_exactly_10k ... ok
[INFO] [stdout] test util::tests::load_grox_md_present ... ok
[INFO] [stdout] test util::tests::validate_path_within_root ... ok
[INFO] [stdout] test tools::tests::shell_exec_timeout_capped_at_300 ... ok
[INFO] [stdout] test util::tests::validate_path_symlink_escape ... ok
[INFO] [stdout] test util::tests::validate_path_new_file_in_root ... ok
[INFO] [stdout] test util::tests::validate_path_outside_root ... ok
[INFO] [stdout] test util::tests::validate_path_relative_escape ... ok
[INFO] [stdout] test tools::tests::shell_exec_custom_cwd ... ok
[INFO] [stdout] test tools::tests::shell_exec_default_cwd_is_project_root ... ok
[INFO] [stdout] test permissions::tests::destructive_patterns_match ... ok
[INFO] [stdout] test permissions::tests::safe_commands_dont_match ... ok
[INFO] [stdout] test tools::tests::shell_exec_timeout_kills_process ... ok
[INFO] [stderr] error: test failed, to rerun pass `--bin grox`
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- tools::tests::grep_defaults_to_project_root stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tools::tests::grep_defaults_to_project_root' (1812) panicked at src/tools.rs:745:66:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: ripgrep (rg) is not installed. Install it with: cargo install ripgrep
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <anyhow::Error>::msg::<&str>
[INFO] [stdout]    1: <grox::tools::Tool>::execute::{closure#0}
[INFO] [stdout]    2: grox::tools::tests::grep_defaults_to_project_root::{closure#0}
[INFO] [stdout]    3: <tokio::runtime::scheduler::current_thread::CurrentThread>::block_on::<core::pin::Pin<&mut dyn core::future::future::Future<Output = ()>>>
[INFO] [stdout]    4: <tokio::runtime::runtime::Runtime>::block_on::<core::pin::Pin<&mut dyn core::future::future::Future<Output = ()>>>
[INFO] [stdout]    5: <grox::tools::tests::grep_defaults_to_project_root::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]    6: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]    7: test::run_test::{closure#0}
[INFO] [stdout]    8: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]    9: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   10: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   11: <unknown>
[INFO] [stdout]   12: clone
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5b38e1261aa1 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5b38e1277bda - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5b38e126664c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5b38e123ad46 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5b38e1258b39 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5b38e1103160 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5b38e1258e62 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5b38e123adf2 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5b38e12331c9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5b38e123bbfd - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5b38e12783bc - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5b38e1278192 - core[a373ad73a504971]::result::unwrap_failed
[INFO] [stdout]   12:     0x5b38e10c41cb - grox[2e335485ee7cbd57]::tools::tests::grep_defaults_to_project_root::{closure#0}
[INFO] [stdout]   13:     0x5b38e10e26a7 - <tokio[e3a76000c82ac34b]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>
[INFO] [stdout]   14:     0x5b38e10edf82 - <tokio[e3a76000c82ac34b]::runtime::runtime::Runtime>::block_on::<core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>
[INFO] [stdout]   15:     0x5b38e10c904e - <grox[2e335485ee7cbd57]::tools::tests::grep_defaults_to_project_root::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   16:     0x5b38e10f65ab - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   17:     0x5b38e1103785 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   18:     0x5b38e10fd074 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   19:     0x5b38e1106812 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   20:     0x5b38e1260a9f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   21:     0x71b04cc23dfa - <unknown>
[INFO] [stdout]   22:     0x71b04ccb73d4 - clone
[INFO] [stdout]   23:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tools::tests::grep_case_insensitive stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tools::tests::grep_case_insensitive' (1811) panicked at src/tools.rs:716:66:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: ripgrep (rg) is not installed. Install it with: cargo install ripgrep
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <anyhow::Error>::msg::<&str>
[INFO] [stdout]    1: <grox::tools::Tool>::execute::{closure#0}
[INFO] [stdout]    2: grox::tools::tests::grep_case_insensitive::{closure#0}
[INFO] [stdout]    3: <tokio::runtime::scheduler::current_thread::CurrentThread>::block_on::<core::pin::Pin<&mut dyn core::future::future::Future<Output = ()>>>
[INFO] [stdout]    4: <tokio::runtime::runtime::Runtime>::block_on::<core::pin::Pin<&mut dyn core::future::future::Future<Output = ()>>>
[INFO] [stdout]    5: <grox::tools::tests::grep_case_insensitive::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]    6: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]    7: test::run_test::{closure#0}
[INFO] [stdout]    8: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]    9: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   10: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   11: <unknown>
[INFO] [stdout]   12: clone
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5b38e1261aa1 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5b38e1277bda - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5b38e126664c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5b38e123ad46 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5b38e1258b39 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5b38e1103160 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5b38e1258e62 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5b38e123adf2 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5b38e12331c9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5b38e123bbfd - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5b38e12783bc - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5b38e1278192 - core[a373ad73a504971]::result::unwrap_failed
[INFO] [stdout]   12:     0x5b38e10bf941 - grox[2e335485ee7cbd57]::tools::tests::grep_case_insensitive::{closure#0}
[INFO] [stdout]   13:     0x5b38e10e26a7 - <tokio[e3a76000c82ac34b]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>
[INFO] [stdout]   14:     0x5b38e10edf82 - <tokio[e3a76000c82ac34b]::runtime::runtime::Runtime>::block_on::<core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>
[INFO] [stdout]   15:     0x5b38e10c7eee - <grox[2e335485ee7cbd57]::tools::tests::grep_case_insensitive::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   16:     0x5b38e10f65ab - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   17:     0x5b38e1103785 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   18:     0x5b38e10fd074 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   19:     0x5b38e1106812 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   20:     0x5b38e1260a9f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   21:     0x71b04cc23dfa - <unknown>
[INFO] [stdout]   22:     0x71b04ccb73d4 - clone
[INFO] [stdout]   23:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tools::tests::grep_glob_filter stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tools::tests::grep_glob_filter' (1815) panicked at src/tools.rs:701:66:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: ripgrep (rg) is not installed. Install it with: cargo install ripgrep
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <anyhow::Error>::msg::<&str>
[INFO] [stdout]    1: <grox::tools::Tool>::execute::{closure#0}
[INFO] [stdout]    2: grox::tools::tests::grep_glob_filter::{closure#0}
[INFO] [stdout]    3: <tokio::runtime::scheduler::current_thread::CurrentThread>::block_on::<core::pin::Pin<&mut dyn core::future::future::Future<Output = ()>>>
[INFO] [stdout]    4: <tokio::runtime::runtime::Runtime>::block_on::<core::pin::Pin<&mut dyn core::future::future::Future<Output = ()>>>
[INFO] [stdout]    5: <grox::tools::tests::grep_glob_filter::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]    6: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]    7: test::run_test::{closure#0}
[INFO] [stdout]    8: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]    9: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   10: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   11: <unknown>
[INFO] [stdout]   12: clone
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5b38e1261aa1 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5b38e1277bda - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5b38e126664c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5b38e123ad46 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5b38e1258b39 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5b38e1103160 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5b38e1258e62 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5b38e123adf2 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5b38e12331c9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5b38e123bbfd - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5b38e12783bc - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5b38e1278192 - core[a373ad73a504971]::result::unwrap_failed
[INFO] [stdout]   12:     0x5b38e10bc8f0 - grox[2e335485ee7cbd57]::tools::tests::grep_glob_filter::{closure#0}
[INFO] [stdout]   13:     0x5b38e10e26a7 - <tokio[e3a76000c82ac34b]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>
[INFO] [stdout]   14:     0x5b38e10edf82 - <tokio[e3a76000c82ac34b]::runtime::runtime::Runtime>::block_on::<core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>
[INFO] [stdout]   15:     0x5b38e10c74de - <grox[2e335485ee7cbd57]::tools::tests::grep_glob_filter::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   16:     0x5b38e10f65ab - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   17:     0x5b38e1103785 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   18:     0x5b38e10fd074 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   19:     0x5b38e1106812 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   20:     0x5b38e1260a9f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   21:     0x71b04cc23dfa - <unknown>
[INFO] [stdout]   22:     0x71b04ccb73d4 - clone
[INFO] [stdout]   23:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tools::tests::grep_matches_found stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tools::tests::grep_matches_found' (1818) panicked at src/tools.rs:664:66:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: ripgrep (rg) is not installed. Install it with: cargo install ripgrep
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <anyhow::Error>::msg::<&str>
[INFO] [stdout]    1: <grox::tools::Tool>::execute::{closure#0}
[INFO] [stdout]    2: grox::tools::tests::grep_matches_found::{closure#0}
[INFO] [stdout]    3: <tokio::runtime::scheduler::current_thread::CurrentThread>::block_on::<core::pin::Pin<&mut dyn core::future::future::Future<Output = ()>>>
[INFO] [stdout]    4: <tokio::runtime::runtime::Runtime>::block_on::<core::pin::Pin<&mut dyn core::future::future::Future<Output = ()>>>
[INFO] [stdout]    5: <grox::tools::tests::grep_matches_found::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]    6: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]    7: test::run_test::{closure#0}
[INFO] [stdout]    8: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]    9: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   10: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   11: <unknown>
[INFO] [stdout]   12: clone
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5b38e1261aa1 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5b38e1277bda - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5b38e126664c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5b38e123ad46 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5b38e1258b39 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5b38e1103160 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5b38e1258e62 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5b38e123adf2 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5b38e12331c9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5b38e123bbfd - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5b38e12783bc - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5b38e1278192 - core[a373ad73a504971]::result::unwrap_failed
[INFO] [stdout]   12:     0x5b38e10bde53 - grox[2e335485ee7cbd57]::tools::tests::grep_matches_found::{closure#0}
[INFO] [stdout]   13:     0x5b38e10e26a7 - <tokio[e3a76000c82ac34b]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>
[INFO] [stdout]   14:     0x5b38e10edf82 - <tokio[e3a76000c82ac34b]::runtime::runtime::Runtime>::block_on::<core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>
[INFO] [stdout]   15:     0x5b38e10c78fe - <grox[2e335485ee7cbd57]::tools::tests::grep_matches_found::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   16:     0x5b38e10f65ab - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   17:     0x5b38e1103785 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   18:     0x5b38e10fd074 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   19:     0x5b38e1106812 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   20:     0x5b38e1260a9f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   21:     0x71b04cc23dfa - <unknown>
[INFO] [stdout]   22:     0x71b04ccb73d4 - clone
[INFO] [stdout]   23:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tools::tests::grep_no_matches stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tools::tests::grep_no_matches' (1820) panicked at src/tools.rs:675:66:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: ripgrep (rg) is not installed. Install it with: cargo install ripgrep
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <anyhow::Error>::msg::<&str>
[INFO] [stdout]    1: <grox::tools::Tool>::execute::{closure#0}
[INFO] [stdout]    2: grox::tools::tests::grep_no_matches::{closure#0}
[INFO] [stdout]    3: <tokio::runtime::scheduler::current_thread::CurrentThread>::block_on::<core::pin::Pin<&mut dyn core::future::future::Future<Output = ()>>>
[INFO] [stdout]    4: <tokio::runtime::runtime::Runtime>::block_on::<core::pin::Pin<&mut dyn core::future::future::Future<Output = ()>>>
[INFO] [stdout]    5: <grox::tools::tests::grep_no_matches::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]    6: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]    7: test::run_test::{closure#0}
[INFO] [stdout]    8: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]    9: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   10: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   11: <unknown>
[INFO] [stdout]   12: clone
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5b38e1261aa1 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5b38e1277bda - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5b38e126664c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5b38e123ad46 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5b38e1258b39 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5b38e1103160 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5b38e1258e62 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5b38e123adf2 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5b38e12331c9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5b38e123bbfd - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5b38e12783bc - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5b38e1278192 - core[a373ad73a504971]::result::unwrap_failed
[INFO] [stdout]   12:     0x5b38e10bc0ad - grox[2e335485ee7cbd57]::tools::tests::grep_no_matches::{closure#0}
[INFO] [stdout]   13:     0x5b38e10e26a7 - <tokio[e3a76000c82ac34b]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>
[INFO] [stdout]   14:     0x5b38e10edf82 - <tokio[e3a76000c82ac34b]::runtime::runtime::Runtime>::block_on::<core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>
[INFO] [stdout]   15:     0x5b38e10c737e - <grox[2e335485ee7cbd57]::tools::tests::grep_no_matches::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   16:     0x5b38e10f65ab - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   17:     0x5b38e1103785 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   18:     0x5b38e10fd074 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   19:     0x5b38e1106812 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   20:     0x5b38e1260a9f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   21:     0x71b04cc23dfa - <unknown>
[INFO] [stdout]   22:     0x71b04ccb73d4 - clone
[INFO] [stdout]   23:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tools::tests::grep_invalid_regex stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tools::tests::grep_invalid_regex' (1817) panicked at src/tools.rs:687:9:
[INFO] [stdout] assertion failed: result.unwrap_err().to_string().contains("Grep error")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5b38e1261aa1 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5b38e1277bda - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5b38e126664c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5b38e123ad46 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5b38e1258b39 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5b38e1103160 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5b38e1258e62 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5b38e123ae24 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5b38e12331c9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5b38e123bbfd - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5b38e12783bc - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5b38e1278382 - core[a373ad73a504971]::panicking::panic
[INFO] [stdout]   12:     0x5b38e10bd7aa - grox[2e335485ee7cbd57]::tools::tests::grep_invalid_regex::{closure#0}
[INFO] [stdout]   13:     0x5b38e10e26a7 - <tokio[e3a76000c82ac34b]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>
[INFO] [stdout]   14:     0x5b38e10edf82 - <tokio[e3a76000c82ac34b]::runtime::runtime::Runtime>::block_on::<core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>
[INFO] [stdout]   15:     0x5b38e10c779e - <grox[2e335485ee7cbd57]::tools::tests::grep_invalid_regex::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   16:     0x5b38e10f65ab - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   17:     0x5b38e1103785 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   18:     0x5b38e10fd074 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   19:     0x5b38e1106812 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   20:     0x5b38e1260a9f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   21:     0x71b04cc23dfa - <unknown>
[INFO] [stdout]   22:     0x71b04ccb73d4 - clone
[INFO] [stdout]   23:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tools::tests::grep_max_results_cap stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tools::tests::grep_max_results_cap' (1819) panicked at src/tools.rs:733:66:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: ripgrep (rg) is not installed. Install it with: cargo install ripgrep
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <anyhow::Error>::msg::<&str>
[INFO] [stdout]    1: <grox::tools::Tool>::execute::{closure#0}
[INFO] [stdout]    2: grox::tools::tests::grep_max_results_cap::{closure#0}
[INFO] [stdout]    3: <tokio::runtime::scheduler::current_thread::CurrentThread>::block_on::<core::pin::Pin<&mut dyn core::future::future::Future<Output = ()>>>
[INFO] [stdout]    4: <tokio::runtime::runtime::Runtime>::block_on::<core::pin::Pin<&mut dyn core::future::future::Future<Output = ()>>>
[INFO] [stdout]    5: <grox::tools::tests::grep_max_results_cap::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]    6: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]    7: test::run_test::{closure#0}
[INFO] [stdout]    8: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]    9: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   10: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   11: <unknown>
[INFO] [stdout]   12: clone
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5b38e1261aa1 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5b38e1277bda - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5b38e126664c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5b38e123ad46 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5b38e1258b39 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5b38e1103160 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5b38e1258e62 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5b38e123adf2 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5b38e12331c9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5b38e123bbfd - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5b38e12783bc - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5b38e1278192 - core[a373ad73a504971]::result::unwrap_failed
[INFO] [stdout]   12:     0x5b38e10bec1e - grox[2e335485ee7cbd57]::tools::tests::grep_max_results_cap::{closure#0}
[INFO] [stdout]   13:     0x5b38e10e26a7 - <tokio[e3a76000c82ac34b]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>
[INFO] [stdout]   14:     0x5b38e10edf82 - <tokio[e3a76000c82ac34b]::runtime::runtime::Runtime>::block_on::<core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>
[INFO] [stdout]   15:     0x5b38e10c7c2e - <grox[2e335485ee7cbd57]::tools::tests::grep_max_results_cap::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   16:     0x5b38e10f65ab - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   17:     0x5b38e1103785 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   18:     0x5b38e10fd074 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   19:     0x5b38e1106812 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   20:     0x5b38e1260a9f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   21:     0x71b04cc23dfa - <unknown>
[INFO] [stdout]   22:     0x71b04ccb73d4 - clone
[INFO] [stdout]   23:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     tools::tests::grep_case_insensitive
[INFO] [stdout]     tools::tests::grep_defaults_to_project_root
[INFO] [stdout]     tools::tests::grep_glob_filter
[INFO] [stdout]     tools::tests::grep_invalid_regex
[INFO] [stdout]     tools::tests::grep_matches_found
[INFO] [stdout]     tools::tests::grep_max_results_cap
[INFO] [stdout]     tools::tests::grep_no_matches
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 72 passed; 7 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.05s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "44adb9b46edd806237fc42e6d49128441db5b58ad073585287b357a1df493017", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "44adb9b46edd806237fc42e6d49128441db5b58ad073585287b357a1df493017", kill_on_drop: false }`
[INFO] [stdout] 44adb9b46edd806237fc42e6d49128441db5b58ad073585287b357a1df493017
