summaryrefslogtreecommitdiffstats
path: root/vendor/mdbook/tests/build_process.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/mdbook/tests/build_process.rs')
-rw-r--r--vendor/mdbook/tests/build_process.rs78
1 files changed, 78 insertions, 0 deletions
diff --git a/vendor/mdbook/tests/build_process.rs b/vendor/mdbook/tests/build_process.rs
new file mode 100644
index 000000000..10d0b4a9a
--- /dev/null
+++ b/vendor/mdbook/tests/build_process.rs
@@ -0,0 +1,78 @@
+mod dummy_book;
+
+use crate::dummy_book::DummyBook;
+use mdbook::book::Book;
+use mdbook::config::Config;
+use mdbook::errors::*;
+use mdbook::preprocess::{Preprocessor, PreprocessorContext};
+use mdbook::renderer::{RenderContext, Renderer};
+use mdbook::MDBook;
+use std::sync::{Arc, Mutex};
+
+struct Spy(Arc<Mutex<Inner>>);
+
+#[derive(Debug, Default)]
+struct Inner {
+ run_count: usize,
+ rendered_with: Vec<String>,
+}
+
+impl Preprocessor for Spy {
+ fn name(&self) -> &str {
+ "dummy"
+ }
+
+ fn run(&self, ctx: &PreprocessorContext, book: Book) -> Result<Book> {
+ let mut inner = self.0.lock().unwrap();
+ inner.run_count += 1;
+ inner.rendered_with.push(ctx.renderer.clone());
+ Ok(book)
+ }
+}
+
+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_preprocessors() {
+ let spy: Arc<Mutex<Inner>> = 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_preprocessor(Spy(Arc::clone(&spy)));
+ book.build().unwrap();
+
+ let inner = spy.lock().unwrap();
+ assert_eq!(inner.run_count, 1);
+ assert_eq!(inner.rendered_with.len(), 1);
+ assert_eq!(
+ "html", inner.rendered_with[0],
+ "We should have been run with the default HTML renderer"
+ );
+}
+
+#[test]
+fn mdbook_runs_renderers() {
+ let spy: Arc<Mutex<Inner>> = 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);
+}