use std::collections::HashSet;
use std::default::Default;
use tectonic::engines::NoopIoEventBackend;
use tectonic::io::stdstreams::GenuineStdoutIo;
use tectonic::io::{FilesystemIo, IoProvider, IoStack, MemoryIo};
use tectonic::status::NoopStatusBackend;
use tectonic::BibtexEngine;
#[path = "util/mod.rs"]
mod util;
use crate::util::{test_path, ExpectedInfo};
struct TestCase {
stem: String,
}
impl TestCase {
fn new(stem: &str) -> Self {
TestCase {
stem: stem.to_owned(),
}
}
fn go(&mut self) {
util::set_test_root();
let mut p = test_path(&["bibtex"]);
p.push(&self.stem);
p.set_extension("aux");
let auxname = p.file_name().unwrap().to_str().unwrap().to_owned();
let mut mem = MemoryIo::new(true);
let mut assets = FilesystemIo::new(&test_path(&["bibtex"]), false, false, HashSet::new());
let mut genio = GenuineStdoutIo::new();
let io_list: Vec<&mut dyn IoProvider> = vec![&mut genio, &mut mem, &mut assets];
let mut io = IoStack::new(io_list);
let mut events = NoopIoEventBackend::new();
let mut status = NoopStatusBackend::new();
BibtexEngine::new()
.process(
&mut io,
&mut events,
&mut status,
&auxname,
&Default::default(),
)
.unwrap();
let expected_bbl = ExpectedInfo::read_with_extension(&mut p, "bbl");
let expected_blg = ExpectedInfo::read_with_extension(&mut p, "blg");
let files = mem.files.borrow();
expected_bbl.test_from_collection(&files);
expected_blg.test_from_collection(&files);
}
}
#[test]
fn single_entry() {
TestCase::new("single_entry").go()
}