mod dummy_book; use crate::dummy_book::DummyBook; use mdbook::config::Config; use mdbook::errors::*; use mdbook::renderer::{RenderContext, Renderer}; use mdbook::MDBook; use std::sync::{Arc, Mutex}; struct Spy(Arc>); #[derive(Debug, Default)] struct Inner { run_count: usize, } impl Renderer for Spy { fn name(&self) -> &str { "dummy" } fn render(&self, _ctx: &RenderContext) -> Result<()> { let mut inner = self.0.lock().unwrap(); inner.run_count += 1; Ok(()) } } #[test] fn mdbook_runs_renderers() { let spy: Arc> = Default::default(); let temp = DummyBook::new().build().unwrap(); let cfg = Config::default(); let mut book = MDBook::load_with_config(temp.path(), cfg).unwrap(); book.with_renderer(Spy(Arc::clone(&spy))); book.build().unwrap(); let inner = spy.lock().unwrap(); assert_eq!(inner.run_count, 1); }