Skip to content

Commit 8a76086

Browse files
committed
refactor: isatty use standard rust api and configured following log decorator setup, #5936
1 parent 8673a0f commit 8a76086

File tree

1 file changed

+25
-35
lines changed

1 file changed

+25
-35
lines changed

stacks-common/src/util/log.rs

Lines changed: 25 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ fn make_logger() -> Logger {
225225
let debug = env::var("STACKS_LOG_DEBUG") == Ok("1".into());
226226
let pretty_print = env::var("STACKS_LOG_PP") == Ok("1".into());
227227
let decorator = get_decorator();
228-
let atty = isatty(Stream::Stderr);
228+
let atty = isatty();
229229
let drain = TermFormat::new(decorator, pretty_print, debug, atty);
230230
Logger::root(drain.ignore_res(), o!())
231231
}
@@ -236,11 +236,23 @@ fn get_decorator() -> slog_term::PlainSyncDecorator<slog_term::TestStdoutWriter>
236236
slog_term::PlainSyncDecorator::new(slog_term::TestStdoutWriter)
237237
}
238238

239+
#[cfg(any(test, feature = "testing"))]
240+
fn isatty() -> bool {
241+
use std::io::IsTerminal;
242+
io::stdout().is_terminal()
243+
}
244+
239245
#[cfg(not(any(test, feature = "testing")))]
240246
fn get_decorator() -> slog_term::PlainSyncDecorator<std::io::Stderr> {
241247
slog_term::PlainSyncDecorator::new(std::io::stderr())
242248
}
243249

250+
#[cfg(not(any(test, feature = "testing")))]
251+
fn isatty() -> bool {
252+
use std::io::IsTerminal;
253+
io::stderr().is_terminal()
254+
}
255+
244256
fn inner_get_loglevel() -> slog::Level {
245257
if env::var("STACKS_LOG_TRACE") == Ok("1".into()) {
246258
slog::Level::Trace
@@ -331,39 +343,17 @@ fn color_if_tty(color: &str, isatty: bool) -> &str {
331343
}
332344
}
333345

334-
enum Stream {
335-
Stdout,
336-
Stderr,
337-
}
338-
339-
#[cfg(unix)]
340-
fn isatty(stream: Stream) -> bool {
341-
let fd = match stream {
342-
Stream::Stdout => libc::STDOUT_FILENO,
343-
Stream::Stderr => libc::STDERR_FILENO,
344-
};
345-
unsafe { libc::isatty(fd) != 0 }
346-
}
347-
348-
#[cfg(windows)]
349-
fn isatty(stream: Stream) -> bool {
350-
use winapi::um::consoleapi::GetConsoleMode;
351-
use winapi::um::handleapi::INVALID_HANDLE_VALUE;
352-
use winapi::um::processenv::GetStdHandle;
353-
use winapi::um::winbase::{STD_OUTPUT_HANDLE, STD_ERROR_HANDLE};
354-
355-
let handle = match stream {
356-
Stream::Stdout => STD_OUTPUT_HANDLE,
357-
Stream::Stderr => STD_ERROR_HANDLE,
358-
};
359-
360-
unsafe {
361-
let handle = GetStdHandle(handle);
362-
if handle == INVALID_HANDLE_VALUE {
363-
return false;
364-
}
365-
366-
let mut mode: u32 = 0;
367-
GetConsoleMode(handle, &mut mode) != 0
346+
#[cfg(test)]
347+
mod tests {
348+
use super::*;
349+
350+
#[test]
351+
#[ignore = "manual test"]
352+
fn test_log_pretty_print() {
353+
env::set_var("STACKS_LOG_PP", "1");
354+
let logger: Logger = make_logger();
355+
slog::slog_info!(logger, "Info test"); //equivalent to info!(..)
356+
slog::slog_warn!(logger, "Warn test"); //equivalent to warn!(..)
357+
slog::slog_error!(logger, "Erro test"); //equivalent to erro!(..)
368358
}
369359
}

0 commit comments

Comments
 (0)