extern crate tempdir; extern crate git_gsub; use std::env; use std::fs::File; use std::path::Path; use tempdir::TempDir; use std::io::prelude::*; use std::process::Command; fn assert_substitution(from: &str, to: &str) { let tmpdir = TempDir::new("git-gsub-test").unwrap(); let tmp_path_str: &str = tmpdir.path().to_str().unwrap(); env::set_current_dir(&tmp_path_str).unwrap(); let path = Path::new("foo.txt"); let mut file = File::create(&path).unwrap(); file.write_all("foo".as_bytes()).unwrap(); Command::new("git") .arg("init") .status() .unwrap_or_else(|e| { panic!("failed to execute process: {}", e) }); Command::new("git") .args(&["add", "."]) .status() .unwrap_or_else(|e| { panic!("failed to execute process: {}", e) }); let args = vec!["git_gsub", from, to].iter().map(|c| c.to_string()).collect::>(); git_gsub::substitute(&args); let mut file = File::open(&path).unwrap(); let mut s = String::new(); file.read_to_string(&mut s).unwrap(); println!("{:?}", s); assert_eq!(s, to); } #[test] fn it_substitutes() { assert_substitution("foo", "bar"); } #[test] fn it_escapes_well() { assert_substitution("

", "

"); }