public virtual void WorkingDirectoryModifyIndexChanged()
        {
            WriteTrashFile("file.txt", "content2");
            git.Add().AddFilepattern("file.txt").Call();
            WriteTrashFile("file.txt", "content3");
            RevCommit stashed = git.StashCreate().Call();

            NUnit.Framework.Assert.IsNotNull(stashed);
            NUnit.Framework.Assert.AreEqual("content", Read(committedFile));
            ObjectId unstashed = git.StashApply().Call();

            NUnit.Framework.Assert.AreEqual(stashed, unstashed);
            NUnit.Framework.Assert.AreEqual("content3", Read(committedFile));
            Status status = git.Status().Call();

            NUnit.Framework.Assert.IsTrue(status.GetAdded().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetConflicting().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetMissing().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetRemoved().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetUntracked().IsEmpty());
            NUnit.Framework.Assert.AreEqual(1, status.GetChanged().Count);
            NUnit.Framework.Assert.IsTrue(status.GetChanged().Contains(PATH));
            NUnit.Framework.Assert.AreEqual(1, status.GetModified().Count);
            NUnit.Framework.Assert.IsTrue(status.GetModified().Contains(PATH));
        }
Esempio n. 2
0
        public virtual void TestDifferentStates()
        {
            Git git = new Git(db);

            WriteTrashFile("a", "content of a");
            WriteTrashFile("b", "content of b");
            WriteTrashFile("c", "content of c");
            git.Add().AddFilepattern("a").AddFilepattern("b").Call();
            Status stat = git.Status().Call();

            NUnit.Framework.Assert.AreEqual(Set("a", "b"), Set(stat.GetAdded()));
            NUnit.Framework.Assert.AreEqual(0, stat.GetChanged().Count);
            NUnit.Framework.Assert.AreEqual(0, stat.GetMissing().Count);
            NUnit.Framework.Assert.AreEqual(0, stat.GetModified().Count);
            NUnit.Framework.Assert.AreEqual(0, stat.GetRemoved().Count);
            NUnit.Framework.Assert.AreEqual(Set("c"), Set(stat.GetUntracked()));
            git.Commit().SetMessage("initial").Call();
            WriteTrashFile("a", "modified content of a");
            WriteTrashFile("b", "modified content of b");
            WriteTrashFile("d", "content of d");
            git.Add().AddFilepattern("a").AddFilepattern("d").Call();
            WriteTrashFile("a", "again modified content of a");
            stat = git.Status().Call();
            NUnit.Framework.Assert.AreEqual(Set("d"), Set(stat.GetAdded()));
            NUnit.Framework.Assert.AreEqual(Set("a"), Set(stat.GetChanged()));
            NUnit.Framework.Assert.AreEqual(0, stat.GetMissing().Count);
            NUnit.Framework.CollectionAssert.AreEquivalent(Set("b", "a"), Set(stat.GetModified()));
            NUnit.Framework.Assert.AreEqual(0, stat.GetRemoved().Count);
            NUnit.Framework.Assert.AreEqual(Set("c"), Set(stat.GetUntracked()));
            git.Add().AddFilepattern(".").Call();
            git.Commit().SetMessage("second").Call();
            stat = git.Status().Call();
            NUnit.Framework.Assert.AreEqual(0, stat.GetAdded().Count);
            NUnit.Framework.Assert.AreEqual(0, stat.GetChanged().Count);
            NUnit.Framework.Assert.AreEqual(0, stat.GetMissing().Count);
            NUnit.Framework.Assert.AreEqual(0, stat.GetModified().Count);
            NUnit.Framework.Assert.AreEqual(0, stat.GetRemoved().Count);
            NUnit.Framework.Assert.AreEqual(0, stat.GetUntracked().Count);
            DeleteTrashFile("a");
            NUnit.Framework.Assert.IsFalse(new FilePath(git.GetRepository().WorkTree, "a").Exists
                                               ());
            git.Add().AddFilepattern("a").SetUpdate(true).Call();
            WriteTrashFile("a", "recreated content of a");
            stat = git.Status().Call();
            NUnit.Framework.Assert.AreEqual(0, stat.GetAdded().Count);
            NUnit.Framework.Assert.AreEqual(0, stat.GetChanged().Count);
            NUnit.Framework.Assert.AreEqual(0, stat.GetMissing().Count);
            NUnit.Framework.Assert.AreEqual(0, stat.GetModified().Count);
            NUnit.Framework.Assert.AreEqual(Set("a"), Set(stat.GetRemoved()));
            NUnit.Framework.Assert.AreEqual(Set("a"), Set(stat.GetUntracked()));
            git.Commit().SetMessage("t").Call();
        }
