32 lines
964 B
Rust
32 lines
964 B
Rust
use codespan_reporting::diagnostic::Diagnostic;
|
|
use codespan_reporting::files::Files;
|
|
use codespan_reporting::term::{emit, Config};
|
|
use termcolor::{Buffer, WriteColor};
|
|
|
|
mod color_buffer;
|
|
|
|
use self::color_buffer::ColorBuffer;
|
|
|
|
pub struct TestData<'files, F: Files<'files>> {
|
|
pub files: F,
|
|
pub diagnostics: Vec<Diagnostic<F::FileId>>,
|
|
}
|
|
|
|
impl<'files, F: Files<'files>> TestData<'files, F> {
|
|
fn emit<W: WriteColor>(&'files self, mut writer: W, config: &Config) -> W {
|
|
for diagnostic in &self.diagnostics {
|
|
emit(&mut writer, config, &self.files, &diagnostic).unwrap();
|
|
}
|
|
writer
|
|
}
|
|
|
|
pub fn emit_color(&'files self, config: &Config) -> String {
|
|
self.emit(ColorBuffer::new(), &config).into_string()
|
|
}
|
|
|
|
pub fn emit_no_color(&'files self, config: &Config) -> String {
|
|
let buffer = self.emit(Buffer::no_color(), &config);
|
|
String::from_utf8_lossy(buffer.as_slice()).into_owned()
|
|
}
|
|
}
|