[INFO] fetching crate schwab 0.6.0...
[INFO] testing schwab-0.6.0 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate schwab 0.6.0 into /workspace/builds/worker-5-tc1/source
[INFO] started tweaking crates.io crate schwab 0.6.0
[INFO] removed 0 missing examples
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate schwab 0.6.0
[INFO] tweaked toml for crates.io crate schwab 0.6.0 written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate schwab 0.6.0 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate schwab 0.6.0 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.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded reqwest v0.13.3
[INFO] [stderr]   Downloaded rust_decimal v1.42.0
[INFO] [stderr]   Downloaded is-docker v0.2.0
[INFO] [stderr]   Downloaded is-wsl v0.4.0
[INFO] [stderr]   Downloaded mockito v1.7.2
[INFO] [stderr]   Downloaded open v5.3.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/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:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] b1a21f2a3768fcb78ae95e9c5559772aec874316554b1621f94ff396ec3570f8
[INFO] running `Command { std: "docker" "start" "b1a21f2a3768fcb78ae95e9c5559772aec874316554b1621f94ff396ec3570f8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b1a21f2a3768fcb78ae95e9c5559772aec874316554b1621f94ff396ec3570f8", 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" "b1a21f2a3768fcb78ae95e9c5559772aec874316554b1621f94ff396ec3570f8" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b1a21f2a3768fcb78ae95e9c5559772aec874316554b1621f94ff396ec3570f8", 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" "b1a21f2a3768fcb78ae95e9c5559772aec874316554b1621f94ff396ec3570f8" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]    Compiling dunce v1.0.5
[INFO] [stderr]    Compiling typenum v1.20.0
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling aws-lc-rs v1.17.0
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling cc v1.2.62
[INFO] [stderr]    Compiling rustls-pki-types v1.14.1
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling rand_core v0.10.1
[INFO] [stderr]    Compiling cpufeatures v0.3.0
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling num-conv v0.2.2
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling is-docker v0.2.0
[INFO] [stderr]    Compiling rustls-native-certs v0.8.3
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling data-encoding v2.11.0
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling const-oid v0.10.2
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling is-wsl v0.4.0
[INFO] [stderr]    Compiling chacha20 v0.10.0
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling pem v3.0.6
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling open v5.3.5
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling urlencoding v2.1.3
[INFO] [stderr]    Compiling rand v0.10.1
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling hybrid-array v0.4.12
[INFO] [stderr]    Compiling aws-lc-sys v0.41.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling crypto-common v0.2.2
[INFO] [stderr]    Compiling block-buffer v0.12.0
[INFO] [stderr]    Compiling digest v0.11.3
[INFO] [stderr]    Compiling sha2 v0.11.0
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling yasna v0.6.0
[INFO] [stderr]    Compiling rcgen v0.14.8
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[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 tracing-attributes v0.1.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling rand v0.9.4
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling serde_with_macros v3.20.0
[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 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_with v3.20.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling rustls-platform-verifier v0.7.0
[INFO] [stderr]    Compiling tungstenite v0.29.0
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling reqwest v0.13.3
[INFO] [stderr]    Compiling tokio-tungstenite v0.29.0
[INFO] [stderr]    Compiling schwab v0.6.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 28s
[INFO] running `Command { std: "docker" "inspect" "b1a21f2a3768fcb78ae95e9c5559772aec874316554b1621f94ff396ec3570f8", 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" "b1a21f2a3768fcb78ae95e9c5559772aec874316554b1621f94ff396ec3570f8" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling assert_cmd v2.2.2
[INFO] [stderr]    Compiling assert-json-diff v2.0.2
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling colored v3.1.1
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-tungstenite v0.29.0
[INFO] [stderr]    Compiling h2 v0.4.14
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling mockito v1.7.2
[INFO] [stderr]    Compiling reqwest v0.13.3
[INFO] [stderr]    Compiling schwab v0.6.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 09s
[INFO] running `Command { std: "docker" "inspect" "b1a21f2a3768fcb78ae95e9c5559772aec874316554b1621f94ff396ec3570f8", 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" "b1a21f2a3768fcb78ae95e9c5559772aec874316554b1621f94ff396ec3570f8" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.47s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/schwab-3e0f98065d78603b)
[INFO] [stdout] 
[INFO] [stdout] running 208 tests
[INFO] [stdout] test auth::tests::memory_token_store_reports_auth_required_when_empty ... ok
[INFO] [stdout] test auth::tests::auth_config_accessors_return_expected_values ... ok
[INFO] [stdout] test auth::tests::auth_config_oauth_base_url_setter_overrides_default ... ok
[INFO] [stdout] test auth::tests::callback_error_includes_oauth_error_description ... ok
[INFO] [stdout] test auth::tests::auth_config_rejects_insecure_or_non_loopback_callbacks ... ok
[INFO] [stdout] test auth::tests::authorize_url_contains_schwab_oauth_parameters ... ok
[INFO] [stdout] test auth::tests::parse_callback_request_rejects_empty_request ... ok
[INFO] [stdout] test auth::tests::callback_path_returns_slash_for_empty_path ... ok
[INFO] [stdout] test auth::tests::parse_callback_request_rejects_missing_state ... ok
[INFO] [stdout] test auth::tests::parse_callback_request_rejects_non_get ... ok
[INFO] [stdout] test auth::tests::file_token_store_path_accessor ... ok
[INFO] [stdout] test auth::tests::auth_config_debug_redacts_credentials ... ok
[INFO] [stdout] test auth::tests::parse_callback_request_surfaces_oauth_error_without_description ... ok
[INFO] [stdout] test auth::tests::parse_redirect_url_extracts_code_and_state ... ok
[INFO] [stdout] test auth::tests::parse_redirect_url_surfaces_oauth_error ... ok
[INFO] [stdout] test auth::tests::parse_redirect_url_rejects_state_mismatch ... ok
[INFO] [stdout] test auth::tests::parse_redirect_url_surfaces_oauth_error_without_description ... ok
[INFO] [stdout] test auth::tests::file_token_store_load_missing_file_returns_auth_required ... ok
[INFO] [stdout] test auth::tests::parse_redirect_url_rejects_missing_code ... ok
[INFO] [stdout] test auth::tests::parse_callback_request_rejects_missing_code ... ok
[INFO] [stdout] test auth::tests::redacted_returns_placeholder_or_empty ... ok
[INFO] [stdout] test auth::tests::file_token_store_supports_bare_relative_paths ... ok
[INFO] [stdout] test auth::tests::parse_callback_request_rejects_wrong_path ... ok
[INFO] [stdout] test auth::tests::file_token_store_round_trips_metadata_with_private_permissions ... ok
[INFO] [stdout] test auth::tests::callback_server_receives_https_code_and_state ... ok
[INFO] [stdout] test auth::tests::provider_token_returns_auth_expired_for_stale_refresh ... ok
[INFO] [stdout] test auth::tests::provider_debug_redacts_internals ... ok
[INFO] [stdout] test auth::tests::provider_refreshes_expired_token_and_saves_result ... ok
[INFO] [stdout] test auth::tests::refresh_token_file_maps_text_invalid_grant_to_reauth_error ... ok
[INFO] [stdout] test auth::tests::provider_token_returns_fresh_token_without_refresh ... ok
[INFO] [stdout] test auth::tests::exchange_redirect_url_completes_headless_login ... ok
[INFO] [stdout] test auth::tests::exchange_code_with_client_exchanges_auth_code_for_token ... ok
[INFO] [stdout] test auth::tests::refresh_token_file_preserves_timestamp_and_sends_expected_request ... ok
[INFO] [stdout] test config::tests::rejects_empty_base_url ... ok
[INFO] [stdout] test config::tests::rejects_invalid_base_urls ... ok
[INFO] [stdout] test error::tests::debug_impl_covers_all_variants ... ok
[INFO] [stdout] test error::tests::display_and_sources_cover_sync_variants ... ok
[INFO] [stdout] test error::tests::http_status_display_omits_response_body ... ok
[INFO] [stdout] test auth::tests::token_data_debug_redacts_tokens ... ok
[INFO] [stdout] test auth::tests::provider_refresh_returns_auth_expired_for_stale_refresh ... ok
[INFO] [stdout] test auth::tests::refresh_token_file_maps_invalid_grant_to_reauth_error ... ok
[INFO] [stdout] test auth::tests::refresh_token_file_preserves_refresh_token_when_response_omits_it ... ok
[INFO] [stdout] test auth::tests::login_completes_full_flow_with_callback ... ok
[INFO] [stdout] test auth::tests::start_login_creates_session_with_callback_server ... ok
[INFO] [stdout] test models::market_data::tests::deserialize_candle_list ... ok
[INFO] [stdout] test models::market_data::tests::deserialize_equity_with_null_fields ... ok
[INFO] [stdout] test models::market_data::tests::deserialize_expiration_chain ... ok
[INFO] [stdout] test models::market_data::tests::deserialize_forex_response ... ok
[INFO] [stdout] test models::market_data::tests::deserialize_hours ... ok
[INFO] [stdout] test models::market_data::tests::deserialize_instruments_response ... ok
[INFO] [stdout] test market_data_api::tests::endpoint_request_shapes_are_covered ... ok
[INFO] [stdout] test models::market_data::tests::deserialize_option_chain ... ok
[INFO] [stdout] test models::market_data::tests::deserialize_quote_error ... ok
[INFO] [stdout] test models::market_data::tests::deserialize_quote_response_equity ... ok
[INFO] [stdout] test models::market_data::tests::deserialize_quote_response_map ... ok
[INFO] [stdout] test models::market_data::tests::deserialize_screener_response ... ok
[INFO] [stdout] test models::streaming::acct_activity::tests::all_fields_count ... ok
[INFO] [stdout] test models::streaming::acct_activity::tests::field_index_first ... ok
[INFO] [stdout] test models::streaming::acct_activity::tests::all_fields_sequential_indices ... ok
[INFO] [stdout] test models::streaming::acct_activity::tests::field_index_last ... ok
[INFO] [stdout] test auth::tests::token_request_decode_error ... ok
[INFO] [stdout] test models::streaming::acct_activity::tests::from_value_keeps_null_message_data_empty ... ok
[INFO] [stdout] test models::streaming::acct_activity::tests::from_value_parses_sample ... ok
[INFO] [stdout] test models::streaming::acct_activity::tests::from_value_rejects_non_object ... ok
[INFO] [stdout] test models::streaming::chart_equity::tests::all_fields_sequential_indices ... ok
[INFO] [stdout] test models::streaming::chart_equity::tests::all_fields_count ... ok
[INFO] [stdout] test models::streaming::chart_equity::tests::field_index_first ... ok
[INFO] [stdout] test models::streaming::chart_equity::tests::field_index_last ... ok
[INFO] [stdout] test models::streaming::chart_equity::tests::from_value_parses_sample ... ok
[INFO] [stdout] test models::streaming::chart_equity::tests::from_value_returns_none_for_non_object ... ok
[INFO] [stdout] test models::streaming::chart_futures::tests::all_fields_sequential_indices ... ok
[INFO] [stdout] test models::streaming::chart_futures::tests::all_fields_count ... ok
[INFO] [stdout] test models::streaming::acct_activity::tests::from_value_accepts_string_sequence ... ok
[INFO] [stdout] test models::streaming::chart_futures::tests::field_index_last ... ok
[INFO] [stdout] test models::streaming::chart_futures::tests::from_value_parses_sample ... ok
[INFO] [stdout] test models::streaming::chart_futures::tests::from_value_returns_none_for_non_object ... ok
[INFO] [stdout] test models::streaming::equities::tests::all_fields_count ... ok
[INFO] [stdout] test models::streaming::chart_futures::tests::field_index_first ... ok
[INFO] [stdout] test models::streaming::equities::tests::all_fields_sequential_indices ... ok
[INFO] [stdout] test models::streaming::equities::tests::field_index_last ... ok
[INFO] [stdout] test models::streaming::equities::tests::from_value_parses_sample ... ok
[INFO] [stdout] test models::streaming::forex::tests::all_fields_count ... ok
[INFO] [stdout] test models::streaming::forex::tests::all_fields_sequential_indices ... ok
[INFO] [stdout] test models::streaming::equities::tests::field_index_first ... ok
[INFO] [stdout] test models::streaming::forex::tests::field_index_last ... ok
[INFO] [stdout] test models::streaming::forex::tests::field_index_first ... ok
[INFO] [stdout] test models::streaming::forex::tests::from_value_returns_none_for_non_object ... ok
[INFO] [stdout] test models::streaming::futures::tests::field_count ... ok
[INFO] [stdout] test models::streaming::futures::tests::field_indices ... ok
[INFO] [stdout] test models::streaming::futures::tests::from_value_parses_futures ... ok
[INFO] [stdout] test models::streaming::futures::tests::from_value_returns_none_for_non_object ... ok
[INFO] [stdout] test models::streaming::futures_options::tests::field_all_has_32_variants ... ok
[INFO] [stdout] test models::streaming::forex::tests::from_value_parses_sample ... ok
[INFO] [stdout] test models::streaming::futures_options::tests::field_indices_are_sequential ... ok
[INFO] [stdout] test models::streaming::equities::tests::from_value_returns_none_for_non_object ... ok
[INFO] [stdout] test models::streaming::futures_options::tests::from_value_parses_futures_option ... ok
[INFO] [stdout] test models::streaming::options::tests::from_value_parses_option_fields ... ok
[INFO] [stdout] test models::streaming::options::tests::option_field_all_matches_indices ... ok
[INFO] [stdout] test models::streaming::options::tests::from_value_returns_none_for_non_object ... ok
[INFO] [stdout] test models::streaming::futures_options::tests::from_value_returns_none_for_non_object ... ok
[INFO] [stdout] test models::streaming::screener_equity::tests::all_fields_count ... ok
[INFO] [stdout] test models::streaming::options::tests::option_field_count ... ok
[INFO] [stdout] test models::streaming::screener_equity::tests::all_fields_sequential_indices ... ok
[INFO] [stdout] test models::streaming::screener_equity::tests::field_index_first ... ok
[INFO] [stdout] test models::streaming::screener_equity::tests::from_value_parses_sample ... ok
[INFO] [stdout] test models::streaming::screener_equity::tests::from_value_returns_none_for_non_object ... ok
[INFO] [stdout] test models::streaming::screener_equity::tests::item_from_value_parses_sample ... ok
[INFO] [stdout] test models::streaming::screener_equity::tests::field_index_last ... ok
[INFO] [stdout] test models::streaming::screener_option::tests::all_fields_count ... ok
[INFO] [stdout] test models::streaming::screener_option::tests::all_fields_sequential_indices ... ok
[INFO] [stdout] test models::streaming::screener_option::tests::field_index_first ... ok
[INFO] [stdout] test models::streaming::options::tests::option_field_indices ... ok
[INFO] [stdout] test models::streaming::screener_equity::tests::item_from_value_returns_none_for_non_object ... ok
[INFO] [stdout] test models::streaming::screener_option::tests::field_index_last ... ok
[INFO] [stdout] test models::streaming::screener_option::tests::from_value_parses_sample ... ok
[INFO] [stdout] test models::streaming::screener_option::tests::from_value_returns_none_for_non_object ... ok
[INFO] [stdout] test models::trader::tests::deserialize_account_cash ... ok
[INFO] [stdout] test models::trader::tests::deserialize_execution_type_variants ... ok
[INFO] [stdout] test models::trader::tests::deserialize_account_number_hash ... ok
[INFO] [stdout] test models::trader::tests::deserialize_order_simple ... ok
[INFO] [stdout] test models::trader::tests::deserialize_order_status_variants ... ok
[INFO] [stdout] test models::trader::tests::deserialize_order_with_children ... ok
[INFO] [stdout] test models::trader::tests::deserialize_preview_order ... ok
[INFO] [stdout] test models::trader::tests::deserialize_transaction ... ok
[INFO] [stdout] test models::trader::tests::deserialize_transaction_instrument_equity ... ok
[INFO] [stdout] test models::trader::tests::deserialize_user_preference ... ok
[INFO] [stdout] test options::tests::optional_query_helpers_trim_empty_values ... ok
[INFO] [stdout] test options::tests::required_options_reject_empty_values ... ok
[INFO] [stdout] test order_builder::tests::accepts_matching_top_level_quantity ... ok
[INFO] [stdout] test order_builder::tests::bracket_order_json ... ok
[INFO] [stdout] test models::trader::tests::deserialize_transaction_instrument_option ... ok
[INFO] [stdout] test order_builder::tests::buy_sell_convenience_constructors ... ok
[INFO] [stdout] test order_builder::tests::converts_option_leg ... ok
[INFO] [stdout] test order_builder::tests::converts_single_equity_order ... ok
[INFO] [stdout] test order_builder::tests::converts_oco_order_with_two_children ... ok
[INFO] [stdout] test order_builder::tests::converts_trigger_order_with_child ... ok
[INFO] [stdout] test order_builder::tests::fluent_setters ... ok
[INFO] [stdout] test order_builder::tests::first_triggers_second_json ... ok
[INFO] [stdout] test order_builder::tests::limit_order_json ... ok
[INFO] [stdout] test order_builder::tests::market_order_json ... ok
[INFO] [stdout] test order_builder::tests::one_cancels_other_json ... ok
[INFO] [stdout] test order_builder::tests::missing_leg_field_errors_include_index ... ok
[INFO] [stdout] test order_builder::tests::option_lower_level_constructors ... ok
[INFO] [stdout] test models::trader::tests::deserialize_account_margin ... ok
[INFO] [stdout] test order_builder::tests::rejects_missing_type_specific_prices ... ok
[INFO] [stdout] test order_builder::tests::rejects_single_order_with_children ... ok
[INFO] [stdout] test auth::tests::provider_refresh_returns_updated_token ... ok
[INFO] [stdout] test order_builder::tests::rejects_oco_without_two_children ... ok
[INFO] [stdout] test order_builder::tests::option_convenience_constructors ... ok
[INFO] [stdout] test order_builder::tests::rejects_top_level_quantity_for_multi_leg_orders ... ok
[INFO] [stdout] test order_builder::tests::rejects_unknown_order_type ... ok
[INFO] [stdout] test order_builder::tests::rejects_unsupported_top_level_request_fields ... ok
[INFO] [stdout] test order_builder::tests::rejects_unsupported_leg_request_fields ... ok
[INFO] [stdout] test stream_session::protocol::tests::login_token_not_in_debug ... ok
[INFO] [stdout] test order_builder::tests::stop_order_json ... ok
[INFO] [stdout] test stream_session::protocol::tests::login_top_level_fields ... ok
[INFO] [stdout] test stream_session::protocol::tests::parse_data_message ... ok
[INFO] [stdout] test query::tests::comma_separated_symbols_rejects_empty_values ... ok
[INFO] [stdout] test order_builder::tests::stop_limit_order_json ... ok
[INFO] [stdout] test stream_session::protocol::tests::parse_heartbeat ... ok
[INFO] [stdout] test stream_session::protocol::tests::parse_equity_data_fixture_shape ... ok
[INFO] [stdout] test client::tests::debug_output_redacts_bearer_token ... ok
[INFO] [stdout] test stream_session::protocol::tests::parse_account_activity_data_fixture_shape ... ok
[INFO] [stdout] test stream_session::protocol::tests::parse_heartbeat_fixture_timestamp ... ok
[INFO] [stdout] test stream_session::protocol::tests::parse_options_data_fixture_shape ... ok
[INFO] [stdout] test stream_session::protocol::tests::parse_malformed_returns_error ... ok
[INFO] [stdout] test stream_session::protocol::tests::parse_login_denied_fixture ... ok
[INFO] [stdout] test stream_session::tests::parse_account_activity_data_message_maps_fields ... ok
[INFO] [stdout] test stream_session::protocol::tests::parse_login_success_fixture_accepts_numeric_request_id ... ok
[INFO] [stdout] test stream_session::protocol::tests::parse_response_message ... ok
[INFO] [stdout] test stream_session::tests::parse_chart_futures_data_message_maps_fields ... ok
[INFO] [stdout] test stream_session::tests::parse_options_data_message_maps_fields ... ok
[INFO] [stdout] test stream_session::tests::parse_chart_equity_data_message_maps_fields ... ok
[INFO] [stdout] test stream_session::tests::parse_equity_data_message_maps_fields ... ok
[INFO] [stdout] test stream_session::tests::parse_screener_equity_data_message_maps_fields ... ok
[INFO] [stdout] test stream_session::tests::parse_screener_option_data_message_maps_fields ... ok
[INFO] [stdout] test stream_session::tests::session_login_denied ... ok
[INFO] [stdout] test stream_session::tests::session_login_success ... ok
[INFO] [stdout] test stream_session::tests::session_disconnect_on_transport_close ... ok
[INFO] [stdout] test stream_session::tests::session_receives_account_activity_data ... ok
[INFO] [stdout] test market_data_api::tests::required_list_rejects_empty_values ... ok
[INFO] [stdout] test stream_session::tests::session_receives_options_data ... ok
[INFO] [stdout] test stream_session::tests::session_receives_chart_equity_data ... ok
[INFO] [stdout] test stream_session::tests::session_receives_screener_equity_data ... ok
[INFO] [stdout] test stream_session::tests::session_receives_equity_data ... ok
[INFO] [stdout] test stream_session::tests::session_receives_heartbeat ... ok
[INFO] [stdout] test stream_session::tests::session_receives_screener_option_data ... ok
[INFO] [stdout] test stream_session::tests::session_receives_chart_futures_data ... ok
[INFO] [stdout] test stream_session::tests::session_subscribe_chart_futures_sends_subs_command ... ok
[INFO] [stdout] test stream_session::tests::session_subscribe_screener_equity_sends_subs_command ... ok
[INFO] [stdout] test stream_session::tests::session_subscribe_options_sends_subs_command ... ok
[INFO] [stdout] test stream_session::tests::session_subscribe_chart_equity_sends_subs_command ... ok
[INFO] [stdout] test stream_session::tests::session_subscribe_sends_subs_command ... ok
[INFO] [stdout] test stream_session::tests::session_subscribe_account_activity_sends_subs_command ... ok
[INFO] [stdout] test stream_session::tests::session_subscribe_screener_option_sends_subs_command ... ok
[INFO] [stdout] test auth::tests::provider_new_and_from_token_file_create_valid_instances ... ok
[INFO] [stdout] test client::tests::decode_error_preserves_raw_body ... ok
[INFO] [stdout] test auth::tests::token_request_maps_400_invalid_grant_to_refresh_token_invalid ... ok
[INFO] [stdout] test market_data_api::tests::get_quotes_returns_http_status_errors ... ok
[INFO] [stdout] test client::tests::request_and_decode_errors_expose_sources_and_messages ... ok
[INFO] [stdout] test trader_api::tests::get_account_uses_trader_base_url_path_escaping_and_bearer_auth ... ok
[INFO] [stdout] test auth::tests::provider_config_and_client_return_valid_objects ... ok
[INFO] [stdout] test auth::tests::token_request_maps_non_400_to_http_status ... ok
[INFO] [stdout] test market_data_api::tests::get_option_chain_sends_documented_query_parameters ... ok
[INFO] [stdout] test market_data_api::tests::get_quotes_sends_expected_no_auth_request ... ok
[INFO] [stdout] test trader_api::tests::endpoint_request_shapes_are_covered ... ok
[INFO] [stdout] test trader_api::tests::place_order_sends_json_body_and_parses_location ... ok
[INFO] [stdout] test market_data_api::tests::numeric_option_helpers_preserve_explicit_zero_values ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 208 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.91s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/schwab-agent/main.rs (/opt/rustwide/target/debug/deps/schwab_agent-0ea16da3c89d2f00)
[INFO] [stdout] 
[INFO] [stdout] running 634 tests
[INFO] [stdout] test account::tests::account_error_exit_code_is_10 ... ok
[INFO] [stdout] test account::tests::account_balances_margin_has_kind_margin ... ok
[INFO] [stdout] test account::tests::account_error_code_is_stable ... ok
[INFO] [stdout] test account::tests::account_resolve_no_match_returns_validation_error ... ok
[INFO] [stdout] test account::tests::account_resolve_serializes_correctly ... ok
[INFO] [stdout] test account::tests::account_row_omits_absent_optional_fields ... ok
[INFO] [stdout] test account::tests::account_summary_cash_true_cash_unavailable_when_source_missing ... ok
[INFO] [stdout] test account::tests::account_summary_includes_account_flags ... ok
[INFO] [stdout] test account::tests::account_resolve_hash_match_wins_first ... ok
[INFO] [stdout] test account::tests::account_summary_cash_true_cash_uses_initial_balance_when_current_missing ... ok
[INFO] [stdout] test account::tests::account_summary_margin_balance_reports_current_cash_balance ... ok
[INFO] [stdout] test account::tests::account_response_shape_error_is_structured ... ok
[INFO] [stdout] test account::tests::account_summary_margin_true_cash_falls_back_to_initial_cash_balance ... ok
[INFO] [stdout] test account::tests::account_summary_margin_true_cash_uses_current_cash_balance ... ok
[INFO] [stdout] test account::tests::account_summary_cash_positions_are_compacted_when_requested ... ok
[INFO] [stdout] test account::tests::account_summary_cash_true_cash_falls_back_to_total_cash ... ok
[INFO] [stdout] test account::tests::account_resolve_nickname_match_returns_canonical_hash ... ok
[INFO] [stdout] test account::tests::account_summary_margin_true_cash_uses_initial_balance_cash ... ok
[INFO] [stdout] test account::tests::account_summary_cash_balance_fields ... ok
[INFO] [stdout] test account::tests::account_summary_missing_nickname_falls_back_to_variant_type ... ok
[INFO] [stdout] test account::tests::account_summary_no_balances_when_absent ... ok
[INFO] [stdout] test account::tests::account_summary_omits_absent_account_flags ... ok
[INFO] [stdout] test account::tests::account_summary_positions_none_when_not_requested ... ok
[INFO] [stdout] test account::tests::build_account_row_without_preference ... ok
[INFO] [stdout] test account::tests::account_summary_no_nick_name_falls_back_to_pref_type ... ok
[INFO] [stdout] test account::tests::default_account_returns_only_account_when_single ... ok
[INFO] [stdout] test account::tests::account_balances_cash_has_kind_cash ... ok
[INFO] [stdout] test account::tests::account_summary_serializes_correctly ... ok
[INFO] [stdout] test account::tests::account_summary_skips_accounts_without_matching_hash ... ok
[INFO] [stdout] test account::tests::account_summary_without_positions ... ok
[INFO] [stdout] test account::tests::account_summary_skips_accounts_without_securities_account ... ok
[INFO] [stdout] test account::tests::build_account_row_empty_nickname ... ok
[INFO] [stdout] test account::tests::build_account_row_with_preference ... ok
[INFO] [stdout] test account::tests::account_summary_with_positions ... ok
[INFO] [stdout] test account::tests::join_asymmetric_pref_without_hash ... ok
[INFO] [stdout] test account::tests::build_account_row_missing_nick_name ... ok
[INFO] [stdout] test account::tests::default_account_falls_back_to_first_when_no_primary ... ok
[INFO] [stdout] test account::tests::positions_omit_missing_fields ... ok
[INFO] [stdout] test account::tests::default_account_returns_error_when_no_accounts ... ok
[INFO] [stdout] test account::tests::retain_account_summary_keeps_only_selected_hash ... ok
[INFO] [stdout] test account::tests::positions_return_compact_objects_by_default ... ok
[INFO] [stdout] test account::tests::selected_account_validation_accepts_non_empty_summary ... ok
[INFO] [stdout] test account::tests::positions_include_fallback_instrument_identifiers ... ok
[INFO] [stdout] test analyze::tests::analyze_output_dashboard_fails_quote_succeeds_keeps_quote ... ok
[INFO] [stdout] test account::tests::account_error_hint_is_present ... ok
[INFO] [stdout] test account::tests::selected_account_validation_fails_when_rendering_drops_account ... ok
[INFO] [stdout] test account::tests::account_error_category_is_account ... ok
[INFO] [stdout] test account::tests::serialized_row_never_contains_account_number ... ok
[INFO] [stdout] test account::tests::instrument_summary_handles_all_account_instrument_variants ... ok
[INFO] [stdout] test account::tests::join_hash_to_preference_matches_on_account_number ... ok
[INFO] [stdout] test analyze::tests::analyze_output_multi_symbol_all_completely_fail ... ok
[INFO] [stdout] test account::tests::default_account_returns_primary_when_designated ... ok
[INFO] [stdout] test account::tests::default_account_skips_hashes_without_hash_value ... ok
[INFO] [stdout] test analyze::tests::analyze_output_single_symbol_both_fail ... ok
[INFO] [stdout] test account::tests::preference_accounts_flattens_only_present_account_lists ... ok
[INFO] [stdout] test auth::tests::auth_status_from_token_file_expired_refresh ... ok
[INFO] [stdout] test analyze::tests::analyze_output_quote_fails_dashboard_succeeds_keeps_analysis ... ok
[INFO] [stdout] test auth::tests::auth_status_from_token_file_no_refresh_token ... ok
[INFO] [stdout] test auth::tests::auth_status_from_token_file_valid_access_valid_refresh ... ok
[INFO] [stdout] test account::tests::true_cash_status_not_applicable_serializes_as_snake_case ... ok
[INFO] [stdout] test analyze::tests::analyze_output_serializes_derived_price_basis_when_quote_is_newer ... ok
[INFO] [stdout] test account::tests::account_resolve_ambiguous_nickname_returns_compact_validation_error ... ok
[INFO] [stdout] test analyze::tests::analyze_output_all_succeed_has_no_errors ... ok
[INFO] [stdout] test analyze::tests::analyze_output_serializes_to_json ... ok
[INFO] [stdout] test analyze::tests::analyze_output_multi_symbol_mixed_results ... ok
[INFO] [stdout] test account::tests::account_summary_margin_balance_fields ... ok
[INFO] [stdout] test account::tests::join_asymmetric_hash_without_pref ... ok
[INFO] [stdout] test analyze::tests::dashboard_from_value_preserves_derived_price_basis ... ok
[INFO] [stdout] test analyze::tests::quote_map_to_value_serializes_empty_quotes ... ok
[INFO] [stdout] test auth::tests::auth_status_from_token_file_expired_access ... ok
[INFO] [stdout] test auth::tests::auth_status_from_token_file_no_expires_at ... ok
[INFO] [stdout] test auth::tests::auth_status_missing_fields ... ok
[INFO] [stdout] test auth::tests::auth_status_missing_serializes_without_optional_fields ... ok
[INFO] [stdout] test auth::tests::callback_request_accepts_complete_oauth_callback ... ok
[INFO] [stdout] test auth::tests::callback_request_ignores_browser_probe_without_oauth_params ... ok
[INFO] [stdout] test auth::tests::build_config_env_overrides_config_file ... ok
[INFO] [stdout] test auth::tests::callback_request_ignores_unexpected_path ... ok
[INFO] [stdout] test auth::tests::callback_request_stops_on_oauth_error ... ok
[INFO] [stdout] test auth::tests::callback_redirect_url_encodes_code_and_state ... ok
[INFO] [stdout] test auth::tests::callback_stream_timeout_defaults_without_login_deadline ... ok
[INFO] [stdout] test auth::tests::build_config_falls_back_to_config_file ... ok
[INFO] [stdout] test auth::tests::callback_stream_timeout_fails_after_login_deadline ... ok
[INFO] [stdout] test auth::tests::callback_stream_timeout_is_capped_by_login_deadline ... ok
[INFO] [stdout] test auth::tests::format_epoch_valid_timestamp ... ok
[INFO] [stdout] test auth::tests::format_epoch_zero ... ok
[INFO] [stdout] test auth::tests::build_config_valid ... ok
[INFO] [stdout] test auth::tests::login_url_output_serializes ... ok
[INFO] [stdout] test auth::tests::now_epoch_returns_reasonable_value ... ok
[INFO] [stdout] test auth::tests::refresh_output_serializes_with_expiry ... ok
[INFO] [stdout] test auth::tests::build_config_missing_client_id ... ok
[INFO] [stdout] test auth::tests::refresh_output_serializes_without_expiry ... ok
[INFO] [stdout] test auth::tests::build_config_missing_client_secret ... ok
[INFO] [stdout] test auth::tests::require_token_file_existing_path ... ok
[INFO] [stdout] test auth::tests::require_token_file_missing_path ... ok
[INFO] [stdout] test auth::tests::token_saved_output_serializes ... ok
[INFO] [stdout] test auth::tests::format_epoch_negative_valid ... ok
[INFO] [stdout] test cli::tests::command_name_config_show ... ok
[INFO] [stdout] test cli::tests::command_name_config_status ... ok
[INFO] [stdout] test cli::tests::command_name_completions ... ok
[INFO] [stdout] test cli::tests::command_name_account_with_positions ... ok
[INFO] [stdout] test cli::tests::command_name_analyze ... ok
[INFO] [stdout] test cli::tests::command_name_doctor ... ok
[INFO] [stdout] test cli::tests::command_name_account_with_selector ... ok
[INFO] [stdout] test cli::tests::command_name_completion_alias ... ok
[INFO] [stdout] test cli::tests::command_name_market_history ... ok
[INFO] [stdout] test cli::tests::command_name_account ... ok
[INFO] [stdout] test cli::tests::account_help_includes_llm_workflow ... ok
[INFO] [stdout] test cli::tests::command_name_option_expirations ... ok
[INFO] [stdout] test cli::tests::command_name_option_chain ... ok
[INFO] [stdout] test auth::tests::status_does_not_expose_token_secrets ... ok
[INFO] [stdout] test cli::tests::command_name_auth_status ... ok
[INFO] [stdout] test cli::tests::command_name_market_history_with_all_flags ... ok
[INFO] [stdout] test cli::tests::command_name_order_get ... ok
[INFO] [stdout] test cli::tests::command_name_orders_alias ... ok
[INFO] [stdout] test cli::tests::command_name_auth_login_url ... ok
[INFO] [stdout] test cli::tests::command_name_market_quote ... ok
[INFO] [stdout] test cli::tests::command_name_quote_alias ... ok
[INFO] [stdout] test cli::tests::command_name_auth_refresh ... ok
[INFO] [stdout] test cli::tests::command_name_positions_alias ... ok
[INFO] [stdout] test cli::tests::command_name_schema ... ok
[INFO] [stdout] test cli::tests::command_name_auth_exchange ... ok
[INFO] [stdout] test cli::tests::market_history_fields_parse_output_fields ... ok
[INFO] [stdout] test cli::tests::command_name_history_alias ... ok
[INFO] [stdout] test cli::tests::market_history_all_fields_parses ... ok
[INFO] [stdout] test cli::tests::parse_account_fields_is_rejected ... ok
[INFO] [stdout] test cli::tests::market_quote_all_fields_parses ... ok
[INFO] [stdout] test cli::tests::command_name_option_screen ... ok
[INFO] [stdout] test cli::tests::command_name_ta_dashboard ... ok
[INFO] [stdout] test cli::tests::market_quote_fields_parse_output_and_api_fields ... ok
[INFO] [stdout] test cli::tests::orders_alias_parses_order_get_args ... ok
[INFO] [stdout] test cli::tests::parse_account_all_fields_is_rejected ... ok
[INFO] [stdout] test cli::tests::command_name_option_contract ... ok
[INFO] [stdout] test cli::tests::command_name_auth_login ... ok
[INFO] [stdout] test cli::tests::order_get_help_renders_llm_guide_once ... ok
[INFO] [stdout] test cli::tests::parse_account_no_flags_include_positions_false ... ok
[INFO] [stdout] test cli::tests::parse_order_equity_buy_dry_run ... ok
[INFO] [stdout] test cli::tests::parse_order_equity_buy_explicit_dry_run ... ok
[INFO] [stdout] test cli::tests::parse_account_no_flags ... ok
[INFO] [stdout] test cli::tests::parse_account_positions ... ok
[INFO] [stdout] test cli::tests::parse_account_with_positions_only_is_rejected ... ok
[INFO] [stdout] test cli::tests::parse_account_selector_before_positions ... ok
[INFO] [stdout] test cli::tests::parse_account_selector ... ok
[INFO] [stdout] test cli::tests::history_alias_parses_market_history_args ... ok
[INFO] [stdout] test cli::tests::parse_order_equity_sell_short ... ok
[INFO] [stdout] test cli::tests::parse_account_selector_with_positions ... ok
[INFO] [stdout] test cli::tests::parse_analyze_custom_interval_and_points ... ok
[INFO] [stdout] test cli::tests::parse_order_equity_buy_preview_alias ... ok
[INFO] [stdout] test cli::tests::parse_analyze_multiple_symbols ... ok
[INFO] [stdout] test cli::tests::command_tree_is_valid ... ok
[INFO] [stdout] test cli::tests::parse_order_equity_buy_with_account_and_price ... ok
[INFO] [stdout] test cli::tests::parse_order_dry_run_conflicts_with_save_preview ... ok
[INFO] [stdout] test cli::tests::parse_order_dry_run_conflicts_with_preview_alias ... ok
[INFO] [stdout] test cli::tests::parse_order_place_from_preview ... ok
[INFO] [stdout] test cli::tests::parse_order_preview_raw ... ok
[INFO] [stdout] test cli::tests::parse_order_option_buy_to_open ... ok
[INFO] [stdout] test cli::tests::parse_ta_dashboard_custom_interval_and_points ... ok
[INFO] [stdout] test cli::tests::parse_order_replace ... ok
[INFO] [stdout] test cli::tests::parse_ta_dashboard_defaults ... ok
[INFO] [stdout] test cli::tests::parse_ta_expected_move_defaults ... ok
[INFO] [stdout] test cli::tests::positions_alias_accepts_selector ... ok
[INFO] [stdout] test cli::tests::parse_ta_expected_move_custom_dte ... ok
[INFO] [stdout] test cli::tests::quote_alias_parses_market_quote_args ... ok
[INFO] [stdout] test cli::tests::parse_order_preview_conflicts_with_preview_first ... ok
[INFO] [stdout] test cli::tests::parse_order_option_sell_to_close ... ok
[INFO] [stdout] test cli::tests::parse_order_place_raw ... ok
[INFO] [stdout] test config::tests::config_path_ends_with_expected_suffix ... ok
[INFO] [stdout] test config::tests::deserializes_credential_fields ... ok
[INFO] [stdout] test config::tests::load_agent_config_missing_file_returns_default ... ok
[INFO] [stdout] test config::tests::credential_fields_default_to_none ... ok
[INFO] [stdout] test config::tests::default_config_has_flag_false ... ok
[INFO] [stdout] test config::tests::require_mutable_returns_error_when_config_missing ... ok
[INFO] [stdout] test config::tests::deserialize_ignores_unknown_keys ... ok
[INFO] [stdout] test config::tests::resolve_credentials_from_env ... ok
[INFO] [stdout] test config::tests::resolve_credentials_env_overrides_config ... ok
[INFO] [stdout] test config::tests::require_mutable_returns_error_when_disabled ... ok
[INFO] [stdout] test config::tests::loads_config_with_flag_false ... ok
[INFO] [stdout] test config::tests::resolve_credentials_from_config_file ... ok
[INFO] [stdout] test config::tests::require_mutable_returns_ok_when_enabled ... ok
[INFO] [stdout] test config::tests::load_agent_config_rejects_malformed_json ... ok
[INFO] [stdout] test config::tests::status_reports_callback_url_environment_source_without_value ... ok
[INFO] [stdout] test config::tests::status_reports_missing_credentials_and_default_paths ... ok
[INFO] [stdout] test config::tests::loads_config_with_flag_missing ... ok
[INFO] [stdout] test config::tests::resolve_credentials_missing_client_secret ... ok
[INFO] [stdout] test config::tests::loads_config_with_flag_true ... ok
[INFO] [stdout] test error::tests::account_validation_classification ... ok
[INFO] [stdout] test config::tests::status_reports_sources_without_secret_values ... ok
[INFO] [stdout] test config::tests::token_path_default_fallback ... ok
[INFO] [stdout] test config::tests::token_path_empty_env_falls_back_to_xdg_config_home ... ok
[INFO] [stdout] test error::tests::display_mutable_disabled ... ok
[INFO] [stdout] test config::tests::token_path_from_env ... ok
[INFO] [stdout] test error::tests::display_options_symbol_not_found ... ok
[INFO] [stdout] test error::tests::display_options_validation ... ok
[INFO] [stdout] test error::tests::hint_returns_none_for_non_auth_schwab_errors ... ok
[INFO] [stdout] test error::tests::json_error_classification ... ok
[INFO] [stdout] test error::tests::io_error_classification ... ok
[INFO] [stdout] test error::tests::market_validation_classification ... ok
[INFO] [stdout] test error::tests::missing_auth_config_classification ... ok
[INFO] [stdout] test discovery::tests::doctor_wraps_sanitized_config_status ... ok
[INFO] [stdout] test discovery::tests::schema_includes_required_discovery_sections ... ok
[INFO] [stdout] test error::tests::display_includes_inner_details ... ok
[INFO] [stdout] test cli::tests::stock_subcommand_parses_for_migration_hint ... ok
[INFO] [stdout] test config::tests::resolve_credentials_missing_client_id ... ok
[INFO] [stdout] test cli::tests::uppercase_duration_aliases_parse ... ok
[INFO] [stdout] test error::tests::mutable_disabled_classification ... ok
[INFO] [stdout] test error::tests::schwab_auth_expired_classification ... ok
[INFO] [stdout] test error::tests::schwab_http_status_classification ... ok
[INFO] [stdout] test error::tests::schwab_auth_required_classification ... ok
[INFO] [stdout] test error::tests::schwab_empty_base_url_classification ... ok
[INFO] [stdout] test error::tests::schwab_decode_classification ... ok
[INFO] [stdout] test error::tests::schwab_auth_callback_classification ... ok
[INFO] [stdout] test error::tests::options_symbol_not_found_classification ... ok
[INFO] [stdout] test error::tests::schwab_empty_symbols_classification ... ok
[INFO] [stdout] test error::tests::options_validation_classification ... ok
[INFO] [stdout] test error::tests::schwab_invalid_auth_config_classification ... ok
[INFO] [stdout] test error::tests::schwab_invalid_base_url_classification ... ok
[INFO] [stdout] test error::tests::schwab_missing_required_parameter_classification ... ok
[INFO] [stdout] test error::tests::schwab_refresh_token_invalid_classification ... ok
[INFO] [stdout] test error::tests::ta_invalid_interval_classification ... ok
[INFO] [stdout] test market::tests::default_quote_rows_show_requested_symbol_and_errors ... ok
[INFO] [stdout] test market::tests::history_rows_output_selects_extra_iso_field ... ok
[INFO] [stdout] test market::tests::history_rows_output_serializes_compact_table ... ok
[INFO] [stdout] test market::tests::history_rows_output_handles_empty_candles ... ok
[INFO] [stdout] test market::tests::normalize_quote_summaries_applies_matching_generic_symbol_errors ... ok
[INFO] [stdout] test market::tests::history_rows_output_includes_null_for_missing_selected_fields ... ok
[INFO] [stdout] test market::tests::normalize_quote_summaries_keeps_matching_api_rows ... ok
[INFO] [stdout] test market::tests::parse_history_date_only_start_produces_midnight_utc_ms ... ok
[INFO] [stdout] test market::tests::parse_history_epoch_ms_passthrough_is_unchanged ... ok
[INFO] [stdout] test market::tests::parse_history_date_only_end_produces_end_of_day_utc_ms ... ok
[INFO] [stdout] test error::tests::ta_calculation_error_classification ... ok
[INFO] [stdout] test error::tests::token_file_missing_classification ... ok
[INFO] [stdout] test error::tests::ta_insufficient_data_classification ... ok
[INFO] [stdout] test market::tests::parse_history_rfc3339_produces_epoch_ms ... ok
[INFO] [stdout] test market::tests::quote_error_summary_serialization ... ok
[INFO] [stdout] test market::tests::parse_history_invalid_date_rejects_before_api_call ... ok
[INFO] [stdout] test market::tests::quote_output_serializes_sorted ... ok
[INFO] [stdout] test market::tests::quote_rows_output_can_select_error_details ... ok
[INFO] [stdout] test market::tests::parse_history_invalid_string_rejects_before_api_call ... ok
[INFO] [stdout] test market::tests::quote_summary_serialization_skip_none ... ok
[INFO] [stdout] test cli::tests::removed_global_credential_flags_are_unknown ... ok
[INFO] [stdout] test market::tests::quote_rows_output_includes_null_for_missing_selected_fields ... ok
[INFO] [stdout] test market::tests::quote_rows_output_serializes_compact_table ... ok
[INFO] [stdout] test market::tests::selected_history_fields_accepts_aliases ... ok
[INFO] [stdout] test market::tests::selected_history_fields_rejects_empty_lists ... ok
[INFO] [stdout] test market::tests::selected_history_fields_defaults_to_compact_columns ... ok
[INFO] [stdout] test market::tests::selected_quote_fields_accepts_aliases ... ok
[INFO] [stdout] test market::tests::selected_history_fields_rejects_unknown_fields ... ok
[INFO] [stdout] test market::tests::selected_quote_fields_defaults_to_compact_columns ... ok
[INFO] [stdout] test market::tests::selected_quote_fields_rejects_empty_lists ... ok
[INFO] [stdout] test market::tests::summaries_sort_by_requested_symbol ... ok
[INFO] [stdout] test market::tests::summarize_equity_populated ... ok
[INFO] [stdout] test market::tests::summarize_error_all_none ... ok
[INFO] [stdout] test market::tests::sort_quote_summaries_preserves_generic_errors_for_all_fields ... ok
[INFO] [stdout] test market::tests::summarize_error_with_invalid_symbols ... ok
[INFO] [stdout] test market::tests::quote_rows_output_handles_empty_summaries ... ok
[INFO] [stdout] test error::tests::schwab_json_classification ... ok
[INFO] [stdout] test market::tests::normalize_quote_summaries_preserves_generic_error_details ... ok
[INFO] [stdout] test market::tests::normalize_quote_summaries_replaces_generic_error_rows ... ok
[INFO] [stdout] test market::tests::summarize_forex_all_none ... ok
[INFO] [stdout] test error::tests::schwab_io_classification ... ok
[INFO] [stdout] test market::tests::summarize_index_all_none ... ok
[INFO] [stdout] test market::tests::summarize_mutual_fund_all_none ... ok
[INFO] [stdout] test market::tests::summarize_equity_all_none ... ok
[INFO] [stdout] test market::tests::selected_quote_fields_rejects_unknown_fields ... ok
[INFO] [stdout] test market::tests::summarize_forex_populated ... ok
[INFO] [stdout] test market::tests::summarize_future_populated ... ok
[INFO] [stdout] test error::tests::schwab_encode_classification ... ok
[INFO] [stdout] test market::tests::summarize_future_all_none ... ok
[INFO] [stdout] test market::tests::summarize_future_option_all_none ... ok
[INFO] [stdout] test market::tests::summarize_future_option_populated ... ok
[INFO] [stdout] test market::tests::summarize_index_populated ... ok
[INFO] [stdout] test options::chain::tests::chain_options_with_all_filters ... ok
[INFO] [stdout] test options::chain::tests::chain_options_with_dte ... ok
[INFO] [stdout] test options::chain::tests::date_string_formats_correctly ... ok
[INFO] [stdout] test market::tests::summarize_option_all_none ... ok
[INFO] [stdout] test options::chain::tests::map_chain_error_400_returns_symbol_not_found ... ok
[INFO] [stdout] test market::tests::summarize_option_populated ... ok
[INFO] [stdout] test market::tests::summarize_option_put_contract ... ok
[INFO] [stdout] test options::chain::tests::chain_options_basic_symbol ... ok
[INFO] [stdout] test options::chain::tests::map_chain_error_404_returns_symbol_not_found ... ok
[INFO] [stdout] test options::chain::tests::requested_fields_defaults_to_chain_fields ... ok
[INFO] [stdout] test options::chain::tests::optional_number_none_returns_none ... ok
[INFO] [stdout] test options::chain::tests::requested_fields_with_custom_fields ... ok
[INFO] [stdout] test options::screen::tests::build_chain_options_basic ... ok
[INFO] [stdout] test options::screen::tests::compare_values_bools ... ok
[INFO] [stdout] test options::screen::tests::compare_values_mixed_types_use_rank ... ok
[INFO] [stdout] test options::screen::tests::compare_values_null_sorts_last ... ok
[INFO] [stdout] test options::screen::tests::compare_values_numbers ... ok
[INFO] [stdout] test options::screen::tests::compare_values_strings ... ok
[INFO] [stdout] test options::screen::tests::build_chain_options_with_type_and_range ... ok
[INFO] [stdout] test market::tests::summarize_mutual_fund_populated ... ok
[INFO] [stdout] test options::chain::tests::optional_number_some_returns_number ... ok
[INFO] [stdout] test options::screen::tests::number_arg_valid ... ok
[INFO] [stdout] test options::screen::tests::default_sort_direction_asc_for_other_fields ... ok
[INFO] [stdout] test options::screen::tests::parse_sort_spec_explicit_asc ... ok
[INFO] [stdout] test options::screen::tests::parse_sort_spec_explicit_desc ... ok
[INFO] [stdout] test options::screen::tests::option_value_returns_value_or_null ... ok
[INFO] [stdout] test options::screen::tests::format_number_formats_as_string ... ok
[INFO] [stdout] test options::screen::tests::parse_sort_spec_invalid_direction_rejected ... ok
[INFO] [stdout] test options::screen::tests::parse_fields_splits_and_trims ... ok
[INFO] [stdout] test options::screen::tests::parse_sort_spec_unknown_field_rejected ... ok
[INFO] [stdout] test options::screen::tests::number_value_converts_to_json ... ok
[INFO] [stdout] test options::screen::tests::screen_chain_errors_when_chain_has_no_contracts ... ok
[INFO] [stdout] test options::screen::tests::screen_chain_exact_strike_and_ascending_sort ... ok
[INFO] [stdout] test options::screen::tests::screen_chain_applies_filters_sort_and_limit ... ok
[INFO] [stdout] test options::screen::tests::screen_chain_reports_invalid_numeric_filter ... ok
[INFO] [stdout] test options::screen::tests::parse_fields_skips_empty ... ok
[INFO] [stdout] test options::screen::tests::screen_chain_contract_type_filters_rows ... ok
[INFO] [stdout] test options::screen::tests::default_sort_direction_desc_for_price_fields ... ok
[INFO] [stdout] test options::screen::tests::normalized_contract_type_normalizes ... ok
[INFO] [stdout] test options::screen::tests::sort_key_non_numeric_string_treated_as_string ... ok
[INFO] [stdout] test options::screen::tests::sort_key_numeric_string_treated_as_number ... ok
[INFO] [stdout] test options::screen::tests::selected_fields_rejects_unknown_field ... ok
[INFO] [stdout] test options::screen::tests::sort_direction_as_str ... ok
[INFO] [stdout] test options::screen::tests::sort_key_rank_ordering ... ok
[INFO] [stdout] test options::screen::tests::selected_fields_empty_string_falls_back_to_defaults ... ok
[INFO] [stdout] test options::tests::all_fields_includes_plan_available_fields ... ok
[INFO] [stdout] test options::screen::tests::sort_value_supports_all_screen_field_aliases ... ok
[INFO] [stdout] test options::screen::tests::parse_sort_spec_default_direction ... ok
[INFO] [stdout] test options::screen::tests::selected_fields_defaults ... ok
[INFO] [stdout] test options::tests::chain_render_dte_selects_nearest_expiration ... ok
[INFO] [stdout] test options::tests::compute_dte_returns_calendar_days_from_today_utc ... ok
[INFO] [stdout] test options::tests::contract_build_output_includes_all_curated_fields ... ok
[INFO] [stdout] test options::tests::contract_find_raw_contract_returns_none_for_empty_chain ... ok
[INFO] [stdout] test options::tests::chain_render_empty_results_returns_zero_row_count ... ok
[INFO] [stdout] test options::tests::contract_missing_greeks_coerced_to_zero ... ok
[INFO] [stdout] test options::tests::contract_no_match_error_contains_option_chain_hint ... ok
[INFO] [stdout] test options::tests::chain_render_expiration_filters_to_exact_date ... ok
[INFO] [stdout] test options::tests::expirations_format_returns_empty_rows_for_empty_chain ... ok
[INFO] [stdout] test options::tests::expirations_format_returns_row_based_output_with_correct_shape ... ok
[INFO] [stdout] test options::tests::expirations_format_sorts_by_date_ascending ... ok
[INFO] [stdout] test options::tests::default_chain_and_screen_fields_match_plan_schema ... ok
[INFO] [stdout] test options::tests::contract_build_output_uses_provided_dte ... ok
[INFO] [stdout] test options::tests::expirations_format_computes_dte_from_today_utc ... ok
[INFO] [stdout] test options::tests::filter_by_spread_pct_uses_mark_and_skips_zero_mark ... ok
[INFO] [stdout] test options::tests::chain_render_delta_bounds_filter_contracts ... ok
[INFO] [stdout] test options::tests::filter_predicates_match_present_values_and_reject_out_of_range_or_missing_values ... ok
[INFO] [stdout] test options::tests::chain_render_type_call_filters_to_calls_only ... ok
[INFO] [stdout] test options::tests::chain_render_with_no_filters_returns_all_contracts_sorted ... ok
[INFO] [stdout] test options::tests::flatten_chain_collects_calls_and_puts_across_expirations_and_strikes ... ok
[INFO] [stdout] test options::tests::screen_limit_truncates_rows_after_filtering ... ok
[INFO] [stdout] test options::tests::screen_max_spread_pct_filters_wide_spreads_and_zero_mark ... ok
[INFO] [stdout] test options::tests::screen_min_bid_filters_cheap_contracts ... ok
[INFO] [stdout] test options::tests::chain_render_fields_returns_requested_columns ... ok
[INFO] [stdout] test options::tests::screen_combined_filters_require_all_conditions_to_match ... ok
[INFO] [stdout] test options::tests::chain_render_strike_bounds_filter_contracts ... ok
[INFO] [stdout] test options::tests::screen_filters_applied_contains_human_readable_descriptions ... ok
[INFO] [stdout] test options::tests::flatten_chain_skips_malformed_expiration_keys_without_panicking ... ok
[INFO] [stdout] test options::tests::screen_min_oi_filters_low_open_interest_contracts ... ok
[INFO] [stdout] test options::tests::contract_find_raw_contract_locates_first_contract_in_chain ... ok
[INFO] [stdout] test options::tests::sort_contracts_places_nan_strikes_last ... ok
[INFO] [stdout] test options::tests::sort_contracts_orders_by_expiration_strike_and_call_before_put ... ok
[INFO] [stdout] test options::tests::validate_fields_accepts_known_aliases_and_rejects_unknown_fields ... ok
[INFO] [stdout] test order::builder::build_single_leg_creates_market_call_order ... ok
[INFO] [stdout] test options::tests::screen_without_filters_returns_all_contracts_with_scan_metadata ... ok
[INFO] [stdout] test options::tests::screen_min_volume_filters_low_volume_contracts ... ok
[INFO] [stdout] test options::tests::screen_total_scanned_reflects_pre_filter_count ... ok
[INFO] [stdout] test order::equity::tests::buy_limit_sets_price ... ok
[INFO] [stdout] test order::equity::tests::buy_market_produces_correct_order_type ... ok
[INFO] [stdout] test order::equity::tests::buy_stop_limit_produces_stop_limit_order ... ok
[INFO] [stdout] test order::equity::tests::buy_stop_produces_stop_order ... ok
[INFO] [stdout] test order::equity::tests::buy_to_cover_uses_correct_instruction ... ok
[INFO] [stdout] test order::builder::build_single_leg_rejects_unsupported_instruction ... ok
[INFO] [stdout] test order::equity::tests::buy_to_cover_limit_sets_price ... ok
[INFO] [stdout] test cli::tests::command_name_ta_expected_move ... ok
[INFO] [stdout] test order::equity::tests::negative_price_rejected ... ok
[INFO] [stdout] test order::equity::tests::negative_stop_rejected ... ok
[INFO] [stdout] test options::chain::tests::map_chain_error_500_returns_schwab_error ... ok
[INFO] [stdout] test options::screen::tests::underlying_price_falls_back_to_last_then_mark_then_null ... ok
[INFO] [stdout] test order::equity::tests::sell_short_market_produces_market_order ... ok
[INFO] [stdout] test order::equity::tests::sell_market_produces_market_order ... ok
[INFO] [stdout] test order::equity::tests::sell_limit_sets_price ... ok
[INFO] [stdout] test order::equity::tests::sell_short_stop_sets_stop_price ... ok
[INFO] [stdout] test options::tests::screen_premium_range_filters_by_mark_price ... ok
[INFO] [stdout] test order::equity::tests::buy_to_cover_stop_limit_sets_both_prices ... ok
[INFO] [stdout] test order::equity::tests::sell_short_uses_sell_short_instruction ... ok
[INFO] [stdout] test order::equity::tests::sell_stop_sets_stop_price ... ok
[INFO] [stdout] test order::equity::tests::execute_equity_dry_run_returns_json ... ok
[INFO] [stdout] test cli::tests::positions_alias_requests_positions_for_all_accounts ... ok
[INFO] [stdout] test order::lifecycle::tests::expand_trigger_child_orders_handles_multiple_children ... ok
[INFO] [stdout] test order::lifecycle::tests::expand_trigger_child_orders_ignores_missing_child_order_strategies ... ok
[INFO] [stdout] test order::lifecycle::tests::expand_trigger_child_orders_promotes_children_before_parent ... ok
[INFO] [stdout] test order::lifecycle::tests::normalize_get_range_allows_mixed_date_and_rfc3339 ... ok
[INFO] [stdout] test order::lifecycle::tests::normalize_get_range_defaults_to_last_sixty_days ... ok
[INFO] [stdout] test order::equity::tests::sell_short_stop_limit_sets_both_prices ... ok
[INFO] [stdout] test order::equity::tests::sell_stop_limit_sets_both_prices ... ok
[INFO] [stdout] test order::lifecycle::tests::normalize_get_range_recent_overrides_from ... ok
[INFO] [stdout] test order::equity::tests::session_and_duration_applied ... ok
[INFO] [stdout] test order::lifecycle::tests::active_order_statuses_include_requested_patterns ... ok
[INFO] [stdout] test order::lifecycle::tests::expand_trigger_child_orders_case_insensitive_strategy_type ... ok
[INFO] [stdout] test order::lifecycle::tests::normalize_get_range_rejects_reversed_ranges ... ok
[INFO] [stdout] test options::tests::select_fields_keeps_legacy_aliases_available ... ok
[INFO] [stdout] test options::tests::select_fields_returns_requested_columns_and_rows ... ok
[INFO] [stdout] test order::builder::build_single_leg_creates_limit_put_order ... ok
[INFO] [stdout] test order::builder::build_single_leg_rejects_invalid_expiration ... ok
[INFO] [stdout] test config::tests::resolve_credentials_callback_url_default ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_cancel ... ok
[INFO] [stdout] test order::lifecycle::tests::is_active_order_uses_active_status_allowlist ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_cancel_accepts_matching_duplicate_order_ids ... ok
[INFO] [stdout] test order::equity::tests::zero_quantity_rejected ... ok
[INFO] [stdout] test order::lifecycle::tests::expand_trigger_child_orders_keeps_non_trigger_unchanged ... ok
[INFO] [stdout] test order::lifecycle::tests::normalize_get_range_expands_date_only_boundaries ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_get_rejects_order_without_account ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_cancel_rejects_mismatched_duplicate_order_ids ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_get_no_args_means_all_active_orders ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_get_accepts_deprecated_order_alias ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_cancel_rejects_missing_order_id ... ok
[INFO] [stdout] test cli::tests::human_session_aliases_parse ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_get_recent ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_get_include_inactive ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_cancel_with_order_id_flag ... ok
[INFO] [stdout] test order::equity::tests::buy_to_cover_market_produces_market_order ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_get_specific_order ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_range_instant_rejects_invalid_date_and_timestamp ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_get_with_account_means_account_active_orders ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_repeat ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_get_with_symbol ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_repeat_rejects_conflicting_preview_modes ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_repeat_rejects_missing_order_id ... ok
[INFO] [stdout] test order::lifecycle::tests::render_order_discovery_finds_symbol_in_nested_child_orders ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_get_with_time_range ... ok
[INFO] [stdout] test order::lifecycle::tests::render_order_discovery_excludes_non_matching_trigger_child_by_symbol ... ok
[INFO] [stdout] test order::lifecycle::tests::render_order_discovery_filters_array_orders ... ok
[INFO] [stdout] test order::lifecycle::tests::render_order_discovery_filters_by_symbol_case_insensitive ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_repeat_with_order_id_flag_and_preview ... ok
[INFO] [stdout] test order::lifecycle::tests::render_order_discovery_filters_trigger_child_by_symbol ... ok
[INFO] [stdout] test order::lifecycle::tests::render_order_discovery_returns_empty_for_symbol_without_matches ... ok
[INFO] [stdout] test order::lifecycle::tests::render_order_discovery_keeps_multi_leg_symbol_match ... ok
[INFO] [stdout] test order::lifecycle::tests::render_order_discovery_ignores_malformed_order_leg_collections ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_get_rejects_discovery_flags_with_specific_order ... ok
[INFO] [stdout] test order::lifecycle::tests::render_order_discovery_surfaces_filled_trigger_with_working_child ... ok
[INFO] [stdout] test order::lifecycle::tests::repeat_mode_places_only_for_mutable_modes ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_repeat_rejects_mismatched_duplicate_order_ids ... ok
[INFO] [stdout] test order::lifecycle::tests::render_order_discovery_include_inactive_keeps_all_statuses ... ok
[INFO] [stdout] test order::lifecycle::tests::render_order_discovery_preserves_non_array_payload ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_get_and_cancel_reject_non_positive_order_ids ... ok
[INFO] [stdout] test order::lifecycle::tests::repeat_order_builder_maps_unsupported_order_conversion_to_validation ... ok
[INFO] [stdout] test order::lifecycle::tests::resolve_order_id_rejects_missing_values ... ok
[INFO] [stdout] test order::option::tests::negative_quantity_rejected ... ok
[INFO] [stdout] test order::option::tests::buy_to_close_hardcodes_instruction ... ok
[INFO] [stdout] test order::lifecycle::tests::render_order_discovery_keeps_active_trigger_parent_and_working_child ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_repeat_accepts_matching_duplicate_order_ids ... ok
[INFO] [stdout] test order::lifecycle::tests::parse_order_list_is_removed ... ok
[INFO] [stdout] test order::option::tests::session_and_duration_applied ... ok
[INFO] [stdout] test order::option::tests::execute_option_returns_json ... ok
[INFO] [stdout] test order::option::tests::buy_to_close_market_produces_market_order ... ok
[INFO] [stdout] test order::option::tests::buy_to_open_limit ... ok
[INFO] [stdout] test order::option::tests::occ_symbol_passed_verbatim ... ok
[INFO] [stdout] test order::option::tests::buy_to_open_market ... ok
[INFO] [stdout] test order::option::tests::negative_price_rejected ... ok
[INFO] [stdout] test order::option::tests::sell_to_close_hardcodes_instruction ... ok
[INFO] [stdout] test order::option::tests::sell_to_close_limit_sets_price ... ok
[INFO] [stdout] test order::option::tests::sell_to_open_hardcodes_instruction ... ok
[INFO] [stdout] test order::option::tests::sell_to_open_market_produces_market_order ... ok
[INFO] [stdout] test order::option::tests::zero_quantity_rejected ... ok
[INFO] [stdout] test order::preview::tests::round_trip_save_load ... ok
[INFO] [stdout] test order::lifecycle::tests::repeat_order_builder_converts_supported_equity_order ... ok
[INFO] [stdout] test order::option::tests::zero_price_rejected ... ok
[INFO] [stdout] test order::replace::tests::builds_equity_sell_replacement ... ok
[INFO] [stdout] test order::preview::tests::load_rejects_account_mismatch ... ok
[INFO] [stdout] test order::preview::tests::load_rejects_bad_digest_format ... ok
[INFO] [stdout] test order::replace::tests::builds_equity_buy_replacement ... ok
[INFO] [stdout] test order::replace::tests::builds_option_sell_to_close_replacement ... ok
[INFO] [stdout] test order::tests::clone_equity_args_preserves_all_fields ... ok
[INFO] [stdout] test order::replace::tests::builds_equity_sell_short_replacement ... ok
[INFO] [stdout] test order::replace::tests::builds_option_sell_to_open_replacement ... ok
[INFO] [stdout] test order::preview::tests::digest_changes_with_account ... ok
[INFO] [stdout] test order::workflow::tests::both_flags_without_account_hits_save_preview_error ... ok
[INFO] [stdout] test order::tests::clone_option_args_preserves_all_fields ... ok
[INFO] [stdout] test order::workflow::tests::account_preview_first_is_preview_first ... ok
[INFO] [stdout] test order::preview::tests::preview_state_base_prefers_non_empty_xdg_state_home ... ok
[INFO] [stdout] test order::workflow::tests::execute_raw_preview_rejects_invalid_json_before_auth ... ok
[INFO] [stdout] test order::preview::tests::preview_directory_and_file_are_owner_only ... ok
[INFO] [stdout] test order::replace::tests::builds_option_buy_to_close_replacement ... ok
[INFO] [stdout] test order::replace::tests::builds_equity_buy_to_cover_replacement ... ok
[INFO] [stdout] test order::replace::tests::builds_option_buy_to_open_market_replacement ... ok
[INFO] [stdout] test order::replace::tests::equity_replacement_rejects_invalid_quantity ... ok
[INFO] [stdout] test order::workflow::tests::execute_raw_preview_rejects_invalid_json_before_account_lookup ... ok
[INFO] [stdout] test order::workflow::tests::explicit_draft_aliases_conflict_with_each_other ... ok
[INFO] [stdout] test order::workflow::tests::explicit_draft_conflicts_with_account_preview_modes ... ok
[INFO] [stdout] test order::workflow::tests::explicit_dry_run_is_dry_run_without_account ... ok
[INFO] [stdout] test order::workflow::tests::explicit_dry_run_with_account_stays_local ... ok
[INFO] [stdout] test order::workflow::tests::mock_schwab_response_covers_accounts_and_place_branches ... ok
[INFO] [stdout] test order::workflow::tests::no_account_is_dry_run ... ok
[INFO] [stdout] test order::workflow::tests::explicit_preview_is_dry_run_without_account ... ok
[INFO] [stdout] test order::workflow::tests::account_only_is_place ... ok
[INFO] [stdout] test order::workflow::tests::order_mode_debug_includes_variant_name ... ok
[INFO] [stdout] test order::workflow::tests::account_save_preview_is_save_preview ... ok
[INFO] [stdout] test order::workflow::tests::both_flags_is_error ... ok
[INFO] [stdout] test order::workflow::tests::preview_output_without_digest_or_warnings_is_minimal ... ok
[INFO] [stdout] test order::workflow::tests::preview_output_includes_digest_and_sanitized_warnings ... ok
[INFO] [stdout] test output::tests::error_body_from_app_error_maps_all_fields ... ok
[INFO] [stdout] test raw::tests::account_numbers_pipeline_deserializes_account_numbers_envelope ... ok
[INFO] [stdout] test output::tests::error_body_without_hint_omits_hint_in_json ... ok
[INFO] [stdout] test raw::tests::account_numbers_pipeline_deserializes_accounts_envelope ... ok
[INFO] [stdout] test raw::tests::account_numbers_pipeline_deserializes_bare_array ... ok
[INFO] [stdout] test raw::tests::account_numbers_pipeline_deserializes_linked_accounts_envelope ... ok
[INFO] [stdout] test order::replace::tests::option_replacement_rejects_negative_price ... ok
[INFO] [stdout] test order::workflow::tests::save_preview_without_account_is_error ... ok
[INFO] [stdout] test raw::tests::account_numbers_pipeline_reports_sanitized_shape_for_unknown_envelope ... ok
[INFO] [stdout] test order::tests::clone_common_args_preserves_all_fields ... ok
[INFO] [stdout] test order::workflow::tests::preview_first_without_account_is_error ... ok
[INFO] [stdout] test raw::tests::canceled_order_activity_is_known_and_preserved ... ok
[INFO] [stdout] test raw::tests::normalize_deeply_nested_false ... ok
[INFO] [stdout] test raw::tests::normalize_empty_structures ... ok
[INFO] [stdout] test raw::tests::normalize_false_becomes_null ... ok
[INFO] [stdout] test raw::tests::normalize_handles_nested_structures ... ok
[INFO] [stdout] test raw::tests::normalize_order_list_accepts_bare_array ... ok
[INFO] [stdout] test raw::tests::normalize_order_list_accepts_named_envelope ... ok
[INFO] [stdout] test raw::tests::normalize_preserves_existing_nulls ... ok
[INFO] [stdout] test raw::tests::normalize_preserves_false_for_known_boolean_fields ... ok
[INFO] [stdout] test raw::tests::normalize_preserves_true_in_object ... ok
[INFO] [stdout] test raw::tests::normalize_replaces_false_in_object ... ok
[INFO] [stdout] test raw::tests::normalize_true_preserved ... ok
[INFO] [stdout] test raw::tests::pipeline_unwrap_then_normalize ... ok
[INFO] [stdout] test order::workflow::tests::execute_order_with_account_hash_dry_run_ignores_account_hash ... ok
[INFO] [stdout] test raw::tests::fetch_accounts_with_client_uses_configured_client_and_fields ... ok
[INFO] [stdout] test raw::tests::preview_order_url_targets_account_preview_endpoint ... ok
[INFO] [stdout] test raw::tests::fetch_user_preference_with_client_uses_configured_client ... ok
[INFO] [stdout] test raw::tests::preview_warns_default_to_warn_severity ... ok
[INFO] [stdout] test raw::tests::preview_warns_emit_sanitized_warnings ... ok
[INFO] [stdout] test raw::tests::preview_warns_missing_or_non_array_warns_is_empty ... ok
[INFO] [stdout] test raw::tests::preview_warns_use_override_severity_and_omit_non_strings ... ok
[INFO] [stdout] test raw::tests::redact_recurses_into_nested_structures ... ok
[INFO] [stdout] test raw::tests::redact_removes_account_number ... ok
[INFO] [stdout] test raw::tests::sanitize_order_strips_nulls_and_redacts_account_number ... ok
[INFO] [stdout] test raw::tests::strip_null_preserves_array_null_elements ... ok
[INFO] [stdout] test raw::tests::strip_null_recurses_into_array_objects ... ok
[INFO] [stdout] test raw::tests::preview_order_at_url_posts_json_and_parses_response ... ok
[INFO] [stdout] test raw::tests::strip_null_removes_null_keyed_fields ... ok
[INFO] [stdout] test raw::tests::unknown_activity_variants_emit_sanitized_warning_counts ... ok
[INFO] [stdout] test raw::tests::unwrap_bare_array_unchanged ... ok
[INFO] [stdout] test raw::tests::unwrap_multi_key_accounts_envelope_extracts_accounts ... ok
[INFO] [stdout] test raw::tests::unwrap_multi_key_object_returns_as_is ... ok
[INFO] [stdout] test raw::tests::unwrap_scalar_returns_as_is ... ok
[INFO] [stdout] test raw::tests::unwrap_single_key_non_array_returns_as_is ... ok
[INFO] [stdout] test raw::tests::unwrap_single_key_object_extracts_array ... ok
[INFO] [stdout] test raw::tests::user_preferences_pipeline_deserializes_bare_array ... ok
[INFO] [stdout] test raw::tests::user_preferences_pipeline_deserializes_bare_object ... ok
[INFO] [stdout] test raw::tests::user_preferences_pipeline_deserializes_named_envelope ... ok
[INFO] [stdout] test shared::tests::duration_choice_maps_to_schwab_duration ... ok
[INFO] [stdout] test shared::tests::session_choice_maps_to_schwab_session ... ok
[INFO] [stdout] test shared::tests::to_number_accepts_finite_value ... ok
[INFO] [stdout] test ta::candles::tests::extract_ohlcv_returns_all_series_in_one_call ... ok
[INFO] [stdout] test raw::tests::preview_order_at_url_returns_http_status_errors ... ok
[INFO] [stdout] test ta::candles::tests::extracts_typed_ohlcv_vectors ... ok
[INFO] [stdout] test ta::candles::tests::extraction_reports_missing_required_fields ... ok
[INFO] [stdout] test ta::candles::tests::timestamp_extraction_defaults_missing_values_to_zero ... ok
[INFO] [stdout] test ta::candles::tests::validate_candles_accepts_sufficient_data ... ok
[INFO] [stdout] test raw::tests::strip_null_recurses_into_nested_objects ... ok
[INFO] [stdout] test ta::candles::tests::validate_candles_rejects_insufficient_data ... ok
[INFO] [stdout] test ta::candles::tests::validate_candles_rejects_none_and_empty_lists ... ok
[INFO] [stdout] test ta::custom::tests::historical_volatility_output_length_drops_period_from_closes ... ok
[INFO] [stdout] test ta::custom::tests::historical_volatility_uses_log_returns_and_annualization ... ok
[INFO] [stdout] test ta::custom::tests::vwap_rejects_zero_cumulative_volume ... ok
[INFO] [stdout] test ta::custom::tests::vwap_returns_running_volume_weighted_average_price ... ok
[INFO] [stdout] test ta::dashboard::tests::dashboard_alignment_reports_empty_or_overlong_series ... ok
[INFO] [stdout] test ta::dashboard::tests::dashboard_aligns_indicator_series_to_tail_timestamps ... ok
[INFO] [stdout] test ta::dashboard::tests::dashboard_aligns_multi_value_indicator_series ... ok
[INFO] [stdout] test ta::dashboard::tests::dashboard_derived_fields_use_latest_values_and_recent_ranges ... ok
[INFO] [stdout] test ta::dashboard::tests::dashboard_helpers_report_insufficient_data_and_zero_denominators ... ok
[INFO] [stdout] test ta::dashboard::tests::dashboard_latest_values_include_latest_candle_timestamp ... ok
[INFO] [stdout] test ta::dashboard::tests::dashboard_output_assembly_populates_category_grouped_fields ... ok
[INFO] [stdout] test ta::dashboard::tests::dashboard_signal_interpretations_match_thresholds ... ok
[INFO] [stdout] test ta::dashboard::tests::dashboard_signal_interpretations_cover_oversold_and_bearish_cases ... ok
[INFO] [stdout] test ta::dashboard::tests::dashboard_trims_series_to_requested_points ... ok
[INFO] [stdout] test ta::expected_move::tests::average_implied_volatility_ignores_missing_or_non_positive_values ... ok
[INFO] [stdout] test ta::expected_move::tests::chain_underlying_price_requires_positive_price ... ok
[INFO] [stdout] test ta::expected_move::tests::chain_underlying_price_falls_back_to_last_then_chain_price ... ok
[INFO] [stdout] test order::workflow::tests::execute_order_dry_run_serializes_order_without_account_lookup ... ok
[INFO] [stdout] test ta::expected_move::tests::compute_expected_move_rejects_invalid_inputs ... ok
[INFO] [stdout] test ta::expected_move::tests::find_atm_contracts_reports_missing_strike_maps_and_empty_contracts ... ok
[INFO] [stdout] test ta::expected_move::tests::compute_expected_move_uses_raw_straddle_for_range_math ... ok
[INFO] [stdout] test ta::expected_move::tests::find_atm_contracts_selects_closest_strike_to_underlying_price ... ok
[INFO] [stdout] test ta::expected_move::tests::find_expiration_reports_missing_call_or_put_maps ... ok
[INFO] [stdout] test ta::expected_move::tests::find_atm_contracts_ties_to_lower_strike_and_skips_bad_strikes ... ok
[INFO] [stdout] test ta::expected_move::tests::contract_price_rejects_zero_pricing ... ok
[INFO] [stdout] test ta::expected_move::tests::contract_price_uses_midpoint_when_mark_price_is_unavailable ... ok
[INFO] [stdout] test ta::expected_move::tests::find_expiration_selects_nearest_common_expiration_with_key_tiebreak ... ok
[INFO] [stdout] test ta::expected_move::tests::parse_expiration_key_rejects_invalid_shapes ... ok
[INFO] [stdout] test ta::expected_move::tests::render_expected_move_serializes_selected_contracts ... ok
[INFO] [stdout] test ta::indicators::tests::adx_returns_aligned_adx_and_di_lines ... ok
[INFO] [stdout] test ta::indicators::tests::atr_uses_true_range_with_wilder_smoothing ... ok
[INFO] [stdout] test ta::indicators::tests::bbands_returns_sma_middle_and_population_std_dev_bands ... ok
[INFO] [stdout] test ta::indicators::tests::ema_uses_sma_seed_then_exponential_updates ... ok
[INFO] [stdout] test ta::indicators::tests::rsi_uses_wilder_smoothing ... ok
[INFO] [stdout] test ta::indicators::tests::stochastic_flat_price_uses_neutral_fast_k ... ok
[INFO] [stdout] test ta::indicators::tests::stochastic_returns_smoothed_k_and_d ... ok
[INFO] [stdout] test ta::indicators::tests::strips_leading_nans_without_touching_later_values ... ok
[INFO] [stdout] test ta::indicators::tests::macd_returns_aligned_macd_signal_and_histogram ... ok
[INFO] [stdout] test ta::interval::tests::daily_uses_year_period_daily_frequency_and_safety_margin ... ok
[INFO] [stdout] test ta::interval::tests::exactly_at_boundary_candle_counts_are_allowed ... ok
[INFO] [stdout] test ta::interval::tests::exceeding_max_candles_returns_ta_insufficient_data ... ok
[INFO] [stdout] test ta::indicators::tests::sma_returns_window_averages ... ok
[INFO] [stdout] test ta::interval::tests::ceil_div_rounds_up_and_handles_exact_division ... ok
[INFO] [stdout] test ta::interval::tests::from_str_and_display_round_trip_all_supported_intervals ... ok
[INFO] [stdout] test ta::interval::tests::max_candles_matches_schwab_period_limits ... ok
[INFO] [stdout] test ta::interval::tests::next_valid_period_rounds_to_allowed_periods ... ok
[INFO] [stdout] test ta::interval::tests::intraday_intervals_use_day_period_minute_frequency ... ok
[INFO] [stdout] test ta::interval::tests::weekly_uses_year_period_weekly_frequency ... ok
[INFO] [stdout] test ta::interval::tests::from_str_rejects_unsupported_interval ... ok
[INFO] [stdout] test ta::types::tests::expected_move_output_serializes_with_expected_keys ... ok
[INFO] [stdout] test ta::types::tests::analyze_symbol_result_omits_empty_error_fields ... ok
[INFO] [stdout] test ta::types::tests::volume_indicators_omit_none_relative_volume ... ok
[INFO] [stdout] test ta::types::tests::dashboard_output_serializes_with_category_keys ... ok
[INFO] [stdout] test tests::usage_error_classification_maps_common_kinds ... ok
[INFO] [stdout] test raw::tests::fetch_account_numbers_with_client_uses_configured_client ... ok
[INFO] [stdout] test tests::write_json_returns_error_on_write_failure ... ok
[INFO] [stdout] test raw::tests::fetch_order_list_builds_cross_account_query ... ok
[INFO] [stdout] test tests::write_json_writes_json_followed_by_newline ... ok
[INFO] [stdout] test raw::tests::preview_order_with_client_uses_configured_client_and_account_url ... ok
[INFO] [stdout] test verify::tests::action_value_includes_submitted_order_when_present ... ok
[INFO] [stdout] test raw::tests::fetch_order_list_builds_account_query ... ok
[INFO] [stdout] test verify::tests::action_value_omits_empty_verification_failures ... ok
[INFO] [stdout] test verify::tests::action_value_preserves_unverified_failures ... ok
[INFO] [stdout] test verify::tests::action_value_verified_includes_all_fields ... ok
[INFO] [stdout] test verify::tests::cancel_verification_accepts_canceled_status ... ok
[INFO] [stdout] test verify::tests::cancel_verification_requires_canceled_status ... ok
[INFO] [stdout] test verify::tests::cancel_verification_requires_status_field ... ok
[INFO] [stdout] test verify::tests::place_verification_accepts_retrieved_order ... ok
[INFO] [stdout] test verify::tests::retrieval_failure_result_is_unverified ... ok
[INFO] [stdout] test verify::tests::unverified_result_without_order_id ... ok
[INFO] [stdout] test verify::tests::action_value_includes_preview_context ... ok
[INFO] [stdout] test order::workflow::tests::mock_schwab_response_rejects_unexpected_requests - should panic ... ok
[INFO] [stdout] test tests::write_completions_reports_write_failure ... ok
[INFO] [stdout] test order::workflow::tests::execute_order_save_preview_resolves_account_and_uses_raw_preview ... ok
[INFO] [stdout] test order::workflow::tests::execute_order_with_account_hash_save_preview_uses_raw_preview_warnings ... ok
[INFO] [stdout] test order::workflow::tests::execute_raw_preview_resolves_account_and_saves_digest ... ok
[INFO] [stdout] test order::workflow::tests::execute_raw_preview_with_account_hash_can_skip_saving_digest ... ok
[INFO] [stdout] test order::workflow::tests::execute_raw_preview_with_account_hash_returns_sanitized_output ... ok
[INFO] [stdout] test order::workflow::tests::preview_first_reuses_raw_preview_client_before_placing_order ... ok
[INFO] [stdout] test order::workflow::tests::place_from_saved_preview_includes_digest_context ... ok
[INFO] [stdout] test tests::json_usage_errors_enabled_accepts_truthy_values ... ok
[INFO] [stdout] test tests::json_usage_errors_enabled_rejects_false_values ... ok
[INFO] [stdout] {"code":"auth.token_missing","message":"token file not found: /tmp/schwab-test-nonexistent-token-file","category":"auth","retryable":false,"hint":"Run auth login-url, then auth exchange, to create a token file."}
[INFO] [stdout] test tests::run_returns_nonzero_on_missing_token_file ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 634 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.64s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_smoke.rs (/opt/rustwide/target/debug/deps/cli_smoke-32d8550be3d273b9)
[INFO] [stdout] 
[INFO] [stdout] running 27 tests
[INFO] [stdout] test market_history_help_shows_accepted_date_formats ... ok
[INFO] [stdout] test analyze_help_shows_examples_and_compact_default_reason ... ok
[INFO] [stdout] test market_history_help_shows_examples ... ok
[INFO] [stdout] test config_status_reports_sanitized_setup_without_secret_values ... ok
[INFO] [stdout] test dry_run_equity_order_outputs_order_json_without_auth ... ok
[INFO] [stdout] test config_show_alias_reports_sanitized_setup_without_auth ... ok
[INFO] [stdout] test market_history_invalid_date_reports_structured_error_without_auth ... ok
[INFO] [stdout] test market_quote_help_shows_examples ... ok
[INFO] [stdout] test doctor_reports_sanitized_health_without_auth_or_accounts ... ok
[INFO] [stdout] test explicit_dry_run_equity_order_outputs_order_json_without_auth ... ok
[INFO] [stdout] test missing_required_argument_reports_json_usage_error_when_requested ... ok
[INFO] [stdout] test help_lists_command_groups ... ok
[INFO] [stdout] test argument_conflict_reports_json_usage_error_when_requested ... ok
[INFO] [stdout] test invalid_value_reports_json_usage_error_when_requested ... ok
[INFO] [stdout] test invalid_flag_reports_clap_usage_error ... ok
[INFO] [stdout] test option_chain_help_shows_examples_and_type_values ... ok
[INFO] [stdout] test missing_token_error_is_structured_json ... ok
[INFO] [stdout] test stock_buy_reports_migration_replacement_as_json ... ok
[INFO] [stdout] test ta_dashboard_help_shows_examples ... ok
[INFO] [stdout] test option_screen_help_shows_examples_and_type_values ... ok
[INFO] [stdout] test preview_alias_option_order_outputs_order_json_without_auth ... ok
[INFO] [stdout] test unknown_subcommand_reports_json_usage_error_when_requested ... ok
[INFO] [stdout] test top_level_help_documents_setup_environment_and_debug ... ok
[INFO] [stdout] test schema_reports_agent_discovery_without_auth_or_accounts ... ok
[INFO] [stdout] test stock_sell_reports_migration_replacement_as_json ... ok
[INFO] [stdout] test market_history_date_inputs_pass_validation_before_auth ... ok
[INFO] [stdout] test completions_output_supported_shell_scripts ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 27 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration.rs (/opt/rustwide/target/debug/deps/integration-863c505e005f49a2)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests schwab
[INFO] [stdout] 
[INFO] [stdout] running 117 tests
[INFO] [stdout] test src/auth.rs - auth::login (line 830) - compile ... ok
[INFO] [stdout] test src/client.rs - client::Client (line 22) - compile ... ok
[INFO] [stdout] test src/auth.rs - auth::FileTokenStore (line 253) - compile ... ok
[INFO] [stdout] test src/auth.rs - auth::Provider (line 355) - compile ... ok
[INFO] [stdout] test src/lib.rs - (line 16) - compile ... ok
[INFO] [stdout] test src/auth.rs - auth::exchange_code (line 552) - compile ... ok
[INFO] [stdout] test src/auth.rs - auth::refresh_token_file (line 725) - compile ... ok
[INFO] [stdout] test src/auth.rs - auth::exchange_redirect_url (line 677) - compile ... ok
[INFO] [stdout] test src/market_data_api.rs - market_data_api::Client::get_instrument_by_cusip (line 228) - compile ... ok
[INFO] [stdout] test src/auth.rs - auth::start_login (line 867) - compile ... ok
[INFO] [stdout] test src/market_data_api.rs - market_data_api::Client::get_movers (line 323) - compile ... ok
[INFO] [stdout] test src/market_data_api.rs - market_data_api::Client::get_expiration_chain (line 163) - compile ... ok
[INFO] [stdout] test src/market_data_api.rs - market_data_api::Client::get_instruments (line 189) - compile ... ok
[INFO] [stdout] test src/market_data_api.rs - market_data_api::Client::get_market_hours (line 256) - compile ... ok
[INFO] [stdout] test src/market_data_api.rs - market_data_api::Client::get_option_chain (line 131) - compile ... ok
[INFO] [stdout] test src/market_data_api.rs - market_data_api::Client::get_price_history (line 355) - compile ... ok
[INFO] [stdout] test src/market_data_api.rs - market_data_api::Client::get_quote (line 100) - compile ... ok
[INFO] [stdout] test src/market_data_api.rs - market_data_api::Client::get_quotes (line 28) - compile ... ok
[INFO] [stdout] test src/market_data_api.rs - market_data_api::Client::get_quotes_with_options (line 58) - compile ... ok
[INFO] [stdout] test src/market_data_api.rs - market_data_api::Client::get_market_hour (line 292) - compile ... ok
[INFO] [stdout] test src/auth.rs - auth::parse_redirect_url (line 614) ... ok
[INFO] [stdout] test src/config.rs - config::Config::trader_base_url (line 97) ... ok
[INFO] [stdout] test src/config.rs - config::Config::base_url (line 76) ... ok
[INFO] [stdout] test src/models/streaming/chart_futures.rs - models::streaming::chart_futures::ChartFutures (line 52) ... ok
[INFO] [stdout] test src/models/streaming/chart_equity.rs - models::streaming::chart_equity::ChartEquity (line 54) ... ok
[INFO] [stdout] test src/models/streaming/equities.rs - models::streaming::equities::EquityField (line 11) ... ok
[INFO] [stdout] test src/models/streaming/acct_activity.rs - models::streaming::acct_activity::AccountActivityField (line 9) ... ok
[INFO] [stdout] test src/models/streaming/chart_futures.rs - models::streaming::chart_futures::ChartFuturesField (line 11) ... ok
[INFO] [stdout] test src/models/streaming/acct_activity.rs - models::streaming::acct_activity::AccountActivity (line 46) ... ok
[INFO] [stdout] test src/config.rs - config::Config (line 21) ... ok
[INFO] [stdout] test src/error.rs - error::Error (line 10) - compile ... ok
[INFO] [stdout] test src/config.rs - config::Config (line 12) ... ok
[INFO] [stdout] test src/models/streaming/mod.rs - models::streaming::StreamData (line 66) ... ok
[INFO] [stdout] test src/models/streaming/forex.rs - models::streaming::forex::ForexField (line 11) ... ok
[INFO] [stdout] test src/models/streaming/futures.rs - models::streaming::futures::FuturesField (line 14) ... ok
[INFO] [stdout] test src/models/streaming/forex.rs - models::streaming::forex::LevelOneForex (line 104) ... ok
[INFO] [stdout] test src/models/streaming/chart_equity.rs - models::streaming::chart_equity::ChartEquityField (line 11) ... ok
[INFO] [stdout] test src/models/streaming/options.rs - models::streaming::options::LevelOneOption (line 155) ... ok
[INFO] [stdout] test src/models/streaming/options.rs - models::streaming::options::OptionField (line 9) ... ok
[INFO] [stdout] test src/models/streaming/futures.rs - models::streaming::futures::LevelOneFutures (line 125) ... ok
[INFO] [stdout] test src/models/streaming/equities.rs - models::streaming::equities::LevelOneEquity (line 148) ... ok
[INFO] [stdout] test src/models/streaming/futures_options.rs - models::streaming::futures_options::FuturesOptionField (line 13) ... ok
[INFO] [stdout] test src/models/streaming/screener_equity.rs - models::streaming::screener_equity::ScreenerItem (line 49) ... ok
[INFO] [stdout] test src/models/streaming/mod.rs - models::streaming::StreamEvent (line 39) ... ok
[INFO] [stdout] test src/options.rs - options::MoverOptions (line 128) - compile ... ok
[INFO] [stdout] test src/options.rs - options::OptionChainOptions (line 54) - compile ... ok
[INFO] [stdout] test src/options.rs - options::OrderListOptions (line 239) - compile ... ok
[INFO] [stdout] test src/options.rs - options::PriceHistoryOptions (line 181) - compile ... ok
[INFO] [stdout] test src/models/streaming/screener_equity.rs - models::streaming::screener_equity::ScreenerEquity (line 116) ... ok
[INFO] [stdout] test src/options.rs - options::QuoteOptions (line 10) - compile ... ok
[INFO] [stdout] test src/models/streaming/futures_options.rs - models::streaming::futures_options::LevelOneFuturesOption (line 115) ... ok
[INFO] [stdout] test src/options.rs - options::TransactionListOptions (line 304) - compile ... ok
[INFO] [stdout] test src/models/streaming/mod.rs - models::streaming::StreamResponse (line 97) ... ok
[INFO] [stdout] test src/models/streaming/screener_option.rs - models::streaming::screener_option::ScreenerOption (line 54) ... ok
[INFO] [stdout] test src/models/streaming/screener_option.rs - models::streaming::screener_option::ScreenerOptionField (line 11) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::duration (line 1150) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::equity_stop_limit (line 970) ... ok
[INFO] [stdout] test src/models/streaming/screener_equity.rs - models::streaming::screener_equity::ScreenerEquityField (line 11) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder (line 52) ... ok
[INFO] [stdout] test src/auth.rs - auth::MemoryTokenStore (line 314) ... ok
[INFO] [stdout] test src/auth.rs - auth::authorize_url (line 510) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::equity_market (line 810) ... ok
[INFO] [stdout] test src/error.rs - error::Error (line 27) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::market_buy (line 152) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::market_sell (line 181) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::equity_stop (line 913) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::equity_limit (line 858) ... ok
[INFO] [stdout] test src/auth.rs - auth::AuthConfig (line 47) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::limit_sell (line 242) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::one_cancels_other (line 704) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::option_sell_to_close_limit (line 664) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::limit_buy (line 211) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::option_buy_to_close_market (line 557) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::option_buy_to_open_limit (line 445) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::option_sell_to_close_market (line 630) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::order_strategy_type (line 1176) ... ok
[INFO] [stdout] test src/stream_session/mod.rs - stream_session::StreamingSession (line 36) - compile ... ok
[INFO] [stdout] test src/stream_session/mod.rs - stream_session::StreamingSession::disconnect (line 201) - compile ... ok
[INFO] [stdout] test src/stream_session/mod.rs - stream_session::StreamingSession::subscribe (line 126) - compile ... ok
[INFO] [stdout] test src/stream_session/mod.rs - stream_session::StreamingSession::subscribe_account_activity (line 159) - compile ... ok
[INFO] [stdout] test src/stream_session/mod.rs - stream_session::StreamingSession::subscribe_chart_equity (line 411) - compile ... ok
[INFO] [stdout] test src/stream_session/mod.rs - stream_session::StreamingSession::subscribe_equities (line 233) - compile ... ok
[INFO] [stdout] test src/stream_session/mod.rs - stream_session::StreamingSession::subscribe_chart_futures (line 449) - compile ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::option_buy_to_close_limit (line 591) ... ok
[INFO] [stdout] test src/stream_session/mod.rs - stream_session::StreamingSession::subscribe_futures (line 303) - compile ... ok
[INFO] [stdout] test src/stream_session/mod.rs - stream_session::StreamingSession::subscribe_futures_options (line 341) - compile ... ok
[INFO] [stdout] test src/stream_session/mod.rs - stream_session::StreamingSession::subscribe_options (line 271) - compile ... ok
[INFO] [stdout] test src/stream_session/mod.rs - stream_session::StreamingSession::subscribe_screener_equity (line 491) - compile ... ok
[INFO] [stdout] test src/stream_session/mod.rs - stream_session::StreamingSession::subscribe_forex (line 379) - compile ... ok
[INFO] [stdout] test src/stream_session/mod.rs - stream_session::StreamingSession::subscribe_screener_option (line 533) - compile ... ok
[INFO] [stdout] test src/trader_api.rs - trader_api::Client::get_account (line 76) - compile ... ok
[INFO] [stdout] test src/trader_api.rs - trader_api::Client::get_account_numbers (line 49) - compile ... ok
[INFO] [stdout] test src/trader_api.rs - trader_api::Client::cancel_order (line 180) - compile ... ok
[INFO] [stdout] test src/trader_api.rs - trader_api::Client::get_accounts (line 21) - compile ... ok
[INFO] [stdout] test src/trader_api.rs - trader_api::Client::get_all_orders (line 402) - compile ... ok
[INFO] [stdout] test src/trader_api.rs - trader_api::Client::get_order (line 209) - compile ... ok
[INFO] [stdout] test src/streaming_api.rs - streaming_api::Client::stream (line 26) - compile ... ok
[INFO] [stdout] test src/trader_api.rs - trader_api::Client::get_transaction_by_id (line 370) - compile ... ok
[INFO] [stdout] test src/trader_api.rs - trader_api::Client::get_orders (line 108) - compile ... ok
[INFO] [stdout] test src/trader_api.rs - trader_api::Client::get_transactions (line 328) - compile ... ok
[INFO] [stdout] test src/trader_api.rs - trader_api::Client::get_user_preference (line 431) - compile ... ok
[INFO] [stdout] test src/trader_api.rs - trader_api::Client::place_order (line 144) - compile ... ok
[INFO] [stdout] test src/trader_api.rs - trader_api::Client::preview_order (line 285) - compile ... ok
[INFO] [stdout] test src/trader_api.rs - trader_api::Client::replace_order (line 239) - compile ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::option_sell_to_open_market (line 484) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::option_buy_to_open_market (line 411) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::session (line 1124) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::option_limit (line 1081) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::stop_limit_sell (line 374) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::option_market (line 1028) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::stop_buy (line 273) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::try_from_order (line 1206) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::stop_limit_buy (line 336) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::stop_sell (line 304) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::option_sell_to_open_limit (line 518) ... ok
[INFO] [stdout] test src/order_builder.rs - order_builder::OrderBuilder::first_triggers_second (line 757) ... ok
[INFO] [stdout] test src/client.rs - client::Client (line 12) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 117 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 1.60s; merged doctests compilation took 1.45s
[INFO] running `Command { std: "docker" "inspect" "b1a21f2a3768fcb78ae95e9c5559772aec874316554b1621f94ff396ec3570f8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b1a21f2a3768fcb78ae95e9c5559772aec874316554b1621f94ff396ec3570f8", kill_on_drop: false }`
[INFO] [stdout] b1a21f2a3768fcb78ae95e9c5559772aec874316554b1621f94ff396ec3570f8
