1use crate::color::spec_color;
2use std::error::Error;
3use std::io::{Result, Write};
4use termcolor::{Color, WriteColor};
5
6pub fn write_error<O: Write + WriteColor, E: Error>(output: &mut O, error: &E) -> Result<()> {
7 output.set_color(&spec_color(Color::Red))?;
8 write!(output, "error:")?;
9 output.reset()?;
10 writeln!(output, " {}", error)
11}
12
13#[cfg(test)]
14pub mod tests {
15 use super::*;
16 use crate::testing::{ColoredOuput, OutputChunk};
17 use std::io::{self, ErrorKind};
18
19 #[test]
20 fn write_error() {
21 let mut output = ColoredOuput::new();
22 let error = io::Error::new(ErrorKind::InvalidData, "message");
23 super::write_error(&mut output, &error).unwrap();
24
25 assert_eq!(
26 output.chunks(),
27 &[
28 OutputChunk::color(Color::Red, "error:"),
29 OutputChunk::plain(" message\n")
30 ]
31 );
32 }
33}