[INFO] fetching crate lib_battleship 2.1.0... [INFO] testing lib_battleship-2.1.0 against master#c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38 for pr-146098-7 [INFO] extracting crate lib_battleship 2.1.0 into /workspace/builds/worker-1-tc1/source [INFO] started tweaking crates.io crate lib_battleship 2.1.0 [INFO] finished tweaking crates.io crate lib_battleship 2.1.0 [INFO] tweaked toml for crates.io crate lib_battleship 2.1.0 written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate lib_battleship 2.1.0 on toolchain c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 2831e298f3778b446807b006614d8bc51de0aaf6acc928c3ddf77beb0bd285b1 [INFO] running `Command { std: "docker" "start" "-a" "2831e298f3778b446807b006614d8bc51de0aaf6acc928c3ddf77beb0bd285b1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "2831e298f3778b446807b006614d8bc51de0aaf6acc928c3ddf77beb0bd285b1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2831e298f3778b446807b006614d8bc51de0aaf6acc928c3ddf77beb0bd285b1", kill_on_drop: false }` [INFO] [stdout] 2831e298f3778b446807b006614d8bc51de0aaf6acc928c3ddf77beb0bd285b1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c1b3c84744d0a8c2bc71140e54fd082b23875c73d6108946a0cb5e00eda2ec92 [INFO] running `Command { std: "docker" "start" "-a" "c1b3c84744d0a8c2bc71140e54fd082b23875c73d6108946a0cb5e00eda2ec92", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024 [INFO] [stderr] Compiling lib_battleship v2.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used [INFO] [stdout] --> src/battlefield/ship_status.rs:45:13 [INFO] [stdout] | [INFO] [stdout] 45 | mem::replace(&mut self.status_p1[ship_type_id], curr_val - 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: if you don't need the old value, you can just assign the new value directly [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 45 | let _ = mem::replace(&mut self.status_p1[ship_type_id], curr_val - 1); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used [INFO] [stdout] --> src/battlefield/ship_status.rs:49:13 [INFO] [stdout] | [INFO] [stdout] 49 | mem::replace(&mut self.status_p2[ship_type_id], curr_val - 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: if you don't need the old value, you can just assign the new value directly [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 49 | let _ = mem::replace(&mut self.status_p2[ship_type_id], curr_val - 1); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.66s [INFO] running `Command { std: "docker" "inspect" "c1b3c84744d0a8c2bc71140e54fd082b23875c73d6108946a0cb5e00eda2ec92", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c1b3c84744d0a8c2bc71140e54fd082b23875c73d6108946a0cb5e00eda2ec92", kill_on_drop: false }` [INFO] [stdout] c1b3c84744d0a8c2bc71140e54fd082b23875c73d6108946a0cb5e00eda2ec92 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 14c372d93959d8a1ac66562d03064e32ad91d41850a1bed40748cf5b943c3b1e [INFO] running `Command { std: "docker" "start" "-a" "14c372d93959d8a1ac66562d03064e32ad91d41850a1bed40748cf5b943c3b1e", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024 [INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used [INFO] [stdout] --> src/battlefield/ship_status.rs:45:13 [INFO] [stdout] | [INFO] [stdout] 45 | mem::replace(&mut self.status_p1[ship_type_id], curr_val - 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: if you don't need the old value, you can just assign the new value directly [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 45 | let _ = mem::replace(&mut self.status_p1[ship_type_id], curr_val - 1); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling lib_battleship v2.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used [INFO] [stdout] --> src/battlefield/ship_status.rs:49:13 [INFO] [stdout] | [INFO] [stdout] 49 | mem::replace(&mut self.status_p2[ship_type_id], curr_val - 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: if you don't need the old value, you can just assign the new value directly [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 49 | let _ = mem::replace(&mut self.status_p2[ship_type_id], curr_val - 1); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used [INFO] [stdout] --> src/battlefield/ship_status.rs:45:13 [INFO] [stdout] | [INFO] [stdout] 45 | mem::replace(&mut self.status_p1[ship_type_id], curr_val - 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: if you don't need the old value, you can just assign the new value directly [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 45 | let _ = mem::replace(&mut self.status_p1[ship_type_id], curr_val - 1); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used [INFO] [stdout] --> src/battlefield/ship_status.rs:49:13 [INFO] [stdout] | [INFO] [stdout] 49 | mem::replace(&mut self.status_p2[ship_type_id], curr_val - 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: if you don't need the old value, you can just assign the new value directly [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 49 | let _ = mem::replace(&mut self.status_p2[ship_type_id], curr_val - 1); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1.02s [INFO] running `Command { std: "docker" "inspect" "14c372d93959d8a1ac66562d03064e32ad91d41850a1bed40748cf5b943c3b1e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "14c372d93959d8a1ac66562d03064e32ad91d41850a1bed40748cf5b943c3b1e", kill_on_drop: false }` [INFO] [stdout] 14c372d93959d8a1ac66562d03064e32ad91d41850a1bed40748cf5b943c3b1e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] ba6310ecf866d75277f9b906f15e9f89b8052f149ebb30df9d6ea2fe8df3db6e [INFO] running `Command { std: "docker" "start" "-a" "ba6310ecf866d75277f9b906f15e9f89b8052f149ebb30df9d6ea2fe8df3db6e", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024 [INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used [INFO] [stderr] --> src/battlefield/ship_status.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | mem::replace(&mut self.status_p1[ship_type_id], curr_val - 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: if you don't need the old value, you can just assign the new value directly [INFO] [stderr] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 45 | let _ = mem::replace(&mut self.status_p1[ship_type_id], curr_val - 1); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used [INFO] [stderr] --> src/battlefield/ship_status.rs:49:13 [INFO] [stderr] | [INFO] [stderr] 49 | mem::replace(&mut self.status_p2[ship_type_id], curr_val - 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: if you don't need the old value, you can just assign the new value directly [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 49 | let _ = mem::replace(&mut self.status_p2[ship_type_id], curr_val - 1); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: `lib_battleship` (lib) generated 2 warnings [INFO] [stderr] warning: `lib_battleship` (lib test) generated 2 warnings (2 duplicates) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.06s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/lib_battleship-38959960b6cddf24) [INFO] [stdout] [INFO] [stdout] running 37 tests [INFO] [stdout] test battlefield::cell::tests::assert_new_cells_are_empty_and_not_shot ... ok [INFO] [stdout] test battlefield::battlefield::test::should_give_out_cell_references ... ok [INFO] [stdout] test battlefield::battlefield::test::should_return_width ... ok [INFO] [stdout] test battlefield::cell::tests::assert_ship_type_id_works ... ok [INFO] [stdout] test battlefield::cell::tests::assert_shooting_works ... ok [INFO] [stdout] test battlefield::ship_status::test::should_sum_player_health ... ok [INFO] [stdout] test common::player::test::should_alternate_between_players ... ok [INFO] [stdout] test common::ship_type::test::constructor_should_work ... ok [INFO] [stdout] test game::test::a_hit_lets_you_shoot_again ... ok [INFO] [stdout] test game::test::can_get_cell_status_for_opponent ... ok [INFO] [stdout] test game::test::shooting_out_of_bounds_is_an_error ... ok [INFO] [stdout] test game::test::shooting_at_filled_cells_is_a_hit ... ok [INFO] [stdout] test game::test::should_not_allow_shots_after_game_ends ... ok [INFO] [stdout] test game::test::should_return_contained_ship_types ... ok [INFO] [stdout] test game::test::should_tell_whos_turn_it_is ... ok [INFO] [stdout] test pregame::test::should_allow_adding_ship_types ... ok [INFO] [stdout] test pregame::test::should_disallow_placing_ships_of_unknown_type ... ok [INFO] [stdout] test game::test::should_return_dimensions ... ok [INFO] [stdout] test pregame::test::should_allow_placing_ships ... ok [INFO] [stdout] test pregame::test::should_disallow_zero_length_ship_types ... ok [INFO] [stdout] test game::test::should_respect_order_of_play ... ok [INFO] [stdout] test pregame::test::can_get_cell_status ... ok [INFO] [stdout] test pregame::test::should_disallow_placing_ships_twice ... ok [INFO] [stdout] test pregame::test::should_disallow_placing_ships_on_top_of_each_other ... ok [INFO] [stdout] test pregame::test::constructor_should_check_dimensions ... ok [INFO] [stdout] test game::test::shooting_at_empty_cells_is_a_miss ... ok [INFO] [stdout] test game::test::can_get_cell_status_for_owner ... ok [INFO] [stdout] test game::test::destroying_last_ship_wins_game ... ok [INFO] [stdout] test game::test::owner_cell_status_doesnt_show_misses ... ok [INFO] [stdout] test pregame::test::should_return_dimensions ... ok [INFO] [stdout] test pregame::test::should_disallow_too_long_ship_types ... ok [INFO] [stdout] test pregame::test::should_start_game ... ok [INFO] [stdout] test pregame::test::should_not_start_when_no_ships_placed ... ok [INFO] [stdout] test pregame::test::should_not_start_when_not_all_ships_placed ... ok [INFO] [stdout] test battlefield::cell::tests::assert_shoot_sets_shot ... ok [INFO] [stderr] Doc-tests lib_battleship [INFO] [stdout] test game::test::destroying_a_ship_returns_ship_destroyed ... ok [INFO] [stdout] test pregame::test::should_disallow_placing_ships_out_of_bounds ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 37 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test src/pregame.rs - pregame::PreGame::place_ship (line 116) ... ok [INFO] [stdout] test src/lib.rs - (line 6) ... ok [INFO] [stdout] test src/game.rs - game::Game::shoot (line 62) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.55s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "ba6310ecf866d75277f9b906f15e9f89b8052f149ebb30df9d6ea2fe8df3db6e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ba6310ecf866d75277f9b906f15e9f89b8052f149ebb30df9d6ea2fe8df3db6e", kill_on_drop: false }` [INFO] [stdout] ba6310ecf866d75277f9b906f15e9f89b8052f149ebb30df9d6ea2fe8df3db6e