use assert_cmd::prelude::*;
use predicates::prelude::*;
use std::process::Command;
use assert_fs::prelude::{FileWriteStr, PathAssert, PathChild};
#[test]
fn hello_world_example() {
let test_dir = assert_fs::TempDir::new().unwrap();
std::env::set_current_dir(&test_dir).unwrap();
let project_name = "hello_world";
let project_dir = test_dir.child(project_name);
#[allow(deprecated)]
let mut cmd = Command::cargo_bin("nargo").unwrap();
cmd.arg("new").arg(project_name);
cmd.assert().success().stdout(predicate::str::contains(format!(
"Project successfully created! It is located at {}",
std::env::current_dir().unwrap().join(project_name).display()
)));
project_dir.child("src").assert(predicate::path::is_dir());
project_dir.child("Nargo.toml").assert(predicate::path::is_file());
std::env::set_current_dir(&project_dir).unwrap();
#[allow(deprecated)]
let mut cmd = Command::cargo_bin("nargo").unwrap();
cmd.arg("check");
cmd.assert().success().stdout(predicate::str::is_empty());
project_dir.child("Prover.toml").assert(predicate::path::is_file());
project_dir.child("Prover.toml").write_str("x = 1\ny = 2").unwrap();
#[allow(deprecated)]
let mut cmd = Command::cargo_bin("nargo").unwrap();
cmd.arg("execute");
cmd.assert().success();
}