Add tests for crate exports ; add structure to imports/exports

xmppftw created

Change summary

jid/src/lib.rs                     |  4 +-
parsers/src/lib.rs                 | 19 ++++++++++++++++
tokio-xmpp/Cargo.toml              |  1 
tokio-xmpp/examples/echo_server.rs |  9 +++++--
tokio-xmpp/src/error.rs            | 20 ++++++++--------
tokio-xmpp/src/lib.rs              | 36 +++++++++++++++++++------------
xmpp/src/lib.rs                    | 20 ++++++++++++++++-
7 files changed, 77 insertions(+), 32 deletions(-)

Detailed changes

jid/src/lib.rs 🔗

@@ -65,9 +65,9 @@ use quote::{quote, ToTokens};
 use minidom::{IntoAttributeValue, Node};
 
 mod error;
-pub use crate::error::Error;
-
 mod parts;
+
+pub use crate::error::Error;
 pub use parts::{DomainPart, DomainRef, NodePart, NodeRef, ResourcePart, ResourceRef};
 
 fn length_check(len: usize, error_empty: Error, error_too_long: Error) -> Result<(), Error> {

parsers/src/lib.rs 🔗

@@ -293,3 +293,22 @@ pub mod fast;
 
 /// XEP-0490: Message Displayed Synchronization
 pub mod message_displayed;
+
+#[cfg(test)]
+mod tests {
+    #[test]
+    fn reexports() {
+        #[allow(unused_imports)]
+        use crate::blake2;
+        #[allow(unused_imports)]
+        use crate::jid;
+        #[allow(unused_imports)]
+        use crate::minidom;
+        #[allow(unused_imports)]
+        use crate::sha1;
+        #[allow(unused_imports)]
+        use crate::sha2;
+        #[allow(unused_imports)]
+        use crate::sha3;
+    }
+}

tokio-xmpp/Cargo.toml 🔗

@@ -26,7 +26,6 @@ pin-project-lite = { version = "0.2" }
 # same repository dependencies
 sasl = { version = "0.5", path = "../sasl" }
 xmpp-parsers = { version = "0.21", path = "../parsers" }
-minidom = { version = "0.16", path = "../minidom" }
 xso = { version = "0.1", path = "../xso" }
 
 # these are only needed for starttls ServerConnector support

tokio-xmpp/examples/echo_server.rs 🔗

@@ -1,8 +1,11 @@
 use futures::{SinkExt, StreamExt};
 use tokio::{self, io, net::TcpSocket};
 
-use tokio_xmpp::parsers::stream_features::StreamFeatures;
-use tokio_xmpp::xmlstream::{accept_stream, StreamHeader, Timeouts};
+use tokio_xmpp::{
+    minidom::Element,
+    parsers::stream_features::StreamFeatures,
+    xmlstream::{accept_stream, StreamHeader, Timeouts},
+};
 
 #[tokio::main]
 async fn main() -> Result<(), io::Error> {
@@ -24,7 +27,7 @@ async fn main() -> Result<(), io::Error> {
         .await?;
         let stream = stream.send_header(StreamHeader::default()).await?;
         let mut stream = stream
-            .send_features::<minidom::Element>(&StreamFeatures::default())
+            .send_features::<Element>(&StreamFeatures::default())
             .await?;
 
         tokio::spawn(async move {

tokio-xmpp/src/error.rs 🔗

@@ -9,10 +9,10 @@ use std::io::Error as IoError;
 use std::net::AddrParseError;
 use std::str::Utf8Error;
 
-use xmpp_parsers::sasl::DefinedCondition as SaslDefinedCondition;
-use xmpp_parsers::{jid::Error as JidParseError, Error as ParsersError};
-
-use crate::connect::ServerConnectorError;
+use crate::{
+    connect::ServerConnectorError, jid, minidom,
+    parsers::sasl::DefinedCondition as SaslDefinedCondition,
+};
 
 /// Top-level error type
 #[derive(Debug)]
@@ -20,7 +20,7 @@ pub enum Error {
     /// I/O error
     Io(IoError),
     /// Error parsing Jabber-Id
-    JidParse(JidParseError),
+    JidParse(jid::Error),
     /// Protocol-level error
     Protocol(ProtocolError),
     /// Authentication error
@@ -86,8 +86,8 @@ impl<T: ServerConnectorError + 'static> From<T> for Error {
     }
 }
 
-impl From<JidParseError> for Error {
-    fn from(e: JidParseError) -> Self {
+impl From<jid::Error> for Error {
+    fn from(e: jid::Error) -> Self {
         Error::JidParse(e)
     }
 }
@@ -149,7 +149,7 @@ pub enum ProtocolError {
     /// XML parser error
     Parser(minidom::Error),
     /// Error with expected stanza schema
-    Parsers(ParsersError),
+    Parsers(xso::error::Error),
     /// No TLS available
     NoTls,
     /// Invalid response to resource binding
@@ -197,8 +197,8 @@ impl From<minidom::Error> for Error {
     }
 }
 
-impl From<ParsersError> for ProtocolError {
-    fn from(e: ParsersError) -> Self {
+impl From<xso::error::Error> for ProtocolError {
+    fn from(e: xso::error::Error) -> Self {
         ProtocolError::Parsers(e)
     }
 }

tokio-xmpp/src/lib.rs 🔗

@@ -46,28 +46,36 @@ compile_error!(
     "when starttls feature enabled one of tls-native and tls-rust features must be enabled."
 );
 
-mod event;
-pub use event::{Event, Stanza};
-pub mod connect;
-pub mod stanzastream;
-pub mod xmlstream;
+pub use parsers::{jid, minidom};
+pub use xmpp_parsers as parsers;
 
 mod client;
-pub use client::Client;
-
 #[cfg(feature = "insecure-tcp")]
 mod component;
-#[cfg(feature = "insecure-tcp")]
-pub use crate::component::Component;
-
+pub mod connect;
 /// Detailed error types
 pub mod error;
+mod event;
+pub mod stanzastream;
+pub mod xmlstream;
 
 #[doc(inline)]
 /// Generic tokio_xmpp Error
 pub use crate::error::Error;
+pub use client::Client;
+#[cfg(feature = "insecure-tcp")]
+pub use component::Component;
+pub use event::{Event, Stanza};
 
-// Re-exports
-pub use minidom;
-pub use xmpp_parsers as parsers;
-pub use xmpp_parsers::jid;
+#[cfg(test)]
+mod tests {
+    #[test]
+    fn reexports() {
+        #[allow(unused_imports)]
+        use crate::jid;
+        #[allow(unused_imports)]
+        use crate::minidom;
+        #[allow(unused_imports)]
+        use crate::parsers;
+    }
+}

xmpp/src/lib.rs 🔗

@@ -8,13 +8,15 @@
 #![cfg_attr(docsrs, feature(doc_auto_cfg))]
 
 pub use tokio_xmpp;
-pub use tokio_xmpp::jid::{ResourcePart, ResourceRef};
+pub use tokio_xmpp::jid;
 pub use tokio_xmpp::minidom;
 pub use tokio_xmpp::parsers;
+
 #[macro_use]
 extern crate log;
 
 use core::fmt;
+use jid::{ResourcePart, ResourceRef};
 
 pub mod agent;
 pub mod builder;
@@ -30,7 +32,6 @@ pub mod presence;
 pub mod pubsub;
 pub mod upload;
 
-// Module re-exports
 pub use agent::Agent;
 pub use builder::{ClientBuilder, ClientType};
 pub use event::Event;
@@ -76,6 +77,21 @@ impl fmt::Display for RoomNick {
     }
 }
 
+#[cfg(test)]
+mod tests {
+    #[test]
+    fn reexports() {
+        #[allow(unused_imports)]
+        use crate::jid;
+        #[allow(unused_imports)]
+        use crate::minidom;
+        #[allow(unused_imports)]
+        use crate::parsers;
+        #[allow(unused_imports)]
+        use crate::tokio_xmpp;
+    }
+}
+
 // The test below is dysfunctional since we have moved to StanzaStream. The
 // StanzaStream will attempt to connect to foo@bar indefinitely.
 // Keeping it here as inspiration for future integration tests.