use std::fs;
use protofetch::{LockMode, Protofetch};
use tempfile::TempDir;
#[test]
fn empty_descriptor_runs_through_parallel_pipeline() {
let project = TempDir::new().unwrap();
let cache = TempDir::new().unwrap();
fs::write(
project.path().join("protofetch.toml"),
r#"name = "smoke_test"
"#,
)
.unwrap();
let pf = Protofetch::builder()
.root(project.path().to_path_buf())
.cache_directory(cache.path().to_path_buf())
.jobs(8)
.copy_jobs(4)
.try_build()
.unwrap();
pf.fetch(LockMode::Update).unwrap();
let lock = fs::read_to_string(project.path().join("protofetch.lock")).unwrap();
assert!(lock.contains("version = 2"), "got lockfile: {}", lock);
assert!(project.path().join("proto_src").is_dir());
}
#[test]
fn jobs_one_falls_back_to_sequential_behavior() {
let project = TempDir::new().unwrap();
let cache = TempDir::new().unwrap();
fs::write(
project.path().join("protofetch.toml"),
r#"name = "smoke_test"
"#,
)
.unwrap();
let pf = Protofetch::builder()
.root(project.path().to_path_buf())
.cache_directory(cache.path().to_path_buf())
.jobs(1)
.copy_jobs(1)
.try_build()
.unwrap();
pf.fetch(LockMode::Update).unwrap();
pf.lock(LockMode::Locked).unwrap();
}