2018-01-07 14:10:48 +00:00
|
|
|
//! Integration tests to make sure alternate backends work.
|
|
|
|
|
|
|
|
extern crate mdbook;
|
|
|
|
extern crate tempdir;
|
|
|
|
|
2018-01-14 11:14:27 +00:00
|
|
|
use std::fs::File;
|
2018-01-07 14:10:48 +00:00
|
|
|
use tempdir::TempDir;
|
|
|
|
use mdbook::config::Config;
|
|
|
|
use mdbook::MDBook;
|
2018-01-14 11:14:27 +00:00
|
|
|
use mdbook::renderer::RenderContext;
|
2018-01-07 14:10:48 +00:00
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn passing_alternate_backend() {
|
|
|
|
let (md, _temp) = dummy_book_with_backend("passing", "true");
|
|
|
|
|
|
|
|
md.build().unwrap();
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn failing_alternate_backend() {
|
|
|
|
let (md, _temp) = dummy_book_with_backend("failing", "false");
|
|
|
|
|
|
|
|
md.build().unwrap_err();
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn alternate_backend_with_arguments() {
|
|
|
|
let (md, _temp) = dummy_book_with_backend("arguments", "echo Hello World!");
|
|
|
|
|
|
|
|
md.build().unwrap();
|
|
|
|
}
|
|
|
|
|
2018-01-14 11:14:27 +00:00
|
|
|
#[test]
|
|
|
|
fn backends_receive_render_context_via_stdin() {
|
|
|
|
let temp = TempDir::new("output").unwrap();
|
|
|
|
let out_file = temp.path().join("out.txt");
|
|
|
|
let cmd = format!("tee {}", out_file.display());
|
|
|
|
|
|
|
|
let (md, _temp) = dummy_book_with_backend("cat-to-file", &cmd);
|
|
|
|
|
|
|
|
assert!(!out_file.exists());
|
|
|
|
md.build().unwrap();
|
|
|
|
assert!(out_file.exists());
|
|
|
|
|
|
|
|
let got = RenderContext::from_json(File::open(&out_file).unwrap());
|
|
|
|
assert!(got.is_ok());
|
|
|
|
}
|
|
|
|
|
2018-01-07 14:10:48 +00:00
|
|
|
fn dummy_book_with_backend(name: &str, command: &str) -> (MDBook, TempDir) {
|
|
|
|
let temp = TempDir::new("mdbook").unwrap();
|
|
|
|
|
|
|
|
let mut config = Config::default();
|
|
|
|
config
|
|
|
|
.set(format!("output.{}.command", name), command)
|
|
|
|
.unwrap();
|
|
|
|
|
|
|
|
let md = MDBook::init(temp.path())
|
|
|
|
.with_config(config)
|
|
|
|
.build()
|
|
|
|
.unwrap();
|
|
|
|
|
|
|
|
(md, temp)
|
|
|
|
}
|