Skip to content

Commit 665fbb6

Browse files
committed
switch colored to owo-colors
1 parent 0e7aa42 commit 665fbb6

File tree

4 files changed

+67
-104
lines changed

4 files changed

+67
-104
lines changed

Cargo.lock

Lines changed: 47 additions & 89 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"
@@ -30,6 +30,7 @@ prettydiff = { version = "0.6.4", default_features = false }
3030
annotate-snippets = { version = "0.10.0" }
3131
levenshtein = "1.0.5"
3232
spanned = "0.1.6"
33+
supports-color = "2.0"
3334

3435
[dependencies.regex]
3536
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::{Annotation, AnnotationType, Renderer, Slice, Snippet, SourceAnnotation};
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::{
@@ -213,13 +213,12 @@ impl TestStatus for TextTest {
213213
self.text.sender.send(Msg::Inc).unwrap();
214214
self.text.sender.send(Msg::Pop(self.msg(), None)).unwrap();
215215
} else {
216-
let result = match result {
217-
Ok(TestOk::Ok) => "ok".green(),
218-
Err(Errored { .. }) => "FAILED".bright_red().bold(),
219-
Ok(TestOk::Ignored) => "ignored (in-test comment)".yellow(),
220-
};
221216
let old_msg = self.msg();
222-
let msg = format!("... {result}");
217+
let msg = match result {
218+
Ok(TestOk::Ok) => format!("... {}", "ok".green()),
219+
Err(Errored { .. }) => format!("... {}", "FAILED".bright_red().bold()),
220+
Ok(TestOk::Ignored) => format!("... {}", "ignored (in-test comment)".yellow()),
221+
};
223222
if ProgressDrawTarget::stdout().is_hidden() {
224223
println!("{old_msg} {msg}");
225224
std::io::stdout().flush().unwrap();
@@ -592,6 +591,8 @@ fn create_error(
592591
lines: &[(&[(&str, Option<Span>)], NonZeroUsize)],
593592
file: &Path,
594593
) {
594+
use supports_color::Stream;
595+
595596
let source = std::fs::read_to_string(file).unwrap();
596597
let source: Vec<_> = source.split_inclusive('\n').collect();
597598
let file = file.display().to_string();
@@ -639,11 +640,12 @@ fn create_error(
639640
.collect(),
640641
footer: vec![],
641642
};
642-
let renderer = if colored::control::SHOULD_COLORIZE.should_colorize() {
643-
Renderer::styled()
644-
} else {
645-
Renderer::plain()
646-
};
643+
let renderer =
644+
if supports_color::on_cached(Stream::Stdout).map_or(false, |support| support.has_basic) {
645+
Renderer::styled()
646+
} else {
647+
Renderer::plain()
648+
};
647649
println!("{}", renderer.render(msg));
648650
}
649651

0 commit comments

Comments
 (0)