From 82000d917f11d3e8424c7da6f4fabef419c4e5ba Mon Sep 17 00:00:00 2001 From: Eric Huss Date: Mon, 21 Apr 2025 19:44:23 -0700 Subject: [PATCH] Migrate alternate_backend_with_arguments to BookTest --- tests/alternative_backends.rs | 7 ----- tests/testsuite/renderer.rs | 31 +++++++++++++++++++ .../renderer_with_arguments/book.toml | 3 ++ .../renderer_with_arguments/src/SUMMARY.md | 0 4 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 tests/testsuite/renderer/renderer_with_arguments/book.toml create mode 100644 tests/testsuite/renderer/renderer_with_arguments/src/SUMMARY.md diff --git a/tests/alternative_backends.rs b/tests/alternative_backends.rs index 85f0360d..f9080285 100644 --- a/tests/alternative_backends.rs +++ b/tests/alternative_backends.rs @@ -6,13 +6,6 @@ use std::fs; use std::path::Path; use tempfile::{Builder as TempFileBuilder, TempDir}; -#[test] -fn alternate_backend_with_arguments() { - let (md, _temp) = dummy_book_with_backend("arguments", "echo Hello World!", false); - - md.build().unwrap(); -} - #[test] fn backends_receive_render_context_via_stdin() { use mdbook::renderer::RenderContext; diff --git a/tests/testsuite/renderer.rs b/tests/testsuite/renderer.rs index e53a920f..3d0dfe95 100644 --- a/tests/testsuite/renderer.rs +++ b/tests/testsuite/renderer.rs @@ -105,3 +105,34 @@ fn missing_optional_not_fatal() { "#]]); }); } + +// Command can include arguments. +#[test] +fn renderer_with_arguments() { + BookTest::from_dir("renderer/renderer_with_arguments") + .rust_program( + "arguments", + r#" + fn main() { + let args: Vec<_> = std::env::args().skip(1).collect(); + assert_eq!(args, &["arg1", "arg2"]); + println!("Hello World!"); + use std::io::Read; + let mut s = String::new(); + std::io::stdin().read_to_string(&mut s).unwrap(); + } + "#, + ) + .run("build", |cmd| { + cmd.expect_stdout(str![[r#" +Hello World! + +"#]]) + .expect_stderr(str![[r#" +[TIMESTAMP] [INFO] (mdbook::book): Book building has started +[TIMESTAMP] [INFO] (mdbook::book): Running the arguments backend +[TIMESTAMP] [INFO] (mdbook::renderer): Invoking the "arguments" renderer + +"#]]); + }); +} diff --git a/tests/testsuite/renderer/renderer_with_arguments/book.toml b/tests/testsuite/renderer/renderer_with_arguments/book.toml new file mode 100644 index 00000000..7722c529 --- /dev/null +++ b/tests/testsuite/renderer/renderer_with_arguments/book.toml @@ -0,0 +1,3 @@ +[output.arguments] +command = "./arguments arg1 arg2" + diff --git a/tests/testsuite/renderer/renderer_with_arguments/src/SUMMARY.md b/tests/testsuite/renderer/renderer_with_arguments/src/SUMMARY.md new file mode 100644 index 00000000..e69de29b