use tectonic::io::testing::SingleInputFileIo;
use tectonic::io::{FilesystemPrimaryInputIo, IoProvider, IoStack, MemoryIo};
use tectonic::TexEngine;
use tectonic_bridge_core::{CoreBridgeLauncher, MinimalDriver};
use tectonic_engine_xetex::TexOutcome;
use tectonic_status_base::NoopStatusBackend;
#[path = "util/mod.rs"]
mod util;
use crate::util::{test_path, Expected, ExpectedFile};
#[test]
fn trip_test() {
util::set_test_root();
let mut p = test_path(&["trip", "trip"]);
p.set_extension("tex");
let mut tex = FilesystemPrimaryInputIo::new(&p);
p.set_extension("tfm");
let mut tfm = SingleInputFileIo::new(&p);
let expected_log = ExpectedFile::read_with_extension(&mut p, "log");
let expected_xdv = ExpectedFile::read_with_extension(&mut p, "xdv");
let expected_fot = ExpectedFile::read_with_extension(&mut p, "fot");
p.set_file_name("tripos");
let expected_os = ExpectedFile::read_with_extension(&mut p, "tex");
let mut mem = MemoryIo::new(true);
let res1 = {
let io = IoStack::new(vec![&mut mem as &mut dyn IoProvider, &mut tex, &mut tfm]);
let mut hooks = MinimalDriver::new(io);
let mut status = NoopStatusBackend::default();
let mut launcher = CoreBridgeLauncher::new(&mut hooks, &mut status);
TexEngine::default()
.halt_on_error_mode(false)
.initex_mode(true)
.process(&mut launcher, "INITEX", "trip")
};
let res2 = {
let io = IoStack::new(vec![&mut mem as &mut dyn IoProvider, &mut tex, &mut tfm]);
let mut hooks = MinimalDriver::new(io);
let mut status = NoopStatusBackend::default();
let mut launcher = CoreBridgeLauncher::new(&mut hooks, &mut status);
TexEngine::default()
.halt_on_error_mode(false)
.initex_mode(false)
.process(&mut launcher, "trip.fmt", "trip")
};
let files = &*mem.files.borrow();
Expected::new()
.res(Ok(TexOutcome::Errors), res1)
.res(Ok(TexOutcome::Errors), res2)
.file(expected_log.collection(files))
.file(expected_xdv.collection(files))
.file(expected_os.collection(files))
.file(expected_fot.data(&files.get("").unwrap().data))
.finish();
}
#[test]
fn etrip_test() {
util::set_test_root();
let mut p = test_path(&["trip", "etrip"]);
p.set_extension("tex");
let mut tex = FilesystemPrimaryInputIo::new(&p);
p.set_extension("tfm");
let mut tfm = SingleInputFileIo::new(&p);
let expected_log = ExpectedFile::read_with_extension(&mut p, "log");
let expected_xdv = ExpectedFile::read_with_extension(&mut p, "xdv");
let expected_fot = ExpectedFile::read_with_extension(&mut p, "fot");
let expected_out = ExpectedFile::read_with_extension(&mut p, "out");
let mut mem = MemoryIo::new(true);
let files = mem.files.clone();
let res1 = {
let io = IoStack::new(vec![&mut mem as &mut dyn IoProvider, &mut tex, &mut tfm]);
let mut hooks = MinimalDriver::new(io);
let mut status = NoopStatusBackend::default();
let mut launcher = CoreBridgeLauncher::new(&mut hooks, &mut status);
TexEngine::default()
.halt_on_error_mode(false)
.initex_mode(true)
.process(&mut launcher, "INITEX", "etrip")
};
let res2 = {
let io = IoStack::new(vec![&mut mem, &mut tex, &mut tfm]);
let mut hooks = MinimalDriver::new(io);
let mut status = NoopStatusBackend::default();
let mut launcher = CoreBridgeLauncher::new(&mut hooks, &mut status);
TexEngine::default()
.halt_on_error_mode(false)
.initex_mode(false)
.process(&mut launcher, "etrip.fmt", "etrip")
};
let files = &*files.borrow();
Expected::new()
.res(Ok(TexOutcome::Errors), res1)
.res(Ok(TexOutcome::Errors), res2)
.file(expected_log.collection(files))
.file(expected_xdv.collection(files))
.file(expected_out.collection(files))
.file(expected_fot.data(&files.get("").unwrap().data))
.finish();
}