[INFO] cloning repository https://github.com/jszmajda/rusty-roguelike
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jszmajda/rusty-roguelike" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjszmajda%2Frusty-roguelike", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjszmajda%2Frusty-roguelike'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 3aac73a76fe282fdae00f19e66a1f955255baba4
[INFO] testing jszmajda/rusty-roguelike against 1.97.0-beta.6 for beta-1.98-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjszmajda%2Frusty-roguelike" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/jszmajda/rusty-roguelike
[INFO] finished tweaking git repo https://github.com/jszmajda/rusty-roguelike
[INFO] tweaked toml for git repo https://github.com/jszmajda/rusty-roguelike written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/jszmajda/rusty-roguelike on toolchain 1.97.0-beta.6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/jszmajda/rusty-roguelike already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded time-core v0.1.7
[INFO] [stderr]   Downloaded unicode-truncate v2.0.0
[INFO] [stderr]   Downloaded castaway v0.2.4
[INFO] [stderr]   Downloaded memmem v0.1.1
[INFO] [stderr]   Downloaded lab v0.11.0
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.108
[INFO] [stderr]   Downloaded fixedbitset v0.4.2
[INFO] [stderr]   Downloaded kasuari v0.4.11
[INFO] [stderr]   Downloaded wezterm-dynamic v0.2.1
[INFO] [stderr]   Downloaded instability v0.3.11
[INFO] [stderr]   Downloaded line-clipping v0.3.5
[INFO] [stderr]   Downloaded wezterm-dynamic-derive v0.1.1
[INFO] [stderr]   Downloaded num_threads v0.1.7
[INFO] [stderr]   Downloaded wezterm-blob-leases v0.1.1
[INFO] [stderr]   Downloaded atomic v0.6.1
[INFO] [stderr]   Downloaded mac_address v1.1.8
[INFO] [stderr]   Downloaded vtparse v0.6.2
[INFO] [stderr]   Downloaded pest_generator v2.8.5
[INFO] [stderr]   Downloaded filedescriptor v0.8.3
[INFO] [stderr]   Downloaded wezterm-input-types v0.1.0
[INFO] [stderr]   Downloaded csscolorparser v0.6.2
[INFO] [stderr]   Downloaded terminfo v0.9.0
[INFO] [stderr]   Downloaded wezterm-color-types v0.3.0
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.108
[INFO] [stderr]   Downloaded ratatui-macros v0.7.0
[INFO] [stderr]   Downloaded quote v1.0.43
[INFO] [stderr]   Downloaded deranged v0.5.5
[INFO] [stderr]   Downloaded termios v0.3.3
[INFO] [stderr]   Downloaded ratatui-crossterm v0.1.0
[INFO] [stderr]   Downloaded ratatui-termwiz v0.1.0
[INFO] [stderr]   Downloaded tempfile v3.24.0
[INFO] [stderr]   Downloaded ratatui v0.30.0
[INFO] [stderr]   Downloaded ucd-trie v0.1.7
[INFO] [stderr]   Downloaded proc-macro2 v1.0.105
[INFO] [stderr]   Downloaded lru v0.16.3
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.108
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.108
[INFO] [stderr]   Downloaded bytemuck v1.24.0
[INFO] [stderr]   Downloaded pest_derive v2.8.5
[INFO] [stderr]   Downloaded pest_meta v2.8.5
[INFO] [stderr]   Downloaded compact_str v0.9.0
[INFO] [stderr]   Downloaded ryu v1.0.22
[INFO] [stderr]   Downloaded js-sys v0.3.85
[INFO] [stderr]   Downloaded wezterm-bidi v0.2.3
[INFO] [stderr]   Downloaded finl_unicode v1.4.0
[INFO] [stderr]   Downloaded bumpalo v3.19.1
[INFO] [stderr]   Downloaded fancy-regex v0.11.0
[INFO] [stderr]   Downloaded ratatui-widgets v0.3.0
[INFO] [stderr]   Downloaded pest v2.8.5
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.33
[INFO] [stderr]   Downloaded time v0.3.45
[INFO] [stderr]   Downloaded ratatui-core v0.1.0
[INFO] [stderr]   Downloaded portable-atomic v1.13.0
[INFO] [stderr]   Downloaded syn v2.0.114
[INFO] [stderr]   Downloaded zerocopy v0.8.33
[INFO] [stderr]   Downloaded termwiz v0.23.3
[INFO] [stderr]   Downloaded rustix v1.1.3
[INFO] [stderr]   Downloaded libc v0.2.180
[INFO] [stderr]   Downloaded deltae v0.3.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] f4922cc83852c43c680bb1d47e0122257c88ca0dab500528e64b36cece6d10e6
[INFO] running `Command { std: "docker" "start" "f4922cc83852c43c680bb1d47e0122257c88ca0dab500528e64b36cece6d10e6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f4922cc83852c43c680bb1d47e0122257c88ca0dab500528e64b36cece6d10e6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f4922cc83852c43c680bb1d47e0122257c88ca0dab500528e64b36cece6d10e6" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f4922cc83852c43c680bb1d47e0122257c88ca0dab500528e64b36cece6d10e6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f4922cc83852c43c680bb1d47e0122257c88ca0dab500528e64b36cece6d10e6" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.105
[INFO] [stderr]    Compiling unicode-ident v1.0.22
[INFO] [stderr]    Compiling quote v1.0.43
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling ryu v1.0.22
[INFO] [stderr]    Compiling itoa v1.0.17
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling instability v0.3.11
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling compact_str v0.9.0
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling lru v0.16.3
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling zerocopy v0.8.33
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling deranged v0.5.5
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling unicode-truncate v2.0.0
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling num-conv v0.1.0
[INFO] [stderr]    Compiling num_threads v0.1.7
[INFO] [stderr]    Compiling time-core v0.1.7
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling line-clipping v0.3.5
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling time v0.3.45
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling kasuari v0.4.11
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling ratatui-core v0.1.0
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling ratatui-macros v0.7.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling roguelike v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 44.57s
[INFO] running `Command { std: "docker" "inspect" "f4922cc83852c43c680bb1d47e0122257c88ca0dab500528e64b36cece6d10e6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f4922cc83852c43c680bb1d47e0122257c88ca0dab500528e64b36cece6d10e6" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]    Compiling unarray v0.1.4
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling tempfile v3.24.0
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling proptest v1.9.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling roguelike v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 22.49s
[INFO] running `Command { std: "docker" "inspect" "f4922cc83852c43c680bb1d47e0122257c88ca0dab500528e64b36cece6d10e6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f4922cc83852c43c680bb1d47e0122257c88ca0dab500528e64b36cece6d10e6" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.16s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/roguelike-31dc0b1a29b7a7de)
[INFO] [stdout] 
[INFO] [stdout] running 257 tests
[INFO] [stdout] test entity::combat::tests::damage_is_attack_minus_defense ... ok
[INFO] [stdout] test entity::combat::tests::damage_minimum_is_one ... ok
[INFO] [stdout] test entity::combat::tests::damage_with_equal_attack_defense ... ok
[INFO] [stdout] test entity::combat::tests::damage_with_zero_defense ... ok
[INFO] [stdout] test entity::combat::tests::resolve_attack_returns_damage_dealt ... ok
[INFO] [stdout] test entity::combat::tests::resolve_attack_survives_if_hp_remaining ... ok
[INFO] [stdout] test entity::mob::tests::ambush_mob_can_be_triggered ... ok
[INFO] [stdout] test entity::mob::tests::ambush_mob_starts_not_triggered ... ok
[INFO] [stdout] test entity::mob::tests::mob_ai_type_matches_type ... ok
[INFO] [stdout] test entity::mob::tests::mob_glyph_matches_type ... ok
[INFO] [stdout] test entity::mob::tests::mob_ids_are_comparable ... ok
[INFO] [stdout] test entity::mob::tests::mob_is_dead_when_hp_negative ... ok
[INFO] [stdout] test entity::mob::tests::mob_is_dead_when_hp_zero ... ok
[INFO] [stdout] test entity::mob::tests::mob_new_has_correct_position ... ok
[INFO] [stdout] test entity::mob::tests::mob_new_has_correct_stats ... ok
[INFO] [stdout] test entity::combat::tests::resolve_attack_calculates_remaining_hp ... ok
[INFO] [stdout] test entity::mob::tests::mob_name_matches_type ... ok
[INFO] [stdout] test entity::mob::tests::mob_take_damage_reduces_hp ... ok
[INFO] [stdout] test entity::mob::tests::mob_type_has_correct_properties ... ok
[INFO] [stdout] test entity::player::tests::player_effective_attack_includes_modifiers ... ok
[INFO] [stdout] test entity::player::tests::player_effective_attack_minimum_zero ... ok
[INFO] [stdout] test entity::player::tests::player_effective_attack_with_negative_modifier ... ok
[INFO] [stdout] test entity::combat::proptests::prop_damage_minimum_one ... ok
[INFO] [stdout] test entity::combat::proptests::prop_hp_remaining_correct ... ok
[INFO] [stdout] test entity::player::tests::player_heal_caps_at_max ... ok
[INFO] [stdout] test entity::player::tests::player_heal_restores_hp ... ok
[INFO] [stdout] test entity::player::tests::player_is_dead_when_hp_zero ... ok
[INFO] [stdout] test entity::player::tests::player_max_hp_is_fixed ... ok
[INFO] [stdout] test entity::player::tests::player_new_has_correct_position ... ok
[INFO] [stdout] test entity::player::tests::player_new_has_correct_starting_stats ... ok
[INFO] [stdout] test entity::player::tests::player_take_damage_reduces_hp ... ok
[INFO] [stdout] test entity::player::tests::player_tick_modifiers_decrements_duration ... ok
[INFO] [stdout] test entity::player::tests::player_effective_defense_includes_modifiers ... ok
[INFO] [stdout] test entity::player::tests::player_glyph_is_at_symbol ... ok
[INFO] [stdout] test entity::stats::tests::modifiers_default_is_zero ... ok
[INFO] [stdout] test entity::stats::tests::modifiers_effective_defense_adds_bonus ... ok
[INFO] [stdout] test entity::stats::tests::modifiers_effective_defense_minimum_zero ... ok
[INFO] [stdout] test entity::stats::tests::modifiers_effective_attack_adds_bonus ... ok
[INFO] [stdout] test entity::stats::tests::stats_heal_caps_at_max_hp ... ok
[INFO] [stdout] test entity::stats::tests::modifiers_effective_attack_minimum_zero ... ok
[INFO] [stdout] test entity::stats::tests::modifiers_tick_handles_both_modifiers ... ok
[INFO] [stdout] test entity::stats::tests::stats_heal_increases_hp ... ok
[INFO] [stdout] test entity::stats::tests::stats_is_dead_when_hp_negative ... ok
[INFO] [stdout] test entity::stats::tests::stats_not_dead_when_hp_positive ... ok
[INFO] [stdout] test entity::stats::tests::stats_is_dead_when_hp_zero ... ok
[INFO] [stdout] test entity::stats::tests::stats_take_damage_reduces_hp ... ok
[INFO] [stdout] test entity::stats::tests::stats_new_creates_with_full_hp ... ok
[INFO] [stdout] test entity::combat::proptests::prop_death_when_hp_zero ... ok
[INFO] [stdout] test entity::stats::tests::modifiers_tick_decrements_turns ... ok
[INFO] [stdout] test entity::combat::tests::resolve_attack_detects_death ... ok
[INFO] [stdout] test game::dungeon::tests::dungeon_with_floor_creates_single_floor_dungeon ... ok
[INFO] [stdout] test entity::combat::proptests::prop_damage_bounded_variance ... ok
[INFO] [stdout] test game::dungeon::tests::dungeon_middle_floors_have_both_stairs ... ok
[INFO] [stdout] test game::dungeon::tests::dungeon_first_floor_has_entrance_and_stairs_down ... ok
[INFO] [stdout] test game::dungeon::tests::dungeon_last_floor_has_no_stairs_down ... ok
[INFO] [stdout] test game::dungeon::tests::dungeon_player_start_is_passable ... ok
[INFO] [stdout] test game::dungeon::tests::dungeon_floors_are_accessible ... ok
[INFO] [stdout] test game::dungeon::tests::dungeon_new_creates_correct_number_of_floors ... ok
[INFO] [stdout] test game::state::tests::change_floor_clears_current_mobs ... ok
[INFO] [stdout] test game::state::tests::ambush_mob_chases_after_triggered ... ok
[INFO] [stdout] test game::state::tests::change_floor_returns_old_floor_data ... ok
[INFO] [stdout] test game::state::tests::change_floor_updates_floor_number ... ok
[INFO] [stdout] test game::state::tests::ambush_mob_stays_still_until_player_enters_room ... ok
[INFO] [stdout] test game::state::tests::game_state_new_creates_player_at_position ... ok
[INFO] [stdout] test game::state::tests::game_state_starts_with_no_mobs ... ok
[INFO] [stdout] test game::state::tests::game_state_starts_with_no_items ... ok
[INFO] [stdout] test game::state::tests::mob_at_returns_mob_at_position ... ok
[INFO] [stdout] test game::state::tests::mob_at_returns_none_for_dead_mob ... ok
[INFO] [stdout] test game::state::tests::player_attacks_mob_when_bumping ... ok
[INFO] [stdout] test game::state::tests::mob_attacks_player_when_adjacent ... ok
[INFO] [stdout] test game::state::tests::player_attack_damages_mob ... ok
[INFO] [stdout] test game::state::tests::player_can_move_to_floor_tile ... ok
[INFO] [stdout] test game::state::tests::player_can_kill_mob ... ok
[INFO] [stdout] test game::state::tests::player_can_walk_through_open_door ... ok
[INFO] [stdout] test game::state::tests::player_opens_closed_door ... ok
[INFO] [stdout] test game::state::tests::mobs_dont_collide_with_each_other ... ok
[INFO] [stdout] test game::state::tests::player_wait_returns_waited ... ok
[INFO] [stdout] test game::state::tests::remove_dead_mobs_clears_dead_mobs ... ok
[INFO] [stdout] test game::state::tests::restore_floor_data_restores_mobs ... ok
[INFO] [stdout] test game::state::tests::try_use_stairs_down_returns_false ... ok
[INFO] [stdout] test game::state::tests::try_use_stairs_returns_none_on_floor ... ok
[INFO] [stdout] test game::state::tests::try_use_stairs_up_returns_none_on_floor_1 ... ok
[INFO] [stdout] test game::state::tests::try_use_stairs_up_returns_true_on_floor_2 ... ok
[INFO] [stdout] test game::state::tests::wander_mob_moves_randomly ... ok
[INFO] [stdout] test item::amulet::tests::amulet_has_correct_glyph ... ok
[INFO] [stdout] test item::amulet::tests::amulet_has_correct_name ... ok
[INFO] [stdout] test item::amulet::tests::amulet_stores_position ... ok
[INFO] [stdout] test item::inventory::tests::inventory_add_potion_increases_count ... ok
[INFO] [stdout] test item::inventory::tests::inventory_can_hold_multiple_potions ... ok
[INFO] [stdout] test item::inventory::tests::inventory_count_of_type_counts_correctly ... ok
[INFO] [stdout] test item::inventory::tests::inventory_has_no_capacity_limit ... ok
[INFO] [stdout] test item::inventory::tests::inventory_potions_returns_all_potions ... ok
[INFO] [stdout] test item::inventory::tests::inventory_remove_invalid_index_returns_none ... ok
[INFO] [stdout] test item::inventory::tests::inventory_remove_potion_returns_potion ... ok
[INFO] [stdout] test item::inventory::tests::inventory_starts_empty ... ok
[INFO] [stdout] test item::inventory::tests::potion_has_correct_type ... ok
[INFO] [stdout] test item::potion::tests::healing_potion_caps_at_max_hp ... ok
[INFO] [stdout] test item::potion::tests::healing_potion_restores_8_hp ... ok
[INFO] [stdout] test item::potion::tests::poison_potion_can_kill_player ... ok
[INFO] [stdout] test item::potion::tests::poison_potion_deals_6_damage ... ok
[INFO] [stdout] test item::potion::tests::potion_glyph_is_exclamation ... ok
[INFO] [stdout] test item::potion::tests::potion_type_healing_exists ... ok
[INFO] [stdout] test game::state::tests::player_cannot_move_into_wall ... ok
[INFO] [stdout] test item::potion::tests::potion_type_poison_exists ... ok
[INFO] [stdout] test game::state::tests::player_movement_returns_from_and_to ... ok
[INFO] [stdout] test item::potion::tests::potion_type_strength_exists ... ok
[INFO] [stdout] test item::potion::tests::potion_type_weakness_exists ... ok
[INFO] [stdout] test item::potion::tests::random_potion_produces_all_types ... ok
[INFO] [stdout] test item::inventory::tests::potion_name_matches_type ... ok
[INFO] [stdout] test item::potion::tests::strength_potion_adds_attack_bonus ... ok
[INFO] [stdout] test item::potion::tests::weakness_potion_reduces_attack ... ok
[INFO] [stdout] test ui::input::tests::diagonal_movement_keys_map_correctly ... ok
[INFO] [stdout] test ui::input::tests::escape_quits ... ok
[INFO] [stdout] test game::state::tests::chase_mob_moves_toward_player ... ok
[INFO] [stdout] test ui::input::tests::help_key_maps_correctly ... ok
[INFO] [stdout] test ui::input::tests::inventory_key_maps_correctly ... ok
[INFO] [stdout] test ui::input::tests::movement_keys_map_correctly ... ok
[INFO] [stdout] test ui::input::tests::scroll_keys_map_correctly ... ok
[INFO] [stdout] test ui::input::tests::stairs_keys_map_correctly ... ok
[INFO] [stdout] test ui::message_log::tests::message_has_correct_colors ... ok
[INFO] [stdout] test ui::input::tests::unknown_key_returns_none ... ok
[INFO] [stdout] test ui::input::tests::wait_key_maps_correctly ... ok
[INFO] [stdout] test ui::message_log::tests::message_log_recent_returns_last_messages ... ok
[INFO] [stdout] test ui::message_log::tests::message_log_scroll_down_shows_newer ... ok
[INFO] [stdout] test ui::message_log::tests::message_log_starts_empty ... ok
[INFO] [stdout] test ui::message_log::tests::message_log_trims_old_messages ... ok
[INFO] [stdout] test item::inventory::tests::potion_glyph_is_exclamation ... ok
[INFO] [stdout] test ui::message_log::tests::message_log_add_increases_count ... ok
[INFO] [stdout] test ui::message_log::tests::message_log_scroll_up_shows_older ... ok
[INFO] [stdout] test item::potion::tests::random_potion_distribution_roughly_matches_weights ... ok
[INFO] [stdout] test item::potion::tests::timed_effect_expires_after_duration ... ok
[INFO] [stdout] test game::dungeon::tests::dungeon_zone_boundary_is_halfway ... ok
[INFO] [stdout] test game::dungeon::tests::dungeon_zone_for_floor_returns_correct_zone ... ok
[INFO] [stdout] test world::floor::proptests::prop_all_tiles_within_bounds ... ok
[INFO] [stdout] test world::floor::proptests::prop_stairs_on_passable_tiles ... ok
[INFO] [stdout] test world::floor::tests::floor_can_place_room_in_empty_floor ... ok
[INFO] [stdout] test world::floor::tests::doors_have_walls_on_perpendicular_sides ... ok
[INFO] [stdout] test world::floor::tests::floor_cannot_place_room_at_edge ... ok
[INFO] [stdout] test world::floor::tests::floor_cannot_place_overlapping_rooms ... ok
[INFO] [stdout] test world::floor::tests::floor_connect_rooms_creates_corridors ... ok
[INFO] [stdout] test world::floor::tests::floor_first_floor_has_entrance_and_stairs_down ... ok
[INFO] [stdout] test world::floor::tests::floor_generate_creates_valid_floor ... ok
[INFO] [stdout] test world::floor::tests::floor_generate_has_connected_rooms ... ok
[INFO] [stdout] test world::floor::tests::floor_last_floor_has_no_stairs_down ... ok
[INFO] [stdout] test world::floor::tests::floor_new_creates_wall_filled_grid ... ok
[INFO] [stdout] test world::floor::tests::floor_middle_floor_has_both_stairs ... ok
[INFO] [stdout] test world::floor::tests::floor_place_room_adds_room_to_list ... ok
[INFO] [stdout] test world::floor::tests::floor_place_doors_can_add_doors ... ok
[INFO] [stdout] test world::floor::tests::floor_set_tile_changes_tile ... ok
[INFO] [stdout] test world::floor::tests::floor_tile_at_returns_none_for_out_of_bounds ... ok
[INFO] [stdout] test world::floor::tests::floor_render_produces_valid_output ... ok
[INFO] [stdout] test world::floor::tests::room_center_returns_approximate_center ... ok
[INFO] [stdout] test world::floor::tests::room_contains_returns_false_for_outside_tile ... ok
[INFO] [stdout] test world::floor::tests::room_from_template_has_correct_floor_tiles ... ok
[INFO] [stdout] test world::floor::tests::room_contains_returns_true_for_floor_tile ... ok
[INFO] [stdout] test world::floor::tests::room_random_floor_tile_returns_tile_in_room ... ok
[INFO] [stdout] test world::floor::proptests::prop_room_tiles_match_floor_grid ... ok
[INFO] [stdout] test world::floor::proptests::prop_floor_has_minimum_rooms ... ok
[INFO] [stdout] test world::floor::proptests::prop_rooms_dont_overlap ... ok
[INFO] [stdout] test world::floor::proptests::prop_stairs_respect_floor_position ... ok
[INFO] [stdout] test world::fov::tests::fov_closed_door_blocks_vision ... ok
[INFO] [stdout] test world::fov::tests::fov_handles_floor_edges ... ok
[INFO] [stdout] test world::fov::tests::fov_in_corridor_sees_along_corridor ... ok
[INFO] [stdout] test world::fov::tests::fov_in_corridor_stops_at_walls ... ok
[INFO] [stdout] test world::fov::tests::fov_in_room_does_not_include_distant_tiles ... ok
[INFO] [stdout] test world::fov::tests::fov_in_room_includes_all_room_tiles ... ok
[INFO] [stdout] test world::fov::tests::fov_in_room_includes_surrounding_walls ... ok
[INFO] [stdout] test world::fov::tests::fov_includes_player_position ... ok
[INFO] [stdout] test world::fov::tests::fov_open_door_allows_vision ... ok
[INFO] [stdout] test world::fov::tests::fov_sees_adjacent_closed_door ... ok
[INFO] [stdout] test world::fov::tests::fov_empty_floor_only_sees_player_tile ... ok
[INFO] [stdout] test world::position::tests::direction_all_returns_8_directions ... ok
[INFO] [stdout] test world::fov::tests::fov_sees_adjacent_room_through_open_door ... ok
[INFO] [stdout] test world::position::tests::direction_from_char_c_is_southeast ... ok
[INFO] [stdout] test world::position::tests::direction_from_char_a_is_west ... ok
[INFO] [stdout] test world::position::tests::direction_from_char_d_is_east ... ok
[INFO] [stdout] test world::position::tests::direction_from_char_e_is_northeast ... ok
[INFO] [stdout] test world::position::tests::direction_from_char_q_is_northwest ... ok
[INFO] [stdout] test world::position::tests::direction_from_char_w_is_north ... ok
[INFO] [stdout] test world::position::tests::direction_from_char_x_is_south ... ok
[INFO] [stdout] test world::position::tests::direction_from_char_z_is_southwest ... ok
[INFO] [stdout] test world::position::tests::direction_from_char_invalid_returns_none ... ok
[INFO] [stdout] test world::position::tests::position_distance_diagonal ... ok
[INFO] [stdout] test world::position::tests::position_distance_mixed ... ok
[INFO] [stdout] test world::position::tests::position_distance_same_position ... ok
[INFO] [stdout] test world::position::tests::position_distance_cardinal ... ok
[INFO] [stdout] test world::position::tests::position_move_east ... ok
[INFO] [stdout] test world::fov::proptests::prop_player_always_visible ... ok
[INFO] [stdout] test world::position::tests::position_move_north ... ok
[INFO] [stdout] test world::position::tests::position_move_northeast ... ok
[INFO] [stdout] test world::position::tests::position_move_northwest ... ok
[INFO] [stdout] test world::position::tests::position_move_southeast ... ok
[INFO] [stdout] test world::position::tests::position_move_south ... ok
[INFO] [stdout] test world::position::tests::position_move_southwest ... ok
[INFO] [stdout] test world::position::tests::position_move_west ... ok
[INFO] [stdout] test world::position::tests::position_new ... ok
[INFO] [stdout] test world::room::tests::box_shape_connectors_are_middle_of_walls ... ok
[INFO] [stdout] test world::position::tests::position_neighbors_are_adjacent ... ok
[INFO] [stdout] test world::room::tests::box_shape_has_interior_floor_tiles ... ok
[INFO] [stdout] test world::room::tests::box_shape_minimum_size ... ok
[INFO] [stdout] test world::room::tests::box_shape_rectangular ... ok
[INFO] [stdout] test world::fov::proptests::prop_adjacent_walls_visible ... ok
[INFO] [stdout] test world::room::tests::box_shape_no_tiles_outside_bounds ... ok
[INFO] [stdout] test world::room::tests::catacombs_creates_valid_template ... ok
[INFO] [stdout] test world::room::tests::cross_creates_valid_template ... ok
[INFO] [stdout] test world::room::tests::catacombs_tiles_are_connected ... ok
[INFO] [stdout] test world::room::tests::hallway_horizontal_creates_valid_template ... ok
[INFO] [stdout] test world::room::tests::hallway_tiles_are_connected ... ok
[INFO] [stdout] test world::room::tests::hallway_vertical_creates_valid_template ... ok
[INFO] [stdout] test world::position::tests::position_neighbors_returns_8_positions ... ok
[INFO] [stdout] test world::room::tests::box_shape_tile_count_matches_interior ... ok
[INFO] [stdout] test world::room::tests::irregular_creates_valid_template ... ok
[INFO] [stdout] test world::room::tests::cross_tiles_are_connected ... ok
[INFO] [stdout] test world::room::tests::irregular_differs_with_different_seed ... ok
[INFO] [stdout] test world::room::tests::irregular_tiles_are_connected ... ok
[INFO] [stdout] test world::room::tests::l_shape_tiles_are_connected ... ok
[INFO] [stdout] test world::room::tests::pillared_hall_creates_valid_template ... ok
[INFO] [stdout] test world::room::tests::irregular_is_deterministic_with_same_seed ... ok
[INFO] [stdout] test world::room::tests::pillared_hall_tiles_are_connected ... ok
[INFO] [stdout] test world::room::tests::l_shape_creates_valid_template ... ok
[INFO] [stdout] test world::room::tests::pillared_hall_has_fewer_tiles_than_box ... ok
[INFO] [stdout] test world::room::tests::random_shape_returns_valid_shape ... ok
[INFO] [stdout] test world::room::tests::room_template_all_tiles_connected ... ok
[INFO] [stdout] test world::room::tests::room_template_connectors_are_on_edge ... ok
[INFO] [stdout] test world::room::tests::room_template_connectors_not_empty ... ok
[INFO] [stdout] test world::room::tests::room_template_has_correct_dimensions ... ok
[INFO] [stdout] test world::room::tests::room_template_tiles_returns_floor_positions ... ok
[INFO] [stdout] test world::room::tests::round_creates_valid_template ... ok
[INFO] [stdout] test world::room::tests::round_has_fewer_tiles_than_box ... ok
[INFO] [stdout] test world::room::tests::random_shape_distribution_roughly_matches_weights ... ok
[INFO] [stdout] test world::room::tests::t_shape_creates_valid_template ... ok
[INFO] [stdout] test world::room::tests::t_shape_tiles_are_connected ... ok
[INFO] [stdout] test world::room::tests::u_shape_creates_valid_template ... ok
[INFO] [stdout] test world::tile::tests::closed_door_glyph_is_plus ... ok
[INFO] [stdout] test world::tile::tests::closed_door_is_not_passable ... ok
[INFO] [stdout] test world::tile::tests::closed_door_is_opaque ... ok
[INFO] [stdout] test world::tile::tests::floor_glyph_is_dot ... ok
[INFO] [stdout] test world::tile::tests::floor_is_not_opaque ... ok
[INFO] [stdout] test world::tile::tests::floor_is_passable ... ok
[INFO] [stdout] test world::tile::tests::open_door_glyph_is_dash ... ok
[INFO] [stdout] test world::tile::tests::open_door_is_not_opaque ... ok
[INFO] [stdout] test world::tile::tests::open_door_is_passable ... ok
[INFO] [stdout] test world::room::tests::u_shape_tiles_are_connected ... ok
[INFO] [stdout] test world::tile::tests::stairs_down_glyph_is_greater_than ... ok
[INFO] [stdout] test world::tile::tests::stairs_down_is_passable ... ok
[INFO] [stdout] test world::tile::tests::stairs_up_glyph_is_less_than ... ok
[INFO] [stdout] test world::tile::tests::stairs_up_is_passable ... ok
[INFO] [stdout] test world::tile::tests::wall_glyph_is_hash ... ok
[INFO] [stdout] test world::tile::tests::wall_is_not_passable ... ok
[INFO] [stdout] test world::tile::tests::wall_is_opaque ... ok
[INFO] [stdout] test world::room::tests::round_tiles_are_connected ... ok
[INFO] [stdout] test world::tile::tests::stairs_are_not_opaque ... ok
[INFO] [stdout] test world::room::tests::random_shape_produces_all_shapes_over_many_samples ... ok
[INFO] [stdout] test world::fov::proptests::prop_room_fully_visible_from_inside ... ok
[INFO] [stdout] test world::fov::proptests::prop_visible_tiles_are_bounded ... ok
[INFO] [stdout] test world::floor::proptests::prop_floor_is_fully_connected ... ok
[INFO] [stdout] test world::floor::proptests::stairs_placement_stress_test ... ok
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/roguelike-b472c4b9f3aa005d)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 257 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.46s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stderr]    Doc-tests roguelike
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "f4922cc83852c43c680bb1d47e0122257c88ca0dab500528e64b36cece6d10e6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f4922cc83852c43c680bb1d47e0122257c88ca0dab500528e64b36cece6d10e6", kill_on_drop: false }`
[INFO] [stdout] f4922cc83852c43c680bb1d47e0122257c88ca0dab500528e64b36cece6d10e6