Esempio n. 3
0
        /// <exception cref="System.Exception"></exception>
        public virtual void TestCheckoutMixedNewlines()
        {
            // "git config core.autocrlf true"
            StoredConfig config = git.GetRepository().GetConfig();

            config.SetBoolean(ConfigConstants.CONFIG_CORE_SECTION, null, ConfigConstants.CONFIG_KEY_AUTOCRLF
                              , true);
            config.Save();
            // edit <FILE1>
            FilePath written = WriteTrashFile(FILE1, "4\r\n4");

            NUnit.Framework.Assert.AreEqual("4\r\n4", Read(written));
            // "git add <FILE1>"
            git.Add().AddFilepattern(FILE1).Call();
            // "git commit -m 'CRLF'"
            git.Commit().SetMessage("CRLF").Call();
            // edit <FILE1>
            written = WriteTrashFile(FILE1, "4\n4");
            NUnit.Framework.Assert.AreEqual("4\n4", Read(written));
            // "git add <FILE1>"
            git.Add().AddFilepattern(FILE1).Call();
            // "git checkout -- <FILE1>
            git.Checkout().AddPath(FILE1).Call();
            // "git status" => clean
            Status status = git.Status().Call();

            NUnit.Framework.Assert.AreEqual(0, status.GetAdded().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetChanged().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetConflicting().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetMissing().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetModified().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetRemoved().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetUntracked().Count);
        }
        public virtual void WorkingDirectoryEditPreCommit()
        {
            WriteTrashFile(PATH, "content2");
            RevCommit stashed = git.StashCreate().Call();

            NUnit.Framework.Assert.IsNotNull(stashed);
            NUnit.Framework.Assert.AreEqual("content", Read(committedFile));
            NUnit.Framework.Assert.IsTrue(git.Status().Call().IsClean());
            string path2 = "file2.txt";

            WriteTrashFile(path2, "content3");
            git.Add().AddFilepattern(path2).Call();
            NUnit.Framework.Assert.IsNotNull(git.Commit().SetMessage("adding file").Call());
            ObjectId unstashed = git.StashApply().Call();

            NUnit.Framework.Assert.AreEqual(stashed, unstashed);
            Status status = git.Status().Call();

            NUnit.Framework.Assert.IsTrue(status.GetAdded().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetChanged().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetConflicting().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetMissing().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetRemoved().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetUntracked().IsEmpty());
            NUnit.Framework.Assert.AreEqual(1, status.GetModified().Count);
            NUnit.Framework.Assert.IsTrue(status.GetModified().Contains(PATH));
        }
        public virtual void MultipleEdits()
        {
            string addedPath = "file2.txt";

            git.Rm().AddFilepattern(PATH).Call();
            FilePath addedFile = WriteTrashFile(addedPath, "content2");

            git.Add().AddFilepattern(addedPath).Call();
            RevCommit stashed = git.StashCreate().Call();

            NUnit.Framework.Assert.IsNotNull(stashed);
            NUnit.Framework.Assert.IsTrue(committedFile.Exists());
            NUnit.Framework.Assert.IsFalse(addedFile.Exists());
            ObjectId unstashed = git.StashApply().Call();

            NUnit.Framework.Assert.AreEqual(stashed, unstashed);
            Status status = git.Status().Call();

            NUnit.Framework.Assert.IsTrue(status.GetChanged().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetConflicting().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetMissing().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetModified().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetUntracked().IsEmpty());
            NUnit.Framework.Assert.AreEqual(1, status.GetRemoved().Count);
            NUnit.Framework.Assert.IsTrue(status.GetRemoved().Contains(PATH));
            NUnit.Framework.Assert.AreEqual(1, status.GetAdded().Count);
            NUnit.Framework.Assert.IsTrue(status.GetAdded().Contains(addedPath));
        }
        public virtual void WorkingDirectoryDeleteIndexAdd()
        {
            string   path  = "file2.txt";
            FilePath added = WriteTrashFile(path, "content2");

            NUnit.Framework.Assert.IsTrue(added.Exists());
            git.Add().AddFilepattern(path).Call();
            FileUtils.Delete(added);
            NUnit.Framework.Assert.IsFalse(added.Exists());
            RevCommit stashed = git.StashCreate().Call();

            NUnit.Framework.Assert.IsNotNull(stashed);
            NUnit.Framework.Assert.IsFalse(added.Exists());
            ObjectId unstashed = git.StashApply().Call();

            NUnit.Framework.Assert.AreEqual(stashed, unstashed);
            NUnit.Framework.Assert.AreEqual("content2", Read(added));
            Status status = git.Status().Call();

            NUnit.Framework.Assert.IsTrue(status.GetChanged().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetConflicting().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetMissing().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetModified().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetRemoved().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetUntracked().IsEmpty());
            NUnit.Framework.Assert.AreEqual(1, status.GetAdded().Count);
            NUnit.Framework.Assert.IsTrue(status.GetAdded().Contains(path));
        }
        public virtual void WorkingDirectoryModifyInSubfolder()
        {
            string   path          = "d1/d2/f.txt";
            FilePath subfolderFile = WriteTrashFile(path, "content");

            git.Add().AddFilepattern(path).Call();
            head = git.Commit().SetMessage("add file").Call();
            WriteTrashFile(path, "content2");
            RevCommit stashed = git.StashCreate().Call();

            NUnit.Framework.Assert.IsNotNull(stashed);
            NUnit.Framework.Assert.AreEqual("content", Read(subfolderFile));
            ObjectId unstashed = git.StashApply().Call();

            NUnit.Framework.Assert.AreEqual(stashed, unstashed);
            NUnit.Framework.Assert.AreEqual("content2", Read(subfolderFile));
            Status status = git.Status().Call();

            NUnit.Framework.Assert.IsTrue(status.GetAdded().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetChanged().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetConflicting().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetMissing().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetRemoved().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetUntracked().IsEmpty());
            NUnit.Framework.Assert.AreEqual(1, status.GetModified().Count);
            NUnit.Framework.Assert.IsTrue(status.GetModified().Contains(path));
        }
        public virtual void StashChangeInANewSubdirectory()
        {
            string subdir      = "subdir";
            string fname       = "file2.txt";
            string path        = subdir + "/" + fname;
            string otherBranch = "otherbranch";

            WriteTrashFile(subdir, fname, "content2");
            git.Add().AddFilepattern(path).Call();
            RevCommit stashed = git.StashCreate().Call();

            NUnit.Framework.Assert.IsNotNull(stashed);
            NUnit.Framework.Assert.IsTrue(git.Status().Call().IsClean());
            git.BranchCreate().SetName(otherBranch).Call();
            git.Checkout().SetName(otherBranch).Call();
            ObjectId unstashed = git.StashApply().Call();

            NUnit.Framework.Assert.AreEqual(stashed, unstashed);
            Status status = git.Status().Call();

            NUnit.Framework.Assert.IsTrue(status.GetChanged().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetConflicting().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetMissing().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetRemoved().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetModified().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetUntracked().IsEmpty());
            NUnit.Framework.Assert.AreEqual(1, status.GetAdded().Count);
            NUnit.Framework.Assert.IsTrue(status.GetAdded().Contains(path));
        }
