Skip to content

Commit 30bf5bd

Browse files
committed
Auto merge of #2962 - Turbo87:claim, r=jtgeibel
Use `claim` to simplify assertions This PR introduces https://github.com/svartalf/rust-claim/ for our tests to replace our custom `t!()` macro and simplify/improve a few other `assert!()` usages. `t!()` is certainly shorter than `assert_ok!()`, but I think the latter expresses the intent way better than the former. With `t!()` is was always thinking that this might have something to do with translations... 😅 r? `@jtgeibel`
2 parents 254f281 + 03ad28b commit 30bf5bd

File tree

18 files changed

+120
-120
lines changed

18 files changed

+120
-120
lines changed

Cargo.lock

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ toml = "0.5"
8888
url = "2.1"
8989

9090
[dev-dependencies]
91+
claim = "0.4.0"
9192
conduit-test = "0.9.0-alpha.3"
9293
diesel_migrations = { version = "1.3.0", features = ["postgres"] }
9394
hyper-tls = "0.4"

src/config.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,5 +187,5 @@ fn parse_traffic_patterns_splits_on_comma_and_looks_for_equal_sign() {
187187
let patterns_2 = parse_traffic_patterns(pattern_string_2).collect::<Vec<_>>();
188188
assert_eq!(vec![("Baz", "QUX")], patterns_2);
189189

190-
assert!(parse_traffic_patterns(pattern_string_3).next().is_none());
190+
assert_none!(parse_traffic_patterns(pattern_string_3).next());
191191
}

src/email.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,12 +141,12 @@ mod tests {
141141
"test",
142142
"test",
143143
);
144-
assert!(result.is_err());
144+
assert_err!(result);
145145
}
146146

147147
#[test]
148148
fn sending_to_valid_email_succeeds() {
149149
let result = send_email("someone@example.com", "test", "test");
150-
assert!(result.is_ok());
150+
assert_ok!(result);
151151
}
152152
}

src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
#![warn(clippy::all, rust_2018_idioms)]
88
#![warn(missing_debug_implementations, missing_copy_implementations)]
99

10+
#[cfg(test)]
11+
#[macro_use]
12+
extern crate claim;
1013
#[macro_use]
1114
extern crate derive_deref;
1215
#[macro_use]

src/models/krate.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,7 @@ mod tests {
564564
repository: None,
565565
max_upload_size: None,
566566
};
567-
assert!(krate.validate().is_err());
567+
assert_err!(krate.validate());
568568
}
569569

570570
#[test]

