use faucet_cli::scaffold::{ConnectorKind, ConnectorScaffold};
use std::process::Command;
fn scaffold_to(dir: &std::path::Path, kind: ConnectorKind, common: bool) -> std::path::PathBuf {
let s = ConnectorScaffold::new("acme", kind, common).unwrap();
for f in s.files() {
let path = dir.join(&f.path);
std::fs::create_dir_all(path.parent().unwrap()).unwrap();
std::fs::write(&path, &f.contents).unwrap();
}
dir.join(s.crate_name())
}
fn cargo_test(manifest: &std::path::Path) {
let status = Command::new(env!("CARGO"))
.args(["test", "--manifest-path"])
.arg(manifest.join("Cargo.toml"))
.status()
.expect("run nested cargo test");
assert!(status.success(), "generated crate failed to build/test");
}
#[test]
#[ignore = "nested cargo build; run with --ignored"]
fn generated_source_crate_builds_and_tests() {
let dir = tempfile::tempdir().unwrap();
let crate_dir = scaffold_to(dir.path(), ConnectorKind::Source, false);
cargo_test(&crate_dir);
}
#[test]
#[ignore = "nested cargo build; run with --ignored"]
fn generated_sink_crate_builds_and_tests() {
let dir = tempfile::tempdir().unwrap();
let crate_dir = scaffold_to(dir.path(), ConnectorKind::Sink, false);
cargo_test(&crate_dir);
}