Esempio n. 9
0
        public virtual void TestEmptyStatus()
        {
            Git    git  = new Git(db);
            Status stat = git.Status().Call();

            NUnit.Framework.Assert.AreEqual(0, stat.GetAdded().Count);
            NUnit.Framework.Assert.AreEqual(0, stat.GetChanged().Count);
            NUnit.Framework.Assert.AreEqual(0, stat.GetMissing().Count);
            NUnit.Framework.Assert.AreEqual(0, stat.GetModified().Count);
            NUnit.Framework.Assert.AreEqual(0, stat.GetRemoved().Count);
            NUnit.Framework.Assert.AreEqual(0, stat.GetUntracked().Count);
        }
        public virtual void IndexDelete()
        {
            git.Rm().AddFilepattern("file.txt").Call();
            RevCommit stashed = git.StashCreate().Call();

            NUnit.Framework.Assert.IsNotNull(stashed);
            NUnit.Framework.Assert.AreEqual("content", Read(committedFile));
            ObjectId unstashed = git.StashApply().Call();

            NUnit.Framework.Assert.AreEqual(stashed, unstashed);
            NUnit.Framework.Assert.IsFalse(committedFile.Exists());
            Status status = git.Status().Call();

            NUnit.Framework.Assert.IsTrue(status.GetAdded().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetChanged().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetConflicting().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetModified().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetMissing().IsEmpty());
            NUnit.Framework.Assert.IsTrue(status.GetUntracked().IsEmpty());
            NUnit.Framework.Assert.AreEqual(1, status.GetRemoved().Count);
            NUnit.Framework.Assert.IsTrue(status.GetRemoved().Contains(PATH));
        }