src/models/token.rs

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,12 @@ mod tests {
133133
last_used_at: Some(NaiveDate::from_ymd(2017, 1, 6).and_hms(14, 23, 12)),
134134
};
135135
let json = serde_json::to_string(&tok).unwrap();
136-
assert!(json
136+
assert_some!(json
137137
.as_str()
138-
.find(r#""created_at":"2017-01-06T14:23:11+00:00""#)
139-
.is_some());
140-
assert!(json
138+
.find(r#""created_at":"2017-01-06T14:23:11+00:00""#));
139+
assert_some!(json
141140
.as_str()
142-
.find(r#""last_used_at":"2017-01-06T14:23:12+00:00""#)
143-
.is_some());
141+
.find(r#""last_used_at":"2017-01-06T14:23:12+00:00""#));
144142
}
145143

146144
#[test]
@@ -154,13 +152,11 @@ mod tests {
154152
last_used_at: Some(NaiveDate::from_ymd(2017, 1, 6).and_hms(14, 23, 12)),
155153
};
156154
let json = serde_json::to_string(&tok).unwrap();
157-
assert!(json
155+
assert_some!(json
158156
.as_str()
159-
.find(r#""created_at":"2017-01-06T14:23:11+00:00""#)
160-
.is_some());
161-
assert!(json
157+
.find(r#""created_at":"2017-01-06T14:23:11+00:00""#));
158+
assert_some!(json
162159
.as_str()
163-
.find(r#""last_used_at":"2017-01-06T14:23:12+00:00""#)
164-
.is_some());
160+
.find(r#""last_used_at":"2017-01-06T14:23:12+00:00""#));
165161
}
166162
}

src/tests/all.rs

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#![warn(clippy::all, rust_2018_idioms)]
22

3+
#[macro_use]
4+
extern crate claim;
35
#[macro_use]
46
extern crate diesel;
57
#[macro_use]
@@ -33,15 +35,6 @@ use conduit_test::MockRequest;
3335
use diesel::prelude::*;
3436
use reqwest::{blocking::Client, Proxy};
3537

36-
macro_rules! t {
37-
($e:expr) => {
38-
match $e {
39-
Ok(e) => e,
40-
Err(m) => panic!("{} failed with: {}", stringify!($e), m),
41-
}
42-
};
43-
}
44-
4538
mod account_lock;
4639
mod authentication;
4740
mod badge;
@@ -164,7 +157,7 @@ fn build_app(
164157
};
165158

166159
let app = App::new(config, client);
167-
t!(t!(app.primary_database.get()).begin_test_transaction());
160+
assert_ok!(assert_ok!(app.primary_database.get()).begin_test_transaction());
168161
let app = Arc::new(app);
169162
let handler = cargo_registry::build_handler(Arc::clone(&app));
170163
(app, handler)

src/tests/builders/publish.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ lazy_static! {
1414
{
1515
let mut ar =
1616
tar::Builder::new(GzEncoder::new(&mut empty_tarball, Compression::default()));
17-
t!(ar.finish());
17+
assert_ok!(ar.finish());
1818
}
1919
empty_tarball
2020
};
@@ -88,12 +88,12 @@ impl PublishBuilder {
8888
let mut ar = tar::Builder::new(GzEncoder::new(&mut tarball, Compression::default()));
8989
for &mut (name, ref mut data, size) in files {
9090
let mut header = tar::Header::new_gnu();
91-
t!(header.set_path(name));
91+
assert_ok!(header.set_path(name));
9292
header.set_size(size);
9393
header.set_cksum();
94-
t!(ar.append(&header, data));
94+
assert_ok!(ar.append(&header, data));
9595
}
96-
t!(ar.finish());
96+
assert_ok!(ar.finish());
9797
}
9898

9999
self.tarball = tarball;

src/tests/category.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,10 @@ fn show() {
4444

4545
// Create a category and a subcategory
4646
app.db(|conn| {
47-
t!(new_category("Foo Bar", "foo-bar", "Foo Bar crates").create_or_update(conn));
48-
t!(new_category("Foo Bar::Baz", "foo-bar::baz", "Baz crates").create_or_update(conn));
47+
assert_ok!(new_category("Foo Bar", "foo-bar", "Foo Bar crates").create_or_update(conn));
48+
assert_ok!(
49+
new_category("Foo Bar::Baz", "foo-bar::baz", "Baz crates").create_or_update(conn)
50+
);
4951
});
5052

5153
// The category and its subcategories should be in the json
@@ -69,8 +71,10 @@ fn update_crate() {
6971
let user = user.as_model();
7072

7173
app.db(|conn| {
72-
t!(new_category("cat1", "cat1", "Category 1 crates").create_or_update(conn));
73-
t!(new_category("Category 2", "category-2", "Category 2 crates").create_or_update(conn));
74+
assert_ok!(new_category("cat1", "cat1", "Category 1 crates").create_or_update(conn));
75+
assert_ok!(
76+
new_category("Category 2", "category-2", "Category 2 crates").create_or_update(conn)
77+
);
7478
let krate = CrateBuilder::new("foo_crate", user.id).expect_build(&conn);
7579

7680
// Updating with no categories has no effect
@@ -122,7 +126,7 @@ fn update_crate() {
122126
assert_eq!(count(&anon, "category-2"), 0);
123127

124128
// Add a category and its subcategory
125-
t!(new_category("cat1::bar", "cat1::bar", "bar crates").create_or_update(conn));
129+
assert_ok!(new_category("cat1::bar", "cat1::bar", "bar crates").create_or_update(conn));
126130
Category::update_crate(&conn, &krate, &["cat1", "cat1::bar"]).unwrap();
127131

128132
assert_eq!(count(&anon, "cat1"), 1);

src/tests/krate.rs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -626,7 +626,7 @@ fn show() {
626626
assert_eq!(json.versions[0].id, versions[0]);
627627
assert_eq!(json.versions[0].krate, json.krate.id);
628628
assert_eq!(json.versions[0].num, "1.0.0");
629-
assert!(json.versions[0].published_by.is_none());
629+
assert_none!(&json.versions[0].published_by);
630630
let suffix = "/api/v1/crates/foo_show/1.0.0/download";
631631
assert!(
632632
json.versions[0].dl_path.ends_with(suffix),
@@ -688,7 +688,7 @@ fn versions() {
688688
assert_eq!(json.versions[0].num, "1.0.0");
689689
assert_eq!(json.versions[1].num, "0.5.1");
690690
assert_eq!(json.versions[2].num, "0.5.0");
691-
assert!(json.versions[0].published_by.is_none());
691+
assert_none!(&json.versions[0].published_by);
692692
assert_eq!(
693693
json.versions[1].published_by.as_ref().unwrap().login,
694694
user.gh_login
@@ -1182,7 +1182,7 @@ fn new_krate_git_upload() {
11821182
app.run_pending_background_jobs();
11831183

11841184
let crates = app.crates_from_index_head("3/f/fgt");
1185-
assert!(crates.len() == 1);
1185+
assert_eq!(crates.len(), 1);
11861186
assert_eq!(crates[0].name, "fgt");
11871187
assert_eq!(crates[0].vers, "1.0.0");
11881188
assert!(crates[0].deps.is_empty());
@@ -1587,8 +1587,8 @@ fn yank_works_as_intended() {
15871587
app.run_pending_background_jobs();
15881588

15891589
let crates = app.crates_from_index_head("3/f/fyk");
1590-
assert!(crates.len() == 1);
1591-
assert!(!crates[0].yanked.unwrap());
1590+
assert_eq!(crates.len(), 1);
1591+
assert_some_eq!(crates[0].yanked, false);
15921592

15931593
// make sure it's not yanked
15941594
let json = anon.show_version("fyk", "1.0.0");
@@ -1598,8 +1598,8 @@ fn yank_works_as_intended() {
15981598
token.yank("fyk", "1.0.0").good();
15991599

16001600
let crates = app.crates_from_index_head("3/f/fyk");
1601-
assert!(crates.len() == 1);
1602-
assert!(crates[0].yanked.unwrap());
1601+
assert_eq!(crates.len(), 1);
1602+
assert_some_eq!(crates[0].yanked, true);
16031603

16041604
let json = anon.show_version("fyk", "1.0.0");
16051605
assert!(json.version.yanked);
@@ -1608,8 +1608,8 @@ fn yank_works_as_intended() {
16081608
token.unyank("fyk", "1.0.0").good();
16091609

16101610
let crates = app.crates_from_index_head("3/f/fyk");
1611-
assert!(crates.len() == 1);
1612-
assert!(!crates[0].yanked.unwrap());
1611+
assert_eq!(crates.len(), 1);
1612+
assert_some_eq!(crates[0].yanked, false);
16131613

16141614
let json = anon.show_version("fyk", "1.0.0");
16151615
assert!(!json.version.yanked);
@@ -1618,8 +1618,8 @@ fn yank_works_as_intended() {
16181618
cookie.yank("fyk", "1.0.0").good();
16191619

16201620
let crates = app.crates_from_index_head("3/f/fyk");
1621-
assert!(crates.len() == 1);
1622-
assert!(crates[0].yanked.unwrap());
1621+
assert_eq!(crates.len(), 1);
1622+
assert_some_eq!(crates[0].yanked, true);
16231623

16241624
let json = anon.show_version("fyk", "1.0.0");
16251625
assert!(json.version.yanked);
@@ -1628,8 +1628,8 @@ fn yank_works_as_intended() {
16281628
cookie.unyank("fyk", "1.0.0").good();
16291629

16301630
let crates = app.crates_from_index_head("3/f/fyk");
1631-
assert!(crates.len() == 1);
1632-
assert!(!crates[0].yanked.unwrap());
1631+
assert_eq!(crates.len(), 1);
1632+
assert_some_eq!(crates[0].yanked, false);
16331633

16341634
let json = anon.show_version("fyk", "1.0.0");
16351635
assert!(!json.version.yanked);
@@ -2118,7 +2118,7 @@ fn reverse_dependencies_includes_published_by_user_when_present() {
21182118
assert_eq!(deps.versions.len(), 2);
21192119

21202120
let c2_version = deps.versions.iter().find(|v| v.krate == "c2").unwrap();
2121-
assert!(c2_version.published_by.is_none());
2121+
assert_none!(&c2_version.published_by);
21222122

21232123
let c3_version = deps.versions.iter().find(|v| v.krate == "c3").unwrap();
21242124
assert_eq!(
@@ -2406,13 +2406,13 @@ fn new_krate_tarball_with_hard_links() {
24062406
{
24072407
let mut ar = tar::Builder::new(GzEncoder::new(&mut tarball, Compression::default()));
24082408
let mut header = tar::Header::new_gnu();
2409-
t!(header.set_path("foo-1.1.0/bar"));
2409+
assert_ok!(header.set_path("foo-1.1.0/bar"));
24102410
header.set_size(0);
24112411
header.set_cksum();
24122412
header.set_entry_type(tar::EntryType::hard_link());
2413-
t!(header.set_link_name("foo-1.1.0/another"));
2414-
t!(ar.append(&header, &[][..]));
2415-
t!(ar.finish());
2413+
assert_ok!(header.set_link_name("foo-1.1.0/another"));
2414+
assert_ok!(ar.append(&header, &[][..]));
2415+
assert_ok!(ar.finish());
24162416
}
24172417

24182418
let crate_to_publish = PublishBuilder::new("foo").version("1.1.0").tarball(tarball);

src/tests/record.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ impl Drop for Bomb {
6565
Ok(_) if thread::panicking() => {}
6666
Ok(None) => {}
6767
Ok(Some((data, file))) => {
68-
t!(t!(File::create(&file)).write_all(&data));
68+
assert_ok!(assert_ok!(File::create(&file)).write_all(&data));
6969
}
7070
}
7171
}
@@ -97,7 +97,7 @@ pub fn proxy() -> (String, Bomb) {
9797
Record::Replay(serde_json::from_slice(b"[]").unwrap())
9898
} else {
9999
let mut body = Vec::new();
100-
t!(t!(File::open(&data)).read_to_end(&mut body));
100+
assert_ok!(assert_ok!(File::open(&data)).read_to_end(&mut body));
101101
Record::Replay(serde_json::from_slice(&body).unwrap())
102102
};
103103

@@ -107,7 +107,7 @@ pub fn proxy() -> (String, Bomb) {
107107
let (quittx, quitrx) = oneshot::channel();
108108

109109
let thread = thread::spawn(move || {
110-
let mut rt = t!(runtime::Builder::new()
110+
let mut rt = assert_ok!(runtime::Builder::new()
111111
.basic_scheduler()
112112
.enable_io()
113113
.build());
@@ -118,9 +118,9 @@ pub fn proxy() -> (String, Bomb) {
118118
None
119119
};
120120

121-
let mut listener = t!(rt.block_on(TcpListener::bind("127.0.0.1:0")));
121+
let mut listener = assert_ok!(rt.block_on(TcpListener::bind("127.0.0.1:0")));
122122
url_tx
123-
.send(format!("http://{}", t!(listener.local_addr())))
123+
.send(format!("http://{}", assert_ok!(listener.local_addr())))
124124
.unwrap();
125125

126126
let record = Arc::new(Mutex::new(record));
@@ -139,7 +139,7 @@ pub fn proxy() -> (String, Bomb) {
139139
let record = record.lock().unwrap();
140140
match *record {
141141
Record::Capture(ref data, ref path) => {
142-
let data = t!(serde_json::to_string_pretty(data));
142+
let data = assert_ok!(serde_json::to_string_pretty(data));
143143
Some((data.into_bytes(), path.clone()))
144144
}
145145
Record::Replay(..) => None,
@@ -294,7 +294,7 @@ fn replay_http(
294294

295295
assert_eq!(req.uri().to_string(), exchange.request.uri);
296296
assert_eq!(req.method().to_string(), exchange.request.method);
297-
t!(writeln!(
297+
assert_ok!(writeln!(
298298
stdout,
299299
"expecting: {:?}",
300300
exchange.request.headers
@@ -304,7 +304,7 @@ fn replay_http(
304304
name.as_str().to_string(),
305305
value.to_str().unwrap().to_string(),
306306
);
307-
t!(writeln!(stdout, "received: {:?}", pair));
307+
assert_ok!(writeln!(stdout, "received: {:?}", pair));
308308
if name == "user-agent" {
309309
assert_eq!(value, "crates.io (https://crates.io)");
310310
continue;
@@ -386,15 +386,15 @@ impl GhUser {
386386
})
387387
.basic_auth(self.login, Some(password));
388388

389-
let response = t!(req
389+
let response = assert_ok!(req
390390
.send()
391391
.and_then(reqwest::blocking::Response::error_for_status));
392392

393393
#[derive(Deserialize)]
394394
struct Response {
395395
token: String,
396396
}
397-
let resp: Response = t!(response.json());
397+
let resp: Response = assert_ok!(response.json());
398398
File::create(&self.filename())
399399
.unwrap()
400400
.write_all(resp.token.as_bytes())

0 commit comments

Comments
 (0)