#![allow(missing_docs)]
#![allow(clippy::doc_markdown)]
use assert_cmd::Command;
use std::fs;
use std::path::Path;
fn ruchy_cmd() -> Command {
assert_cmd::cargo::cargo_bin_cmd!("ruchy")
}
#[test]
fn test_file_exists_true() {
let test_file = "/tmp/ruchy_test_exists.txt";
fs::write(test_file, "test content").unwrap();
let code = format!(r#"println(file_exists("{test_file}"))"#);
ruchy_cmd()
.arg("-e")
.arg(&code)
.assert()
.success()
.stdout("true\n");
let _ = fs::remove_file(test_file);
}
#[test]
fn test_file_exists_false() {
let code = r#"println(file_exists("/tmp/nonexistent_file_ruchy_test_12345.txt"))"#;
ruchy_cmd()
.arg("-e")
.arg(code)
.assert()
.success()
.stdout("false\n");
}
#[test]
fn test_append_file_to_existing() {
let test_file = "/tmp/ruchy_test_append.txt";
fs::write(test_file, "line1\n").unwrap();
let code = format!(r#"append_file("{test_file}", "line2\n")"#);
ruchy_cmd().arg("-e").arg(&code).assert().success();
let content = fs::read_to_string(test_file).unwrap();
assert_eq!(content, "line1\nline2\n");
let _ = fs::remove_file(test_file);
}
#[test]
fn test_append_file_creates_new() {
let test_file = "/tmp/ruchy_test_append_new.txt";
let _ = fs::remove_file(test_file);
let code = format!(r#"append_file("{test_file}", "new content\n")"#);
ruchy_cmd().arg("-e").arg(&code).assert().success();
let content = fs::read_to_string(test_file).unwrap();
assert_eq!(content, "new content\n");
let _ = fs::remove_file(test_file);
}
#[test]
fn test_delete_file_exists() {
let test_file = "/tmp/ruchy_test_delete.txt";
fs::write(test_file, "to be deleted").unwrap();
let code = format!(r#"delete_file("{test_file}")"#);
ruchy_cmd().arg("-e").arg(&code).assert().success();
assert!(!Path::new(test_file).exists());
}
#[test]
fn test_delete_file_nonexistent() {
let test_file = "/tmp/ruchy_test_delete_nonexistent.txt";
let _ = fs::remove_file(test_file);
let code = format!(r#"delete_file("{test_file}")"#);
ruchy_cmd().arg("-e").arg(&code).assert().success();
}