mod common;
use assert_cmd::prelude::*;
use common::dircat_cmd; use predicates::prelude::*;
use std::fs;
use tempfile::tempdir;
#[test]
fn test_no_args_uses_current_dir() -> Result<(), Box<dyn std::error::Error>> {
let temp = tempdir()?;
let file_path = temp.path().join("test.txt");
let file_content = "Hello";
fs::write(&file_path, file_content)?;
dircat_cmd()
.current_dir(temp.path()) .assert()
.success()
.stdout(predicate::str::contains("## File: test.txt")) .stdout(predicate::str::contains("```txt")) .stdout(predicate::str::contains(file_content)) .stdout(predicate::str::contains("```"));
temp.close()?;
Ok(())
}
#[test]
fn test_specific_file_input() -> Result<(), Box<dyn std::error::Error>> {
let temp = tempdir()?;
let file_path = temp.path().join("input.rs");
let file_content = "fn main() {}";
fs::write(&file_path, file_content)?;
dircat_cmd()
.arg(file_path.to_str().unwrap()) .current_dir(temp.path())
.assert()
.success()
.stdout(predicate::str::contains("## File: input.rs")) .stdout(predicate::str::contains("```rs")) .stdout(predicate::str::contains(file_content)) .stdout(predicate::str::contains("```"));
temp.close()?;
Ok(())
}