diff --git a/src/main.rs b/src/main.rs index 23dadcd..fd2a846 100644 --- a/src/main.rs +++ b/src/main.rs @@ -156,7 +156,23 @@ fn add_and_commit(repo: &Repository, path: &Path, message: &str) -> Result Result<()> { - let f = match File::create_new( - home_dir() - .context("Failed to find home directory")? - .join(".gitconfig"), - ) { + fn setup_gitconfig(path: &std::path::Path) -> Result<()> { + let git_dir = path.join(".git"); + if !git_dir.exists() { + fs::DirBuilder::new().create(git_dir.clone())? + } + let f = match File::create_new(git_dir.join("config")) { io::Result::Ok(f) => f, io::Result::Err(_err) => return Ok(()), }; @@ -35,20 +35,58 @@ mod integrated_test { .as_bytes(), )?; + eprintln!("{:?}", fs::read_dir(path)?.collect::>()); + eprintln!("{:?}", fs::read_dir(git_dir)?.collect::>()); + Ok(()) } + #[test] + fn git_init() -> Result<()> { + let temp_dir = assert_fs::TempDir::new()?; + setup_gitconfig(temp_dir.path())?; + let repo = git2::Repository::init(temp_dir.path())?; + eprintln!("{:?}", repo.path()); + let git_status = std::process::Command::new("git") + .args(["status"]) + .current_dir(temp_dir.path()) + .spawn() + .context("git status")? + .wait() + .context("didn't complete")?; + eprintln!("{}", git_status); + let git_config = std::process::Command::new("git") + .args(["config", "--list"]) + .current_dir(temp_dir.path()) + .spawn() + .context("git status")? + .wait() + .context("didn't complete")?; + eprintln!("{}", git_config); + let git_config = std::process::Command::new("git") + .args(["config", "--list", "--local"]) + .current_dir(temp_dir.path()) + .spawn() + .context("git status")? + .wait() + .context("didn't complete")?; + eprintln!("{}", git_config); + Err(anyhow::anyhow!("finished (error for debug)")) + } + #[test] fn single_device() -> Result<()> { let config_dir = assert_fs::TempDir::new()?; - setup_gitconfig()?; + setup_gitconfig(&config_dir)?; // init let mut cmd = Command::cargo_bin("xdbm")?; cmd.arg("-c") .arg(config_dir.path()) .arg("init") - .arg("testdev"); + .arg("testdev") + .arg("-vvvv"); cmd.assert().success().stdout(predicate::str::contains("")); + eprintln!("{:?}", fs::read_dir(config_dir.path())?.collect::>()); assert_eq!( std::fs::read_to_string(config_dir.path().join("devname"))?, "testdev\n" @@ -135,7 +173,7 @@ mod integrated_test { fn two_devices_with_same_name() -> Result<()> { // 1st device let config_dir_1 = assert_fs::TempDir::new()?; - setup_gitconfig()?; + setup_gitconfig(&config_dir_1)?; let mut cmd1 = Command::cargo_bin("xdbm")?; cmd1.arg("-c") .arg(config_dir_1.path()) @@ -168,7 +206,7 @@ mod integrated_test { // 2nd device let config_dir_2 = assert_fs::TempDir::new()?; - setup_gitconfig()?; + setup_gitconfig(&config_dir_2)?; let mut cmd2 = Command::cargo_bin("xdbm")?; cmd2.arg("-c") .arg(config_dir_2.path()) @@ -184,7 +222,7 @@ mod integrated_test { fn directory_without_parent() -> Result<()> { // 1st device let config_dir_1 = assert_fs::TempDir::new()?; - setup_gitconfig()?; + setup_gitconfig(&config_dir_1)?; let mut cmd1 = Command::cargo_bin("xdbm")?; cmd1.arg("-c") .arg(config_dir_1.path()) @@ -219,7 +257,7 @@ mod integrated_test { // // devices: first let config_dir_1 = assert_fs::TempDir::new()?; - setup_gitconfig()?; + setup_gitconfig(&config_dir_1)?; let mut cmd1 = Command::cargo_bin("xdbm")?; cmd1.arg("-c") .arg(config_dir_1.path())