#![expect(deprecated)]
use tempfile::TempDir;
use tree_type_proc_macro::tree_type;
tree_type! {
ComprehensiveTest {
#[required]
#[default("content")]
readme,
config(".config"),
license as LicenseFile,
#[default]
gitignore(".gitignore"),
#[required]
manifest("Cargo.toml"),
src/ {
lib,
main
},
build/("target"),
#[symlink(readme)]
link,
[task_id: String]/ as TaskDir {
description,
status
}
}
}
#[test]
fn test_comprehensive_compilation() {
let tempdir = TempDir::new().unwrap();
let root = ComprehensiveTest::new(tempdir.path()).unwrap();
let _readme = root.readme();
let _config = root.config();
let _license = root.license();
let _gitignore = root.gitignore();
let _manifest = root.manifest();
let _src = root.src();
let _build = root.build();
let _link = root.link();
let _task = root.task_id("task-1");
}
#[test]
fn test_setup_and_validation() {
let tempdir = TempDir::new().unwrap();
let root = ComprehensiveTest::new(tempdir.path()).unwrap();
std::fs::create_dir_all(tempdir.path()).unwrap();
std::fs::write(root.manifest().as_path(), "").unwrap();
root.setup().unwrap();
assert!(root.gitignore().exists());
assert!(root.src().exists());
assert!(root.build().exists());
}