let cfg = global_config(config)?;
// Please ensure that ignore and hgignore are in sync.
let ignore = [
- "\n",
"/target\n",
"**/*.rs.bk\n",
if !opts.bin { "Cargo.lock\n" } else { "" },
// file will exclude too much. Instead, use regexp-based ignores. See 'hg help ignore' for
// more.
let hgignore = [
- "\n",
"^target/\n",
"glob:*.rs.bk\n",
if !opts.bin { "glob:Cargo.lock\n" } else { "" },
if !fs::metadata(&path.join(".git")).is_ok() {
GitRepo::init(path, config.cwd())?;
}
+ let ignore = match fs::metadata(&path.join(".gitignore")) {
+ Ok(_) => format!("\n{}", ignore),
+ _ => ignore,
+ };
paths::append(&path.join(".gitignore"), ignore.as_bytes())?;
}
VersionControl::Hg => {
if !fs::metadata(&path.join(".hg")).is_ok() {
HgRepo::init(path, config.cwd())?;
}
+ let hgignore = match fs::metadata(&path.join(".hgignore")) {
+ Ok(_) => format!("\n{}", hgignore),
+ _ => hgignore,
+ };
paths::append(&path.join(".hgignore"), hgignore.as_bytes())?;
}
VersionControl::Pijul => {
if !fs::metadata(&path.join(".pijul")).is_ok() {
PijulRepo::init(path, config.cwd())?;
}
+ let ignore = match fs::metadata(&path.join(".ignore")) {
+ Ok(_) => format!("\n{}", ignore),
+ _ => ignore,
+ };
paths::append(&path.join(".ignore"), ignore.as_bytes())?;
}
VersionControl::Fossil => {
}
#[test]
-fn gitignore_added_newline_if_required() {
+fn gitignore_added_newline_in_existing() {
fs::create_dir(&paths::root().join(".git")).unwrap();
File::create(&paths::root().join(".gitignore"))
}
#[test]
-fn mercurial_added_newline_if_required() {
+fn gitignore_no_newline_in_new() {
+ fs::create_dir(&paths::root().join(".git")).unwrap();
+
+ assert_that(
+ cargo_process("init").arg("--lib").env("USER", "foo"),
+ execs().with_status(0),
+ );
+
+ assert_that(&paths::root().join(".gitignore"), existing_file());
+
+ let mut contents = String::new();
+ File::open(&paths::root().join(".gitignore"))
+ .unwrap()
+ .read_to_string(&mut contents)
+ .unwrap();
+ assert!(!contents.starts_with("\n"));
+}
+
+#[test]
+fn mercurial_added_newline_in_existing() {
fs::create_dir(&paths::root().join(".hg")).unwrap();
File::create(&paths::root().join(".hgignore"))
assert!(contents.starts_with("first\n"));
}
+#[test]
+fn mercurial_no_newline_in_new() {
+ fs::create_dir(&paths::root().join(".hg")).unwrap();
+
+ assert_that(
+ cargo_process("init").arg("--lib").env("USER", "foo"),
+ execs().with_status(0),
+ );
+
+ assert_that(&paths::root().join(".hgignore"), existing_file());
+
+ let mut contents = String::new();
+ File::open(&paths::root().join(".hgignore"))
+ .unwrap()
+ .read_to_string(&mut contents)
+ .unwrap();
+ assert!(!contents.starts_with("\n"));
+}
+
#[test]
fn cargo_lock_gitignored_if_lib1() {
fs::create_dir(&paths::root().join(".git")).unwrap();