Skip to content

Commit 1954873

Browse files
RussWilliam Bartlett
authored andcommitted
feature/legacy support (#93)
feature toggle for backtrace
1 parent 500dcc9 commit 1954873

File tree

3 files changed

+62
-2
lines changed

3 files changed

+62
-2
lines changed

.travis.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ rust:
44
- beta
55
- nightly
66
cache: cargo
7+
before_cache:
8+
- cargo clean -p serde-xml-rs
9+
- rm -f target/debug/deps/libserde_xml_rs*.rlib
710
env:
811
global:
912
- RUST_BACKTRACE=1

Cargo.toml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,14 @@ version = "0.3.0"
1010
log = "0.4"
1111
serde = "1.0"
1212
xml-rs = "0.8.0"
13-
error-chain = "0.10.0"
13+
error-chain = { version = "0.10.0", default-features = false }
1414

1515
[dev-dependencies]
1616
serde_derive = "1.0"
17-
docmatic = "0.1.2"
1817
simple_logger = "1.0.1"
18+
docmatic = "0.1.2"
19+
20+
[features]
21+
default = ["with-backtrace"]
22+
with-backtrace = ["error-chain/default"]
23+
legacy-support = ["error-chain/example_generated"]

tests/failures.rs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#[macro_use]
2+
extern crate serde_derive;
3+
extern crate serde_xml_rs;
4+
5+
#[macro_use]
6+
extern crate log;
7+
extern crate simple_logger;
8+
9+
use serde_xml_rs::from_str;
10+
11+
#[derive(Debug, Deserialize, PartialEq)]
12+
struct Item {
13+
name: String,
14+
source: String,
15+
}
16+
17+
#[test]
18+
fn simple_struct_from_attributes_should_fail() {
19+
let _ = simple_logger::init();
20+
21+
let s = r##"
22+
<item name="hello" source="world.rs />
23+
"##;
24+
25+
let item: Result<Item, _> = from_str(s);
26+
match item {
27+
Ok(_) => assert!(false),
28+
Err(e) => {
29+
info!("simple_struct_from_attributes_should_fail(): {}", e);
30+
assert!(true)
31+
}
32+
}
33+
}
34+
35+
#[test]
36+
fn multiple_roots_attributes_should_fail() {
37+
let _ = simple_logger::init();
38+
39+
let s = r##"
40+
<item name="hello" source="world.rs" />
41+
<item name="hello source="world.rs" />
42+
"##;
43+
44+
let item: Result<Vec<Item>, _> = from_str(s);
45+
match item {
46+
Ok(_) => assert!(false),
47+
Err(e) => {
48+
info!("multiple_roots_attributes_should_fail(): {}", e);
49+
assert!(true)
50+
}
51+
}
52+
}

0 commit comments

Comments
 (0)