Skip to content

Commit 956bb8e

Browse files
committed
Capture and log stderr on build failure
1 parent a004815 commit 956bb8e

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

libbindgen/tests/tests.rs

+17-7
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ use std::env;
66
use std::fs;
77
use std::io::{BufReader, BufRead, Read, Write};
88
use std::path::{Path, PathBuf};
9-
use std::process::{Command, ExitStatus};
9+
use std::process::Command;
1010
use tempdir::TempDir;
1111

12-
fn test_generated_bindings(header: &PathBuf, output: &str) -> Result<ExitStatus, std::io::Error> {
12+
fn test_generated_bindings(header: &PathBuf, output: &str) -> Result<(), ()> {
1313
let temp_dir = TempDir::new("bindgen-tests")
1414
.expect("Couldn't create temp dir");
1515

@@ -25,14 +25,24 @@ fn test_generated_bindings(header: &PathBuf, output: &str) -> Result<ExitStatus,
2525
binary.set_extension("bin");
2626

2727
let mut file = fs::File::create(&source).expect("Couldn't create output source file");
28-
try!(file.write_all(output.as_bytes()));
28+
file.write_all(output.as_bytes()).expect("Couldn't write to output source file");
2929

30-
Command::new("rustc")
30+
let output = Command::new("rustc")
3131
.arg("--test")
32-
.arg(source)
32+
.arg(&source)
3333
.arg("-o")
3434
.arg(binary)
35-
.status()
35+
.output();
36+
37+
match output {
38+
Ok(o) => if o.status.success() {
39+
Ok(())
40+
} else {
41+
println!("Failed to build {:?}:\n{}", source, String::from_utf8(o.stderr).unwrap());
42+
Err(())
43+
},
44+
Err(_) => Err(()),
45+
}
3646
}
3747

3848
fn spawn_bindgen(header: &PathBuf, builder: libbindgen::Builder) -> Result<(), ()> {
@@ -58,7 +68,7 @@ fn spawn_bindgen(header: &PathBuf, builder: libbindgen::Builder) -> Result<(), (
5868
.expect("Couldn't read from expected test output");
5969

6070
if output == buffer {
61-
test_generated_bindings(&header, &output).and(Ok(())).or(Err(()))
71+
test_generated_bindings(&header, &output)
6272
} else {
6373
println!("diff expected generated\n--- expected: {:?}\n+++ generated from: {:?}",
6474
expected, header);

0 commit comments

Comments
 (0)