1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
//! Interact with `cargo`
#[doc(inline)]
pub use snapbox::cmd::cargo_bin;
/// Prepare an example for testing
///
/// Unlike `cargo_bin!`, this does not inherit all of the current compiler settings. It
/// will match the current target and profile but will not get feature flags. Pass those arguments
/// to the compiler via `args`.
///
/// ## Example
///
/// ```rust,no_run
/// #[test]
/// fn cli_tests() {
/// trycmd_indygreg_fork::TestCases::new()
/// .register_bin("example-fixture", trycmd_indygreg_fork::cargo::compile_example("example-fixture", []))
/// .case("examples/cmd/*.trycmd");
/// }
/// ```
#[cfg(feature = "examples")]
pub fn compile_example<'a>(
target_name: &str,
args: impl IntoIterator<Item = &'a str>,
) -> crate::schema::Bin {
snapbox::cmd::compile_example(target_name, args).into()
}
/// Prepare all examples for testing
///
/// Unlike `cargo_bin!`, this does not inherit all of the current compiler settings. It
/// will match the current target and profile but will not get feature flags. Pass those arguments
/// to the compiler via `args`.
///
/// ## Example
///
/// ```rust,no_run
/// #[test]
/// fn cli_tests() {
/// trycmd_indygreg_fork::TestCases::new()
/// .register_bins(trycmd_indygreg_fork::cargo::compile_examples([]).unwrap())
/// .case("examples/cmd/*.trycmd");
/// }
/// ```
#[cfg(feature = "examples")]
pub fn compile_examples<'a>(
args: impl IntoIterator<Item = &'a str>,
) -> Result<impl Iterator<Item = (String, crate::schema::Bin)>, crate::Error> {
snapbox::cmd::compile_examples(args).map(|i| i.map(|(name, path)| (name, path.into())))
}