difftastic/tests/cli.rs

101 lines
2.6 KiB
Rust

use assert_cmd::prelude::*;
use predicates::prelude::*;
use std::process::Command;
#[test]
fn no_such_files() {
let mut cmd = Command::cargo_bin("difft").unwrap();
cmd.arg("no_such_file").arg("no_such_file_either");
cmd.assert().failure().code(2);
}
#[test]
fn has_changes_default_exit_code() {
let mut cmd = Command::cargo_bin("difft").unwrap();
cmd.arg("sample_files/simple_before.js")
.arg("sample_files/simple_after.js");
cmd.assert().success();
}
#[test]
fn has_changes_requested_exit_code() {
let mut cmd = Command::cargo_bin("difft").unwrap();
cmd.arg("--exit-code")
.arg("sample_files/simple_before.js")
.arg("sample_files/simple_after.js");
cmd.assert().failure().code(1);
}
#[test]
fn check_only() {
let mut cmd = Command::cargo_bin("difft").unwrap();
cmd.arg("--check-only")
.arg("sample_files/simple_before.js")
.arg("sample_files/simple_after.js");
let predicate_fn = predicate::str::contains("Has syntactic changes");
cmd.assert().stdout(predicate_fn);
}
#[test]
fn check_only_text_file() {
let mut cmd = Command::cargo_bin("difft").unwrap();
cmd.arg("--check-only")
.arg("sample_files/text_before.txt")
.arg("sample_files/text_after.txt");
let predicate_fn = predicate::str::contains("Has changes");
cmd.assert().stdout(predicate_fn);
}
#[test]
fn makefile_text_as_atom() {
let mut cmd = Command::cargo_bin("difft").unwrap();
cmd.arg("sample_files/cli_tests/makefile_before.mk")
.arg("sample_files/cli_tests/makefile_after.mk");
let predicate_fn = predicate::str::contains("CCFLAGS");
cmd.assert().stdout(predicate_fn);
}
#[test]
fn yaml_parse_errors() {
let mut cmd = Command::cargo_bin("difft").unwrap();
cmd.arg("sample_files/cli_tests/bad_yaml_before.yml")
.arg("sample_files/cli_tests/bad_yaml_after.yml");
let predicate_fn = predicate::str::contains("exceeded DFT_PARSE_ERROR_LIMIT");
cmd.assert().stdout(predicate_fn);
}
#[test]
fn list_languages() {
let mut cmd = Command::cargo_bin("difft").unwrap();
cmd.arg("--list-languages");
let predicate_fn = predicate::str::contains("TOML");
cmd.assert().stdout(predicate_fn);
let predicate_fn = predicate::str::contains("*.toml");
cmd.assert().stdout(predicate_fn);
}
#[test]
fn test_mime_type_false_positive() {
let mut cmd = Command::cargo_bin("difft").unwrap();
cmd.arg("sample_files/cli_tests/x_mod_false_positive.js")
.arg("sample_files/cli_tests/empty.js");
let predicate_fn = predicate::str::contains("JavaScript");
cmd.assert().stdout(predicate_fn);
}