Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit b97ef45

Browse files
committedJul 15, 2019
Make the tests use serde_json instead of rustc_serialize
1 parent ca5f6c8 commit b97ef45

File tree

2 files changed

+20
-23
lines changed

2 files changed

+20
-23
lines changed
 

‎Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ test = false
3232

3333
[dev-dependencies]
3434
rustc-test = "0.3"
35-
rustc-serialize = "0.3"
3635
serde_json = "1.0"
3736

3837
bencher = "0.1"

‎tests/data.rs

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,17 @@
88

99
//! Data-driven tests
1010
11-
extern crate rustc_serialize;
11+
extern crate serde_json;
1212
extern crate rustc_test as test;
1313
extern crate url;
1414

15-
use rustc_serialize::json::{self, Json};
15+
use serde_json::Value;
1616
use url::{Url, quirks};
17+
use std::str::FromStr;
1718

1819
fn check_invariants(url: &Url) {
1920
url.check_invariants().unwrap();
2021
#[cfg(feature="serde")] {
21-
extern crate serde_json;
2222
let bytes = serde_json::to_vec(url).unwrap();
2323
let new_url: Url = serde_json::from_slice(&bytes).unwrap();
2424
assert_eq!(url, &new_url);
@@ -84,46 +84,42 @@ struct ExpectedAttributes {
8484
}
8585

8686
trait JsonExt {
87-
fn take(&mut self, key: &str) -> Option<Json>;
88-
fn object(self) -> json::Object;
87+
fn take_key(&mut self, key: &str) -> Option<Value>;
8988
fn string(self) -> String;
9089
fn take_string(&mut self, key: &str) -> String;
9190
}
9291

93-
impl JsonExt for Json {
94-
fn take(&mut self, key: &str) -> Option<Json> {
92+
impl JsonExt for Value {
93+
fn take_key(&mut self, key: &str) -> Option<Value> {
9594
self.as_object_mut().unwrap().remove(key)
9695
}
9796

98-
fn object(self) -> json::Object {
99-
if let Json::Object(o) = self { o } else { panic!("Not a Json::Object") }
100-
}
101-
10297
fn string(self) -> String {
103-
if let Json::String(s) = self { s } else { panic!("Not a Json::String") }
98+
if let Value::String(s) = self { s } else { panic!("Not a Value::String") }
10499
}
105100

106101
fn take_string(&mut self, key: &str) -> String {
107-
self.take(key).unwrap().string()
102+
self.take_key(key).unwrap().string()
108103
}
109104
}
110105

111106
fn collect_parsing<F: FnMut(String, test::TestFn)>(add_test: &mut F) {
112107
// Copied form https://github.com/w3c/web-platform-tests/blob/master/url/
113-
let mut json = Json::from_str(include_str!("urltestdata.json"))
108+
let mut json = Value::from_str(include_str!("urltestdata.json"))
114109
.expect("JSON parse error in urltestdata.json");
115110
for entry in json.as_array_mut().unwrap() {
116111
if entry.is_string() {
117112
continue // ignore comments
118113
}
119114
let base = entry.take_string("base");
120115
let input = entry.take_string("input");
121-
let expected = if entry.find("failure").is_some() {
116+
let expected = if entry.take_key("failure").is_some() {
122117
Err(())
123118
} else {
124119
Ok(ExpectedAttributes {
125120
href: entry.take_string("href"),
126-
origin: entry.take("origin").map(Json::string),
121+
origin: entry.take_key("origin")
122+
.map(|s| s.string()),
127123
protocol: entry.take_string("protocol"),
128124
username: entry.take_string("username"),
129125
password: entry.take_string("password"),
@@ -141,18 +137,20 @@ fn collect_parsing<F: FnMut(String, test::TestFn)>(add_test: &mut F) {
141137
}
142138

143139
fn collect_setters<F>(add_test: &mut F) where F: FnMut(String, test::TestFn) {
144-
let mut json = Json::from_str(include_str!("setters_tests.json"))
140+
let mut json = Value::from_str(include_str!("setters_tests.json"))
145141
.expect("JSON parse error in setters_tests.json");
146142

147143
macro_rules! setter {
148144
($attr: expr, $setter: ident) => {{
149-
let mut tests = json.take($attr).unwrap();
145+
let mut tests = json.take_key($attr).unwrap();
150146
for mut test in tests.as_array_mut().unwrap().drain(..) {
151-
let comment = test.take("comment").map(Json::string).unwrap_or(String::new());
147+
let comment = test.take_key("comment")
148+
.map(|s| s.string())
149+
.unwrap_or(String::new());
152150
let href = test.take_string("href");
153151
let new_value = test.take_string("new_value");
154152
let name = format!("{:?}.{} = {:?} {}", href, $attr, new_value, comment);
155-
let mut expected = test.take("expected").unwrap();
153+
let mut expected = test.take_key("expected").unwrap();
156154
add_test(name, test::TestFn::dyn_test_fn(move || {
157155
let mut url = Url::parse(&href).unwrap();
158156
check_invariants(&url);
@@ -167,7 +165,7 @@ fn collect_setters<F>(add_test: &mut F) where F: FnMut(String, test::TestFn) {
167165
macro_rules! assert_attributes {
168166
($url: expr, $expected: expr, $($attr: ident)+) => {
169167
$(
170-
if let Some(value) = $expected.take(stringify!($attr)) {
168+
if let Some(value) = $expected.take_key(stringify!($attr)) {
171169
assert_eq!(quirks::$attr(&$url), value.string())
172170
}
173171
)+
@@ -184,7 +182,7 @@ fn collect_setters<F>(add_test: &mut F) where F: FnMut(String, test::TestFn) {
184182
setter!("hash", set_hash);
185183
}
186184

187-
fn main() {
185+
pub fn main() {
188186
let mut tests = Vec::new();
189187
{
190188
let mut add_one = |name: String, run: test::TestFn| {

0 commit comments

Comments
 (0)
Please sign in to comment.