Skip to content

Commit 3733106

Browse files
committed
switch colored to owo-colors
1 parent 67135b2 commit 3733106

File tree

4 files changed

+46
-101
lines changed

4 files changed

+46
-101
lines changed

Cargo.lock

Lines changed: 26 additions & 86 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ doctest = false # but no doc tests
1313

1414
[dependencies]
1515
rustc_version = "0.4"
16-
colored = "2"
16+
owo-colors = "3.5"
1717
lazy_static = "1.4.0"
1818
serde = { version = "1.0", features = ["derive"] }
1919
serde_json = "1.0"
@@ -29,6 +29,7 @@ prettydiff = { version = "0.7", default_features = false }
2929
annotate-snippets = { version = "0.11.2" }
3030
levenshtein = "1.0.5"
3131
spanned = "0.2.1"
32+
supports-color = "3.0"
3233

3334
[dependencies.regex]
3435
version = "1.5.5"

src/diff.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use colored::*;
1+
use owo_colors::OwoColorize;
22
use prettydiff::{basic::DiffOp, basic::DiffOp::*, diff_lines, diff_words};
33

44
/// How many lines of context are displayed around the actual diffs
@@ -52,10 +52,12 @@ fn row(row: DiffOp<'_, &str>) {
5252
}
5353

5454
fn print_line_diff(l: &str, r: &str) {
55+
use supports_color::Stream;
56+
5557
let diff = diff_words(l, r);
5658
let diff = diff.diff();
5759
if has_both_insertions_and_deletions(&diff)
58-
|| !colored::control::SHOULD_COLORIZE.should_colorize()
60+
|| !supports_color::on_cached(Stream::Stdout).map_or(false, |support| support.has_basic)
5961
{
6062
// The line both adds and removes chars, print both lines, but highlight their differences instead of
6163
// drawing the entire line in red/green.

src/status_emitter.rs

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
33
use annotate_snippets::{Renderer, Snippet};
44
use bstr::ByteSlice;
5-
use colored::Colorize;
65
use crossbeam_channel::{Sender, TryRecvError};
76
use indicatif::{MultiProgress, ProgressBar, ProgressDrawTarget, ProgressStyle};
7+
use owo_colors::OwoColorize;
88
use spanned::Span;
99

1010
use crate::{
@@ -305,13 +305,12 @@ impl TestStatus for TextTest {
305305
self.text.sender.send(Msg::Inc).unwrap();
306306
self.text.sender.send(Msg::Pop(self.msg(), None)).unwrap();
307307
} else {
308-
let result = match result {
309-
Ok(TestOk::Ok) => "ok".green(),
310-
Err(Errored { .. }) => "FAILED".bright_red().bold(),
311-
Ok(TestOk::Ignored) => "ignored (in-test comment)".yellow(),
312-
};
313308
let old_msg = self.msg();
314-
let msg = format!("... {result}");
309+
let msg = match result {
310+
Ok(TestOk::Ok) => format!("... {}", "ok".green()),
311+
Err(Errored { .. }) => format!("... {}", "FAILED".bright_red().bold()),
312+
Ok(TestOk::Ignored) => format!("... {}", "ignored (in-test comment)".yellow()),
313+
};
315314
if ProgressDrawTarget::stdout().is_hidden() {
316315
println!("{old_msg} {msg}");
317316
std::io::stdout().flush().unwrap();
@@ -705,6 +704,8 @@ fn create_error(
705704
lines: &[(&[(&str, Option<Span>)], NonZeroUsize)],
706705
file: &Path,
707706
) {
707+
use supports_color::Stream;
708+
708709
let source = std::fs::read_to_string(file).unwrap();
709710
let source: Vec<_> = source.split_inclusive('\n').collect();
710711
let file = file.display().to_string();
@@ -744,11 +745,12 @@ fn create_error(
744745
}));
745746
msg = msg.snippet(snippet);
746747
}
747-
let renderer = if colored::control::SHOULD_COLORIZE.should_colorize() {
748-
Renderer::styled()
749-
} else {
750-
Renderer::plain()
751-
};
748+
let renderer =
749+
if supports_color::on_cached(Stream::Stdout).map_or(false, |support| support.has_basic) {
750+
Renderer::styled()
751+
} else {
752+
Renderer::plain()
753+
};
752754
println!("{}", renderer.render(msg));
753755
}
754756

0 commit comments

Comments
 (0)