#![allow(missing_docs)]
use assert_cmd::Command;
use predicates::prelude::*;
fn ruchy_cmd() -> Command {
assert_cmd::cargo::cargo_bin_cmd!("ruchy")
}
#[test]
fn test_ruchy_no_args_opens_repl() {
let mut cmd = ruchy_cmd();
let assert = cmd.write_stdin("1 + 1\n:quit\n").assert();
assert
.success()
.stdout(predicate::str::contains("Welcome to Ruchy REPL")) .stdout(predicate::str::contains("2")) .stdout(predicate::str::contains("Usage:").not()); }
#[test]
fn test_ruchy_help_flag_shows_help() {
ruchy_cmd()
.arg("--help")
.assert()
.success()
.stdout(predicate::str::contains("Usage:"))
.stdout(predicate::str::contains("Options:"));
}
#[test]
fn test_ruchy_invalid_args_shows_error() {
ruchy_cmd()
.arg("--invalid-flag-that-does-not-exist")
.assert()
.failure()
.stderr(predicate::str::contains("error").or(predicate::str::contains("unknown")));
}
#[test]
fn test_ruchy_repl_explicit_opens_repl() {
let mut cmd = ruchy_cmd();
let assert = cmd.arg("repl").write_stdin(":quit\n").assert();
assert
.success()
.stdout(predicate::str::contains("Ruchy").or(predicate::str::contains(">>")));
}