mod support;
use assert_cmd::cargo::cargo_bin_cmd;
use std::fs;
use tempfile::TempDir;
#[ignore = "integration test - run with: just test-integration"]
#[test]
fn init_twice_returns_ok() {
let td = TempDir::new().unwrap();
support::git_ok(td.path(), &["init"]);
cargo_bin_cmd!("thoughts")
.current_dir(td.path())
.arg("init")
.assert()
.success();
cargo_bin_cmd!("thoughts")
.current_dir(td.path())
.arg("init")
.assert()
.success();
}
#[ignore = "integration test - run with: just test-integration"]
#[test]
fn incorrect_symlink_requires_force() {
let td = TempDir::new().unwrap();
support::git_ok(td.path(), &["init"]);
cargo_bin_cmd!("thoughts")
.current_dir(td.path())
.arg("init")
.assert()
.success();
#[cfg(unix)]
{
let wrong = td.path().join("thoughts");
std::fs::remove_file(&wrong).unwrap();
std::os::unix::fs::symlink("not-thoughts-data", &wrong).unwrap();
}
cargo_bin_cmd!("thoughts")
.current_dir(td.path())
.arg("init")
.assert()
.failure();
}
#[ignore = "integration test - run with: just test-integration"]
#[test]
fn gitignore_includes_backup_patterns() {
let td = TempDir::new().unwrap();
support::git_ok(td.path(), &["init"]);
cargo_bin_cmd!("thoughts")
.current_dir(td.path())
.arg("init")
.assert()
.success();
let gitignore = td.path().join(".gitignore");
assert!(gitignore.exists());
let content = fs::read_to_string(&gitignore).unwrap();
assert!(content.contains("/.claude/settings.local.json.bak"));
assert!(content.contains("/.claude/settings.local.json.malformed.*.bak"));
}