diff --git a/.travis.yml b/.travis.yml index 9db6ab6..ea58038 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,9 @@ rust: - beta - nightly cache: cargo +before_cache: + - cargo clean -p serde-xml-rs + - rm -f target/debug/deps/libserde_xml_rs*.rlib env: global: - RUST_BACKTRACE=1 diff --git a/Cargo.toml b/Cargo.toml index e841de5..2e46de7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,9 +10,14 @@ version = "0.3.0" log = "0.4" serde = "1.0" xml-rs = "0.8.0" -error-chain = "0.10.0" +error-chain = { version = "0.10.0", default-features = false } [dev-dependencies] serde_derive = "1.0" -docmatic = "0.1.2" simple_logger = "1.0.1" +docmatic = "0.1.2" + +[features] +default = ["with-backtrace"] +with-backtrace = ["error-chain/default"] +legacy-support = ["error-chain/example_generated"] diff --git a/tests/failures.rs b/tests/failures.rs new file mode 100644 index 0000000..ca51f6b --- /dev/null +++ b/tests/failures.rs @@ -0,0 +1,52 @@ +#[macro_use] +extern crate serde_derive; +extern crate serde_xml_rs; + +#[macro_use] +extern crate log; +extern crate simple_logger; + +use serde_xml_rs::from_str; + +#[derive(Debug, Deserialize, PartialEq)] +struct Item { + name: String, + source: String, +} + +#[test] +fn simple_struct_from_attributes_should_fail() { + let _ = simple_logger::init(); + + let s = r##" + = from_str(s); + match item { + Ok(_) => assert!(false), + Err(e) => { + info!("simple_struct_from_attributes_should_fail(): {}", e); + assert!(true) + } + } +} + +#[test] +fn multiple_roots_attributes_should_fail() { + let _ = simple_logger::init(); + + let s = r##" + + + "##; + + let item: Result, _> = from_str(s); + match item { + Ok(_) => assert!(false), + Err(e) => { + info!("multiple_roots_attributes_should_fail(): {}", e); + assert!(true) + } + } +}