Esempio n. 11
0
        public virtual void TestAddHugeFile()
        {
            Measure("Commencing test");
            FilePath         file = new FilePath(db.WorkTree, "a.txt");
            RandomAccessFile rf   = new RandomAccessFile(file, "rw");

            rf.SetLength(4429185024L);
            rf.Close();
            Measure("Created file");
            Git git = new Git(db);

            git.Add().AddFilepattern("a.txt").Call();
            Measure("Added file");
            NUnit.Framework.Assert.AreEqual("[a.txt, mode:100644, length:134217728, sha1:b8cfba97c2b962a44f080b3ca4e03b3204b6a350]"
                                            , IndexState(LENGTH | CONTENT_ID));
            Status status = git.Status().Call();

            Measure("Status after add");
            AssertCollectionEquals(Arrays.AsList("a.txt"), status.GetAdded());
            NUnit.Framework.Assert.AreEqual(0, status.GetChanged().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetConflicting().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetMissing().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetModified().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetRemoved().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetUntracked().Count);
            // Does not change anything, but modified timestamp
            rf = new RandomAccessFile(file, "rw");
            rf.Write(0);
            rf.Close();
            status = git.Status().Call();
            Measure("Status after non-modifying update");
            AssertCollectionEquals(Arrays.AsList("a.txt"), status.GetAdded());
            NUnit.Framework.Assert.AreEqual(0, status.GetChanged().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetConflicting().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetMissing().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetModified().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetRemoved().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetUntracked().Count);
            // Change something
            rf = new RandomAccessFile(file, "rw");
            rf.Write('a');
            rf.Close();
            status = git.Status().Call();
            Measure("Status after modifying update");
            AssertCollectionEquals(Arrays.AsList("a.txt"), status.GetAdded());
            NUnit.Framework.Assert.AreEqual(0, status.GetChanged().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetConflicting().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetMissing().Count);
            AssertCollectionEquals(Arrays.AsList("a.txt"), status.GetModified());
            NUnit.Framework.Assert.AreEqual(0, status.GetRemoved().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetUntracked().Count);
            // Truncate mod 4G and re-establish equality
            rf = new RandomAccessFile(file, "rw");
            rf.SetLength(134217728L);
            rf.Write(0);
            rf.Close();
            status = git.Status().Call();
            Measure("Status after truncating update");
            AssertCollectionEquals(Arrays.AsList("a.txt"), status.GetAdded());
            NUnit.Framework.Assert.AreEqual(0, status.GetChanged().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetConflicting().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetMissing().Count);
            AssertCollectionEquals(Arrays.AsList("a.txt"), status.GetModified());
            NUnit.Framework.Assert.AreEqual(0, status.GetRemoved().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetUntracked().Count);
            // Change something
            rf = new RandomAccessFile(file, "rw");
            rf.Write('a');
            rf.Close();
            status = git.Status().Call();
            Measure("Status after modifying and truncating update");
            AssertCollectionEquals(Arrays.AsList("a.txt"), status.GetAdded());
            NUnit.Framework.Assert.AreEqual(0, status.GetChanged().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetConflicting().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetMissing().Count);
            AssertCollectionEquals(Arrays.AsList("a.txt"), status.GetModified());
            NUnit.Framework.Assert.AreEqual(0, status.GetRemoved().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetUntracked().Count);
            // Truncate to entry length becomes negative int
            rf = new RandomAccessFile(file, "rw");
            rf.SetLength(3429185024L);
            rf.Write(0);
            rf.Close();
            git.Add().AddFilepattern("a.txt").Call();
            Measure("Added truncated file");
            NUnit.Framework.Assert.AreEqual("[a.txt, mode:100644, length:-865782272, sha1:59b3282f8f59f22d953df956ad3511bf2dc660fd]"
                                            , IndexState(LENGTH | CONTENT_ID));
            status = git.Status().Call();
            Measure("Status after status on truncated file");
            AssertCollectionEquals(Arrays.AsList("a.txt"), status.GetAdded());
            NUnit.Framework.Assert.AreEqual(0, status.GetChanged().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetConflicting().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetMissing().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetModified().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetRemoved().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetUntracked().Count);
            // Change something
            rf = new RandomAccessFile(file, "rw");
            rf.Write('a');
            rf.Close();
            status = git.Status().Call();
            Measure("Status after modifying and truncating update");
            AssertCollectionEquals(Arrays.AsList("a.txt"), status.GetAdded());
            NUnit.Framework.Assert.AreEqual(0, status.GetChanged().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetConflicting().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetMissing().Count);
            AssertCollectionEquals(Arrays.AsList("a.txt"), status.GetModified());
            NUnit.Framework.Assert.AreEqual(0, status.GetRemoved().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetUntracked().Count);
            git.Commit().SetMessage("make a commit").Call();
            Measure("After commit");
            status = git.Status().Call();
            Measure("After status after commit");
            NUnit.Framework.Assert.AreEqual(0, status.GetAdded().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetChanged().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetConflicting().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetMissing().Count);
            AssertCollectionEquals(Arrays.AsList("a.txt"), status.GetModified());
            NUnit.Framework.Assert.AreEqual(0, status.GetRemoved().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetUntracked().Count);
            git.Reset().SetMode(ResetCommand.ResetType.HARD).Call();
            Measure("After reset --hard");
            NUnit.Framework.Assert.AreEqual("[a.txt, mode:100644, length:-865782272, sha1:59b3282f8f59f22d953df956ad3511bf2dc660fd]"
                                            , IndexState(LENGTH | CONTENT_ID));
            status = git.Status().Call();
            Measure("Status after hard reset");
            NUnit.Framework.Assert.AreEqual(0, status.GetAdded().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetChanged().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetConflicting().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetMissing().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetModified().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetRemoved().Count);
            NUnit.Framework.Assert.AreEqual(0, status.GetUntracked().Count);
        }