mod common;
use assert_cmd::prelude::*;
use common::dircat_cmd;
use predicates::prelude::*;
use std::fs;
use tempfile::tempdir;
#[test]
fn test_combine_size_ext_regex() -> Result<(), Box<dyn std::error::Error>> {
let temp = tempdir()?;
let src_dir = temp.path().join("src");
let data_dir = temp.path().join("data");
fs::create_dir_all(&src_dir)?;
fs::create_dir_all(&data_dir)?;
let small_code_content = "fn s(){}";
let large_code_content = "fn l(){}".repeat(1000);
let small_config_content = "[table]";
let small_data_content = "// data";
let other_content = "text";
fs::write(src_dir.join("small_code.rs"), small_code_content)?; fs::write(src_dir.join("large_code.rs"), &large_code_content)?; fs::write(src_dir.join("small_config.toml"), small_config_content)?; fs::write(data_dir.join("small_data.rs"), small_data_content)?; fs::write(data_dir.join("other.txt"), other_content)?;
dircat_cmd()
.arg("-m")
.arg("100") .arg("-e")
.arg("rs") .arg("-r")
.arg("^src/") .current_dir(temp.path())
.assert()
.success()
.stdout(predicate::str::contains("## File: src/small_code.rs")) .stdout(predicate::str::contains(small_code_content)) .stdout(predicate::str::contains("## File: src/large_code.rs").not()) .stdout(predicate::str::contains(&large_code_content).not())
.stdout(predicate::str::contains("## File: src/small_config.toml").not()) .stdout(predicate::str::contains(small_config_content).not())
.stdout(predicate::str::contains("## File: data/small_data.rs").not()) .stdout(predicate::str::contains(small_data_content).not())
.stdout(predicate::str::contains("## File: data/other.txt").not()) .stdout(predicate::str::contains(other_content).not());
temp.close()?;
Ok(())
}