Skip to content

Commit 2dcb646

Browse files
authored
Merge pull request #320 from erickt/trybuild
Switch from compiletest_rs to trybuild
2 parents a5df9fe + 49f26ae commit 2dcb646

6 files changed

+28
-33
lines changed

Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,19 @@ zmq_has = []
2828
vendored = ['zmq-sys/vendored']
2929

3030
[dependencies]
31+
bitflags = "1.0"
3132
libc = "0.2.15"
3233
zmq-sys = { version = "0.11.0", path = "zmq-sys" }
33-
bitflags = "1.0"
3434

3535
[dev-dependencies]
36-
log = "0.4.3"
36+
trybuild = "*" # { version = "0.4.0", features = ["stable"] }
3737
env_logger = { version = "0.7", default-features = false }
38+
log = "0.4.3"
39+
nix = "0.16"
3840
quickcheck = "0.9"
3941
rand = "0.7"
4042
tempfile = "3"
4143
timebomb = "0.1.2"
42-
nix = "0.16"
43-
compiletest_rs = { version = "0.4.0", features = ["stable"] }
4444

4545
[[example]]
4646
name = "helloworld_client"

tests/compile-fail/no-leaking-poll-items.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
extern crate zmq;
2-
31
fn main() {
42
let context = zmq::Context::new();
53
let _poll_item = {
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
error[E0597]: `socket` does not live long enough
2+
--> $DIR/no-leaking-poll-items.rs:5:9
3+
|
4+
3 | let _poll_item = {
5+
| ---------- borrow later stored here
6+
4 | let socket = context.socket(zmq::PAIR).unwrap();
7+
5 | socket.as_poll_item(zmq::POLLIN)
8+
| ^^^^^^ borrowed value does not live long enough
9+
6 | }; //~^ ERROR `socket` does not live long enough [E0597]
10+
| - `socket` dropped here while still borrowed

tests/compile-fail/socket-thread-unsafe.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
extern crate zmq;
2-
31
use std::thread;
42

53
macro_rules! t {
@@ -12,7 +10,7 @@ fn main() {
1210
let mut context = zmq::Context::new();
1311
let socket = t!(context.socket(zmq::REP));
1412
let s = &socket;
15-
let t = thread::spawn(move || { //~ cannot be shared between threads safely [E0277]
13+
let t = thread::spawn(move || {
1614
t!(s.bind("tcp://127.0.0.1:12345"))
1715
});
1816
socket.send("ABC", 0);
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
error[E0277]: `*mut std::ffi::c_void` cannot be shared between threads safely
2+
--> $DIR/socket-thread-unsafe.rs:13:13
3+
|
4+
13 | let t = thread::spawn(move || {
5+
| ^^^^^^^^^^^^^ `*mut std::ffi::c_void` cannot be shared between threads safely
6+
|
7+
= help: within `zmq::Socket`, the trait `std::marker::Sync` is not implemented for `*mut std::ffi::c_void`
8+
= note: required because it appears within the type `zmq::Socket`
9+
= note: required because of the requirements on the impl of `std::marker::Send` for `&zmq::Socket`
10+
= note: required because it appears within the type `[closure@$DIR/tests/compile-fail/socket-thread-unsafe.rs:13:27: 15:6 s:&zmq::Socket]`

tests/compile-tests.rs

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,5 @@
1-
use std::env;
2-
use std::path::PathBuf;
3-
4-
fn run_mode(mode: &'static str) {
5-
let mut config = compiletest_rs::Config::default();
6-
7-
let cfg_mode = mode.parse().expect("Invalid mode");
8-
9-
config.target_rustcflags = Some(format!(
10-
"-L target/{profile} -L target/{profile}/deps",
11-
profile = env!("BUILD_PROFILE")
12-
));
13-
14-
if let Ok(name) = env::var("TESTNAME") {
15-
config.filter = Some(name)
16-
}
17-
config.mode = cfg_mode;
18-
config.src_base = PathBuf::from(format!("tests/{}", mode));
19-
20-
compiletest_rs::run_tests(&config);
21-
}
22-
231
#[test]
24-
fn compile_test() {
25-
run_mode("compile-fail");
2+
fn compile_fail() {
3+
let t = trybuild::TestCases::new();
4+
t.compile_fail("tests/compile-fail/*.rs");
265
}

0 commit comments

Comments
 (0)