Skip to content

Commit b9f391a

Browse files
committed
Clean up tests with pretty assert
1 parent 8b254cd commit b9f391a

File tree

3 files changed

+45
-34
lines changed

3 files changed

+45
-34
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@ futures-core-preview = "0.3.0-alpha.18"
2020

2121
[dev-dependencies]
2222
futures-util = "0.3.0"
23+
pretty_assertions = "0.6.1"

tests/common/mod.rs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
use std::{fs::File, path::PathBuf};
2+
3+
#[macro_export]
4+
macro_rules! assert {
5+
($actual:expr, $expected:expr, $block:expr) => {
6+
task::block_on(async {
7+
$block.await.unwrap();
8+
pretty_assertions::assert_eq!(
9+
std::str::from_utf8(&$actual).unwrap(),
10+
std::str::from_utf8(&$expected).unwrap()
11+
);
12+
})
13+
};
14+
}
15+
16+
pub fn read_fixture(name: &str) -> Vec<u8> {
17+
use std::io::Read;
18+
19+
let directory: PathBuf = env!("CARGO_MANIFEST_DIR").into();
20+
let path: PathBuf = format!("tests/fixtures/{}.txt", name).into();
21+
let mut file = File::open(directory.join(path)).expect("Reading fixture file didn't work");
22+
let mut contents = Vec::new();
23+
file.read_to_end(&mut contents)
24+
.expect("Couldn't read fixture files contents");
25+
26+
let mut result = Vec::<u8>::new();
27+
for byte in contents {
28+
if byte == 0x0A {
29+
result.push(0x0D);
30+
}
31+
result.push(byte);
32+
}
33+
result
34+
}

tests/server.rs

Lines changed: 10 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,20 @@
1+
mod common;
12
use async_h1::{server, Body};
23
use async_std::task;
4+
use common::read_fixture;
35
use http::Response;
4-
use std::{fs::File, io, path::PathBuf};
56

67
#[test]
7-
fn test_keep_alive() {
8+
fn test_basic_request() {
89
let request = read_fixture("request1");
9-
let mut actual = Vec::new();
10-
let request: &[u8] = &request;
11-
let body: &[u8] = "".as_bytes();
12-
1310
let expected = read_fixture("response1");
14-
let expected: &[u8] = &expected;
11+
let mut actual = Vec::new();
1512

16-
task::block_on(async {
17-
server::connect(request, &mut actual, |req| {
18-
async { Ok(Response::new(Body::empty(body))) }
13+
assert!(
14+
actual,
15+
expected,
16+
server::connect(&request[..], &mut actual, |_req| {
17+
async { Ok(Response::new(Body::empty("".as_bytes()))) }
1918
})
20-
.await
21-
.unwrap();
22-
assert!(actual == expected);
23-
});
24-
}
25-
26-
fn read_fixture(name: &str) -> Vec<u8> {
27-
use std::io::Read;
28-
29-
let directory: PathBuf = env!("CARGO_MANIFEST_DIR").into();
30-
let path: PathBuf = format!("tests/fixtures/{}.txt", name).into();
31-
let mut file = File::open(directory.join(path)).expect("Reading fixture file didn't work");
32-
let mut contents = Vec::new();
33-
file.read_to_end(&mut contents)
34-
.expect("Couldn't read fixture files contents");
35-
36-
let mut result = Vec::<u8>::new();
37-
for byte in contents {
38-
if byte == 0x0A {
39-
result.push(0x0D);
40-
}
41-
result.push(byte);
42-
}
43-
result
19+
);
4420
}

0 commit comments

Comments
 (0)