use assert_cmd::prelude::*;
use predicates::prelude::*;
use std::fs::{self, File};
use std::io::Write;
use std::process::Command;
use tempfile::tempdir;
const BIN_NAME: &str = "depup";
#[test]
fn test_version_flag() {
let mut cmd = Command::cargo_bin(BIN_NAME).unwrap();
cmd.arg("--version");
cmd.assert()
.success()
.stdout(predicate::str::contains(env!("CARGO_PKG_VERSION")));
}
#[test]
fn test_help_flag() {
let mut cmd = Command::cargo_bin(BIN_NAME).unwrap();
cmd.arg("--help");
cmd.assert()
.success()
.stdout(predicate::str::contains("Path to the project directory"))
.stdout(predicate::str::contains("--no-backup"));
}
#[test]
fn test_custom_path() {
let temp_dir = tempdir().unwrap();
let temp_path = temp_dir.path();
let package_json = temp_path.join("package.json");
let mut file = File::create(&package_json).unwrap();
writeln!(file, "{{").unwrap();
writeln!(file, " \"name\": \"test-package\",").unwrap();
writeln!(file, " \"version\": \"1.0.0\",").unwrap();
writeln!(file, " \"dependencies\": {{}}").unwrap();
writeln!(file, "}}").unwrap();
fs::create_dir(temp_path.join(".git")).unwrap();
let mut cmd = Command::cargo_bin(BIN_NAME).unwrap();
cmd.arg(temp_path.to_str().unwrap()).arg("--verbose");
cmd.assert()
.success()
.stdout(predicate::str::contains("Starting dependencies update"));
}
#[test]
fn test_no_backup_flag() {
let temp_dir = tempdir().unwrap();
let temp_path = temp_dir.path();
let package_json = temp_path.join("package.json");
let mut file = File::create(&package_json).unwrap();
writeln!(file, "{{").unwrap();
writeln!(file, " \"name\": \"test-package\",").unwrap();
writeln!(file, " \"version\": \"1.0.0\",").unwrap();
writeln!(file, " \"dependencies\": {{}}").unwrap();
writeln!(file, "}}").unwrap();
let mut cmd = Command::cargo_bin(BIN_NAME).unwrap();
cmd.arg(temp_path.to_str().unwrap()).arg("--no-backup");
cmd.assert().success();
assert!(!temp_path.join("package.json.backup").exists());
}