diff --git a/Cargo.lock b/Cargo.lock index da64cdf8887..d0c17588141 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3092,6 +3092,7 @@ dependencies = [ "matrix-sdk-indexeddb", "matrix-sdk-sqlite", "matrix-sdk-test", + "matrix-sdk-test-utils", "mime", "mime2ext", "oauth2", @@ -3150,6 +3151,7 @@ dependencies = [ "matrix-sdk-crypto", "matrix-sdk-store-encryption", "matrix-sdk-test", + "matrix-sdk-test-utils", "once_cell", "regex", "ruma", @@ -3181,6 +3183,7 @@ dependencies = [ "insta", "js-sys", "matrix-sdk-test-macros", + "matrix-sdk-test-utils", "proptest", "ruma", "serde", @@ -3225,6 +3228,7 @@ dependencies = [ "matrix-sdk-common", "matrix-sdk-qrcode", "matrix-sdk-test", + "matrix-sdk-test-utils", "pbkdf2", "proptest", "rand", @@ -3381,6 +3385,7 @@ dependencies = [ "matrix-sdk-base", "matrix-sdk-common", "matrix-sdk-test", + "matrix-sdk-test-utils", "matrix-sdk-ui", "once_cell", "rand", @@ -3432,6 +3437,7 @@ dependencies = [ "matrix-sdk-crypto", "matrix-sdk-store-encryption", "matrix-sdk-test", + "matrix-sdk-test-utils", "num_cpus", "once_cell", "rmp-serde", @@ -3498,6 +3504,14 @@ dependencies = [ "syn", ] +[[package]] +name = "matrix-sdk-test-utils" +version = "0.13.0" +dependencies = [ + "ctor", + "tracing-subscriber", +] + [[package]] name = "matrix-sdk-ui" version = "0.13.0" @@ -3527,6 +3541,7 @@ dependencies = [ "matrix-sdk-base", "matrix-sdk-common", "matrix-sdk-test", + "matrix-sdk-test-utils", "mime", "once_cell", "pin-project-lite", diff --git a/Cargo.toml b/Cargo.toml index 19f654687c4..35c4cddc831 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -117,6 +117,7 @@ matrix-sdk-qrcode = { path = "crates/matrix-sdk-qrcode", version = "0.13.0" } matrix-sdk-sqlite = { path = "crates/matrix-sdk-sqlite", version = "0.13.0", default-features = false } matrix-sdk-store-encryption = { path = "crates/matrix-sdk-store-encryption", version = "0.13.0" } matrix-sdk-test = { path = "testing/matrix-sdk-test", version = "0.13.0" } +matrix-sdk-test-utils = { path = "testing/matrix-sdk-test-utils", version = "0.13.0" } matrix-sdk-ui = { path = "crates/matrix-sdk-ui", version = "0.13.0", default-features = false } matrix-sdk-search = { path = "crates/matrix-sdk-search", version = "0.13.0" } diff --git a/crates/matrix-sdk-base/Cargo.toml b/crates/matrix-sdk-base/Cargo.toml index a74665b096e..1015c2a52cc 100644 --- a/crates/matrix-sdk-base/Cargo.toml +++ b/crates/matrix-sdk-base/Cargo.toml @@ -93,6 +93,7 @@ assign = "1.1.1" futures-executor.workspace = true http.workspace = true matrix-sdk-test.workspace = true +matrix-sdk-test-utils.workspace = true similar-asserts.workspace = true stream_assert.workspace = true diff --git a/crates/matrix-sdk-base/src/lib.rs b/crates/matrix-sdk-base/src/lib.rs index 21e316e129d..15cb0af9242 100644 --- a/crates/matrix-sdk-base/src/lib.rs +++ b/crates/matrix-sdk-base/src/lib.rs @@ -69,7 +69,7 @@ pub use utils::{ }; #[cfg(test)] -matrix_sdk_test::init_tracing_for_tests!(); +matrix_sdk_test_utils::init_tracing_for_tests!(); /// The Matrix user session info. #[derive(Clone, Debug, Eq, Hash, PartialEq, Serialize, Deserialize)] diff --git a/crates/matrix-sdk-common/Cargo.toml b/crates/matrix-sdk-common/Cargo.toml index 891ad6060d5..0377aeac13f 100644 --- a/crates/matrix-sdk-common/Cargo.toml +++ b/crates/matrix-sdk-common/Cargo.toml @@ -55,6 +55,7 @@ assert_matches.workspace = true assert_matches2.workspace = true insta.workspace = true matrix-sdk-test-macros = { path = "../../testing/matrix-sdk-test-macros" } +matrix-sdk-test-utils.workspace = true proptest.workspace = true wasm-bindgen-test.workspace = true diff --git a/crates/matrix-sdk-common/src/lib.rs b/crates/matrix-sdk-common/src/lib.rs index 75782072914..c52233a26cc 100644 --- a/crates/matrix-sdk-common/src/lib.rs +++ b/crates/matrix-sdk-common/src/lib.rs @@ -17,6 +17,9 @@ use std::pin::Pin; +#[cfg(test)] +matrix_sdk_test_utils::init_tracing_for_tests!(); + use futures_core::Future; #[doc(no_inline)] pub use ruma; diff --git a/crates/matrix-sdk-crypto/Cargo.toml b/crates/matrix-sdk-crypto/Cargo.toml index 28d0d76233c..b0f2f4d2f29 100644 --- a/crates/matrix-sdk-crypto/Cargo.toml +++ b/crates/matrix-sdk-crypto/Cargo.toml @@ -88,6 +88,7 @@ http.workspace = true indoc = "2.0.5" insta.workspace = true matrix-sdk-test.workspace = true +matrix-sdk-test-utils.workspace = true proptest.workspace = true rmp-serde.workspace = true similar-asserts.workspace = true diff --git a/crates/matrix-sdk-crypto/src/lib.rs b/crates/matrix-sdk-crypto/src/lib.rs index 8e0fbfa76d7..826c4812b76 100644 --- a/crates/matrix-sdk-crypto/src/lib.rs +++ b/crates/matrix-sdk-crypto/src/lib.rs @@ -114,7 +114,7 @@ pub use vodozemac; pub const VERSION: &str = env!("CARGO_PKG_VERSION"); #[cfg(test)] -matrix_sdk_test::init_tracing_for_tests!(); +matrix_sdk_test_utils::init_tracing_for_tests!(); #[cfg(feature = "uniffi")] uniffi::setup_scaffolding!(); diff --git a/crates/matrix-sdk-sqlite/Cargo.toml b/crates/matrix-sdk-sqlite/Cargo.toml index 8bb3263242e..85274e682c1 100644 --- a/crates/matrix-sdk-sqlite/Cargo.toml +++ b/crates/matrix-sdk-sqlite/Cargo.toml @@ -46,6 +46,7 @@ matrix-sdk-base = { workspace = true, features = ["testing"] } matrix-sdk-common.workspace = true matrix-sdk-crypto = { workspace = true, features = ["testing"] } matrix-sdk-test.workspace = true +matrix-sdk-test-utils.workspace = true once_cell.workspace = true similar-asserts.workspace = true tempfile.workspace = true diff --git a/crates/matrix-sdk-sqlite/src/lib.rs b/crates/matrix-sdk-sqlite/src/lib.rs index 7130e15039e..91d931271d4 100644 --- a/crates/matrix-sdk-sqlite/src/lib.rs +++ b/crates/matrix-sdk-sqlite/src/lib.rs @@ -41,7 +41,7 @@ pub use self::event_cache_store::SqliteEventCacheStore; pub use self::state_store::{SqliteStateStore, DATABASE_NAME as STATE_STORE_DATABASE_NAME}; #[cfg(test)] -matrix_sdk_test::init_tracing_for_tests!(); +matrix_sdk_test_utils::init_tracing_for_tests!(); /// A configuration structure used for opening a store. #[derive(Clone)] diff --git a/crates/matrix-sdk-ui/Cargo.toml b/crates/matrix-sdk-ui/Cargo.toml index ddacc9e1927..7341996fb47 100644 --- a/crates/matrix-sdk-ui/Cargo.toml +++ b/crates/matrix-sdk-ui/Cargo.toml @@ -69,6 +69,7 @@ assert_matches2.workspace = true eyeball-im-util.workspace = true matrix-sdk = { workspace = true, features = ["testing", "sqlite"] } matrix-sdk-test.workspace = true +matrix-sdk-test-utils.workspace = true stream_assert.workspace = true tempfile.workspace = true url.workspace = true diff --git a/crates/matrix-sdk-ui/src/lib.rs b/crates/matrix-sdk-ui/src/lib.rs index 2e05c514582..1c7a2a97ab1 100644 --- a/crates/matrix-sdk-ui/src/lib.rs +++ b/crates/matrix-sdk-ui/src/lib.rs @@ -31,7 +31,7 @@ pub use self::{room_list_service::RoomListService, timeline::Timeline}; const DEFAULT_SANITIZER_MODE: HtmlSanitizerMode = HtmlSanitizerMode::Compat; #[cfg(test)] -matrix_sdk_test::init_tracing_for_tests!(); +matrix_sdk_test_utils::init_tracing_for_tests!(); #[cfg(feature = "uniffi")] uniffi::setup_scaffolding!(); diff --git a/crates/matrix-sdk-ui/tests/integration/main.rs b/crates/matrix-sdk-ui/tests/integration/main.rs index ea9cad839b5..11d51657e68 100644 --- a/crates/matrix-sdk-ui/tests/integration/main.rs +++ b/crates/matrix-sdk-ui/tests/integration/main.rs @@ -29,7 +29,7 @@ mod sliding_sync; mod sync_service; mod timeline; -matrix_sdk_test::init_tracing_for_tests!(); +matrix_sdk_test_utils::init_tracing_for_tests!(); /// Mount a Mock on the given server to handle the `GET /sync` endpoint with /// an optional `since` param that returns a 200 status code with the given diff --git a/crates/matrix-sdk/Cargo.toml b/crates/matrix-sdk/Cargo.toml index b1077fac54a..0312e8b90a2 100644 --- a/crates/matrix-sdk/Cargo.toml +++ b/crates/matrix-sdk/Cargo.toml @@ -150,6 +150,7 @@ futures-executor.workspace = true insta.workspace = true matrix-sdk-base = { workspace = true, features = ["testing"] } matrix-sdk-test.workspace = true +matrix-sdk-test-utils.workspace = true serde_urlencoded = "0.7.1" similar-asserts.workspace = true stream_assert.workspace = true diff --git a/crates/matrix-sdk/src/lib.rs b/crates/matrix-sdk/src/lib.rs index 2680d4cb1e3..0c6c83a45b0 100644 --- a/crates/matrix-sdk/src/lib.rs +++ b/crates/matrix-sdk/src/lib.rs @@ -98,4 +98,4 @@ pub mod live_location_share; pub mod test_utils; #[cfg(test)] -matrix_sdk_test::init_tracing_for_tests!(); +matrix_sdk_test_utils::init_tracing_for_tests!(); diff --git a/crates/matrix-sdk/tests/integration/main.rs b/crates/matrix-sdk/tests/integration/main.rs index 10fc7fa994c..fb00e918ffe 100644 --- a/crates/matrix-sdk/tests/integration/main.rs +++ b/crates/matrix-sdk/tests/integration/main.rs @@ -22,7 +22,7 @@ mod send_queue; #[cfg(feature = "experimental-widgets")] mod widget; -matrix_sdk_test::init_tracing_for_tests!(); +matrix_sdk_test_utils::init_tracing_for_tests!(); /// Mount a Mock on the given server to handle the `GET /sync` endpoint with /// an optional `since` param that returns a 200 status code with the given diff --git a/testing/matrix-sdk-integration-testing/Cargo.toml b/testing/matrix-sdk-integration-testing/Cargo.toml index c38956aa7ca..1c1f89c6c79 100644 --- a/testing/matrix-sdk-integration-testing/Cargo.toml +++ b/testing/matrix-sdk-integration-testing/Cargo.toml @@ -25,6 +25,7 @@ matrix-sdk = { workspace = true, default-features = true, features = ["testing", matrix-sdk-base = { workspace = true, default-features = true, features = ["testing", "qrcode"] } matrix-sdk-common.workspace = true matrix-sdk-test.workspace = true +matrix-sdk-test-utils.workspace = true matrix-sdk-ui = { workspace = true, default-features = true } once_cell.workspace = true rand.workspace = true diff --git a/testing/matrix-sdk-integration-testing/src/lib.rs b/testing/matrix-sdk-integration-testing/src/lib.rs index eeeeb11239b..b27215f45d1 100644 --- a/testing/matrix-sdk-integration-testing/src/lib.rs +++ b/testing/matrix-sdk-integration-testing/src/lib.rs @@ -1,6 +1,6 @@ #![cfg(test)] -matrix_sdk_test::init_tracing_for_tests!(); +matrix_sdk_test_utils::init_tracing_for_tests!(); mod helpers; mod tests; diff --git a/testing/matrix-sdk-test-utils/Cargo.toml b/testing/matrix-sdk-test-utils/Cargo.toml new file mode 100644 index 00000000000..cb1f13395ca --- /dev/null +++ b/testing/matrix-sdk-test-utils/Cargo.toml @@ -0,0 +1,18 @@ +[package] +homepage = "https://github.com/matrix-org/matrix-rust-sdk" +keywords = ["matrix", "chat", "messaging", "ruma"] +license = "Apache-2.0" +name = "matrix-sdk-test-utils" +version = "0.13.0" +edition = "2024" +rust-version.workspace = true + +[package.metadata.release] +release = true + +[target.'cfg(not(target_family = "wasm"))'.dependencies] +ctor = "0.2.9" +tracing-subscriber = { workspace = true, features = ["env-filter"] } + +[lints] +workspace = true diff --git a/testing/matrix-sdk-test-utils/README.md b/testing/matrix-sdk-test-utils/README.md new file mode 100644 index 00000000000..e5922fc6535 --- /dev/null +++ b/testing/matrix-sdk-test-utils/README.md @@ -0,0 +1 @@ + Utils function for the test helpers diff --git a/testing/matrix-sdk-test-utils/src/lib.rs b/testing/matrix-sdk-test-utils/src/lib.rs new file mode 100644 index 00000000000..eadd05bd515 --- /dev/null +++ b/testing/matrix-sdk-test-utils/src/lib.rs @@ -0,0 +1,41 @@ +/// Initialize a tracing subscriber if the target architecture is not WASM. +/// +/// Uses a sensible default filter that can be overridden through the `RUST_LOG` +/// environment variable and runs once before all tests by using the [`ctor`] +/// crate. +/// +/// Invoke this macro once per compilation unit (`lib.rs`, `tests/*.rs`, +/// `tests/*/main.rs`). +#[macro_export] +macro_rules! init_tracing_for_tests { + () => { + #[cfg(not(target_family = "wasm"))] + #[$crate::__macro_support::ctor] + fn init_logging() { + use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; + use $crate::__macro_support::tracing_subscriber; + + tracing_subscriber::registry() + .with(tracing_subscriber::EnvFilter::try_from_default_env().unwrap_or_else(|_| { + // Output is only printed for failing tests, but still we shouldn't overload + // the output with unnecessary info. When debugging a specific test, it's easy + // to override this default by setting the `RUST_LOG` environment variable. + // + // Since tracing_subscriber does prefix matching, the `matrix_sdk=` directive + // takes effect for all the main crates (`matrix_sdk_base`, `matrix_sdk_crypto` + // and so on). + "info,matrix_sdk=debug".into() + })) + .with(tracing_subscriber::fmt::layer().with_test_writer()) + .init(); + } + }; +} + +#[doc(hidden)] +pub mod __macro_support { + #[cfg(not(target_family = "wasm"))] + pub use ctor::ctor; + #[cfg(not(target_family = "wasm"))] + pub use tracing_subscriber; +} diff --git a/testing/matrix-sdk-test/src/lib.rs b/testing/matrix-sdk-test/src/lib.rs index cf5b236794e..163f25a9c75 100644 --- a/testing/matrix-sdk-test/src/lib.rs +++ b/testing/matrix-sdk-test/src/lib.rs @@ -72,48 +72,6 @@ macro_rules! stripped_state_event { } } -/// Initialize a tracing subscriber if the target architecture is not WASM. -/// -/// Uses a sensible default filter that can be overridden through the `RUST_LOG` -/// environment variable and runs once before all tests by using the [`ctor`] -/// crate. -/// -/// Invoke this macro once per compilation unit (`lib.rs`, `tests/*.rs`, -/// `tests/*/main.rs`). -#[macro_export] -macro_rules! init_tracing_for_tests { - () => { - #[cfg(not(target_family = "wasm"))] - #[$crate::__macro_support::ctor] - fn init_logging() { - use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; - use $crate::__macro_support::tracing_subscriber; - - tracing_subscriber::registry() - .with(tracing_subscriber::EnvFilter::try_from_default_env().unwrap_or_else(|_| { - // Output is only printed for failing tests, but still we shouldn't overload - // the output with unnecessary info. When debugging a specific test, it's easy - // to override this default by setting the `RUST_LOG` environment variable. - // - // Since tracing_subscriber does prefix matching, the `matrix_sdk=` directive - // takes effect for all the main crates (`matrix_sdk_base`, `matrix_sdk_crypto` - // and so on). - "info,matrix_sdk=debug".into() - })) - .with(tracing_subscriber::fmt::layer().with_test_writer()) - .init(); - } - }; -} - -#[doc(hidden)] -pub mod __macro_support { - #[cfg(not(target_family = "wasm"))] - pub use ctor::ctor; - #[cfg(not(target_family = "wasm"))] - pub use tracing_subscriber; -} - #[cfg(not(target_family = "wasm"))] pub mod mocks;