summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Knaack <davidkna@users.noreply.github.com>2021-01-16 13:25:58 +0100
committerGitHub <noreply@github.com>2021-01-16 13:25:58 +0100
commitfb0381f7e05685040a7ffa0215b1051a166af563 (patch)
tree4a9472d5b1cabb56b4c6fca7064751162cb892b7 /src
parent0faa05628e54c5436726f75f8d9e134de33e0fc8 (diff)
test: enable logging in tests (#2151)
* test: enable logging in tests * fix clippy
Diffstat (limited to 'src')
-rw-r--r--src/logger.rs19
-rw-r--r--src/test/mod.rs20
2 files changed, 36 insertions, 3 deletions
diff --git a/src/logger.rs b/src/logger.rs
index 936f2cc90..61c6ae21a 100644
--- a/src/logger.rs
+++ b/src/logger.rs
@@ -17,8 +17,8 @@ pub struct StarshipLogger {
log_level: Level,
}
-impl StarshipLogger {
- fn new() -> Self {
+impl Default for StarshipLogger {
+ fn default() -> Self {
let log_dir = env::var_os("STARSHIP_CACHE")
.map(PathBuf::from)
.unwrap_or_else(|| {
@@ -56,6 +56,19 @@ impl StarshipLogger {
}
}
+impl StarshipLogger {
+ /// Override the minimum log level
+ pub fn set_log_level(&mut self, level: log::Level) {
+ self.log_level = level;
+ }
+
+ /// Override the log level path
+ /// This won't change anything if a log file was already opened
+ pub fn set_log_file_path(&mut self, path: PathBuf) {
+ self.log_file_path = path;
+ }
+}
+
impl log::Log for StarshipLogger {
fn enabled(&self, metadata: &Metadata) -> bool {
metadata.level() <= self.log_level
@@ -119,6 +132,6 @@ impl log::Log for StarshipLogger {
}
pub fn init() {
- log::set_boxed_logger(Box::new(StarshipLogger::new())).unwrap();
+ log::set_boxed_logger(Box::new(StarshipLogger::default())).unwrap();
log::set_max_level(LevelFilter::Trace);
}
diff --git a/src/test/mod.rs b/src/test/mod.rs
index f02192ec0..609dcfa1d 100644
--- a/src/test/mod.rs
+++ b/src/test/mod.rs
@@ -1,5 +1,7 @@
use crate::config::StarshipConfig;
use crate::context::{Context, Shell};
+use crate::logger::StarshipLogger;
+use log::{Level, LevelFilter};
use once_cell::sync::Lazy;
use std::io;
use std::path::PathBuf;
@@ -12,6 +14,21 @@ static FIXTURE_DIR: Lazy<PathBuf> =
static GIT_FIXTURE: Lazy<PathBuf> = Lazy::new(|| FIXTURE_DIR.join("git-repo.bundle"));
static HG_FIXTURE: Lazy<PathBuf> = Lazy::new(|| FIXTURE_DIR.join("hg-repo.bundle"));
+static LOGGER: Lazy<()> = Lazy::new(|| {
+ let mut logger = StarshipLogger::default();
+
+ // Don't log to files during tests
+ let nul = if cfg!(windows) { "nul" } else { "/dev/null" };
+ let nul = PathBuf::from(nul);
+
+ // Maxmimum log level
+ log::set_max_level(LevelFilter::Trace);
+ logger.set_log_level(Level::Trace);
+ logger.set_log_file_path(nul);
+
+ log::set_boxed_logger(Box::new(logger)).unwrap();
+});
+
/// Render a specific starship module by name
pub struct ModuleRenderer<'a> {
name: &'a str,
@@ -21,6 +38,9 @@ pub struct ModuleRenderer<'a> {
impl<'a> ModuleRenderer<'a> {
/// Creates a new ModuleRenderer
pub fn new(name: &'a str) -> Self {
+ // Start logger
+ Lazy::force(&LOGGER);
+
let mut context = Context::new_with_dir(clap::ArgMatches::default(), PathBuf::new());
context.shell = Shell::Unknown;
context.config = StarshipConfig { config: None };