[INFO] fetching crate liiga_teletext 0.22.3... [INFO] testing liiga_teletext-0.22.3 against try#dec9417b8611e34e787a3e4c37686b5131f9e5c5 for pr-154210-1 [INFO] extracting crate liiga_teletext 0.22.3 into /workspace/builds/worker-3-tc2/source [INFO] started tweaking crates.io crate liiga_teletext 0.22.3 [INFO] finished tweaking crates.io crate liiga_teletext 0.22.3 [INFO] tweaked toml for crates.io crate liiga_teletext 0.22.3 written to /workspace/builds/worker-3-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate liiga_teletext 0.22.3 on toolchain dec9417b8611e34e787a3e4c37686b5131f9e5c5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate liiga_teletext 0.22.3 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 6fc4c09e2ee72cce5e6ad22440accb259a72502beef545e3eb9f52c7ea4d3bfa [INFO] running `Command { std: "docker" "start" "-a" "6fc4c09e2ee72cce5e6ad22440accb259a72502beef545e3eb9f52c7ea4d3bfa", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "6fc4c09e2ee72cce5e6ad22440accb259a72502beef545e3eb9f52c7ea4d3bfa", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6fc4c09e2ee72cce5e6ad22440accb259a72502beef545e3eb9f52c7ea4d3bfa", kill_on_drop: false }` [INFO] [stdout] 6fc4c09e2ee72cce5e6ad22440accb259a72502beef545e3eb9f52c7ea4d3bfa [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 082a54517341441328bd7f584ef8cfaa945a32819dfcea70fd490b9b83261766 [INFO] running `Command { std: "docker" "start" "-a" "082a54517341441328bd7f584ef8cfaa945a32819dfcea70fd490b9b83261766", kill_on_drop: false }` [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling jobserver v0.1.34 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling dunce v1.0.5 [INFO] [stderr] Compiling fs_extra v1.3.0 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling aws-lc-rs v1.16.2 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling rustls-pki-types v1.14.0 [INFO] [stderr] Compiling cc v1.2.57 [INFO] [stderr] Compiling rustls v0.23.37 [INFO] [stderr] Compiling indexmap v2.13.0 [INFO] [stderr] Compiling unicode-segmentation v1.12.0 [INFO] [stderr] Compiling anstyle-parse v1.0.0 [INFO] [stderr] Compiling sync_wrapper v1.0.2 [INFO] [stderr] Compiling colorchoice v1.0.5 [INFO] [stderr] Compiling anstyle v1.0.14 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling rustls-native-certs v0.8.3 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling convert_case v0.10.0 [INFO] [stderr] Compiling anstream v1.0.0 [INFO] [stderr] Compiling deranged v0.5.8 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling clap_lex v1.1.0 [INFO] [stderr] Compiling num-conv v0.2.0 [INFO] [stderr] Compiling iri-string v0.7.10 [INFO] [stderr] Compiling winnow v1.0.0 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling time-core v0.1.8 [INFO] [stderr] Compiling litrs v1.0.0 [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling cmake v0.1.57 [INFO] [stderr] Compiling toml_parser v1.0.10+spec-1.1.0 [INFO] [stderr] Compiling document-features v0.2.12 [INFO] [stderr] Compiling time v0.3.47 [INFO] [stderr] Compiling dirs-sys v0.5.0 [INFO] [stderr] Compiling aws-lc-sys v0.39.0 [INFO] [stderr] Compiling signal-hook-mio v0.2.5 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling toml_datetime v1.0.1+spec-1.1.0 [INFO] [stderr] Compiling serde_spanned v1.0.4 [INFO] [stderr] Compiling toml_writer v1.0.7+spec-1.1.0 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling dirs v6.0.0 [INFO] [stderr] Compiling toml v1.0.7+spec-1.1.0 [INFO] [stderr] Compiling lru v0.16.3 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling tokio-macros v2.6.1 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling tokio v1.50.0 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling derive_more-impl v2.1.1 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling yoke v0.8.1 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling zerovec v0.11.5 [INFO] [stderr] Compiling zerotrie v0.2.3 [INFO] [stderr] Compiling tinystr v0.8.2 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling icu_locale_core v2.1.1 [INFO] [stderr] Compiling potential_utf v0.1.4 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling icu_collections v2.1.1 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling derive_more v2.1.1 [INFO] [stderr] Compiling clap_derive v4.6.0 [INFO] [stderr] Compiling crossterm v0.29.0 [INFO] [stderr] Compiling icu_provider v2.1.1 [INFO] [stderr] Compiling icu_properties v2.1.2 [INFO] [stderr] Compiling icu_normalizer v2.1.1 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling clap v4.6.0 [INFO] [stderr] Compiling tracing-appender v0.2.4 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling h2 v0.4.13 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling rustls-webpki v0.103.10 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling rustls-platform-verifier v0.6.2 [INFO] [stderr] Compiling hyper-rustls v0.27.7 [INFO] [stderr] Compiling reqwest v0.13.2 [INFO] [stderr] Compiling liiga_teletext v0.22.3 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 48s [INFO] running `Command { std: "docker" "inspect" "082a54517341441328bd7f584ef8cfaa945a32819dfcea70fd490b9b83261766", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "082a54517341441328bd7f584ef8cfaa945a32819dfcea70fd490b9b83261766", kill_on_drop: false }` [INFO] [stdout] 082a54517341441328bd7f584ef8cfaa945a32819dfcea70fd490b9b83261766 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] dc8e2e12ebced3d568330a27058f829883276df1509da3f0696f9c93f9e91df5 [INFO] running `Command { std: "docker" "start" "-a" "dc8e2e12ebced3d568330a27058f829883276df1509da3f0696f9c93f9e91df5", kill_on_drop: false }` [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling num_cpus v1.17.0 [INFO] [stderr] Compiling deadpool-runtime v0.1.4 [INFO] [stderr] Compiling sdd v3.0.10 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling assert-json-diff v2.0.2 [INFO] [stderr] Compiling deadpool v0.12.3 [INFO] [stderr] Compiling scc v2.4.0 [INFO] [stderr] Compiling serial_test_derive v3.4.0 [INFO] [stderr] Compiling unicode-width v0.2.2 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling serial_test v3.4.0 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling crossterm v0.29.0 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling hyper-rustls v0.27.7 [INFO] [stderr] Compiling reqwest v0.13.2 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling wiremock v0.6.5 [INFO] [stderr] Compiling tracing-appender v0.2.4 [INFO] [stderr] Compiling liiga_teletext v0.22.3 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 36s [INFO] running `Command { std: "docker" "inspect" "dc8e2e12ebced3d568330a27058f829883276df1509da3f0696f9c93f9e91df5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "dc8e2e12ebced3d568330a27058f829883276df1509da3f0696f9c93f9e91df5", kill_on_drop: false }` [INFO] [stdout] dc8e2e12ebced3d568330a27058f829883276df1509da3f0696f9c93f9e91df5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 06092ca8595522024469d6d7db353be613d2ceb62c23dc32b3ab2090eacc0ec2 [INFO] running `Command { std: "docker" "start" "-a" "06092ca8595522024469d6d7db353be613d2ceb62c23dc32b3ab2090eacc0ec2", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.41s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/liiga_teletext-90fa475cb65bb29e) [INFO] [stdout] [INFO] [stdout] running 513 tests [INFO] [stdout] [INFO] [stdout] ╔════════════════════════════════════════════════╗ [INFO] [stdout] ║ CURRENT CONFIGURATION ║ [INFO] [stdout] ╚════════════════════════════════════════════════╝ [INFO] [stdout]  ⚠ No configuration found [INFO] [stdout] [INFO] [stdout]  Expected location: [INFO] [stdout]  /root/.config/liiga_teletext/config.toml [INFO] [stdout] [INFO] [stdout]  Run the app to create a config, or use: [INFO] [stdout]  liiga_teletext --config [INFO] [stdout] test config::tests::test_config_default_log_file_path ... ok [INFO] [stdout] test config::tests::test_config_empty_file ... ok [INFO] [stdout] test config::tests::test_config_display_without_config_file ... ok [INFO] [stdout] test config::tests::test_config_load_existing_file ... ok [INFO] [stdout] test config::tests::test_config_load_invalid_toml ... ok [INFO] [stdout] test config::tests::test_config_load_from_nonexistent_path ... ok [INFO] [stdout] test config::tests::test_config_missing_required_field ... ok [INFO] [stdout] test config::tests::test_config_malformed_toml_file ... ok [INFO] [stdout] test config::tests::test_config_display_with_existing_config ... ok [INFO] [stdout] [INFO] [stdout] ╔════════════════════════════════════════════════╗ [INFO] [stdout] ║ API DOMAIN CONFIGURATION ║ [INFO] [stdout] ╚════════════════════════════════════════════════╝ [INFO] [stdout]  Enter the API domain URL for fetching game data. [INFO] [stdout]  Format: https://example.com/api/v2 [INFO] [stdout]  • Include https:// prefix (or it will be added) [INFO] [stdout]  • Do NOT include trailing slash [INFO] [stdout]  Press Enter without input to cancel. [INFO] [stdout]  ──────────────────────────────────────────────── [INFO] [stdout]  API domain: test config::tests::test_config_load_without_log_file_path ... ok [INFO] [stdout]  Configuration cancelled. [INFO] [stdout] test config::tests::test_config_save_new_file ... ok [INFO] [stdout] test config::tests::test_config_serialization_deserialization ... ok [INFO] [stdout] test config::tests::test_config_save_creates_nested_directories ... ok [INFO] [stdout] test config::tests::test_config_serialization_with_special_characters ... ok [INFO] [stdout] test config::tests::test_config_validation_invalid_configs ... ok [INFO] [stdout] test config::tests::test_config_validation_valid_configs ... ok [INFO] [stdout] test config::tests::test_config_with_extra_fields ... ok [INFO] [stdout] test config::tests::test_config_without_log_file_path_serialization ... ok [INFO] [stdout] test config::tests::test_config_save_creates_directory ... ok [INFO] [stdout] test config::tests::test_config_path_generation ... ok [INFO] [stdout] test config::tests::test_config_save_to_readonly_directory ... ok [INFO] [stdout] test config::tests::test_log_dir_path_generation ... ok [INFO] [stdout] test constants::tests::test_env_var_names_are_not_empty ... ok [INFO] [stdout] test constants::tests::test_max_player_name_length_is_reasonable ... ok [INFO] [stdout] test constants::tests::test_retry_constants_are_reasonable ... ok [INFO] [stdout] test constants::tests::test_ttl_constants_are_reasonable ... ok [INFO] [stdout] test config::tests::test_environment_variable_override ... ok [INFO] [stdout] test config::tests::test_get_config_path ... ok [INFO] [stdout] test config::tests::test_get_log_dir_path ... ok [INFO] [stdout] test config::tests::test_config_save_and_load_roundtrip ... ok [INFO] [stdout] test config::tests::test_config_save_with_http_prefix ... ok [INFO] [stdout] test config::tests::test_config_save_without_https_prefix ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_build_tournament_list_playoffs ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_build_tournament_list_preseason ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_build_tournament_list_regular_season ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_fetch_date_custom_date ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_fetch_date_custom_date_none ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_fetch_date_no_custom_date ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_fetch_date_with_time_deterministic ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_fetch_date_with_time_edge_cases ... ok [INFO] [stdout] test config::tests::test_config_with_various_api_domain_formats ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_day_data_success ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_day_data_no_games ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_active_tournaments_api_errors_handled ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_game_data_no_goals ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_active_tournaments_no_active_tournaments ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_game_data_success ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_active_tournaments_priority_order ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_regular_season_start_date_success ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_regular_season_start_date_not_found ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_tournament_data_no_games ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_active_tournaments_single_tournament_with_games ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_tournament_data_success ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_find_future_games_fallback_invalid_date ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_active_tournaments_future_games_same_date ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_get_team_name_unknown ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_get_team_name_with_placeholder ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_get_team_name_with_team_name ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_has_actual_goals_no_goals ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_has_actual_goals_with_goals ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_find_future_games_fallback ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_is_historical_date_complex_scenarios ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_is_historical_date_edge_cases ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_is_historical_date_august_transition ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_is_historical_date_off_season_months ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_is_historical_date_year_boundary ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_is_historical_date_regular_season_months ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_process_goal_events_with_missing_player ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_process_goal_events_for_historical_game_with_players ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_should_fetch_detailed_data_finished_game ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_should_fetch_detailed_data_finished_with_score ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_should_fetch_detailed_data_not_finished ... ok [INFO] [stdout] test data_fetcher::api::game_api::tests::test_has_real_teams_away_empty ... ok [INFO] [stdout] test data_fetcher::api::game_api::tests::test_has_real_teams_both_none_with_placeholders ... ok [INFO] [stdout] test data_fetcher::api::game_api::tests::test_has_real_teams_both_placeholder_strings_in_team_name ... ok [INFO] [stdout] test data_fetcher::api::game_api::tests::test_has_real_teams_both_valid ... ok [INFO] [stdout] test data_fetcher::api::game_api::tests::test_has_real_teams_placeholder_string_in_team_name ... ok [INFO] [stdout] test data_fetcher::api::game_api::tests::test_is_placeholder_name_edge_cases ... ok [INFO] [stdout] test data_fetcher::api::game_api::tests::test_is_placeholder_name_real_team_names ... ok [INFO] [stdout] test data_fetcher::api::game_api::tests::test_is_placeholder_name_typical_codes ... ok [INFO] [stdout] test data_fetcher::api::standings_api::tests::test_determine_current_season ... ok [INFO] [stdout] test data_fetcher::api::game_api::tests::test_has_real_teams_home_none ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_find_future_games_fallback_no_games ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_game_data_cache_fallback ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_key_generation ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_tournament_data_not_found ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_players_with_disambiguation_cross_team_same_names ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_api_integration_disambiguation_flow ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_debugging_functions ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_expiration ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_players_with_disambiguation_basic ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_active_tournaments_concurrent_tournaments ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_game_data_server_error ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_tournament_data_server_error ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_players_with_disambiguation_unicode_names ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_players_with_formatting ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_players_with_disambiguation_three_players_same_name ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_stats ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_players_with_disambiguation_mixed_scenario ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_goal_events_cache_multiple_events ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_players_with_disambiguation_empty_teams ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_players_with_disambiguation_no_conflicts ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_get_cached_disambiguated_players ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_get_cached_player_name ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_players_with_disambiguation_empty_first_names ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_cached_disambiguated_players ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_complex_mixed_scenario ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_all_completed ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_mixed_with_ongoing ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_all_ongoing ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_multiple_ongoing ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_all_scheduled ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_detection ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_empty_list ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_goal_events_cache_basic ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_mixed_without_ongoing ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_playoffs_ongoing ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_single_completed ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_single_scheduled ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_lru_simple_access_order ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_clear_all_cache_files ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_http_response_cache_basic ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_clear_all_cache_files_empty_dir ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_corrupted_file_handled_gracefully ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_clear_all_cache_files_missing_dir ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_corrupted_file_removed_on_load ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_dirty_flag_lifecycle ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_get_returns_none_for_missing_team ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_insert_and_get_players ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_insert_merges_with_existing ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_lru_access_order ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_load_idempotent_for_same_season ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_missing_file_starts_empty ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_save_and_load_round_trip ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_save_noop_when_not_dirty ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_season_switch_saves_pending_data ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_clear ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_concurrent_access ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_serialization_format ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_capacity ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_get_if_passes ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_get_if_fails_and_evicts ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_insert_and_get ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_lru_simple ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_lru_eviction ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_tournament_cache_basic ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_tournament_cache_ttl ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_bronze_match_req_wins_1 ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_different_serie_ids_not_mixed ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_empty_schedule_returns_no_data ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_first_round_included ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_full_bracket_qf_sf_final ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_has_live_game ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_non_playoff_games_ignored ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_remove ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_phases_ordered_by_number ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_req_wins_defaults_to_4 ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_single_phase_quarterfinals ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_zero_zero_series ... ok [INFO] [stdout] test data_fetcher::models::common::tests::test_game_data_structure ... ok [INFO] [stdout] test data_fetcher::models::common::tests::test_has_goal_events_trait_detailed_team ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_expired_entry_returns_none_and_is_evicted ... ok [INFO] [stdout] test data_fetcher::models::common::tests::test_has_goal_events_trait_schedule_team ... ok [INFO] [stdout] test data_fetcher::models::common::tests::test_has_teams_trait_detailed_game ... ok [INFO] [stdout] test data_fetcher::models::common::tests::test_has_teams_trait_schedule_game ... ok [INFO] [stdout] test data_fetcher::models::detailed::tests::test_detailed_game_default_fields ... ok [INFO] [stdout] test data_fetcher::models::detailed::tests::test_detailed_game_response_serialization ... ok [INFO] [stdout] test data_fetcher::models::detailed::tests::test_detailed_game_serialization ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_insert_overwrite_updates_value_and_ttl ... ok [INFO] [stdout] test data_fetcher::models::detailed::tests::test_detailed_team_serialization ... ok [INFO] [stdout] test data_fetcher::models::detailed::tests::test_penalty_event_serialization ... ok [INFO] [stdout] test data_fetcher::models::detailed::tests::test_period_serialization ... ok [INFO] [stdout] test data_fetcher::models::goals::tests::test_complex_goal_event_deserialization ... ok [INFO] [stdout] test data_fetcher::models::goals::tests::test_goal_event_serialization ... ok [INFO] [stdout] test data_fetcher::models::goals::tests::test_goal_event_data_goal_type_display ... ok [INFO] [stdout] test data_fetcher::models::goals::tests::test_goal_event_default_fields ... ok [INFO] [stdout] test data_fetcher::models::goals::tests::test_goal_type_display_safe_fallbacks ... ok [INFO] [stdout] test data_fetcher::models::players::tests::test_player_serialization ... ok [INFO] [stdout] test data_fetcher::models::schedule::tests::test_schedule_game_default_fields ... ok [INFO] [stdout] test data_fetcher::models::players::tests::test_player_clone ... ok [INFO] [stdout] test data_fetcher::models::schedule::tests::test_schedule_game_serialization ... ok [INFO] [stdout] test data_fetcher::models::players::tests::test_player_with_special_characters ... ok [INFO] [stdout] test data_fetcher::models::schedule::tests::test_schedule_response_serialization ... ok [INFO] [stdout] test data_fetcher::models::schedule::tests::test_schedule_api_game_serialization ... ok [INFO] [stdout] test data_fetcher::models::standings::tests::test_from_api_live_game_active_tied_game ... ok [INFO] [stdout] test data_fetcher::models::schedule::tests::test_schedule_team_serialization ... ok [INFO] [stdout] test data_fetcher::models::standings::tests::test_from_api_live_game_active_losing_team ... ok [INFO] [stdout] test data_fetcher::models::schedule::tests::test_schedule_team_default_fields ... ok [INFO] [stdout] test data_fetcher::models::standings::tests::test_from_api_live_points_gained ... ok [INFO] [stdout] test data_fetcher::models::standings::tests::test_from_api_live_position_moved_down ... ok [INFO] [stdout] test data_fetcher::models::standings::tests::test_from_api_live_position_moved_up ... ok [INFO] [stdout] test data_fetcher::models::standings::tests::test_goal_difference ... ok [INFO] [stdout] test data_fetcher::models::standings::tests::test_standings_response_deserialize ... ok [INFO] [stdout] test data_fetcher::models::standings::tests::test_standings_response_missing_playoffs_lines ... ok [INFO] [stdout] test data_fetcher::models::standings::tests::test_from_api_no_live_changes ... ok [INFO] [stdout] test data_fetcher::models::tests::test_clone_implementations ... ok [INFO] [stdout] test data_fetcher::models::tests::test_debug_implementations ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_create_basic_goal_events_empty_game ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_create_basic_goal_events ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_determine_game_status_finished_regular ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_determine_game_status_overtime ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_determine_game_status_scheduled ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_determine_game_status_shootout ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_edge_cases_large_game_time ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_format_time_empty_string ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_format_time_invalid_format ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_edge_cases_zero_game_time ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_format_time_invalid_date ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_goal_event_data_fields ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_determine_game_status_ongoing ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_format_time_valid_utc ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_create_basic_goal_events_with_scores_but_no_events ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_format_time_valid_with_timezone ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_empty_game ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_with_disambiguation_empty_teams ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_with_disambiguation_missing_player ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_multiple_goal_types ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_no_video_url ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_preserves_winning_goal_flag ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_with_disambiguation_basic ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_with_disambiguation_mixed_scenario ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_with_disambiguation_team_scoped ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_with_fallback_names ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_with_disambiguation_unicode_names ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_team_goals_filters_cancelled_goals ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_with_goals ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_with_disambiguation_multiple_same_name ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_team_goals_with_disambiguation_missing_player ... ok [INFO] [stdout] test data_fetcher::processors::goal_events::tests::test_disambiguation_uses_embedded_fallback_when_context_empty ... ok [INFO] [stdout] test data_fetcher::processors::goal_events::tests::test_disambiguation_prefers_context_over_embedded ... ok [INFO] [stdout] test data_fetcher::processors::goal_events::tests::test_disambiguation_uses_numeric_fallback_when_no_embedded ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_team_goals_with_disambiguation ... ok [INFO] [stdout] test data_fetcher::processors::goal_events::tests::test_process_team_goals_uses_embedded_fallback ... ok [INFO] [stdout] test data_fetcher::processors::goal_events::tests::test_process_team_goals_uses_numeric_fallback_when_no_embedded ... ok [INFO] [stdout] test data_fetcher::processors::goal_events::tests::test_scorer_name_from_embedded_none ... ok [INFO] [stdout] test data_fetcher::processors::goal_events::tests::test_scorer_name_from_embedded_with_player ... ok [INFO] [stdout] test data_fetcher::processors::playoff_series::tests::test_decided_series_4_wins ... ok [INFO] [stdout] test data_fetcher::processors::playoff_series::tests::test_bronze_game_req_wins_1 ... ok [INFO] [stdout] test data_fetcher::processors::playoff_series::tests::test_mixed_phases_on_same_day ... ok [INFO] [stdout] test data_fetcher::processors::playoff_series::tests::test_different_tournaments_same_phase_pair_not_mixed ... ok [INFO] [stdout] test data_fetcher::processors::playoff_series::tests::test_no_playoff_fields_skipped ... ok [INFO] [stdout] test data_fetcher::processors::playoff_series::tests::test_series_counts_all_games_up_to_target_date ... ok [INFO] [stdout] test data_fetcher::processors::playoff_series::tests::test_series_with_3_games_one_team_leads_2_1 ... ok [INFO] [stdout] test data_fetcher::processors::time_formatting::tests::test_noon_cutoff_behavior ... ok [INFO] [stdout] test data_fetcher::processors::time_formatting::tests::test_should_show_todays_games_deterministic_examples ... ok [INFO] [stdout] test error::tests::test_api_client_error_helper ... ok [INFO] [stdout] test error::tests::test_api_game_not_found_helper ... ok [INFO] [stdout] test error::tests::test_api_no_data_helper ... ok [INFO] [stdout] test data_fetcher::processors::time_formatting::tests::test_should_show_todays_games_consistency ... ok [INFO] [stdout] test error::tests::test_api_not_found_helper ... ok [INFO] [stdout] test error::tests::test_api_rate_limit_helper ... ok [INFO] [stdout] test error::tests::test_api_server_error_helper ... ok [INFO] [stdout] test error::tests::test_api_tournament_not_found_helper ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_team_goals_with_disambiguation_filters_cancelled ... ok [INFO] [stdout] test error::tests::test_api_season_not_found_helper ... ok [INFO] [stdout] test error::tests::test_api_service_unavailable_helper ... ok [INFO] [stdout] test data_fetcher::processors::goal_events::tests::test_process_team_goals_prefers_player_map_over_embedded ... ok [INFO] [stdout] test error::tests::test_api_malformed_json_helper ... ok [INFO] [stdout] test error::tests::test_api_unexpected_structure_helper ... ok [INFO] [stdout] test error::tests::test_error_display_formats ... ok [INFO] [stdout] test error::tests::test_error_from_io ... ok [INFO] [stdout] test error::tests::test_custom_error ... ok [INFO] [stdout] test error::tests::test_config_error_helper ... ok [INFO] [stdout] test error::tests::test_datetime_parse_error_helper ... ok [INFO] [stdout] test error::tests::test_error_from_semver ... ok [INFO] [stdout] test error::tests::test_error_from_serde_json ... ok [INFO] [stdout] test error::tests::test_is_retryable ... ok [INFO] [stdout] test error::tests::test_error_from_toml_serialize ... ok [INFO] [stdout] test error::tests::test_error_from_toml_deserialize ... ok [INFO] [stdout] test error::tests::test_is_not_found ... ok [INFO] [stdout] test error::tests::test_log_setup_error_helper ... ok [INFO] [stdout] test error::tests::test_retry_delay_constants_consistency ... ok [INFO] [stdout] test error::tests::test_retry_delay_seconds_for_non_retryable_errors ... ok [INFO] [stdout] test error::tests::test_network_timeout_helper ... ok [INFO] [stdout] test error::tests::test_network_connection_helper ... ok [INFO] [stdout] test error::tests::test_retry_delay_seconds_for_retryable_errors ... ok [INFO] [stdout] test error::tests::test_retry_delay_seconds_uses_constants ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_active_phase1_stays_on_page1 ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_decided_series_winner_shown ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_champion_label_shown ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_decided_phase1_moves_to_page2 ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_four_matchups_single_phase_all_visible ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_multi_early_phases_separate_headers ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_qf_and_sf_rendered_with_separate_headers ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_narrow_terminal_stacked_fallback ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_no_data_message ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_no_phase1_no_page_break ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_single_phase_no_page_break ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_truncation_edge_cases ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_team_name_no_truncation_when_fits ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_team_name_truncation ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_tree_contains_box_drawing_chars ... ok [INFO] [stdout] test teletext_ui::core::tests::test_can_fit_two_pages_with_insufficient_width ... ok [INFO] [stdout] test teletext_ui::core::tests::test_can_fit_two_pages_with_sufficient_width ... ok [INFO] [stdout] test teletext_ui::core::tests::test_compact_display_config ... ok [INFO] [stdout] test teletext_ui::core::tests::test_compact_display_config_comprehensive ... ok [INFO] [stdout] test teletext_ui::core::tests::test_auto_refresh_indicator_lifecycle ... ok [INFO] [stdout] test teletext_ui::core::tests::test_buffer_size_calculation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_can_fit_two_pages_false_when_wide_mode_disabled ... ok [INFO] [stdout] test teletext_ui::core::test_video_link_functionality_with_dynamic_layout ... ok [INFO] [stdout] test teletext_ui::core::tests::test_compact_mode_getter_setter ... ok [INFO] [stdout] test teletext_ui::core::tests::test_distribute_games_for_wide_display_enabled ... ok [INFO] [stdout] test teletext_ui::core::tests::test_distribute_games_for_wide_display_disabled ... ok [INFO] [stdout] test teletext_ui::core::tests::test_distribute_games_for_wide_display_odd_number ... ok [INFO] [stdout] test teletext_ui::core::tests::test_error_message_display ... ok [INFO] [stdout] test teletext_ui::core::tests::test_compact_formatting_various_game_states ... ok [INFO] [stdout] test teletext_ui::core::tests::test_distribute_games_for_wide_display_insufficient_width ... ok [INFO] [stdout] test teletext_ui::core::tests::test_error_warning_lifecycle ... ok [INFO] [stdout] test teletext_ui::core::tests::test_from_config_returns_error_with_invalid_config ... ok [INFO] [stdout] test teletext_ui::core::tests::test_game_height_calculation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_game_result_display ... ok [INFO] [stdout] test teletext_ui::core::tests::test_get_ansi_code_helper ... ok [INFO] [stdout] test teletext_ui::core::tests::test_compact_mode_compatibility_validation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_format_compact_game ... ok [INFO] [stdout] test teletext_ui::core::tests::test_from_config_succeeds_with_valid_config ... ok [INFO] [stdout] test teletext_ui::core::tests::test_multi_column_compact_layout ... ok [INFO] [stdout] test teletext_ui::core::tests::test_header_truncation_logic ... ok [INFO] [stdout] test teletext_ui::core::tests::test_loading_indicator ... ok [INFO] [stdout] test teletext_ui::core::tests::test_group_games_for_compact_display ... ok [INFO] [stdout] test teletext_ui::core::tests::test_page_navigation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_team_abbreviation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_page_wrapping ... ok [INFO] [stdout] test teletext_ui::core::tests::test_team_abbreviation_comprehensive ... ok [INFO] [stdout] test teletext_ui::core::tests::test_teletext_page_config_mode_exclusivity ... ok [INFO] [stdout] test teletext_ui::core::tests::test_compact_mode_spacing ... ok [INFO] [stdout] test teletext_ui::core::tests::test_teletext_page_config_validation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_teletext_page_mode_exclusivity ... ok [INFO] [stdout] test teletext_ui::core::tests::test_terminal_width_validation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_page_preservation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_terminal_width_adaptation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_setter_validation_conflicts ... ok [INFO] [stdout] test teletext_ui::footer::tests::test_calculate_footer_position_interactive ... ok [INFO] [stdout] test teletext_ui::footer::tests::test_calculate_footer_position_non_interactive ... ok [INFO] [stdout] test teletext_ui::footer::tests::test_footer_bracket_view_no_standings_key ... ok [INFO] [stdout] test teletext_ui::footer::tests::test_footer_games_view_with_bracket_data ... ok [INFO] [stdout] test teletext_ui::footer::tests::test_footer_games_view_without_bracket_data ... ok [INFO] [stdout] test teletext_ui::footer::tests::test_footer_none_view_mode ... ok [INFO] [stdout] test teletext_ui::formatting::tests::test_format_game_time ... ok [INFO] [stdout] test teletext_ui::formatting::tests::test_format_playing_time ... ok [INFO] [stdout] test teletext_ui::formatting::tests::test_format_score_with_indicators_final ... ok [INFO] [stdout] test teletext_ui::formatting::tests::test_format_score_with_indicators_ongoing ... ok [INFO] [stdout] test teletext_ui::formatting::tests::test_format_score_with_indicators_scheduled ... ok [INFO] [stdout] test teletext_ui::core::tests::test_wide_mode_with_test_games ... ok [INFO] [stdout] test teletext_ui::formatting::tests::test_should_highlight_score ... ok [INFO] [stdout] test teletext_ui::core::tests::test_teletext_page_validation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_video_link_display ... ok [INFO] [stdout] test teletext_ui::layout::ansi_cache::tests::test_color_position_code_generation ... ok [INFO] [stdout] test teletext_ui::layout::ansi_cache::tests::test_position_code_generation ... ok [INFO] [stdout] test teletext_ui::layout::ansi_cache::tests::test_position_codes_are_cached ... ok [INFO] [stdout] test teletext_ui::layout::ansi_cache::tests::test_clear ... ok [INFO] [stdout] test teletext_ui::layout::ansi_cache::tests::test_pre_calculate_positions ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_alignment_calculator_caching ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_alignment_calculator_consistency_across_different_layouts ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_alignment_calculator_creation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_wide_mode_getter_setter ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_analyze_content_for_fallback_moderate_limits ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_analyze_content_for_fallback_strict_limits ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_column_layout_manager_creation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_calculate_layout_uses_normal_for_adequate_terminal ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_calculate_layout_uses_fallback_for_suboptimal_terminal ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_cache_clearing ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_calculate_layout_uses_fallback_for_narrow_terminal ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_content_analysis_empty_games ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_content_analysis_with_goal_events ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_content_analysis_limits ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_content_analysis_with_truncation_strategies ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_dynamic_spacing_calculation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_fallback_layout_for_narrow_terminal ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_fallback_layout_for_suboptimal_terminal ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_fallback_layout_positions_dont_overlap ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_fallback_layout_with_intelligent_truncation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_game_data_validator_invalid_goal_types ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_game_data_validator_invalid_scores ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_game_data_validator_missing_player_names ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_game_data_validator_missing_team_names ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_game_data_validator_missing_time_and_result ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_game_data_validator_sanitize_games ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_game_data_validator_valid_game ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_get_play_icon_column_position ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_goal_type_overflow_prevention ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_goal_type_positioning_accuracy_various_lengths ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_goal_type_positioning_accuracy_with_custom_layout ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_goal_type_positions_calculation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_goal_types_validation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_intelligent_truncator_goal_types_validation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_intelligent_truncator_player_name_truncation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_intelligent_truncator_spacing_reduction ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_intelligent_truncator_strategy_determination ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_layout_accessors ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_layout_calculation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_layout_calculation_caching ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_layout_calculation_with_validation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_layout_config_default ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_narrow_terminal_layout ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_overflow_prevention_boundary_conditions ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_overflow_prevention_edge_cases ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_overflow_prevention_with_long_goal_types ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_play_icon_alignment_consistency_empty_games ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_play_icon_alignment_consistency_mixed_video_links ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_play_icon_alignment_consistency_multiple_games ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_play_icon_positions_calculation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_play_icon_positions_with_video_links ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_score_format_validation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_string_caching ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_terminal_width_validation_adequate ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_terminal_width_validation_suboptimal ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_terminal_width_validation_too_narrow ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_validate_no_overflow ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_wide_mode_column_layout_manager_creation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_wide_mode_layout_calculation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_wide_mode_layout_proportional_spacing ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_wide_mode_layout_with_normal_column_width ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_can_fit_two_pages_disabled ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_can_fit_two_pages_enabled ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_distribute_games_disabled ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_distribute_games_enabled_even_number ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_distribute_games_enabled_odd_number ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_get_column_content_width ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_get_right_column_start ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_validate_terminal_disabled ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_validate_terminal_suitable ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_validate_terminal_too_narrow ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_wide_mode_manager_creation ... ok [INFO] [stdout] test testing_utils::tests::test_create_basic_game ... ok [INFO] [stdout] test testing_utils::tests::test_create_goal_event ... ok [INFO] [stdout] test testing_utils::tests::test_create_live_game ... ok [INFO] [stdout] test testing_utils::tests::test_create_multiple_games ... ok [INFO] [stdout] test testing_utils::tests::test_create_overtime_game ... ok [INFO] [stdout] test testing_utils::tests::test_create_powerplay_goal ... ok [INFO] [stdout] test testing_utils::tests::test_create_shootout_game ... ok [INFO] [stdout] test testing_utils::tests::test_create_tournament_games ... ok [INFO] [stdout] test testing_utils::tests::test_create_winning_goal ... ok [INFO] [stdout] test testing_utils::tests::test_validate_game_data_invalid_empty_team ... ok [INFO] [stdout] test testing_utils::tests::test_validate_game_data_invalid_overtime_and_shootout ... ok [INFO] [stdout] test testing_utils::tests::test_validate_game_data_valid ... ok [INFO] [stdout] test testing_utils::tests::test_validate_goal_events_invalid_minute ... ok [INFO] [stdout] test testing_utils::tests::test_validate_goal_events_invalid_empty_scorer ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_calculate_games_hash_empty ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_calculate_standings_hash_empty ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_calculate_standings_hash_live_mode_toggle ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_calculate_standings_hash_sensitive_to_data_changes ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_calculate_standings_hash_sensitive_to_live_game_active ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_calculate_standings_hash_sensitive_to_playoffs_lines ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_calculate_standings_hash_deterministic ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_placeholder_to_real_game_change_detected ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_video_clip_url_change_detected ... ok [INFO] [stdout] test ui::interactive::event_handler::tests::test_event_handler_config_default ... ok [INFO] [stdout] test testing_utils::tests::test_validate_goal_events_valid ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_calculate_games_hash ... ok [INFO] [stdout] test ui::interactive::event_handler::tests::test_event_handler_creation ... ok [INFO] [stdout] test ui::interactive::event_handler::tests::test_event_handler_should_exit_default ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_series_score_change_detected ... ok [INFO] [stdout] test ui::interactive::event_handler::tests::test_event_handler_builder ... ok [INFO] [stdout] test ui::interactive::navigation_manager::tests::test_format_date_for_display ... ok [INFO] [stdout] test ui::interactive::event_handler::tests::test_event_result_equality ... ok [INFO] [stdout] test ui::interactive::navigation_manager::tests::test_loading_indicator_config ... ok [INFO] [stdout] test ui::interactive::navigation_manager::tests::test_is_future_game ... ok [INFO] [stdout] test ui::interactive::navigation_manager::tests::test_only_placeholder_games_produces_empty_display ... ok [INFO] [stdout] test ui::interactive::navigation_manager::tests::test_placeholder_games_filtered_from_display ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_data_fetch_params ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_cache_monitoring_config_default ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_process_refresh_results_updates_state_on_success ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_refresh_coordinator_with_cache_config ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_refresh_coordinator_creation ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_refresh_cycle_config ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_reset_transient_empty_counter ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_reset_transient_empty_counter_noop_when_zero ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_should_discard_for_date_mismatch_different_dates ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_should_discard_for_date_mismatch_empty_current_date ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_should_discard_for_date_mismatch_empty_fetched ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_should_discard_for_date_mismatch_no_current_date ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_should_discard_for_date_mismatch_same_date ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_should_discard_for_date_mismatch_whitespace_current_date ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_should_discard_for_date_mismatch_whitespace_in_current_date ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_should_discard_for_date_mismatch_whitespace_in_fetched_date ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_standings_live_mode_not_clamped_by_game_count ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_standings_non_live_mode_uses_default_refresh_interval ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_standings_refresh_result_preserves_last_games ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_standings_live_mode_uses_live_refresh_interval ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_transient_empty_preserves_existing_games ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_transient_empty_propagates_had_error ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_transient_empty_accepts_after_threshold ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_transient_empty_skipped_on_date_change ... ok [INFO] [stdout] test ui::interactive::series_utils::tests::test_get_subheader_with_series_types ... ok [INFO] [stdout] test ui::interactive::series_utils::tests::test_playoff_phase_name ... ok [INFO] [stdout] test ui::interactive::series_utils::tests::test_series_type_display ... ok [INFO] [stdout] test ui::interactive::series_utils::tests::test_series_type_from_string ... ok [INFO] [stdout] test ui::interactive::series_utils::tests::test_series_type_priority_ordering ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_interactive_state_view_delegates ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_preserved_games_page ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_reset_standings_hash_clears_state ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_toggle_live_mode_in_standings ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_toggle_live_mode_noop_in_games ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_toggle_view_games_to_standings ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_toggle_view_standings_to_games ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_toggle_view_standings_with_live_returns_to_games ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_update_standings_hash_different_hash_returns_true ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_update_standings_hash_first_call_returns_true ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_update_standings_hash_same_hash_returns_false ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_view_mode_default_is_games ... ok [INFO] [stdout] test ui::interactive::terminal_manager::tests::test_terminal_config_debug_mode ... ok [INFO] [stdout] test ui::interactive::terminal_manager::tests::test_terminal_config_default ... ok [INFO] [stdout] test ui::interactive::terminal_manager::tests::test_terminal_manager_creation ... ok [INFO] [stdout] test ui::interactive::terminal_manager::tests::test_terminal_manager_default ... ok [INFO] [stdout] test ui::interactive::terminal_manager::tests::test_terminal_manager_with_config ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_transient_empty_resets_on_nonempty_response ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_process_refresh_results_skips_discarded ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_refresh_coordinator_default ... ok [INFO] [stdout] test ui::interactive::navigation_manager::tests::test_loading_page_is_marked_and_restored ... ok [INFO] [stdout] test error::tests::test_error_from_reqwest ... ok [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/liiga_teletext-05e52e7377667156) [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_single_ongoing ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_detailed_game_cache_basic ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 513 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.05s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 513 tests [INFO] [stdout] [INFO] [stdout] ╔════════════════════════════════════════════════╗ [INFO] [stdout] ║ CURRENT CONFIGURATION ║ [INFO] [stdout] ╚════════════════════════════════════════════════╝ [INFO] [stdout]  ⚠ No configuration found [INFO] [stdout] [INFO] [stdout]  Expected location: [INFO] [stdout]  /root/.config/liiga_teletext/config.toml [INFO] [stdout] [INFO] [stdout]  Run the app to create a config, or use: [INFO] [stdout]  liiga_teletext --config [INFO] [stdout] test config::tests::test_config_default_log_file_path ... ok [INFO] [stdout] test config::tests::test_config_display_without_config_file ... ok [INFO] [stdout] test config::tests::test_config_load_invalid_toml ... ok [INFO] [stdout] test config::tests::test_config_load_from_nonexistent_path ... ok [INFO] [stdout] test config::tests::test_config_empty_file ... ok [INFO] [stdout] test config::tests::test_config_load_existing_file ... ok [INFO] [stdout] test config::tests::test_config_path_generation ... ok [INFO] [stdout] test config::tests::test_config_display_with_existing_config ... ok [INFO] [stdout] [INFO] [stdout] ╔════════════════════════════════════════════════╗ [INFO] [stdout] ║ API DOMAIN CONFIGURATION ║ [INFO] [stdout] ╚════════════════════════════════════════════════╝ [INFO] [stdout]  Enter the API domain URL for fetching game data. [INFO] [stdout]  Format: https://example.com/api/v2 [INFO] [stdout]  • Include https:// prefix (or it will be added) [INFO] [stdout]  • Do NOT include trailing slash [INFO] [stdout]  Press Enter without input to cancel. [INFO] [stdout]  ──────────────────────────────────────────────── [INFO] [stdout]  API domain: test config::tests::test_config_missing_required_field ... ok [INFO] [stdout]  Configuration cancelled. [INFO] [stdout] test config::tests::test_config_malformed_toml_file ... ok [INFO] [stdout] test config::tests::test_config_save_and_load_roundtrip ... ok [INFO] [stdout] test config::tests::test_config_load_without_log_file_path ... ok [INFO] [stdout] test config::tests::test_config_save_to_readonly_directory ... ok [INFO] [stdout] test config::tests::test_config_save_creates_directory ... ok [INFO] [stdout] test config::tests::test_config_serialization_deserialization ... ok [INFO] [stdout] test config::tests::test_config_save_creates_nested_directories ... ok [INFO] [stdout] test config::tests::test_config_validation_valid_configs ... ok [INFO] [stdout] test config::tests::test_config_save_new_file ... ok [INFO] [stdout] test config::tests::test_config_validation_invalid_configs ... ok [INFO] [stdout] test config::tests::test_config_save_with_http_prefix ... ok [INFO] [stdout] test config::tests::test_config_without_log_file_path_serialization ... ok [INFO] [stdout] test config::tests::test_get_config_path ... ok [INFO] [stdout] test config::tests::test_config_save_without_https_prefix ... ok [INFO] [stdout] test config::tests::test_config_serialization_with_special_characters ... ok [INFO] [stdout] test constants::tests::test_env_var_names_are_not_empty ... ok [INFO] [stdout] test config::tests::test_get_log_dir_path ... ok [INFO] [stdout] test constants::tests::test_retry_constants_are_reasonable ... ok [INFO] [stdout] test config::tests::test_config_with_extra_fields ... ok [INFO] [stdout] test config::tests::test_log_dir_path_generation ... ok [INFO] [stdout] test constants::tests::test_max_player_name_length_is_reasonable ... ok [INFO] [stdout] test constants::tests::test_ttl_constants_are_reasonable ... ok [INFO] [stdout] test config::tests::test_environment_variable_override ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_build_tournament_list_playoffs ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_build_tournament_list_preseason ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_build_tournament_list_regular_season ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_fetch_date_custom_date ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_fetch_date_custom_date_none ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_fetch_date_no_custom_date ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_fetch_date_with_time_deterministic ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_fetch_date_with_time_edge_cases ... ok [INFO] [stdout] test config::tests::test_config_with_various_api_domain_formats ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_active_tournaments_api_errors_handled ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_day_data_no_games ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_day_data_success ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_game_data_no_goals ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_active_tournaments_concurrent_tournaments ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_regular_season_start_date_not_found ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_game_data_success ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_active_tournaments_future_games_same_date ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_regular_season_start_date_success ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_tournament_data_not_found ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_tournament_data_success ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_active_tournaments_priority_order ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_find_future_games_fallback ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_find_future_games_fallback_invalid_date ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_get_team_name_unknown ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_get_team_name_with_placeholder ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_get_team_name_with_team_name ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_has_actual_goals_no_goals ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_has_actual_goals_with_goals ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_is_historical_date_august_transition ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_is_historical_date_complex_scenarios ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_is_historical_date_edge_cases ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_is_historical_date_off_season_months ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_is_historical_date_regular_season_months ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_is_historical_date_year_boundary ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_process_goal_events_for_historical_game_with_players ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_process_goal_events_with_missing_player ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_should_fetch_detailed_data_finished_game ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_should_fetch_detailed_data_finished_with_score ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_should_fetch_detailed_data_not_finished ... ok [INFO] [stdout] test data_fetcher::api::game_api::tests::test_has_real_teams_away_empty ... ok [INFO] [stdout] test data_fetcher::api::game_api::tests::test_has_real_teams_both_none_with_placeholders ... ok [INFO] [stdout] test data_fetcher::api::game_api::tests::test_has_real_teams_both_placeholder_strings_in_team_name ... ok [INFO] [stdout] test data_fetcher::api::game_api::tests::test_has_real_teams_both_valid ... ok [INFO] [stdout] test data_fetcher::api::game_api::tests::test_has_real_teams_home_none ... ok [INFO] [stdout] test data_fetcher::api::game_api::tests::test_has_real_teams_placeholder_string_in_team_name ... ok [INFO] [stdout] test data_fetcher::api::game_api::tests::test_is_placeholder_name_edge_cases ... ok [INFO] [stdout] test data_fetcher::api::game_api::tests::test_is_placeholder_name_real_team_names ... ok [INFO] [stdout] test data_fetcher::api::game_api::tests::test_is_placeholder_name_typical_codes ... ok [INFO] [stdout] test data_fetcher::api::standings_api::tests::test_determine_current_season ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_api_integration_disambiguation_flow ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_find_future_games_fallback_no_games ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_game_data_cache_fallback ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_tournament_data_no_games ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_players_with_disambiguation_basic ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_players_with_disambiguation_cross_team_same_names ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_debugging_functions ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_expiration ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_key_generation ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_active_tournaments_no_active_tournaments ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_players_with_disambiguation_three_players_same_name ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_determine_active_tournaments_single_tournament_with_games ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_players_with_disambiguation_mixed_scenario ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_players_with_disambiguation_no_conflicts ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_detailed_game_cache_basic ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_players_with_disambiguation_empty_teams ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_players_with_disambiguation_unicode_names ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_players_with_formatting ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_stats ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_cached_disambiguated_players ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_game_data_server_error ... ok [INFO] [stdout] test data_fetcher::api::api_tests::tests::test_fetch_tournament_data_server_error ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_get_cached_disambiguated_players ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_detection ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_all_scheduled ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_cache_players_with_disambiguation_empty_first_names ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_get_cached_player_name ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_goal_events_cache_multiple_events ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_all_completed ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_all_ongoing ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_playoffs_ongoing ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_single_completed ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_empty_list ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_mixed_without_ongoing ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_single_scheduled ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_goal_events_cache_basic ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_single_ongoing ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_http_response_cache_basic ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_lru_access_order ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_multiple_ongoing ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_complex_mixed_scenario ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_clear_all_cache_files ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_corrupted_file_handled_gracefully ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_clear_all_cache_files_missing_dir ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_corrupted_file_removed_on_load ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_get_returns_none_for_missing_team ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_insert_and_get_players ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_insert_merges_with_existing ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_dirty_flag_lifecycle ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_missing_file_starts_empty ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_load_idempotent_for_same_season ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_save_and_load_round_trip ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_season_switch_saves_pending_data ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_serialization_format ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_capacity ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_clear ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_concurrent_access ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_expired_entry_returns_none_and_is_evicted ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_get_if_fails_and_evicts ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_get_if_passes ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_has_live_games_from_game_data_mixed_with_ongoing ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_insert_and_get ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_clear_all_cache_files_empty_dir ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_lru_eviction ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_remove ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_bronze_match_req_wins_1 ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_empty_schedule_returns_no_data ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_different_serie_ids_not_mixed ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_first_round_included ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_full_bracket_qf_sf_final ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_has_live_game ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_non_playoff_games_ignored ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_phases_ordered_by_number ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_req_wins_defaults_to_4 ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_single_phase_quarterfinals ... ok [INFO] [stdout] test data_fetcher::models::bracket::tests::test_zero_zero_series ... ok [INFO] [stdout] test data_fetcher::models::common::tests::test_game_data_structure ... ok [INFO] [stdout] test data_fetcher::models::common::tests::test_has_goal_events_trait_detailed_team ... ok [INFO] [stdout] test data_fetcher::models::common::tests::test_has_goal_events_trait_schedule_team ... ok [INFO] [stdout] test data_fetcher::models::common::tests::test_has_teams_trait_detailed_game ... ok [INFO] [stdout] test data_fetcher::models::common::tests::test_has_teams_trait_schedule_game ... ok [INFO] [stdout] test data_fetcher::models::detailed::tests::test_detailed_game_default_fields ... ok [INFO] [stdout] test data_fetcher::cache::persistence::tests::test_save_noop_when_not_dirty ... ok [INFO] [stdout] test data_fetcher::models::detailed::tests::test_detailed_game_response_serialization ... ok [INFO] [stdout] test data_fetcher::models::detailed::tests::test_detailed_game_serialization ... ok [INFO] [stdout] test data_fetcher::models::detailed::tests::test_penalty_event_serialization ... ok [INFO] [stdout] test data_fetcher::models::detailed::tests::test_period_serialization ... ok [INFO] [stdout] test data_fetcher::models::detailed::tests::test_detailed_team_serialization ... ok [INFO] [stdout] test data_fetcher::models::goals::tests::test_complex_goal_event_deserialization ... ok [INFO] [stdout] test data_fetcher::models::goals::tests::test_goal_event_data_goal_type_display ... ok [INFO] [stdout] test data_fetcher::models::goals::tests::test_goal_event_serialization ... ok [INFO] [stdout] test data_fetcher::models::goals::tests::test_goal_event_default_fields ... ok [INFO] [stdout] test data_fetcher::models::goals::tests::test_goal_type_display_safe_fallbacks ... ok [INFO] [stdout] test data_fetcher::models::players::tests::test_player_clone ... ok [INFO] [stdout] test data_fetcher::models::players::tests::test_player_serialization ... ok [INFO] [stdout] test data_fetcher::models::players::tests::test_player_with_special_characters ... ok [INFO] [stdout] test data_fetcher::models::schedule::tests::test_schedule_api_game_serialization ... ok [INFO] [stdout] test data_fetcher::models::schedule::tests::test_schedule_game_default_fields ... ok [INFO] [stdout] test data_fetcher::models::schedule::tests::test_schedule_team_default_fields ... ok [INFO] [stdout] test data_fetcher::models::schedule::tests::test_schedule_response_serialization ... ok [INFO] [stdout] test data_fetcher::models::standings::tests::test_from_api_live_game_active_losing_team ... ok [INFO] [stdout] test data_fetcher::models::schedule::tests::test_schedule_team_serialization ... ok [INFO] [stdout] test data_fetcher::models::standings::tests::test_from_api_live_game_active_tied_game ... ok [INFO] [stdout] test data_fetcher::models::standings::tests::test_from_api_live_points_gained ... ok [INFO] [stdout] test data_fetcher::models::standings::tests::test_from_api_live_position_moved_down ... ok [INFO] [stdout] test data_fetcher::models::standings::tests::test_from_api_live_position_moved_up ... ok [INFO] [stdout] test data_fetcher::models::standings::tests::test_from_api_no_live_changes ... ok [INFO] [stdout] test data_fetcher::models::standings::tests::test_goal_difference ... ok [INFO] [stdout] test data_fetcher::models::standings::tests::test_standings_response_deserialize ... ok [INFO] [stdout] test data_fetcher::models::standings::tests::test_standings_response_missing_playoffs_lines ... ok [INFO] [stdout] test data_fetcher::models::tests::test_clone_implementations ... ok [INFO] [stdout] test data_fetcher::models::tests::test_debug_implementations ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_create_basic_goal_events ... ok [INFO] [stdout] test data_fetcher::models::schedule::tests::test_schedule_game_serialization ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_create_basic_goal_events_empty_game ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_create_basic_goal_events_with_scores_but_no_events ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_determine_game_status_finished_regular ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_determine_game_status_overtime ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_determine_game_status_ongoing ... ok [INFO] [stdout] test data_fetcher::cache::ttl_cache::tests::test_insert_overwrite_updates_value_and_ttl ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_edge_cases_large_game_time ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_determine_game_status_scheduled ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_determine_game_status_shootout ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_edge_cases_zero_game_time ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_format_time_empty_string ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_format_time_invalid_date ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_format_time_invalid_format ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_goal_event_data_fields ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_format_time_valid_with_timezone ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_format_time_valid_utc ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_no_video_url ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_multiple_goal_types ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_empty_game ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_preserves_winning_goal_flag ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_with_disambiguation_missing_player ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_with_disambiguation_basic ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_with_disambiguation_mixed_scenario ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_with_disambiguation_empty_teams ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_with_disambiguation_unicode_names ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_with_disambiguation_multiple_same_name ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_with_fallback_names ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_with_disambiguation_team_scoped ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_team_goals_with_disambiguation ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_goal_events_with_goals ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_team_goals_with_disambiguation_filters_cancelled ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_team_goals_filters_cancelled_goals ... ok [INFO] [stdout] test data_fetcher::processors::core::tests::test_process_team_goals_with_disambiguation_missing_player ... ok [INFO] [stdout] test data_fetcher::processors::goal_events::tests::test_disambiguation_uses_numeric_fallback_when_no_embedded ... ok [INFO] [stdout] test data_fetcher::processors::goal_events::tests::test_disambiguation_prefers_context_over_embedded ... ok [INFO] [stdout] test data_fetcher::processors::goal_events::tests::test_disambiguation_uses_embedded_fallback_when_context_empty ... ok [INFO] [stdout] test data_fetcher::processors::goal_events::tests::test_process_team_goals_uses_numeric_fallback_when_no_embedded ... ok [INFO] [stdout] test data_fetcher::processors::goal_events::tests::test_scorer_name_from_embedded_none ... ok [INFO] [stdout] test data_fetcher::processors::goal_events::tests::test_process_team_goals_uses_embedded_fallback ... ok [INFO] [stdout] test data_fetcher::processors::playoff_series::tests::test_bronze_game_req_wins_1 ... ok [INFO] [stdout] test data_fetcher::processors::goal_events::tests::test_scorer_name_from_embedded_with_player ... ok [INFO] [stdout] test data_fetcher::processors::playoff_series::tests::test_decided_series_4_wins ... ok [INFO] [stdout] test data_fetcher::processors::playoff_series::tests::test_mixed_phases_on_same_day ... ok [INFO] [stdout] test data_fetcher::processors::playoff_series::tests::test_different_tournaments_same_phase_pair_not_mixed ... ok [INFO] [stdout] test data_fetcher::processors::playoff_series::tests::test_no_playoff_fields_skipped ... ok [INFO] [stdout] test data_fetcher::processors::playoff_series::tests::test_series_counts_all_games_up_to_target_date ... ok [INFO] [stdout] test data_fetcher::processors::playoff_series::tests::test_series_with_3_games_one_team_leads_2_1 ... ok [INFO] [stdout] test data_fetcher::processors::goal_events::tests::test_process_team_goals_prefers_player_map_over_embedded ... ok [INFO] [stdout] test data_fetcher::processors::time_formatting::tests::test_noon_cutoff_behavior ... ok [INFO] [stdout] test data_fetcher::processors::time_formatting::tests::test_should_show_todays_games_consistency ... ok [INFO] [stdout] test error::tests::test_api_game_not_found_helper ... ok [INFO] [stdout] test data_fetcher::processors::time_formatting::tests::test_should_show_todays_games_deterministic_examples ... ok [INFO] [stdout] test error::tests::test_api_no_data_helper ... ok [INFO] [stdout] test error::tests::test_api_not_found_helper ... ok [INFO] [stdout] test error::tests::test_api_client_error_helper ... ok [INFO] [stdout] test error::tests::test_api_malformed_json_helper ... ok [INFO] [stdout] test error::tests::test_api_rate_limit_helper ... ok [INFO] [stdout] test error::tests::test_api_season_not_found_helper ... ok [INFO] [stdout] test error::tests::test_api_server_error_helper ... ok [INFO] [stdout] test error::tests::test_api_service_unavailable_helper ... ok [INFO] [stdout] test error::tests::test_custom_error ... ok [INFO] [stdout] test error::tests::test_api_tournament_not_found_helper ... ok [INFO] [stdout] test error::tests::test_api_unexpected_structure_helper ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_lru_simple ... ok [INFO] [stdout] test error::tests::test_datetime_parse_error_helper ... ok [INFO] [stdout] test error::tests::test_error_display_formats ... ok [INFO] [stdout] test error::tests::test_error_from_semver ... ok [INFO] [stdout] test error::tests::test_error_from_serde_json ... ok [INFO] [stdout] test error::tests::test_error_from_toml_deserialize ... ok [INFO] [stdout] test error::tests::test_error_from_toml_serialize ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_lru_simple_access_order ... ok [INFO] [stdout] test error::tests::test_is_not_found ... ok [INFO] [stdout] test error::tests::test_error_from_io ... ok [INFO] [stdout] test error::tests::test_is_retryable ... ok [INFO] [stdout] test error::tests::test_log_setup_error_helper ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_tournament_cache_basic ... ok [INFO] [stdout] test error::tests::test_retry_delay_constants_consistency ... ok [INFO] [stdout] test error::tests::test_retry_delay_seconds_for_non_retryable_errors ... ok [INFO] [stdout] test error::tests::test_retry_delay_seconds_for_retryable_errors ... ok [INFO] [stdout] test data_fetcher::cache::core::tests::test_tournament_cache_ttl ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_champion_label_shown ... ok [INFO] [stdout] test error::tests::test_retry_delay_seconds_uses_constants ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_active_phase1_stays_on_page1 ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_decided_series_winner_shown ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_four_matchups_single_phase_all_visible ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_no_data_message ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_multi_early_phases_separate_headers ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_no_phase1_no_page_break ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_narrow_terminal_stacked_fallback ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_team_name_no_truncation_when_fits ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_qf_and_sf_rendered_with_separate_headers ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_team_name_truncation ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_single_phase_no_page_break ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_decided_phase1_moves_to_page2 ... ok [INFO] [stdout] test error::tests::test_network_connection_helper ... ok [INFO] [stdout] test error::tests::test_config_error_helper ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_truncation_edge_cases ... ok [INFO] [stdout] test teletext_ui::bracket_display::tests::test_tree_contains_box_drawing_chars ... ok [INFO] [stdout] test teletext_ui::core::tests::test_can_fit_two_pages_with_sufficient_width ... ok [INFO] [stdout] test teletext_ui::core::tests::test_compact_display_config ... ok [INFO] [stdout] test teletext_ui::core::tests::test_compact_display_config_comprehensive ... ok [INFO] [stdout] test teletext_ui::core::tests::test_auto_refresh_indicator_lifecycle ... ok [INFO] [stdout] test teletext_ui::core::tests::test_buffer_size_calculation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_can_fit_two_pages_with_insufficient_width ... ok [INFO] [stdout] test teletext_ui::core::tests::test_compact_formatting_various_game_states ... ok [INFO] [stdout] test teletext_ui::core::test_video_link_functionality_with_dynamic_layout ... ok [INFO] [stdout] test teletext_ui::core::tests::test_distribute_games_for_wide_display_enabled ... ok [INFO] [stdout] test teletext_ui::core::tests::test_distribute_games_for_wide_display_insufficient_width ... ok [INFO] [stdout] test teletext_ui::core::tests::test_distribute_games_for_wide_display_odd_number ... ok [INFO] [stdout] test teletext_ui::core::tests::test_error_message_display ... ok [INFO] [stdout] test teletext_ui::core::tests::test_can_fit_two_pages_false_when_wide_mode_disabled ... ok [INFO] [stdout] test teletext_ui::core::tests::test_compact_mode_getter_setter ... ok [INFO] [stdout] test teletext_ui::core::tests::test_distribute_games_for_wide_display_disabled ... ok [INFO] [stdout] test teletext_ui::core::tests::test_from_config_returns_error_with_invalid_config ... ok [INFO] [stdout] test teletext_ui::core::tests::test_error_warning_lifecycle ... ok [INFO] [stdout] test teletext_ui::core::tests::test_game_height_calculation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_game_result_display ... ok [INFO] [stdout] test teletext_ui::core::tests::test_compact_mode_spacing ... ok [INFO] [stdout] test teletext_ui::core::tests::test_get_ansi_code_helper ... ok [INFO] [stdout] test teletext_ui::core::tests::test_header_truncation_logic ... ok [INFO] [stdout] test teletext_ui::core::tests::test_multi_column_compact_layout ... ok [INFO] [stdout] test teletext_ui::core::tests::test_group_games_for_compact_display ... ok [INFO] [stdout] test teletext_ui::core::tests::test_loading_indicator ... ok [INFO] [stdout] test teletext_ui::core::tests::test_page_navigation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_from_config_succeeds_with_valid_config ... ok [INFO] [stdout] test teletext_ui::core::tests::test_team_abbreviation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_format_compact_game ... ok [INFO] [stdout] test teletext_ui::core::tests::test_page_preservation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_teletext_page_config_validation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_teletext_page_config_mode_exclusivity ... ok [INFO] [stdout] test teletext_ui::core::tests::test_team_abbreviation_comprehensive ... ok [INFO] [stdout] test teletext_ui::core::tests::test_page_wrapping ... ok [INFO] [stdout] test teletext_ui::core::tests::test_terminal_width_validation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_teletext_page_mode_exclusivity ... ok [INFO] [stdout] test error::tests::test_network_timeout_helper ... ok [INFO] [stdout] test teletext_ui::core::tests::test_wide_mode_with_test_games ... ok [INFO] [stdout] test teletext_ui::footer::tests::test_calculate_footer_position_interactive ... ok [INFO] [stdout] test teletext_ui::footer::tests::test_calculate_footer_position_non_interactive ... ok [INFO] [stdout] test teletext_ui::footer::tests::test_footer_bracket_view_no_standings_key ... ok [INFO] [stdout] test teletext_ui::footer::tests::test_footer_games_view_with_bracket_data ... ok [INFO] [stdout] test teletext_ui::footer::tests::test_footer_games_view_without_bracket_data ... ok [INFO] [stdout] test teletext_ui::footer::tests::test_footer_none_view_mode ... ok [INFO] [stdout] test teletext_ui::core::tests::test_terminal_width_adaptation ... ok [INFO] [stdout] test teletext_ui::formatting::tests::test_format_game_time ... ok [INFO] [stdout] test teletext_ui::formatting::tests::test_format_score_with_indicators_final ... ok [INFO] [stdout] test teletext_ui::formatting::tests::test_format_score_with_indicators_ongoing ... ok [INFO] [stdout] test teletext_ui::formatting::tests::test_format_score_with_indicators_scheduled ... ok [INFO] [stdout] test teletext_ui::formatting::tests::test_should_highlight_score ... ok [INFO] [stdout] test teletext_ui::formatting::tests::test_format_playing_time ... ok [INFO] [stdout] test teletext_ui::layout::ansi_cache::tests::test_clear ... ok [INFO] [stdout] test teletext_ui::layout::ansi_cache::tests::test_color_position_code_generation ... ok [INFO] [stdout] test teletext_ui::layout::ansi_cache::tests::test_position_code_generation ... ok [INFO] [stdout] test teletext_ui::layout::ansi_cache::tests::test_position_codes_are_cached ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_alignment_calculator_caching ... ok [INFO] [stdout] test teletext_ui::layout::ansi_cache::tests::test_pre_calculate_positions ... ok [INFO] [stdout] test teletext_ui::core::tests::test_compact_mode_compatibility_validation ... ok [INFO] [stdout] test teletext_ui::core::tests::test_video_link_display ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_alignment_calculator_consistency_across_different_layouts ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_analyze_content_for_fallback_moderate_limits ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_analyze_content_for_fallback_strict_limits ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_cache_clearing ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_alignment_calculator_creation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_calculate_layout_uses_fallback_for_narrow_terminal ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_content_analysis_empty_games ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_content_analysis_limits ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_content_analysis_with_goal_events ... ok [INFO] [stdout] test teletext_ui::core::tests::test_teletext_page_validation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_content_analysis_with_truncation_strategies ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_calculate_layout_uses_fallback_for_suboptimal_terminal ... ok [INFO] [stdout] test teletext_ui::core::tests::test_setter_validation_conflicts ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_calculate_layout_uses_normal_for_adequate_terminal ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_dynamic_spacing_calculation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_fallback_layout_for_suboptimal_terminal ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_fallback_layout_with_intelligent_truncation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_game_data_validator_invalid_goal_types ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_fallback_layout_positions_dont_overlap ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_fallback_layout_for_narrow_terminal ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_game_data_validator_invalid_scores ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_game_data_validator_missing_player_names ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_game_data_validator_missing_time_and_result ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_game_data_validator_missing_team_names ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_column_layout_manager_creation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_goal_type_overflow_prevention ... ok [INFO] [stdout] test teletext_ui::core::tests::test_wide_mode_getter_setter ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_game_data_validator_sanitize_games ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_game_data_validator_valid_game ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_goal_type_positioning_accuracy_various_lengths ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_get_play_icon_column_position ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_intelligent_truncator_goal_types_validation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_intelligent_truncator_player_name_truncation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_intelligent_truncator_spacing_reduction ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_goal_types_validation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_intelligent_truncator_strategy_determination ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_goal_type_positioning_accuracy_with_custom_layout ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_goal_type_positions_calculation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_layout_accessors ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_layout_calculation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_narrow_terminal_layout ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_overflow_prevention_boundary_conditions ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_overflow_prevention_with_long_goal_types ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_overflow_prevention_edge_cases ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_layout_calculation_caching ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_layout_calculation_with_validation ... ok [INFO] [stdout] test error::tests::test_error_from_reqwest ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_layout_config_default ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_play_icon_alignment_consistency_multiple_games ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_play_icon_positions_with_video_links ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_play_icon_positions_calculation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_play_icon_alignment_consistency_mixed_video_links ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_terminal_width_validation_adequate ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_play_icon_alignment_consistency_empty_games ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_string_caching ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_score_format_validation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_terminal_width_validation_suboptimal ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_terminal_width_validation_too_narrow ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_wide_mode_layout_calculation ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_validate_no_overflow ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_wide_mode_layout_with_normal_column_width ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_wide_mode_layout_proportional_spacing ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_can_fit_two_pages_enabled ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_distribute_games_enabled_even_number ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_can_fit_two_pages_disabled ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_get_column_content_width ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_distribute_games_disabled ... ok [INFO] [stdout] test teletext_ui::layout::tests::test_wide_mode_column_layout_manager_creation ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_distribute_games_enabled_odd_number ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_validate_terminal_suitable ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_validate_terminal_too_narrow ... ok [INFO] [stdout] test testing_utils::tests::test_create_goal_event ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_wide_mode_manager_creation ... ok [INFO] [stdout] test testing_utils::tests::test_create_basic_game ... ok [INFO] [stdout] test testing_utils::tests::test_create_multiple_games ... ok [INFO] [stdout] test testing_utils::tests::test_create_overtime_game ... ok [INFO] [stdout] test testing_utils::tests::test_create_live_game ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_get_right_column_start ... ok [INFO] [stdout] test testing_utils::tests::test_create_powerplay_goal ... ok [INFO] [stdout] test testing_utils::tests::test_create_tournament_games ... ok [INFO] [stdout] test testing_utils::tests::test_validate_game_data_invalid_empty_team ... ok [INFO] [stdout] test testing_utils::tests::test_create_winning_goal ... ok [INFO] [stdout] test testing_utils::tests::test_validate_goal_events_invalid_empty_scorer ... ok [INFO] [stdout] test testing_utils::tests::test_validate_goal_events_invalid_minute ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_calculate_games_hash ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_calculate_games_hash_empty ... ok [INFO] [stdout] test testing_utils::tests::test_validate_game_data_invalid_overtime_and_shootout ... ok [INFO] [stdout] test testing_utils::tests::test_validate_game_data_valid ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_calculate_standings_hash_empty ... ok [INFO] [stdout] test teletext_ui::wide_mode::tests::test_validate_terminal_disabled ... ok [INFO] [stdout] test testing_utils::tests::test_create_shootout_game ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_calculate_standings_hash_sensitive_to_data_changes ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_calculate_standings_hash_sensitive_to_live_game_active ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_calculate_standings_hash_live_mode_toggle ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_placeholder_to_real_game_change_detected ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_calculate_standings_hash_sensitive_to_playoffs_lines ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_series_score_change_detected ... ok [INFO] [stdout] test ui::interactive::event_handler::tests::test_event_handler_config_default ... ok [INFO] [stdout] test ui::interactive::event_handler::tests::test_event_handler_builder ... ok [INFO] [stdout] test ui::interactive::event_handler::tests::test_event_handler_should_exit_default ... ok [INFO] [stdout] test ui::interactive::event_handler::tests::test_event_result_equality ... ok [INFO] [stdout] test ui::interactive::event_handler::tests::test_event_handler_creation ... ok [INFO] [stdout] test ui::interactive::navigation_manager::tests::test_format_date_for_display ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_video_clip_url_change_detected ... ok [INFO] [stdout] test ui::interactive::navigation_manager::tests::test_placeholder_games_filtered_from_display ... ok [INFO] [stdout] test ui::interactive::navigation_manager::tests::test_is_future_game ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_cache_monitoring_config_default ... ok [INFO] [stdout] test ui::interactive::navigation_manager::tests::test_loading_indicator_config ... ok [INFO] [stdout] test ui::interactive::navigation_manager::tests::test_only_placeholder_games_produces_empty_display ... ok [INFO] [stdout] test ui::interactive::change_detection::tests::test_calculate_standings_hash_deterministic ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_process_refresh_results_updates_state_on_success ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_data_fetch_params ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_refresh_coordinator_creation ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_process_refresh_results_skips_discarded ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_reset_transient_empty_counter_noop_when_zero ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_should_discard_for_date_mismatch_different_dates ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_should_discard_for_date_mismatch_empty_current_date ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_should_discard_for_date_mismatch_empty_fetched ... ok [INFO] [stdout] test testing_utils::tests::test_validate_goal_events_valid ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_should_discard_for_date_mismatch_no_current_date ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_refresh_coordinator_default ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_should_discard_for_date_mismatch_same_date ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_refresh_coordinator_with_cache_config ... ok [INFO] [stdout] test ui::interactive::navigation_manager::tests::test_loading_page_is_marked_and_restored ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_refresh_cycle_config ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_should_discard_for_date_mismatch_whitespace_current_date ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_reset_transient_empty_counter ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_should_discard_for_date_mismatch_whitespace_in_current_date ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_should_discard_for_date_mismatch_whitespace_in_fetched_date ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_standings_live_mode_not_clamped_by_game_count ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_standings_live_mode_uses_live_refresh_interval ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_standings_non_live_mode_uses_default_refresh_interval ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_standings_refresh_result_preserves_last_games ... ok [INFO] [stdout] test ui::interactive::series_utils::tests::test_get_subheader_with_series_types ... ok [INFO] [stdout] test ui::interactive::series_utils::tests::test_playoff_phase_name ... ok [INFO] [stdout] test ui::interactive::series_utils::tests::test_series_type_display ... ok [INFO] [stdout] test ui::interactive::series_utils::tests::test_series_type_from_string ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_interactive_state_view_delegates ... ok [INFO] [stdout] test ui::interactive::series_utils::tests::test_series_type_priority_ordering ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_preserved_games_page ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_toggle_live_mode_in_standings ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_toggle_view_games_to_standings ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_toggle_live_mode_noop_in_games ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_transient_empty_preserves_existing_games ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_toggle_view_standings_to_games ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_reset_standings_hash_clears_state ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_toggle_view_standings_with_live_returns_to_games ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_update_standings_hash_first_call_returns_true ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_update_standings_hash_different_hash_returns_true ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_update_standings_hash_same_hash_returns_false ... ok [INFO] [stdout] test ui::interactive::terminal_manager::tests::test_terminal_config_default ... ok [INFO] [stdout] test ui::interactive::terminal_manager::tests::test_terminal_manager_creation ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_transient_empty_propagates_had_error ... ok [INFO] [stdout] test ui::interactive::state_manager::tests::test_view_mode_default_is_games ... ok [INFO] [stdout] test ui::interactive::terminal_manager::tests::test_terminal_config_debug_mode ... ok [INFO] [stdout] test ui::interactive::terminal_manager::tests::test_terminal_manager_default ... ok [INFO] [stdout] test ui::interactive::terminal_manager::tests::test_terminal_manager_with_config ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_transient_empty_skipped_on_date_change ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_transient_empty_resets_on_nonempty_response ... ok [INFO] [stdout] test ui::interactive::refresh_coordinator::tests::test_transient_empty_accepts_after_threshold ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 513 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.05s [INFO] [stdout] [INFO] [stderr] Doc-tests liiga_teletext [INFO] [stdout] [INFO] [stdout] running 40 tests [INFO] [stdout] test src/config/user_prompts.rs - config::user_prompts::prompt_for_api_domain (line 163) - compile ... ok [INFO] [stdout] test src/data_fetcher/api/orchestrator.rs - data_fetcher::api::orchestrator::fetch_liiga_data (line 37) - compile ... ok [INFO] [stdout] test src/data_fetcher/api/urls.rs - data_fetcher::api::urls::build_standings_url (line 100) ... ok [INFO] [stdout] test src/data_fetcher/player_names/disambiguation.rs - data_fetcher::player_names::disambiguation::get_players_needing_disambiguation (line 112) ... ok [INFO] [stdout] test src/data_fetcher/api/urls.rs - data_fetcher::api::urls::build_game_url (line 37) ... ok [INFO] [stdout] test src/data_fetcher/api/urls.rs - data_fetcher::api::urls::build_tournament_url (line 15) ... ok [INFO] [stdout] test src/data_fetcher/api/urls.rs - data_fetcher::api::urls::build_schedule_url (line 58) ... ok [INFO] [stdout] test src/data_fetcher/api/urls.rs - data_fetcher::api::urls::build_tournament_schedule_url (line 80) ... ok [INFO] [stdout] test src/data_fetcher/api/urls.rs - data_fetcher::api::urls::create_tournament_key (line 121) ... ok [INFO] [stdout] test src/data_fetcher/player_names/disambiguation.rs - data_fetcher::player_names::disambiguation::format_with_disambiguation (line 27) ... ok [INFO] [stdout] test src/data_fetcher/player_names/disambiguation.rs - data_fetcher::player_names::disambiguation::group_players_by_last_name_indices (line 408) ... ok [INFO] [stdout] test src/data_fetcher/player_names/formatting.rs - data_fetcher::player_names::formatting::build_full_name (line 21) ... ok [INFO] [stdout] test src/data_fetcher/player_names/disambiguation.rs - data_fetcher::player_names::disambiguation::DisambiguationContext::new (line 458) ... ok [INFO] [stdout] test src/data_fetcher/player_names/disambiguation.rs - data_fetcher::player_names::disambiguation::group_players_by_last_name (line 366) ... ok [INFO] [stdout] test src/data_fetcher/player_names/formatting.rs - data_fetcher::player_names::formatting::extract_first_initial (line 117) ... ok [INFO] [stdout] test src/data_fetcher/player_names/disambiguation.rs - data_fetcher::player_names::disambiguation::is_disambiguation_needed (line 332) ... ok [INFO] [stdout] test src/data_fetcher/player_names/formatting.rs - data_fetcher::player_names::formatting::create_fallback_name (line 196) ... ok [INFO] [stdout] test src/data_fetcher/player_names/formatting.rs - data_fetcher::player_names::formatting::format_for_display (line 41) ... ok [INFO] [stdout] test src/data_fetcher/player_names/formatting.rs - data_fetcher::player_names::formatting::extract_first_chars (line 146) ... ok [INFO] [stdout] test src/data_fetcher/player_names/formatting.rs - data_fetcher::player_names::formatting::format_for_display_with_first_initial (line 87) ... ok [INFO] [stdout] test src/data_fetcher/processors/time_formatting.rs - data_fetcher::processors::time_formatting::should_show_todays_games (line 21) ... ok [INFO] [stdout] test src/lib.rs - (line 8) - compile ... ok [INFO] [stdout] test src/data_fetcher/processors/player_fetching.rs - data_fetcher::processors::player_fetching::try_fetch_player_names_for_game (line 25) ... ok [INFO] [stdout] test src/data_fetcher/processors/goal_events.rs - data_fetcher::processors::goal_events::process_goal_events (line 106) ... ok [INFO] [stdout] test src/data_fetcher/processors/game_status.rs - data_fetcher::processors::game_status::determine_game_status (line 26) ... ok [INFO] [stdout] test src/data_fetcher/processors/goal_events.rs - data_fetcher::processors::goal_events::process_team_goals_with_disambiguation (line 170) ... ok [INFO] [stdout] test src/data_fetcher/processors/time_formatting.rs - data_fetcher::processors::time_formatting::should_show_todays_games_with_time (line 53) ... ok [INFO] [stdout] test src/teletext_ui/content.rs - teletext_ui::content::TeletextPage::add_error_message (line 78) ... ok [INFO] [stdout] test src/data_fetcher/processors/game_status.rs - data_fetcher::processors::game_status::format_time (line 126) ... ok [INFO] [stdout] test src/data_fetcher/processors/goal_events.rs - data_fetcher::processors::goal_events::process_team_goals (line 234) ... ok [INFO] [stdout] test src/teletext_ui/core.rs - teletext_ui::core::TeletextPage::new (line 116) ... ok [INFO] [stdout] test src/teletext_ui/content.rs - teletext_ui::content::TeletextPage::add_game_result (line 14) ... ok [INFO] [stdout] test src/teletext_ui/pagination.rs - teletext_ui::pagination::TeletextPage::next_page (line 225) ... ok [INFO] [stdout] test src/teletext_ui/core.rs - teletext_ui::core::TeletextPage::from_config (line 192) ... ok [INFO] [stdout] test src/ui/components/abbreviations.rs - ui::components::abbreviations::get_team_abbreviation (line 15) ... ok [INFO] [stdout] test src/teletext_ui/validation.rs - teletext_ui::validation::TeletextPage::validate_compact_mode_compatibility (line 17) ... ok [INFO] [stdout] test src/ui/teletext/game_result.rs - ui::teletext::game_result::GameResultData::new (line 39) ... ok [INFO] [stdout] test src/teletext_ui/pagination.rs - teletext_ui::pagination::TeletextPage::previous_page (line 257) ... ok [INFO] [stdout] test src/teletext_ui/core.rs - teletext_ui::core::TeletextPage::handle_resize (line 251) ... FAILED [INFO] [stdout] test src/teletext_ui/core.rs - teletext_ui::core::TeletextPage::render_buffered (line 428) ... FAILED [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- src/teletext_ui/core.rs - teletext_ui::core::TeletextPage::handle_resize (line 251) stdout ---- [INFO] [stdout] Test executable failed (exit status: 1). [INFO] [stdout] [INFO] [stdout] stdout: [INFO] [stdout] [?25l [INFO] [stdout] stderr: [INFO] [stdout] Error: Io(Os { code: 11, kind: WouldBlock, message: "Resource temporarily unavailable" }) [INFO] [stdout] Error: "the test returned a termination value with a non-zero status code (1) which indicates a failure" [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] ---- src/teletext_ui/core.rs - teletext_ui::core::TeletextPage::render_buffered (line 428) stdout ---- [INFO] [stdout] Test executable failed (exit status: 1). [INFO] [stdout] [INFO] [stdout] stdout: [INFO] [stdout] [?25l [INFO] [stdout] stderr: [INFO] [stdout] Error: Io(Os { code: 11, kind: WouldBlock, message: "Resource temporarily unavailable" }) [INFO] [stdout] Error: "the test returned a termination value with a non-zero status code (1) which indicates a failure" [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] src/teletext_ui/core.rs - teletext_ui::core::TeletextPage::handle_resize (line 251) [INFO] [stdout] src/teletext_ui/core.rs - teletext_ui::core::TeletextPage::render_buffered (line 428) [INFO] [stdout] [INFO] [stdout] test result: FAILED. 38 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stdout] all doctests ran in 2.09s; merged doctests compilation took 1.97s [INFO] [stderr] error: doctest failed, to rerun pass `--doc` [INFO] running `Command { std: "docker" "inspect" "06092ca8595522024469d6d7db353be613d2ceb62c23dc32b3ab2090eacc0ec2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "06092ca8595522024469d6d7db353be613d2ceb62c23dc32b3ab2090eacc0ec2", kill_on_drop: false }` [INFO] [stdout] 06092ca8595522024469d6d7db353be613d2ceb62c23dc32b3ab2090eacc0ec2