[INFO] cloning repository https://github.com/naa0yama/fterm-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/naa0yama/fterm-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnaa0yama%2Ffterm-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnaa0yama%2Ffterm-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] be1c3a6460f94d18946c59c5e4e32a4e7f5d57d1
[INFO] testing naa0yama/fterm-rs against 1.98.0-beta.1 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnaa0yama%2Ffterm-rs" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-0-tc2/source/.cargo/config.toml
[INFO] removed /workspace/builds/worker-0-tc2/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/naa0yama/fterm-rs
[INFO] finished tweaking git repo https://github.com/naa0yama/fterm-rs
[INFO] tweaked toml for git repo https://github.com/naa0yama/fterm-rs written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/naa0yama/fterm-rs on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/naa0yama/fterm-rs 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.98.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-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 1fb440b010a8ce967196fcf7d4979873b0242f86bc6403abb50aaf3892896103
[INFO] running `Command { std: "docker" "start" "1fb440b010a8ce967196fcf7d4979873b0242f86bc6403abb50aaf3892896103", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1fb440b010a8ce967196fcf7d4979873b0242f86bc6403abb50aaf3892896103", 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" "1fb440b010a8ce967196fcf7d4979873b0242f86bc6403abb50aaf3892896103" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1fb440b010a8ce967196fcf7d4979873b0242f86bc6403abb50aaf3892896103", 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" "1fb440b010a8ce967196fcf7d4979873b0242f86bc6403abb50aaf3892896103" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[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 autocfg v1.5.1
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling anyhow v1.0.103
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling cfg_aliases v0.2.1
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling nix v0.31.3
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling memchr v2.8.2
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling vte v0.14.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling strip-ansi-escapes v0.2.1
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling fterm v0.1.10 (/opt/rustwide/workdir/crates/fterm)
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling which v8.0.4
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling fterm-core v0.1.10 (/opt/rustwide/workdir/crates/fterm-core)
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling clap_complete v4.6.5
[INFO] [stderr]    Compiling fterm-ssh-config v0.1.10 (/opt/rustwide/workdir/crates/fterm-ssh-config)
[INFO] [stderr]    Compiling fterm-session v0.1.10 (/opt/rustwide/workdir/crates/fterm-session)
[INFO] [stderr]     Finished `dev` profile [optimized + debuginfo] target(s) in 53.14s
[INFO] running `Command { std: "docker" "inspect" "1fb440b010a8ce967196fcf7d4979873b0242f86bc6403abb50aaf3892896103", 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" "1fb440b010a8ce967196fcf7d4979873b0242f86bc6403abb50aaf3892896103" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling fterm-core v0.1.10 (/opt/rustwide/workdir/crates/fterm-core)
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling serial_test_derive v3.5.0
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling log v0.4.33
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling zerocopy v0.8.52
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling nix v0.31.3
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling assert_cmd v2.2.2
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling opentelemetry v0.32.0
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling fterm-session v0.1.10 (/opt/rustwide/workdir/crates/fterm-session)
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tracing-mock v0.1.0-beta.3
[INFO] [stderr]    Compiling fterm-ssh-config v0.1.10 (/opt/rustwide/workdir/crates/fterm-ssh-config)
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling serial_test v3.5.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling regex v1.12.4
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling rand v0.9.4
[INFO] [stdout] warning: unused import: `std::fmt::Write`
[INFO] [stdout]   --> crates/fterm-ssh-config/src/config/block.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 95 |     use std::fmt::Write as _;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling opentelemetry_sdk v0.32.1
[INFO] [stderr]    Compiling fterm v0.1.10 (/opt/rustwide/workdir/crates/fterm)
[INFO] [stderr]     Finished `test` profile [optimized + debuginfo] target(s) in 53.05s
[INFO] running `Command { std: "docker" "inspect" "1fb440b010a8ce967196fcf7d4979873b0242f86bc6403abb50aaf3892896103", 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" "1fb440b010a8ce967196fcf7d4979873b0242f86bc6403abb50aaf3892896103" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `std::fmt::Write`
[INFO] [stderr]   --> crates/fterm-ssh-config/src/config/block.rs:95:9
[INFO] [stderr]    |
[INFO] [stderr] 95 |     use std::fmt::Write as _;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `fterm-ssh-config` (lib test) generated 1 warning
[INFO] [stderr]     Finished `test` profile [optimized + debuginfo] target(s) in 0.25s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/fterm-74b23a55f4228d7f)
[INFO] [stdout] 
[INFO] [stdout] running 129 tests
[INFO] [stdout] _fterm() {
[INFO] [stdout]     local i cur prev opts cmd
[INFO] [stdout]     COMPREPLY=()
[INFO] [stdout]     if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
[INFO] [stdout]         cur="$2"
[INFO] [stdout]     else
[INFO] [stdout]         cur="${COMP_WORDS[COMP_CWORD]}"
[INFO] [stdout]     fi
[INFO] [stdout]     prev="$3"
[INFO] [stdout]     cmd=""
[INFO] [stdout]     opts=""
[INFO] [stdout] 
[INFO] [stdout]     for i in "${COMP_WORDS[@]:0:COMP_CWORD}"
[INFO] [stdout]     do
[INFO] [stdout]         case "${cmd},${i}" in
[INFO] [stdout]             ",$1")
[INFO] [stdout]                 cmd="fterm"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm,completion)
[INFO] [stdout]                 cmd="fterm__subcmd__completion"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm,fgen)
[INFO] [stdout]                 cmd="fterm__subcmd__fgen"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm,flog)
[INFO] [stdout]                 cmd="fterm__subcmd__flog"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm,fssh)
[INFO] [stdout]                 cmd="fterm__subcmd__fssh"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm,help)
[INFO] [stdout]                 cmd="fterm__subcmd__help"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm,log-filter)
[INFO] [stdout]                 cmd="fterm__subcmd__log__subcmd__filter"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm,scp)
[INFO] [stdout]                 cmd="fterm__subcmd__scp"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm,ssh)
[INFO] [stdout]                 cmd="fterm__subcmd__ssh"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm,ssh-add)
[INFO] [stdout]                 cmd="fterm__subcmd__ssh__subcmd__add"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm,ssh-keygen)
[INFO] [stdout]                 cmd="fterm__subcmd__ssh__subcmd__keygen"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm__subcmd__help,completion)
[INFO] [stdout]                 cmd="fterm__subcmd__help__subcmd__completion"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm__subcmd__help,fgen)
[INFO] [stdout]                 cmd="fterm__subcmd__help__subcmd__fgen"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm__subcmd__help,flog)
[INFO] [stdout]                 cmd="fterm__subcmd__help__subcmd__flog"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm__subcmd__help,fssh)
[INFO] [stdout]                 cmd="fterm__subcmd__help__subcmd__fssh"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm__subcmd__help,help)
[INFO] [stdout]                 cmd="fterm__subcmd__help__subcmd__help"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm__subcmd__help,log-filter)
[INFO] [stdout]                 cmd="fterm__subcmd__help__subcmd__log__subcmd__filter"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm__subcmd__help,scp)
[INFO] [stdout]                 cmd="fterm__subcmd__help__subcmd__scp"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm__subcmd__help,ssh)
[INFO] [stdout]                 cmd="fterm__subcmd__help__subcmd__ssh"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm__subcmd__help,ssh-add)
[INFO] [stdout]                 cmd="fterm__subcmd__help__subcmd__ssh__subcmd__add"
[INFO] [stdout]                 ;;
[INFO] [stdout]             fterm__subcmd__help,ssh-keygen)
[INFO] [stdout]                 cmd="fterm__subcmd__help__subcmd__ssh__subcmd__keygen"
[INFO] [stdout]                 ;;
[INFO] [stdout]             *)
[INFO] [stdout]                 ;;
[INFO] [stdout]         esac
[INFO] [stdout]     done
[INFO] [stdout] 
[INFO] [stdout]     case "${cmd}" in
[INFO] [stdout]         fterm)
[INFO] [stdout]             opts="-h -V --help --version fssh ssh scp flog fgen log-filter ssh-add ssh-keygen completion help"
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__completion)
[INFO] [stdout]             opts="-h --list-hosts --help bash fish"
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__fgen)
[INFO] [stdout]             opts="-h --help"
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__flog)
[INFO] [stdout]             opts="-h --help"
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__fssh)
[INFO] [stdout]             opts="-h --help"
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__help)
[INFO] [stdout]             opts="fssh ssh scp flog fgen log-filter ssh-add ssh-keygen completion help"
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__help__subcmd__completion)
[INFO] [stdout]             opts=""
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__help__subcmd__fgen)
[INFO] [stdout]             opts=""
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__help__subcmd__flog)
[INFO] [stdout]             opts=""
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__help__subcmd__fssh)
[INFO] [stdout]             opts=""
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__help__subcmd__help)
[INFO] [stdout]             opts=""
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__help__subcmd__log__subcmd__filter)
[INFO] [stdout]             opts=""
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__help__subcmd__scp)
[INFO] [stdout]             opts=""
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__help__subcmd__ssh)
[INFO] [stdout]             opts=""
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__help__subcmd__ssh__subcmd__add)
[INFO] [stdout]             opts=""
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__help__subcmd__ssh__subcmd__keygen)
[INFO] [stdout]             opts=""
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__log__subcmd__filter)
[INFO] [stdout]             opts="-h --help"
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__scp)
[INFO] [stdout]             opts="-h --help [ARGS]..."
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__ssh)
[INFO] [stdout]             opts="-h --help [ARGS]..."
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__ssh__subcmd__add)
[INFO] [stdout]             opts="-h --help [ARGS]..."
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         fterm__subcmd__ssh__subcmd__keygen)
[INFO] [stdout]             opts="-h --help [ARGS]..."
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]     esac
[INFO] [stdout] }
[INFO] [stdout] 
[INFO] [stdout] if [[ "${BASH_VERSINFO[0]}" -eq 4 && "${BASH_VERSINFO[1]}" -ge 4 || "${BASH_VERSINFO[0]}" -gt 4 ]]; then
[INFO] [stdout]     complete -F _fterm -o nosort -o bashdefault -o default fterm
[INFO] [stdout] else
[INFO] [stdout]     complete -F _fterm -o bashdefault -o default fterm
[INFO] [stdout] fi
[INFO] [stdout] # Print an optspec for argparse to handle cmd's options that are independent of any subcommand.
[INFO] [stdout] function __fish_fterm_global_optspecs
[INFO] [stdout] 	string join \n h/help V/version
[INFO] [stdout] end
[INFO] [stdout] 
[INFO] [stdout] function __fish_fterm_needs_command
[INFO] [stdout] 	# Figure out if the current invocation already has a command.
[INFO] [stdout] 	set -l cmd (commandline -opc)
[INFO] [stdout] 	set -e cmd[1]
[INFO] [stdout] 	argparse -s (__fish_fterm_global_optspecs) -- $cmd 2>/dev/null
[INFO] [stdout] 	or return
[INFO] [stdout] 	if set -q argv[1]
[INFO] [stdout] 		# Also print the command, so this can be used to figure out what it is.
[INFO] [stdout] 		echo $argv[1]
[INFO] [stdout] 		return 1
[INFO] [stdout] 	end
[INFO] [stdout] 	return 0
[INFO] [stdout] end
[INFO] [stdout] 
[INFO] [stdout] function __fish_fterm_using_subcommand
[INFO] [stdout] 	set -l cmd (__fish_fterm_needs_command)
[INFO] [stdout] 	test -z "$cmd"
[INFO] [stdout] 	and return 1
[INFO] [stdout] 	contains -- $cmd[1] $argv
[INFO] [stdout] end
[INFO] [stdout] 
[INFO] [stdout] complete -c fterm -n "__fish_fterm_needs_command" -s h -l help -d 'Print help'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_needs_command" -s V -l version -d 'Print version'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_needs_command" -f -a "fssh" -d 'Interactive SSH host selection via fzf'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_needs_command" -f -a "ssh" -d 'SSH wrapper with validation, logging, and tmux integration'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_needs_command" -f -a "scp" -d 'SCP wrapper with validation and logging'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_needs_command" -f -a "flog" -d 'Log viewer with fzf UI'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_needs_command" -f -a "fgen" -d 'SSH config template generator (interactive)'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_needs_command" -f -a "log-filter" -d 'ANSI filter + timestamp for tmux pipe-pane (internal use)'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_needs_command" -f -a "ssh-add" -d 'ssh-add wrapper (MSYS2: routes to Windows OpenSSH)'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_needs_command" -f -a "ssh-keygen" -d 'ssh-keygen wrapper (MSYS2: routes to Windows OpenSSH)'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_needs_command" -f -a "completion" -d 'Generate shell completions and helper functions'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_needs_command" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand fssh" -s h -l help -d 'Print help'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand ssh" -s h -l help -d 'Print help'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand scp" -s h -l help -d 'Print help'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand flog" -s h -l help -d 'Print help'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand fgen" -s h -l help -d 'Print help'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand log-filter" -s h -l help -d 'Print help'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand ssh-add" -s h -l help -d 'Print help'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand ssh-keygen" -s h -l help -d 'Print help'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand completion" -l list-hosts -d 'Print SSH host list for completion (one per line)'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand completion" -s h -l help -d 'Print help (see more with \'--help\')'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand help; and not __fish_seen_subcommand_from fssh ssh scp flog fgen log-filter ssh-add ssh-keygen completion help" -f -a "fssh" -d 'Interactive SSH host selection via fzf'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand help; and not __fish_seen_subcommand_from fssh ssh scp flog fgen log-filter ssh-add ssh-keygen completion help" -f -a "ssh" -d 'SSH wrapper with validation, logging, and tmux integration'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand help; and not __fish_seen_subcommand_from fssh ssh scp flog fgen log-filter ssh-add ssh-keygen completion help" -f -a "scp" -d 'SCP wrapper with validation and logging'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand help; and not __fish_seen_subcommand_from fssh ssh scp flog fgen log-filter ssh-add ssh-keygen completion help" -f -a "flog" -d 'Log viewer with fzf UI'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand help; and not __fish_seen_subcommand_from fssh ssh scp flog fgen log-filter ssh-add ssh-keygen completion help" -f -a "fgen" -d 'SSH config template generator (interactive)'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand help; and not __fish_seen_subcommand_from fssh ssh scp flog fgen log-filter ssh-add ssh-keygen completion help" -f -a "log-filter" -d 'ANSI filter + timestamp for tmux pipe-pane (internal use)'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand help; and not __fish_seen_subcommand_from fssh ssh scp flog fgen log-filter ssh-add ssh-keygen completion help" -f -a "ssh-add" -d 'ssh-add wrapper (MSYS2: routes to Windows OpenSSH)'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand help; and not __fish_seen_subcommand_from fssh ssh scp flog fgen log-filter ssh-add ssh-keygen completion help" -f -a "ssh-keygen" -d 'ssh-keygen wrapper (MSYS2: routes to Windows OpenSSH)'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand help; and not __fish_seen_subcommand_from fssh ssh scp flog fgen log-filter ssh-add ssh-keygen completion help" -f -a "completion" -d 'Generate shell completions and helper functions'
[INFO] [stdout] complete -c fterm -n "__fish_fterm_using_subcommand help; and not __fish_seen_subcommand_from fssh ssh scp flog fgen log-filter ssh-add ssh-keygen completion help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
[INFO] [stdout] test command::completion::tests::bash_functions_contains_fssh_and_flog ... ok
[INFO] [stdout] test command::completion::tests::bash_scp_host_completion_has_colon_suffix ... ok
[INFO] [stdout] test command::completion::tests::bash_ssh_option_completions ... ok
[INFO] [stdout] test command::completion::tests::bash_scp_option_completions ... ok
[INFO] [stdout] test command::completion::tests::fish_functions_contains_transparent_wrappers ... ok
[INFO] [stdout] test command::completion::tests::fish_functions_contains_fssh_and_flog ... ok
[INFO] [stdout] test command::completion::tests::bash_functions_contains_transparent_wrappers ... ok
[INFO] [stdout] test command::completion::tests::fish_scp_host_completion_has_colon_suffix ... ok
[INFO] [stdout] test command::completion::tests::run_list_hosts_no_config_returns_ok ... ok
[INFO] [stdout] test command::completion::tests::run_fish_returns_ok ... ok
[INFO] [stdout] test command::completion::tests::run_bash_returns_ok ... ok
[INFO] [stdout] test command::completion::tests::run_list_hosts_with_config_returns_ok ... ok
[INFO] [stdout] test command::fgen::tests::apply_substitutions_multiple_occurrences ... ok
[INFO] [stdout] test command::fgen::tests::apply_substitutions_preserves_non_matching_text ... ok
[INFO] [stdout] test command::fgen::tests::apply_substitutions_replaces_all_patterns ... ok
[INFO] [stdout] test command::fgen::tests::get_output_path_builds_correct_path ... ok
[INFO] [stdout] test command::fgen::tests::show_preview_empty_content ... ok
[INFO] [stdout] test command::flog::tests::build_log_items_creates_full_path_strings ... ok
[INFO] [stdout] test command::flog::tests::build_log_items_empty_list ... ok
[INFO] [stdout] test command::flog::tests::extract_file_path_plain_log ... ok
[INFO] [stdout] test command::fgen::tests::show_preview_short_content ... ok
[INFO] [stdout] test command::fgen::tests::run_inner_empty_env_returns_1 ... ok
[INFO] [stdout] test command::fgen::tests::run_inner_uses_existing_template ... ok
[INFO] [stdout] test command::flog::tests::extract_file_path_search_result_gz ... ok
[INFO] [stdout] test command::fgen::tests::run_inner_overwrite_declined ... ok
[INFO] [stdout] test command::fgen::tests::run_inner_show_preview_truncates_long_output ... ok
[INFO] [stdout] test command::fgen::tests::run_inner_creates_default_template_and_exits_early ... ok
[INFO] [stdout] test command::fgen::tests::run_inner_empty_org_returns_1 ... ok
[INFO] [stdout] test command::fgen::tests::default_template_is_valid ... ok
[INFO] [stdout] test command::fgen::tests::apply_substitutions_empty_template ... ok
[INFO] [stdout] test command::completion::tests::bash_fssh_flog_suppress_stderr ... ok
[INFO] [stdout] test command::fgen::tests::run_inner_overwrite_confirmed ... ok
[INFO] [stdout] test command::flog::tests::extract_file_path_gz_log ... ok
[INFO] [stdout] test command::flog::tests::extract_file_path_search_result_log ... ok
[INFO] [stdout] test command::flog::tests::extract_file_path_unknown_format ... ok
[INFO] [stdout] test command::fgen::tests::run_inner_retry_on_empty_org_then_success ... ok
[INFO] [stdout] test command::flog::tests::run_inner_select_fn_error_propagates ... ok
[INFO] [stdout] test command::flog::tests::output_format_plain_log_file ... ok
[INFO] [stdout] test command::flog::tests::run_inner_empty_log_dir_returns_1 ... ok
[INFO] [stdout] test command::flog::tests::output_format_gz_file ... ok
[INFO] [stdout] test command::fgen::tests::run_inner_generates_config_file ... ok
[INFO] [stdout] test command::flog::tests::run_inner_selection_returns_less_command_for_log ... ok
[INFO] [stdout] test command::fssh::tests::run_inner_no_config_returns_1 ... ok
[INFO] [stdout] test command::flog::tests::run_inner_selection_empty_string_returns_1 ... ok
[INFO] [stdout] test command::scp::tests::generate_scp_log_path_contains_date_directory ... ok
[INFO] [stdout] test command::flog::tests::run_inner_no_log_dir_returns_error_1 ... ok
[INFO] [stdout] test command::scp::tests::generate_scp_log_path_contains_expected_parts ... ok
[INFO] [stdout] test command::scp::tests::generate_scp_log_path_contains_timestamp_prefix ... ok
[INFO] [stdout] test command::scp::tests::generate_scp_log_path_multi_host_different_users ... ok
[INFO] [stdout] test command::flog::tests::run_inner_selection_from_search_result_gz ... ok
[INFO] [stdout] test command::scp::tests::generate_scp_log_path_single_host ... ok
[INFO] [stdout] test command::scp::tests::pre_connect_checks_agent_available_no_config_returns_none ... ok
[INFO] [stdout] test command::fssh::tests::compress_old_logs_does_not_panic_on_missing_dir ... ok
[INFO] [stdout] test command::flog::tests::run_inner_selection_returns_zcat_for_gz ... ok
[INFO] [stdout] test command::scp::tests::resolve_all_hosts_defaults_unknown_on_parse_failure ... ok
[INFO] [stdout] test command::scp::tests::resolve_all_hosts_prefers_explicit_user ... ok
[INFO] [stdout] test command::scp::tests::resolve_all_hosts_uses_ssh_g_user ... ok
[INFO] [stdout] test command::scp::tests::setup_scp_session_creates_log_directory ... ok
[INFO] [stdout] test command::scp::tests::setup_scp_session_handles_pane_errors ... ok
[INFO] [stdout] test command::scp::tests::setup_scp_session_succeeds_with_mock_runner ... ok
[INFO] [stdout] test command::scp::tests::setup_scp_session_with_empty_details ... ok
[INFO] [stdout] test command::scp::tests::teardown_scp_session_does_not_panic ... ok
[INFO] [stdout] test command::scp::tests::teardown_scp_session_failure_does_not_panic ... ok
[INFO] [stdout] test command::scp::tests::teardown_scp_session_handles_runner_errors ... ok
[INFO] [stdout] test command::fgen::tests::show_preview_long_content ... ok
[INFO] [stdout] test command::ssh::tests::generate_log_path_contains_expected_parts ... ok
[INFO] [stdout] test command::ssh::tests::generate_log_path_uses_pane_pid ... ok
[INFO] [stdout] test command::ssh::tests::parse_connection_info_returns_none_when_fields_missing ... ok
[INFO] [stdout] test command::ssh::tests::parse_connection_info_with_valid_info ... ok
[INFO] [stdout] test command::ssh::tests::pre_connect_checks_agent_available_passes ... ok
[INFO] [stdout] test command::fssh::tests::run_bails_when_tmux_not_set ... ok
[INFO] [stdout] test command::ssh::tests::pre_connect_checks_not_in_tmux_delegates ... ok
[INFO] [stdout] test command::fssh::tests::run_inner_empty_host_list_returns_1 ... ok
[INFO] [stdout] test command::flog::tests::run_inner_selection_cancelled_returns_1 ... ok
[INFO] [stdout] test command::fssh::tests::run_inner_selection_empty_string_returns_1 ... ok
[INFO] [stdout] test command::ssh::tests::run_validation_with_errors_returns_some_1 ... ok
[INFO] [stdout] test command::scp::tests::pre_connect_checks_agent_unavailable_returns_1 ... ok
[INFO] [stdout] test command::scp::tests::pre_connect_checks_not_in_tmux_delegates ... ok
[INFO] [stdout] test command::ssh::tests::setup_connection_runs_without_error ... ok
[INFO] [stdout] test command::scp::tests::pre_connect_checks_validation_errors_returns_1 ... ok
[INFO] [stdout] test command::ssh::tests::teardown_connection_runs_without_error ... ok
[INFO] [stdout] test command::ssh_add::tests::resolve_ssh_command_returns_ssh_add ... ok
[INFO] [stdout] test command::ssh_keygen::tests::resolve_ssh_command_returns_ssh_keygen ... ok
[INFO] [stdout] test command::ssh_add::tests::run_with_nonexistent_command_returns_error ... ok
[INFO] [stdout] test command::ssh_keygen::tests::run_with_nonexistent_command_returns_error ... ok
[INFO] [stdout] test external::tests::exec_with_config_returns_1_for_nonexistent_command ... ok
[INFO] [stdout] test external::tests::exec_with_config_returns_nonzero_for_false ... ok
[INFO] [stdout] test external::tests::real_runner_new_creates_instance ... ok
[INFO] [stdout] test external::tests::exec_with_config_returns_zero_for_true ... ok
[INFO] [stdout] test external::tests::real_runner_run_interactive_returns_nonzero_for_false ... ok
[INFO] [stdout] test external::tests::real_runner_run_interactive_returns_success_for_true ... ok
[INFO] [stdout] test external::tests::real_runner_run_returns_error_for_nonexistent_command ... ok
[INFO] [stdout] test command::scp::tests::teardown_scp_session_single_host_success ... ok
[INFO] [stdout] test command::fssh::tests::run_inner_selection_cancelled_returns_1 ... ok
[INFO] [stdout] test command::scp::tests::pre_connect_checks_validation_warnings_returns_none ... ok
[INFO] [stdout] test external::tests::real_runner_run_returns_nonzero_for_false ... ok
[INFO] [stdout] test command::fssh::tests::compress_old_logs_with_existing_empty_dir ... ok
[INFO] [stdout] test external::tests::real_runner_run_with_timeout_captures_stdout ... ok
[INFO] [stdout] test command::ssh::tests::pre_connect_checks_agent_unavailable_returns_exit_code_1 ... ok
[INFO] [stdout] test external::tests::real_runner_run_with_timeout_spawn_error ... ok
[INFO] [stdout] test external::tests::real_runner_run_captures_stdout ... ok
[INFO] [stdout] test tests::error_kind_io_error ... ok
[INFO] [stdout] test tests::error_kind_unknown_error ... ok
[INFO] [stdout] test tests::run_log_filter_processes_empty_stream ... ok
[INFO] [stdout] test tests::run_timed_err_returns_1 ... ok
[INFO] [stdout] test external::tests::real_runner_run_returns_success_for_true ... ok
[INFO] [stdout] test external::tests::real_runner_run_with_timeout_nonzero_exit ... ok
[INFO] [stdout] test external::tests::real_runner_ssh_keygen_fingerprint_returns_error_for_nonexistent_file ... ok
[INFO] [stdout] test tests::run_timed_ok_returns_exit_code ... ok
[INFO] [stdout] test tests::run_timed_ok_zero_returns_0 ... ok
[INFO] [stdout] test util::fzf::tests::build_args_all_options ... ok
[INFO] [stdout] test util::fzf::tests::build_args_minimal ... ok
[INFO] [stdout] test util::fzf::tests::build_args_with_border_and_margin ... ok
[INFO] [stdout] test util::fzf::tests::build_args_with_multiple_binds ... ok
[INFO] [stdout] test util::fzf::tests::build_args_with_reverse ... ok
[INFO] [stdout] test util::fzf::tests::build_args_with_preview ... ok
[INFO] [stdout] test util::fzf::tests::run_with_empty_items_returns_none_or_err ... ok
[INFO] [stdout] test external::tests::real_runner_ssh_agent_list_returns_result ... ok
[INFO] [stdout] test external::tests::real_runner_ssh_resolve_returns_result_for_localhost ... ok
[INFO] [stdout] test command::ssh::tests::pre_connect_checks_validation_errors_returns_1 ... ok
[INFO] [stdout] test command::ssh::tests::pre_connect_checks_with_identity_option_skips_agent_check ... ok
[INFO] [stdout] test command::flog::tests::run_inner_selection_from_search_result_log ... ok
[INFO] [stdout] test command::ssh::tests::run_validation_with_valid_config_returns_none ... ok
[INFO] [stdout] test command::ssh::tests::run_validation_with_warnings_returns_none ... ok
[INFO] [stdout] test command::fssh::tests::run_inner_selection_returns_hostname ... ok
[INFO] [stdout] test command::fssh::tests::run_inner_select_fn_error_propagates ... ok
[INFO] [stdout] test command::ssh::tests::run_validation_no_config_returns_none ... ok
[INFO] [stdout] test command::scp::tests::pre_connect_checks_with_valid_config_passes ... ok
[INFO] [stdout] test external::tests::real_runner_run_timeout_kills_long_process ... ok
[INFO] [stderr]      Running tests/integration_test.rs (/opt/rustwide/target/debug/deps/integration_test-3d04c13c535be920)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 129 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.13s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test test_cli_log_filter_help ... ok
[INFO] [stdout] test test_cli_no_subcommand_shows_help ... ok
[INFO] [stdout] test test_cli_ssh_help ... ok
[INFO] [stdout] test test_cli_scp_help ... ok
[INFO] [stdout] test test_cli_version ... ok
[INFO] [stdout] test test_cli_fgen_help ... ok
[INFO] [stdout] test test_cli_fssh_help ... ok
[INFO] [stdout] test test_cli_help ... ok
[INFO] [stdout] test test_cli_flog_help ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/fterm_core-53ed13fee1dd2c57)
[INFO] [stdout] 
[INFO] [stdout] running 111 tests
[INFO] [stdout] test check_types::tests::format_summary_only_errors_no_warnings ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/fterm_session-617919ce93b12575)
[INFO] [stdout] test check_types::tests::format_summary_all_passed ... ok
[INFO] [stdout] test check_types::tests::format_summary_with_errors_and_warnings ... ok
[INFO] [stdout] test check_types::tests::format_summary_only_warnings_no_errors ... ok
[INFO] [stdout] test runner::tests::mock_agent_list_returns_registered_result ... ok
[INFO] [stdout] test runner::tests::mock_agent_list_returns_unavailable_by_default ... ok
[INFO] [stdout] test runner::tests::mock_fingerprint_returns_empty_for_unknown_path ... ok
[INFO] [stdout] test runner::tests::mock_fingerprint_returns_registered_value ... ok
[INFO] [stdout] test runner::tests::mock_interactive_returns_default_for_unknown ... ok
[INFO] [stdout] test runner::tests::mock_run_builds_key_correctly_with_args ... ok
[INFO] [stdout] test runner::tests::mock_run_returns_default_for_unknown_command ... ok
[INFO] [stdout] test runner::tests::mock_run_returns_registered_response ... ok
[INFO] [stdout] test runner::tests::mock_interactive_returns_registered_code ... ok
[INFO] [stdout] test runner::tests::mock_run_returns_default_for_command_with_no_args ... ok
[INFO] [stdout] test runner::tests::mock_ssh_resolve_error_returns_err ... ok
[INFO] [stdout] test runner::tests::mock_fingerprint_error_returns_err ... ok
[INFO] [stdout] test runner::tests::mock_ssh_resolve_returns_registered_output ... ok
[INFO] [stdout] test runner::tests::mock_ssh_resolve_returns_empty_for_unknown_host ... ok
[INFO] [stdout] test ssh_parse::tests::parse_ssh_g_value_empty_output_returns_none ... ok
[INFO] [stdout] test ssh_parse::tests::parse_ssh_g_value_finds_key ... ok
[INFO] [stdout] test ssh_parse::tests::parse_ssh_g_value_returns_none_for_missing_key ... ok
[INFO] [stdout] test ssh_parse::tests::parse_ssh_g_values_collects_all ... ok
[INFO] [stdout] test ssh_parse::tests::parse_ssh_g_values_empty_output_returns_empty_vec ... ok
[INFO] [stdout] test ssh_parse::tests::parse_ssh_g_values_no_matching_key_returns_empty_vec ... ok
[INFO] [stdout] test util::dry_run::tests::scp_dry_run_h_flag ... ok
[INFO] [stdout] test util::dry_run::tests::scp_dry_run_help ... ok
[INFO] [stdout] test util::dry_run::tests::scp_empty_args ... ok
[INFO] [stdout] test util::dry_run::tests::scp_no_dry_run ... ok
[INFO] [stdout] test util::dry_run::tests::ssh_dry_run_g_flag ... ok
[INFO] [stdout] test util::dry_run::tests::ssh_dry_run_help ... ok
[INFO] [stdout] test util::dry_run::tests::ssh_dry_run_q_flag ... ok
[INFO] [stdout] test util::dry_run::tests::ssh_dry_run_v_flag ... ok
[INFO] [stdout] test util::dry_run::tests::ssh_empty_args ... ok
[INFO] [stdout] test util::dry_run::tests::ssh_no_dry_run ... ok
[INFO] [stdout] test util::duration::tests::days_hours_minutes_seconds ... ok
[INFO] [stdout] test util::duration::tests::exact_one_day ... ok
[INFO] [stdout] test util::duration::tests::exact_one_hour ... ok
[INFO] [stdout] test util::duration::tests::exact_one_minute ... ok
[INFO] [stdout] test util::duration::tests::hours_minutes_seconds ... ok
[INFO] [stdout] test util::duration::tests::minutes_and_seconds ... ok
[INFO] [stdout] test util::duration::tests::one_second ... ok
[INFO] [stdout] test util::duration::tests::only_seconds ... ok
[INFO] [stdout] test util::duration::tests::zero_seconds ... ok
[INFO] [stdout] test util::log_dir::tests::falls_back_to_default ... ok
[INFO] [stdout] test util::log_dir::tests::returns_env_value ... ok
[INFO] [stdout] test util::path::tests::expand_tilde_bare_tilde_returns_home ... ok
[INFO] [stdout] test util::path::tests::expands_tilde_to_home ... ok
[INFO] [stdout] test util::path::tests::msys2_home_returns_none_without_msystem ... ok
[INFO] [stdout] test util::path::tests::no_tilde_returns_as_is ... ok
[INFO] [stdout] test util::path::tests::resolve_home_falls_back_to_home_on_msys2_without_userprofile ... ok
[INFO] [stdout] test util::path::tests::resolve_home_falls_back_to_root ... ok
[INFO] [stdout] test util::path::tests::resolve_home_prefers_userprofile_on_msys2 ... ok
[INFO] [stdout] test util::path::tests::resolve_home_uses_home_by_default ... ok
[INFO] [stdout] test util::path::tests::resolve_win_ssh_command_returns_none_without_msystem ... ok
[INFO] [stdout] test util::path::tests::to_win_mixed_returns_as_is_without_msystem ... ok
[INFO] [stdout] test util::scp_args::tests::empty_args ... ok
[INFO] [stdout] test util::scp_args::tests::local_file_only ... ok
[INFO] [stdout] test util::scp_args::tests::multiple_hosts_deduped ... ok
[INFO] [stdout] test util::scp_args::tests::pairs_dedup_by_host ... ok
[INFO] [stdout] test util::scp_args::tests::pairs_empty_args ... ok
[INFO] [stdout] test util::scp_args::tests::pairs_mixed_user_and_no_user ... ok
[INFO] [stdout] test util::scp_args::tests::pairs_no_user ... ok
[INFO] [stdout] test util::scp_args::tests::pairs_with_explicit_user ... ok
[INFO] [stdout] test util::scp_args::tests::single_remote_host ... ok
[INFO] [stdout] test util::scp_args::tests::skip_identity_option ... ok
[INFO] [stdout] test util::scp_args::tests::skip_option_flags ... ok
[INFO] [stdout] test util::scp_args::tests::user_at_host ... ok
[INFO] [stdout] test util::splash::tests::connect_banner_contains_header ... ok
[INFO] [stdout] test util::splash::tests::connect_banner_contains_config_name ... ok
[INFO] [stdout] test util::splash::tests::connect_banner_contains_target ... ok
[INFO] [stdout] test util::splash::tests::connect_banner_contains_log_path ... ok
[INFO] [stdout] test util::splash::tests::connect_banner_hides_agent_keys_when_empty ... ok
[INFO] [stdout] test util::splash::tests::connect_banner_contains_timestamp_label ... ok
[INFO] [stdout] test util::splash::tests::connect_banner_hides_ssh_details_when_empty ... ok
[INFO] [stdout] test util::splash::tests::connect_banner_uses_ansi_colors ... ok
[INFO] [stdout] test util::splash::tests::connect_banner_shows_ssh_details ... ok
[INFO] [stdout] test util::splash::tests::disconnect_banner_contains_target ... ok
[INFO] [stdout] test util::splash::tests::disconnect_banner_contains_timestamp_label ... ok
[INFO] [stdout] test util::splash::tests::disconnect_banner_contains_header ... ok
[INFO] [stdout] test util::splash::tests::disconnect_banner_uses_ansi_colors ... ok
[INFO] [stdout] test util::splash::tests::scp_banner_failure ... ok
[INFO] [stdout] test util::splash::tests::scp_banner_failure_no_green_in_header ... ok
[INFO] [stdout] test util::splash::tests::scp_banner_hides_hosts_when_empty ... ok
[INFO] [stdout] test util::splash::tests::scp_banner_success ... ok
[INFO] [stdout] test util::splash::tests::scp_banner_success_no_red ... ok
[INFO] [stdout] test util::splash::tests::disconnect_banner_contains_duration ... ok
[INFO] [stdout] test util::splash::tests::connect_banner_shows_agent_keys ... ok
[INFO] [stdout] test util::ssh_args::tests::extract_host_from_user_at_host ... ok
[INFO] [stdout] test util::ssh_args::tests::extract_host_plain ... ok
[INFO] [stdout] test util::ssh_args::tests::hostname_after_combined_option ... ok
[INFO] [stdout] test util::splash::tests::scp_connect_banner_contains_header ... ok
[INFO] [stdout] test util::splash::tests::scp_connect_banner_contains_log_path ... ok
[INFO] [stdout] test util::splash::tests::scp_banner_lists_hosts ... ok
[INFO] [stdout] test util::ssh_args::tests::hostname_after_flag_options ... ok
[INFO] [stdout] test util::ssh_args::tests::empty_args ... ok
[INFO] [stdout] test util::splash::tests::scp_connect_banner_shows_ssh_details ... ok
[INFO] [stdout] test util::splash::tests::scp_connect_banner_contains_target ... ok
[INFO] [stdout] test util::ssh_args::tests::hostname_with_identity_and_jump ... ok
[INFO] [stdout] test util::ssh_args::tests::hostname_with_o_option ... ok
[INFO] [stdout] test util::splash::tests::scp_connect_banner_shows_agent_keys ... ok
[INFO] [stdout] test util::ssh_args::tests::hostname_with_remote_command ... ok
[INFO] [stdout] test util::ssh_args::tests::hostname_with_user ... ok
[INFO] [stdout] test util::ssh_args::tests::no_hostname ... ok
[INFO] [stdout] test util::ssh_args::tests::simple_hostname ... ok
[INFO] [stdout] test util::ssh_env::tests::load_sets_env_vars_from_file ... ok
[INFO] [stdout] test util::ssh_env::tests::load_does_nothing_without_ssh_env ... ok
[INFO] [stdout] test util::ssh_args::tests::hostname_after_port_option ... ok
[INFO] [stdout] test util::ssh_env::tests::load_skips_comments_and_empty_lines ... ok
[INFO] [stdout] test ssh_parse::tests::parse_ssh_g_value_case_insensitive ... ok
[INFO] [stdout] test util::ssh_env::tests::load_handles_missing_file ... ok
[INFO] [stdout] test util::splash::tests::scp_banner_contains_header ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 111 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 74 tests
[INFO] [stdout] test logging::filter::tests::process_stream_empty_input ... ok
[INFO] [stdout] test logging::filter::tests::process_stream_single_line ... ok
[INFO] [stdout] test logging::filter::tests::sanitize_line_empty ... ok
[INFO] [stdout] test logging::filter::tests::process_stream_multiple_lines ... ok
[INFO] [stdout] test logging::filter::tests::sanitize_line_multiple_cr ... ok
[INFO] [stdout] test logging::filter::tests::sanitize_line_plain_text ... ok
[INFO] [stdout] test logging::filter::tests::sanitize_line_single_cr ... ok
[INFO] [stdout] test logging::filter::tests::sanitize_line_trailing_cr ... ok
[INFO] [stdout] test logging::filter::tests::strip_ansi_color_codes ... ok
[INFO] [stdout] test logging::filter::tests::strip_ansi_empty_input ... ok
[INFO] [stdout] test logging::filter::tests::strip_ansi_plain_text ... ok
[INFO] [stdout] test logging::filter::tests::strip_ansi_cursor_movement ... ok
[INFO] [stdout] test logging::start::tests::creates_log_directory_and_writes_header ... ok
[INFO] [stdout] test logging::start::tests::returns_error_on_tmux_failure ... ok
[INFO] [stdout] test logging::start::tests::writes_empty_header_when_no_details ... ok
[INFO] [stdout] test logging::stop::tests::stops_pipe_appends_marker_and_compresses ... ok
[INFO] [stdout] test logging::stop::tests::returns_error_when_pipe_pane_stop_fails ... ok
[INFO] [stdout] test tmux::pane::tests::get_title_success ... ok
[INFO] [stdout] test tmux::pane::tests::get_title_failure ... ok
[INFO] [stdout] test logging::stop::tests::unset_fterm_logging_failure_is_non_fatal ... ok
[INFO] [stdout] test tmux::pane::tests::reset_style_failure ... ok
[INFO] [stdout] test logging::stop::tests::missing_log_file_skips_gracefully ... ok
[INFO] [stdout] test logging::start::tests::set_option_failure_is_non_fatal ... ok
[INFO] [stdout] test logging::stop::tests::returns_error_when_gzip_fails ... ok
[INFO] [stdout] test tmux::pane::tests::set_ssh_host_failure ... ok
[INFO] [stdout] test logging::stop::tests::disconnect_marker_has_timestamp_format ... ok
[INFO] [stdout] test tmux::pane::tests::reset_style_success ... ok
[INFO] [stdout] test tmux::pane::tests::set_ssh_host_success ... ok
[INFO] [stdout] test logging::start::tests::writes_header_with_details_only ... ok
[INFO] [stdout] test logging::start::tests::writes_header_with_keys_only ... ok
[INFO] [stdout] test tmux::pane::tests::set_title_failure ... ok
[INFO] [stdout] test tmux::pane::tests::unset_ssh_host_failure ... ok
[INFO] [stdout] test tmux::pane::tests::unset_ssh_host_success ... ok
[INFO] [stdout] test tmux::session::tests::already_in_tmux_returns_action ... ok
[INFO] [stdout] test tmux::session::tests::build_escaped_command_basic ... ok
[INFO] [stdout] test tmux::session::tests::build_escaped_command_empty_subcommand ... ok
[INFO] [stdout] test tmux::session::tests::build_escaped_command_with_special_args ... ok
[INFO] [stdout] test tmux::session::tests::creates_session_when_missing ... ok
[INFO] [stdout] test tmux::session::tests::delegates_when_session_exists ... ok
[INFO] [stdout] test tmux::session::tests::get_pane_pid_falls_back_to_process_id_on_failure ... ok
[INFO] [stdout] test tmux::session::tests::get_pane_pid_returns_trimmed_pid_on_success ... ok
[INFO] [stdout] test tmux::session::tests::get_tmux_identifiers_returns_fallback_on_empty_stdout ... ok
[INFO] [stdout] test tmux::session::tests::get_pane_pid_falls_back_to_process_id_on_empty_stdout ... ok
[INFO] [stdout] test tmux::session::tests::shell_escape_simple_token ... ok
[INFO] [stdout] test tmux::session::tests::shell_escape_token_with_single_quotes ... ok
[INFO] [stdout] test tmux::session::tests::shell_escape_token_with_spaces ... ok
[INFO] [stdout] test tmux::session::tests::get_tmux_identifiers_returns_fallback_on_failure ... ok
[INFO] [stdout] test tmux::window::tests::decrement_from_zero_stays_at_zero ... ok
[INFO] [stdout] test tmux::window::tests::decrement_to_zero_restores_rename ... ok
[INFO] [stdout] test tmux::window::tests::disable_rename_success ... ok
[INFO] [stdout] test tmux::session::tests::get_tmux_identifiers_returns_trimmed_stdout_on_success ... ok
[INFO] [stdout] test tmux::window::tests::decrement_above_zero_keeps_rename_off ... ok
[INFO] [stdout] test tmux::window::tests::set_window_option_failure ... ok
[INFO] [stdout] test tmux::session::tests::shell_escape_empty_string ... ok
[INFO] [stdout] test tmux::pane::tests::set_title_success ... ok
[INFO] [stdout] test util::files::tests::is_gz_detects_gz_extension ... ok
[INFO] [stdout] test util::files::tests::compress_logs_skips_already_compressed ... ok
[INFO] [stdout] test util::files::tests::compress_logs_compresses_and_removes_original ... ok
[INFO] [stdout] test tmux::window::tests::increment_from_zero ... ok
[INFO] [stdout] test tmux::window::tests::read_ssh_count_clamps_negative ... ok
[INFO] [stdout] test tmux::window::tests::read_ssh_count_default_on_empty ... ok
[INFO] [stdout] test tmux::window::tests::read_ssh_count_default_on_error ... ok
[INFO] [stdout] test util::files::tests::compress_logs_skips_nonexistent_dir ... ok
[INFO] [stdout] test util::files::tests::list_logs_finds_in_subdirectories ... ok
[INFO] [stdout] test util::files::tests::list_logs_returns_empty_for_missing_dir ... ok
[INFO] [stdout] test util::files::tests::list_logs_finds_log_and_gz ... ok
[INFO] [stdout] test util::files::tests::compress_logs_skips_active_log_reported_by_tmux ... ok
[INFO] [stdout] test util::files::tests::read_head_handles_short_file ... ok
[INFO] [stdout] test util::files::tests::read_gz_head_reads_n_lines ... ok
[INFO] [stdout] test util::files::tests::read_head_reads_n_lines ... ok
[INFO] [stdout] test logging::filter::tests::process_stream_strips_ansi ... ok
[INFO] [stdout] test logging::filter::tests::process_stream_strips_cr_progress ... ok
[INFO] [stdout] test logging::filter::tests::strip_ansi_bold_and_reset ... ok
[INFO] [stdout] test logging::stop::tests::finalize_logging_cleanup_appends_cleanup_footer ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 74 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/fterm_ssh_config-ba4c00ee7ca8e658)
[INFO] [stdout] 
[INFO] [stdout] running 111 tests
[INFO] [stdout] test config::agent::tests::returns_empty_when_agent_unavailable ... ok
[INFO] [stdout] test config::agent::tests::skips_unmatched_fingerprints ... ok
[INFO] [stdout] test config::agent::tests::skips_identity_files_with_no_fingerprint ... ok
[INFO] [stdout] test config::agent::tests::handles_multiple_identity_files ... ok
[INFO] [stdout] test config::agent::tests::matches_agent_key_to_identity_file ... ok
[INFO] [stdout] test config::agent::tests::returns_empty_when_no_identity_files ... ok
[INFO] [stdout] test config::block::tests::extracts_from_multiple_files ... ok
[INFO] [stdout] test config::block::tests::stops_at_lowercase_host_directive ... ok
[INFO] [stdout] test config::block::tests::extracts_lowercase_host_block ... ok
[INFO] [stdout] test config::block::tests::stops_at_lowercase_match_directive ... ok
[INFO] [stdout] test config::block::tests::returns_fallback_when_host_not_found ... ok
[INFO] [stdout] test config::block::tests::handles_multi_host_line ... ok
[INFO] [stdout] test config::block::tests::extracts_single_host_block ... ok
[INFO] [stdout] test config::block::tests::stops_at_match_directive ... ok
[INFO] [stdout] test config::block::tests::stops_at_next_host_directive ... ok
[INFO] [stdout] test config::connection::tests::case_insensitive_keys ... ok
[INFO] [stdout] test config::connection::tests::duplicate_keys_uses_last ... ok
[INFO] [stdout] test config::connection::tests::extra_fields_ignored ... ok
[INFO] [stdout] test config::connection::tests::parses_complete_connection_info ... ok
[INFO] [stdout] test config::details::tests::extracts_forward_agent_only_if_yes ... ok
[INFO] [stdout] test config::block::tests::truncates_at_max_lines ... ok
[INFO] [stdout] test config::details::tests::extracts_identities_only ... ok
[INFO] [stdout] test config::connection::tests::preserves_value_case ... ok
[INFO] [stdout] test config::details::tests::extracts_identity_file ... ok
[INFO] [stdout] test config::details::tests::extracts_forwarding_settings ... ok
[INFO] [stdout] test config::details::tests::handles_mixed_output ... ok
[INFO] [stdout] test config::details::tests::extracts_proxy_command ... ok
[INFO] [stdout] test config::connection::tests::handles_empty_output ... ok
[INFO] [stdout] test config::details::tests::extracts_proxy_jump ... ok
[INFO] [stdout] test config::details::tests::skips_dynamic_forward_none ... ok
[INFO] [stdout] test config::details::tests::skips_proxy_command_none ... ok
[INFO] [stdout] test config::details::tests::skips_proxy_jump_none ... ok
[INFO] [stdout] test config::details::tests::skips_forward_agent_no ... ok
[INFO] [stdout] test config::connection::tests::returns_none_when_field_missing ... ok
[INFO] [stdout] test config::home::tests::returns_ssh_directory_under_home ... ok
[INFO] [stdout] test config::home::tests::returns_custom_dir_from_env ... ok
[INFO] [stdout] test config::home::tests::build_config_args_returns_empty_when_default_dir ... ok
[INFO] [stdout] test config::hosts::tests::extracts_mixed_case_host_directives ... ok
[INFO] [stdout] test config::hosts::tests::deduplicates_across_files ... ok
[INFO] [stdout] test config::home::tests::build_config_args_returns_path_when_custom_dir_set ... ok
[INFO] [stdout] test validate::basic::tests::all_fields_missing_returns_multiple_messages ... ok
[INFO] [stdout] test validate::basic::tests::all_fields_valid ... ok
[INFO] [stdout] test validate::basic::tests::empty_hostname_returns_error ... ok
[INFO] [stdout] test validate::basic::tests::hostname_equals_alias_with_dots_returns_error ... ok
[INFO] [stdout] test validate::basic::tests::hostname_with_two_parts_no_error ... ok
[INFO] [stdout] test config::hosts::tests::extracts_simple_hosts ... ok
[INFO] [stdout] test config::include::tests::case_insensitive_include_keyword ... ok
[INFO] [stdout] test validate::basic::tests::missing_port_returns_error ... ok
[INFO] [stdout] test config::include::tests::detects_cycles ... ok
[INFO] [stdout] test validate::basic::tests::missing_user_returns_error ... ok
[INFO] [stdout] test config::hosts::tests::extracts_lowercase_host_directive ... ok
[INFO] [stdout] test config::hosts::tests::filters_wildcard_hosts ... ok
[INFO] [stdout] test validate::basic::tests::identities_only_not_yes_returns_warn ... ok
[INFO] [stdout] test validate::basic::tests::no_identity_file_returns_warn ... ok
[INFO] [stdout] test config::hosts::tests::handles_multiple_hosts_per_line ... ok
[INFO] [stdout] test validate::cm_dir::tests::created_directory_has_correct_permissions ... ok
[INFO] [stdout] test validate::control_path::tests::control_path_empty_skips ... ok
[INFO] [stdout] test validate::control_path::tests::control_path_none_skips ... ok
[INFO] [stdout] test validate::control_path::tests::control_master_empty_skips ... ok
[INFO] [stdout] test config::include::tests::ignores_nonexistent_glob_matches ... ok
[INFO] [stdout] test validate::cm_dir::tests::creates_cm_directory_returns_info_message ... ok
[INFO] [stdout] test validate::control_path::tests::missing_directory_returns_warn ... ok
[INFO] [stdout] test config::include::tests::resolves_multiple_patterns_on_one_line ... ok
[INFO] [stdout] test validate::cm_dir::tests::existing_cm_directory_returns_empty ... ok
[INFO] [stdout] test config::include::tests::resolves_glob_include ... ok
[INFO] [stdout] test validate::control_path::tests::existing_directory_no_warn ... ok
[INFO] [stdout] test config::hosts::tests::returns_empty_for_no_hosts ... ok
[INFO] [stdout] test config::include::tests::resolves_relative_include ... ok
[INFO] [stdout] test config::include::tests::resolves_single_config_without_includes ... ok
[INFO] [stdout] test config::include::tests::skips_comments_and_empty_lines ... ok
[INFO] [stdout] test validate::control_path::tests::control_master_disabled_skips ... ok
[INFO] [stdout] test validate::duplicate::tests::wildcards_are_skipped ... ok
[INFO] [stdout] test validate::control_path::tests::tilde_path_expands_correctly ... ok
[INFO] [stdout] test validate::duplicate::tests::multiple_aliases_on_one_line ... ok
[INFO] [stdout] test validate::duplicate::tests::duplicate_across_files_returns_warn ... ok
[INFO] [stdout] test validate::duplicate::tests::duplicate_in_same_file_returns_warn ... ok
[INFO] [stdout] test validate::duplicate::tests::negation_patterns_skipped ... ok
[INFO] [stdout] test validate::host_prefix::tests::has_host_pattern_finds_pattern ... ok
[INFO] [stdout] test config::include::tests::handles_absolute_include_path ... ok
[INFO] [stdout] test validate::duplicate::tests::no_duplicates_returns_empty ... ok
[INFO] [stdout] test validate::host_prefix::tests::single_part_host_skips ... ok
[INFO] [stdout] test validate::identity::tests::missing_identity_file_returns_error ... ok
[INFO] [stdout] test validate::identity::tests::expand_tilde_works ... ok
[INFO] [stdout] test validate::identity::tests::no_identity_files_returns_empty ... ok
[INFO] [stdout] test validate::orchestrator::tests::count_levels_counts_correctly ... ok
[INFO] [stdout] test validate::identity::tests::key_not_in_agent_returns_warn ... ok
[INFO] [stdout] test validate::host_prefix::tests::has_host_pattern_multiple_patterns_on_line ... ok
[INFO] [stdout] test validate::proxyjump::tests::duplicate_proxy_across_chains_checked_once ... ok
[INFO] [stdout] test validate::proxyjump::tests::ipv4_proxy_allowed ... ok
[INFO] [stdout] test validate::proxyjump::tests::is_likely_direct_address_ipv4 ... ok
[INFO] [stdout] test validate::proxyjump::tests::is_likely_direct_address_simple_hostname ... ok
[INFO] [stdout] test validate::proxyjump::tests::no_proxyjump_returns_empty ... ok
[INFO] [stdout] test validate::orchestrator::tests::count_levels_empty_messages_returns_zero ... ok
[INFO] [stdout] test validate::host_prefix::tests::host_star_fallback_returns_empty ... ok
[INFO] [stdout] test validate::host_prefix::tests::matching_broader_prefix_returns_empty ... ok
[INFO] [stdout] test validate::proxyjump::tests::circular_reference_returns_error ... ok
[INFO] [stdout] test validate::proxyjump::tests::is_likely_direct_address_rejects_fqdn ... ok
[INFO] [stdout] test validate::host_prefix::tests::matching_prefix_pattern_returns_empty ... ok
[INFO] [stdout] test validate::orchestrator::tests::run_all_checks_pass_syntax_no_hosts_returns_empty_messages ... ok
[INFO] [stdout] test validate::proxyjump::tests::simple_hostname_proxy_allowed ... ok
[INFO] [stdout] test validate::host_prefix::tests::no_matching_pattern_returns_error ... ok
[INFO] [stdout] test validate::proxyjump::tests::unknown_proxy_not_direct_address_returns_error ... ok
[INFO] [stdout] test validate::syntax::tests::syntax_ok_returns_empty ... ok
[INFO] [stderr] error: test failed, to rerun pass `-p fterm-ssh-config --lib`
[INFO] [stdout] test validate::orchestrator::tests::run_all_checks_syntax_fail_returns_early_with_syntax_errors ... ok
[INFO] [stdout] test validate::cm_dir::tests::read_only_parent_returns_error ... FAILED
[INFO] [stdout] test validate::identity::tests::existing_file_with_invalid_key_returns_error ... ok
[INFO] [stdout] test validate::syntax::tests::syntax_error_no_keyword_match_still_reports ... ok
[INFO] [stdout] test validate::syntax::tests::syntax_error_with_invalid_keyword ... ok
[INFO] [stdout] test validate::syntax::tests::syntax_error_with_multiple_lines ... ok
[INFO] [stdout] test validate::syntax::tests::syntax_error_with_mixed_lines ... ok
[INFO] [stdout] test validate::syntax::tests::syntax_error_returns_error_messages ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- validate::cm_dir::tests::read_only_parent_returns_error stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'validate::cm_dir::tests::read_only_parent_returns_error' (3265) panicked at crates/fterm-ssh-config/src/validate/cm_dir.rs:121:9:
[INFO] [stdout] assertion `left == right` failed
[INFO] [stdout]   left: Info
[INFO] [stdout]  right: Error
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x597a4ec84ab1 - std[73adb7dc35730857]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x597a4ec84ab1 - std[73adb7dc35730857]::backtrace_rs::backtrace::trace_unsynchronized::<std[73adb7dc35730857]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x597a4ec84ab1 - std[73adb7dc35730857]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x597a4ec84ab1 - <<std[73adb7dc35730857]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[6883ba1bc0fe4ed1]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x597a4ec9a02a - <core[6883ba1bc0fe4ed1]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x597a4ec9a02a - core[6883ba1bc0fe4ed1]::fmt::write
[INFO] [stdout]    6:     0x597a4ec8980c - std[73adb7dc35730857]::io::default_write_fmt::<alloc[55a36b64bcbf2c0d]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/io/mod.rs:626:11
[INFO] [stdout]    7:     0x597a4ec8980c - <alloc[55a36b64bcbf2c0d]::vec::Vec<u8> as std[73adb7dc35730857]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/io/mod.rs:1730:13
[INFO] [stdout]    8:     0x597a4ec602d6 - <std[73adb7dc35730857]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x597a4ec602d6 - std[73adb7dc35730857]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x597a4ec7b7c9 - std[73adb7dc35730857]::panicking::default_hook
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x597a4ebfc8d0 - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn for<'a, 'b> core[6883ba1bc0fe4ed1]::ops::function::Fn<(&'a std[73adb7dc35730857]::panic::PanicHookInfo<'b>,), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send + core[6883ba1bc0fe4ed1]::marker::Sync> as core[6883ba1bc0fe4ed1]::ops::function::Fn<(&std[73adb7dc35730857]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2333:9
[INFO] [stdout]   12:     0x597a4ebfc8d0 - test[980ffaebd391d06d]::test_main_inner::<test[980ffaebd391d06d]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x597a4ec7b982 - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn for<'a, 'b> core[6883ba1bc0fe4ed1]::ops::function::Fn<(&'a std[73adb7dc35730857]::panic::PanicHookInfo<'b>,), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send + core[6883ba1bc0fe4ed1]::marker::Sync> as core[6883ba1bc0fe4ed1]::ops::function::Fn<(&std[73adb7dc35730857]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2333:9
[INFO] [stdout]   14:     0x597a4ec7b982 - std[73adb7dc35730857]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x597a4ec60382 - std[73adb7dc35730857]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:688:13
[INFO] [stdout]   16:     0x597a4ec57239 - std[73adb7dc35730857]::sys::backtrace::__rust_end_short_backtrace::<std[73adb7dc35730857]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x597a4ec6136d - __rustc[a7b7b02e776dd976]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x597a4ec9a7ec - core[6883ba1bc0fe4ed1]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x597a4ec9a6a3 - core[6883ba1bc0fe4ed1]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panicking.rs:439:17
[INFO] [stdout]   20:     0x597a4ebe4570 - core[6883ba1bc0fe4ed1]::panicking::assert_failed::<fterm_core[5f9162e6de97f502]::check_types::CheckLevel, fterm_core[5f9162e6de97f502]::check_types::CheckLevel>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x597a4ebba6e2 - fterm_ssh_config[f3e2d07111cd6d57]::validate::cm_dir::tests::read_only_parent_returns_error
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/fterm-ssh-config/src/validate/cm_dir.rs:121:9
[INFO] [stdout]   22:     0x597a4ebcc9d9 - fterm_ssh_config[f3e2d07111cd6d57]::validate::cm_dir::tests::read_only_parent_returns_error::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/fterm-ssh-config/src/validate/cm_dir.rs:103:40
[INFO] [stdout]   23:     0x597a4ebcc9d9 - <fterm_ssh_config[f3e2d07111cd6d57]::validate::cm_dir::tests::read_only_parent_returns_error::{closure#0} as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x597a4ebefc0b - <fn() -> core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x597a4ebefc0b - test[980ffaebd391d06d]::__rust_begin_short_backtrace::<core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>, fn() -> core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:724:18
[INFO] [stdout]   26:     0x597a4ebfd255 - test[980ffaebd391d06d]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:74
[INFO] [stdout]   27:     0x597a4ebfd255 - <core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x597a4ebfd255 - std[73adb7dc35730857]::panicking::catch_unwind::do_call::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>, core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   29:     0x597a4ebfd255 - std[73adb7dc35730857]::panicking::catch_unwind::<core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>, core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x597a4ebfd255 - std[73adb7dc35730857]::panic::catch_unwind::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>, core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x597a4ebfd255 - test[980ffaebd391d06d]::run_test_in_process
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:27
[INFO] [stdout]   32:     0x597a4ebfd255 - test[980ffaebd391d06d]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:668:43
[INFO] [stdout]   33:     0x597a4ebf7d04 - test[980ffaebd391d06d]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:698:41
[INFO] [stdout]   34:     0x597a4ebf7d04 - std[73adb7dc35730857]::sys::backtrace::__rust_begin_short_backtrace::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x597a4ec003a2 - std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   36:     0x597a4ec003a2 - <core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x597a4ec003a2 - std[73adb7dc35730857]::panicking::catch_unwind::do_call::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   38:     0x597a4ec003a2 - std[73adb7dc35730857]::panicking::catch_unwind::<(), core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x597a4ec003a2 - std[73adb7dc35730857]::panic::catch_unwind::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x597a4ec003a2 - std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   41:     0x597a4ec003a2 - <std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1} as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x597a4ec83d9f - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn core[6883ba1bc0fe4ed1]::ops::function::FnOnce<(), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2319:9
[INFO] [stdout]   43:     0x597a4ec83d9f - <std[73adb7dc35730857]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   44:     0x788b8c850aa4 - <unknown>
[INFO] [stdout]   45:     0x788b8c8dda64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     validate::cm_dir::tests::read_only_parent_returns_error
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 110 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "1fb440b010a8ce967196fcf7d4979873b0242f86bc6403abb50aaf3892896103", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1fb440b010a8ce967196fcf7d4979873b0242f86bc6403abb50aaf3892896103", kill_on_drop: false }`
[INFO] [stdout] 1fb440b010a8ce967196fcf7d4979873b0242f86bc6403abb50aaf3892896103
