Skip to content
This repository was archived by the owner on Dec 29, 2021. It is now read-only.
This repository was archived by the owner on Dec 29, 2021. It is now read-only.

Feature proposal: Run examples as top level concept, with compilation profile #96

Description

@azriel91

Hiya, I really like assert_cli, thanks for making such a useful crate!

Since I'm a fan of "automatically test everything, so I know when I break things", I have automated tests for my examples, and control them through arguments or stdin. For example:

extern crate assert_cli;

#[test]
fn example_01_menu() {
    assert_cli::Assert::command(&["cargo", "run", "--example", "01_menu", "--"])
        .with_args(&["--timeout", "0"])
        .unwrap();
}

Now, because cargo run --example example_name always runs the example in the debug profile, to make sure I don't double compile when I'm testing my release profile build, I can do something like this:

extern crate assert_cli;

#[test]
fn example_01_menu() {
    assert_cli::Assert::command(&(example_command("01_menu")))
        .with_args(&["--timeout", "0"])
        .unwrap();
}

fn example_command(example_name: &'static str) -> Vec<&str> {
    let mut command = vec!["cargo", "run"];
    if !cfg!(debug_assertions) {
        command.push("--release");
    }
    command.extend(&["--example", example_name, "--"]);
    command
}

Since I would be replicating this functionality across a number of crates, I was wondering whether you'd like this to go in assert_cli (is it in line with what this crate is intended to cover), otherwise I can make an intermediate crate.


Edit: just noticed the conditional compilation for the profile is also mentioned in #86.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions