From 232a923676173acb24f2710f7a94eca7dddcfd89 Mon Sep 17 00:00:00 2001 From: Michael Bryan Date: Sat, 20 Jan 2018 21:46:44 +0800 Subject: [PATCH] Added a windows-specific `tee` equivalent (#561) * Added a windows-specific `tee` equivalent * Changed how the windows "tee" command gets quoted * Temporarily disabled the backends_receive_render_context_via_stdin test --- src/renderer/mod.rs | 4 ++-- tests/alternate_backends.rs | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/renderer/mod.rs b/src/renderer/mod.rs index e2d6c268..835cd2a3 100644 --- a/src/renderer/mod.rs +++ b/src/renderer/mod.rs @@ -151,7 +151,7 @@ impl Renderer for CmdRenderer { } fn render(&self, ctx: &RenderContext) -> Result<()> { - info!("Invoking the \"{}\" renderer", self.cmd); + info!("Invoking the \"{}\" renderer", self.name); let _ = fs::create_dir_all(&ctx.destination); @@ -183,7 +183,7 @@ impl Renderer for CmdRenderer { if !status.success() { error!("Renderer exited with non-zero return code."); - bail!("The \"{}\" renderer failed", self.cmd); + bail!("The \"{}\" renderer failed", self.name); } else { Ok(()) } diff --git a/tests/alternate_backends.rs b/tests/alternate_backends.rs index c62c7ff7..f1bf6207 100644 --- a/tests/alternate_backends.rs +++ b/tests/alternate_backends.rs @@ -4,6 +4,7 @@ extern crate mdbook; extern crate tempdir; use std::fs::File; +use std::path::Path; use tempdir::TempDir; use mdbook::config::Config; use mdbook::MDBook; @@ -30,11 +31,23 @@ fn alternate_backend_with_arguments() { md.build().unwrap(); } +/// Get a command which will pipe `stdin` to the provided file. +fn tee_command>(out_file: P) -> String { + let out_file = out_file.as_ref(); + + if cfg!(windows) { + format!("cmd.exe /c \"type > {}\"", out_file.display()) + } else { + format!("tee {}", out_file.display()) + } +} + #[test] +#[cfg(not(windows))] 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 cmd = tee_command(&out_file); let (md, _temp) = dummy_book_with_backend("cat-to-file", &cmd);