mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-02 01:52:51 +00:00
Merge pull request #1023 from kamalmarhubi/diff-color-fix
print_diff: Don't print color codes if output is not a tty
This commit is contained in:
commit
d19844d492
3
Cargo.lock
generated
3
Cargo.lock
generated
@ -6,6 +6,8 @@ dependencies = [
|
||||
"env_logger 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"itertools 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"multimap 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"regex 0.1.71 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@ -15,6 +17,7 @@ dependencies = [
|
||||
"term 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"toml 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"unicode-segmentation 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -27,3 +27,10 @@ env_logger = "0.3"
|
||||
getopts = "0.2"
|
||||
itertools = "0.4.15"
|
||||
multimap = "0.3"
|
||||
|
||||
[target.'cfg(unix)'.dependencies]
|
||||
libc = "0.2.11"
|
||||
|
||||
[target.'cfg(windows)'.dependencies]
|
||||
kernel32-sys = "0.2.2"
|
||||
winapi = "0.2.7"
|
||||
|
@ -88,10 +88,28 @@ pub fn make_diff(expected: &str, actual: &str, context_size: usize) -> Vec<Misma
|
||||
pub fn print_diff<F>(diff: Vec<Mismatch>, get_section_title: F)
|
||||
where F: Fn(u32) -> String
|
||||
{
|
||||
if let Some(t) = term::stdout() {
|
||||
print_diff_fancy(diff, get_section_title, t);
|
||||
} else {
|
||||
print_diff_basic(diff, get_section_title);
|
||||
match term::stdout() {
|
||||
Some(_) if isatty() => print_diff_fancy(diff, get_section_title, term::stdout().unwrap()),
|
||||
_ => print_diff_basic(diff, get_section_title),
|
||||
}
|
||||
|
||||
// isatty shamelessly adapted from cargo.
|
||||
#[cfg(unix)]
|
||||
fn isatty() -> bool {
|
||||
extern crate libc;
|
||||
|
||||
unsafe { libc::isatty(libc::STDOUT_FILENO) != 0 }
|
||||
}
|
||||
#[cfg(windows)]
|
||||
fn isatty() -> bool {
|
||||
extern crate kernel32;
|
||||
extern crate winapi;
|
||||
|
||||
unsafe {
|
||||
let handle = kernel32::GetStdHandle(winapi::winbase::STD_OUTPUT_HANDLE);
|
||||
let mut out = 0;
|
||||
kernel32::GetConsoleMode(handle, &mut out) != 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user