Skip to content

Latest commit

 

History

History
71 lines (56 loc) · 1.63 KB

File metadata and controls

71 lines (56 loc) · 1.63 KB

Integration tests

Files in this folder can test comtrya at a very high level. The binary is built and then executed as a command. As such things like #[cfg(test)] no longer kick in. While it might be annoying, it does mean that we exercise comtrya just as a user would!

Setup

You will notice a utils.rs file that is not a binary. It's how we share useful boilerplate code between the tests in this folder. If you add a new file, you'll have to make to bring in utils.rs like so:

use utils::*;

#[path = "./utils.rs"]
mod utils;

#[test]
fn your_thing() {
}

that setup bring in dir and f function to crete a nested directory structures:

let t = TempDir::new("comtrya").expect("could not create tempdir");
let path = t.into_path();

dir(
    "directory",
    vec![dir(
        "copy",
        vec![
            dir(
                "files",
                vec![dir(
                    "mydir",
                    vec![
                        f("file-a", "some content a"),
                        f("file-b", "some other thing"),
                    ],
                )],
            ),
            f(
                "main.yaml",
                r#"
actions:
  - action: directory.copy
    from: mydir
    to: mydircopy
"#,
            ),
        ],
    )],
).create_in(&path.clone())

Once you have your tempdir setup as you want, you can change into and run comtrya:

let assert = cd(path).run("comtrya --help --no-color")

The resulting assert object is from assert_cmd and can be used to assert on stdout, stderr and other bits.

Happy testing!