diff --git a/azalea-client/src/lib.rs b/azalea-client/src/lib.rs index 6bff353e..df04a606 100644 --- a/azalea-client/src/lib.rs +++ b/azalea-client/src/lib.rs @@ -17,7 +17,7 @@ pub mod player; mod plugins; #[doc(hidden)] -pub mod test_simulation; +pub mod test_utils; pub use account::{Account, AccountOpts}; pub use azalea_protocol::common::client_information::ClientInformation; diff --git a/azalea-client/src/plugins/join.rs b/azalea-client/src/plugins/join.rs index 09eeff59..8d094b7d 100644 --- a/azalea-client/src/plugins/join.rs +++ b/azalea-client/src/plugins/join.rs @@ -3,6 +3,7 @@ use std::{net::SocketAddr, sync::Arc}; use azalea_entity::{LocalEntity, indexing::EntityUuidIndex}; use azalea_protocol::{ ServerAddress, + common::client_information::ClientInformation, connect::{Connection, ConnectionError, Proxy}, packets::{ ClientIntention, ConnectionProtocol, PROTOCOL_VERSION, @@ -215,7 +216,7 @@ pub fn poll_create_connection_task( write_conn, ConnectionProtocol::Login, ), - client_information: crate::ClientInformation::default(), + client_information: ClientInformation::default(), instance_holder, metadata: azalea_entity::metadata::PlayerMetadataBundle::default(), }, diff --git a/azalea-client/src/test_utils/mod.rs b/azalea-client/src/test_utils/mod.rs new file mode 100644 index 00000000..9e640908 --- /dev/null +++ b/azalea-client/src/test_utils/mod.rs @@ -0,0 +1,6 @@ +pub mod simulation; +pub mod tracing; + +pub mod prelude { + pub use super::{simulation::*, tracing::*}; +} diff --git a/azalea-client/src/test_simulation.rs b/azalea-client/src/test_utils/simulation.rs similarity index 100% rename from azalea-client/src/test_simulation.rs rename to azalea-client/src/test_utils/simulation.rs diff --git a/azalea-client/src/test_utils/tracing.rs b/azalea-client/src/test_utils/tracing.rs new file mode 100644 index 00000000..85ac4bd6 --- /dev/null +++ b/azalea-client/src/test_utils/tracing.rs @@ -0,0 +1,38 @@ +use bevy_log::tracing_subscriber::{ + self, EnvFilter, Layer, + layer::{Context, SubscriberExt}, + registry::LookupSpan, + util::SubscriberInitExt, +}; +use tracing::{Event, Level, Subscriber, level_filters::LevelFilter}; + +pub fn init_tracing() { + init_tracing_with_level(Level::WARN); +} + +pub fn init_tracing_with_level(max_level: Level) { + tracing_subscriber::registry() + .with( + tracing_subscriber::fmt::layer().with_filter( + EnvFilter::builder() + .with_default_directive(max_level.into()) + .from_env_lossy(), + ), + ) + .with(TestTracingLayer { + panic_on_level: max_level, + }) + .init(); +} + +struct TestTracingLayer { + panic_on_level: Level, +} +impl Layer for TestTracingLayer { + fn on_event(&self, event: &Event<'_>, _ctx: Context<'_, S>) { + let level = *event.metadata().level(); + if level <= self.panic_on_level { + panic!("logged on level {level}"); + } + } +} diff --git a/azalea-client/tests/change_dimension_to_nether_and_back.rs b/azalea-client/tests/change_dimension_to_nether_and_back.rs index fddbccde..e3b5d96e 100644 --- a/azalea-client/tests/change_dimension_to_nether_and_back.rs +++ b/azalea-client/tests/change_dimension_to_nether_and_back.rs @@ -1,4 +1,4 @@ -use azalea_client::{InConfigState, InGameState, test_simulation::*}; +use azalea_client::{InConfigState, InGameState, test_utils::prelude::*}; use azalea_core::{position::ChunkPos, resource_location::ResourceLocation}; use azalea_entity::LocalEntity; use azalea_protocol::packets::{ @@ -7,12 +7,11 @@ use azalea_protocol::packets::{ }; use azalea_registry::{DataRegistry, DimensionType}; use azalea_world::InstanceName; -use bevy_log::tracing_subscriber; use simdnbt::owned::{NbtCompound, NbtTag}; #[test] fn test_change_dimension_to_nether_and_back() { - let _ = tracing_subscriber::fmt().try_init(); + init_tracing(); generic_test_change_dimension_to_nether_and_back(true); generic_test_change_dimension_to_nether_and_back(false); @@ -29,8 +28,6 @@ fn generic_test_change_dimension_to_nether_and_back(using_respawn: bool) { } }; - let _ = tracing_subscriber::fmt::try_init(); - let mut simulation = Simulation::new(ConnectionProtocol::Configuration); assert!(simulation.has_component::()); assert!(!simulation.has_component::()); diff --git a/azalea-client/tests/client_disconnect.rs b/azalea-client/tests/client_disconnect.rs index 354ac788..fc17da0c 100644 --- a/azalea-client/tests/client_disconnect.rs +++ b/azalea-client/tests/client_disconnect.rs @@ -1,11 +1,10 @@ -use azalea_client::test_simulation::*; +use azalea_client::test_utils::prelude::*; use azalea_protocol::packets::ConnectionProtocol; use azalea_world::InstanceName; -use bevy_log::tracing_subscriber; #[test] fn test_client_disconnect() { - let _ = tracing_subscriber::fmt::try_init(); + init_tracing(); let mut simulation = Simulation::new(ConnectionProtocol::Game); diff --git a/azalea-client/tests/despawn_entities_when_changing_dimension.rs b/azalea-client/tests/despawn_entities_when_changing_dimension.rs index 967e0aac..9143b3eb 100644 --- a/azalea-client/tests/despawn_entities_when_changing_dimension.rs +++ b/azalea-client/tests/despawn_entities_when_changing_dimension.rs @@ -1,4 +1,4 @@ -use azalea_client::test_simulation::*; +use azalea_client::test_utils::prelude::*; use azalea_core::{position::ChunkPos, resource_location::ResourceLocation}; use azalea_entity::metadata::Cow; use azalea_protocol::packets::{ @@ -7,12 +7,11 @@ use azalea_protocol::packets::{ }; use azalea_registry::{DataRegistry, DimensionType, EntityKind}; use bevy_ecs::query::With; -use bevy_log::tracing_subscriber; use simdnbt::owned::{NbtCompound, NbtTag}; #[test] fn test_despawn_entities_when_changing_dimension() { - let _ = tracing_subscriber::fmt::try_init(); + init_tracing(); let mut simulation = Simulation::new(ConnectionProtocol::Configuration); simulation.receive_packet(ClientboundRegistryData { diff --git a/azalea-client/tests/fast_login.rs b/azalea-client/tests/fast_login.rs index bc26079a..f11ada9c 100644 --- a/azalea-client/tests/fast_login.rs +++ b/azalea-client/tests/fast_login.rs @@ -1,4 +1,4 @@ -use azalea_client::{InConfigState, test_simulation::*}; +use azalea_client::{InConfigState, test_utils::prelude::*}; use azalea_core::resource_location::ResourceLocation; use azalea_entity::metadata::Health; use azalea_protocol::packets::{ @@ -6,12 +6,11 @@ use azalea_protocol::packets::{ config::{ClientboundFinishConfiguration, ClientboundRegistryData}, game::ClientboundSetHealth, }; -use bevy_log::tracing_subscriber; use simdnbt::owned::{NbtCompound, NbtTag}; #[test] fn test_fast_login() { - let _ = tracing_subscriber::fmt::try_init(); + init_tracing(); let mut simulation = Simulation::new(ConnectionProtocol::Configuration); assert!(simulation.has_component::()); diff --git a/azalea-client/tests/login_to_dimension_with_same_name.rs b/azalea-client/tests/login_to_dimension_with_same_name.rs index 59d3123d..eb1db2a8 100644 --- a/azalea-client/tests/login_to_dimension_with_same_name.rs +++ b/azalea-client/tests/login_to_dimension_with_same_name.rs @@ -1,4 +1,6 @@ -use azalea_client::{InConfigState, InGameState, local_player::InstanceHolder, test_simulation::*}; +use azalea_client::{ + InConfigState, InGameState, local_player::InstanceHolder, test_utils::prelude::*, +}; use azalea_core::{position::ChunkPos, resource_location::ResourceLocation}; use azalea_entity::LocalEntity; use azalea_protocol::packets::{ @@ -8,12 +10,11 @@ use azalea_protocol::packets::{ }; use azalea_registry::{DataRegistry, DimensionType}; use azalea_world::InstanceName; -use bevy_log::tracing_subscriber; use simdnbt::owned::{NbtCompound, NbtTag}; #[test] fn test_login_to_dimension_with_same_name() { - let _ = tracing_subscriber::fmt().try_init(); + init_tracing(); generic_test_login_to_dimension_with_same_name(true); generic_test_login_to_dimension_with_same_name(false); @@ -30,8 +31,6 @@ fn generic_test_login_to_dimension_with_same_name(using_respawn: bool) { } }; - let _ = tracing_subscriber::fmt::try_init(); - let mut simulation = Simulation::new(ConnectionProtocol::Configuration); assert!(simulation.has_component::()); assert!(!simulation.has_component::()); diff --git a/azalea-client/tests/move_despawned_entity.rs b/azalea-client/tests/move_despawned_entity.rs index d590cb39..8c33566b 100644 --- a/azalea-client/tests/move_despawned_entity.rs +++ b/azalea-client/tests/move_despawned_entity.rs @@ -1,15 +1,15 @@ -use azalea_client::test_simulation::*; +use azalea_client::test_utils::prelude::*; use azalea_core::{position::ChunkPos, resource_location::ResourceLocation}; use azalea_entity::metadata::Cow; use azalea_protocol::packets::{ConnectionProtocol, game::ClientboundMoveEntityRot}; use azalea_registry::{DataRegistry, DimensionType, EntityKind}; use azalea_world::MinecraftEntityId; use bevy_ecs::query::With; -use bevy_log::tracing_subscriber; +use tracing::Level; #[test] fn test_move_despawned_entity() { - let _ = tracing_subscriber::fmt::try_init(); + init_tracing_with_level(Level::ERROR); // a warning is expected here let mut simulation = Simulation::new(ConnectionProtocol::Game); simulation.receive_packet(make_basic_login_packet( @@ -26,7 +26,7 @@ fn test_move_despawned_entity() { // make sure it's spawned let mut cow_query = simulation.app.world_mut().query_filtered::<(), With>(); let cow_iter = cow_query.iter(simulation.app.world()); - assert_eq!(cow_iter.count(), 1, "cow should be despawned"); + assert_eq!(cow_iter.count(), 1, "cow should be spawned"); // despawn the cow by receiving a login packet simulation.receive_packet(make_basic_login_packet( diff --git a/azalea-client/tests/receive_spawn_entity_and_start_config_packet.rs b/azalea-client/tests/receive_spawn_entity_and_start_config_packet.rs index 0090e37e..8e14f731 100644 --- a/azalea-client/tests/receive_spawn_entity_and_start_config_packet.rs +++ b/azalea-client/tests/receive_spawn_entity_and_start_config_packet.rs @@ -1,4 +1,4 @@ -use azalea_client::{InConfigState, test_simulation::*}; +use azalea_client::{InConfigState, test_utils::prelude::*}; use azalea_core::{position::Vec3, resource_location::ResourceLocation}; use azalea_protocol::packets::{ ConnectionProtocol, @@ -6,12 +6,11 @@ use azalea_protocol::packets::{ }; use azalea_registry::{DataRegistry, DimensionType, EntityKind}; use azalea_world::InstanceName; -use bevy_log::tracing_subscriber; use uuid::Uuid; #[test] fn test_receive_spawn_entity_and_start_config_packet() { - let _ = tracing_subscriber::fmt::try_init(); + init_tracing(); let mut simulation = Simulation::new(ConnectionProtocol::Game); simulation.receive_packet(make_basic_login_packet( diff --git a/azalea-client/tests/receive_start_config_packet.rs b/azalea-client/tests/receive_start_config_packet.rs index 9b0c734d..485204e4 100644 --- a/azalea-client/tests/receive_start_config_packet.rs +++ b/azalea-client/tests/receive_start_config_packet.rs @@ -1,14 +1,13 @@ -use azalea_client::{InConfigState, packet::game::SendPacketEvent, test_simulation::*}; +use azalea_client::{InConfigState, packet::game::SendPacketEvent, test_utils::prelude::*}; use azalea_core::resource_location::ResourceLocation; use azalea_protocol::packets::{ConnectionProtocol, game::ClientboundStartConfiguration}; use azalea_registry::{DataRegistry, DimensionType}; use azalea_world::InstanceName; use bevy_ecs::event::Events; -use bevy_log::tracing_subscriber; #[test] fn test_receive_start_config_packet() { - let _ = tracing_subscriber::fmt::try_init(); + init_tracing(); let mut simulation = Simulation::new(ConnectionProtocol::Game); simulation.receive_packet(make_basic_login_packet( diff --git a/azalea-client/tests/reply_to_ping_with_pong.rs b/azalea-client/tests/reply_to_ping_with_pong.rs index bc8bccd4..ac09336c 100644 --- a/azalea-client/tests/reply_to_ping_with_pong.rs +++ b/azalea-client/tests/reply_to_ping_with_pong.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use azalea_client::{ packet::{config::SendConfigPacketEvent, game::SendPacketEvent}, - test_simulation::*, + test_utils::prelude::*, }; use azalea_core::resource_location::ResourceLocation; use azalea_protocol::packets::{ @@ -13,13 +13,12 @@ use azalea_protocol::packets::{ game::{self, ServerboundGamePacket}, }; use bevy_ecs::observer::Trigger; -use bevy_log::tracing_subscriber; use parking_lot::Mutex; use simdnbt::owned::{NbtCompound, NbtTag}; #[test] fn reply_to_ping_with_pong() { - let _ = tracing_subscriber::fmt::try_init(); + init_tracing(); let mut simulation = Simulation::new(ConnectionProtocol::Configuration); diff --git a/azalea-client/tests/set_health_before_login.rs b/azalea-client/tests/set_health_before_login.rs index d81dd48f..60735781 100644 --- a/azalea-client/tests/set_health_before_login.rs +++ b/azalea-client/tests/set_health_before_login.rs @@ -1,4 +1,4 @@ -use azalea_client::{InConfigState, test_simulation::*}; +use azalea_client::{InConfigState, test_utils::prelude::*}; use azalea_core::resource_location::ResourceLocation; use azalea_entity::{LocalEntity, metadata::Health}; use azalea_protocol::packets::{ @@ -7,12 +7,11 @@ use azalea_protocol::packets::{ game::ClientboundSetHealth, }; use azalea_registry::{DataRegistry, DimensionType}; -use bevy_log::tracing_subscriber; use simdnbt::owned::{NbtCompound, NbtTag}; #[test] fn test_set_health_before_login() { - let _ = tracing_subscriber::fmt::try_init(); + init_tracing(); let mut simulation = Simulation::new(ConnectionProtocol::Configuration); assert!(simulation.has_component::()); diff --git a/azalea-protocol/src/common/movements.rs b/azalea-protocol/src/common/movements.rs index 7ab7fc2f..ffc3452f 100644 --- a/azalea-protocol/src/common/movements.rs +++ b/azalea-protocol/src/common/movements.rs @@ -28,6 +28,11 @@ pub struct RelativeMovements { pub delta_z: bool, pub rotate_delta: bool, } +impl RelativeMovements { + pub fn all_absolute() -> Self { + RelativeMovements::default() + } +} impl AzaleaRead for RelativeMovements { fn azalea_read(buf: &mut Cursor<&[u8]>) -> Result {