public virtual void Test006_addDeepTree() { Tree t = new Tree(db); Tree e = t.AddTree("e"); NUnit.Framework.Assert.IsNotNull(e, "have e"); NUnit.Framework.Assert.IsTrue(e.GetParent() == t, "e.parent == t"); Tree f = t.AddTree("f"); NUnit.Framework.Assert.IsNotNull(f, "have f"); NUnit.Framework.Assert.IsTrue(f.GetParent() == t, "f.parent == t"); Tree g = f.AddTree("g"); NUnit.Framework.Assert.IsNotNull(g, "have g"); NUnit.Framework.Assert.IsTrue(g.GetParent() == f, "g.parent == f"); Tree h = g.AddTree("h"); NUnit.Framework.Assert.IsNotNull(h, "have h"); NUnit.Framework.Assert.IsTrue(h.GetParent() == g, "h.parent = g"); h.SetId(SOME_FAKE_ID); NUnit.Framework.Assert.IsTrue(!h.IsModified(), "h not modified"); g.SetId(SOME_FAKE_ID); NUnit.Framework.Assert.IsTrue(!g.IsModified(), "g not modified"); f.SetId(SOME_FAKE_ID); NUnit.Framework.Assert.IsTrue(!f.IsModified(), "f not modified"); e.SetId(SOME_FAKE_ID); NUnit.Framework.Assert.IsTrue(!e.IsModified(), "e not modified"); t.SetId(SOME_FAKE_ID); NUnit.Framework.Assert.IsTrue(!t.IsModified(), "t not modified."); NUnit.Framework.Assert.AreEqual("f/g/h", h.GetFullName(), "full path of h ok"); NUnit.Framework.Assert.IsTrue(t.FindTreeMember(h.GetFullName()) == h, "Can find h" ); NUnit.Framework.Assert.IsTrue(t.FindBlobMember("f/z") == null, "Can't find f/z"); NUnit.Framework.Assert.IsTrue(t.FindBlobMember("y/z") == null, "Can't find y/z"); FileTreeEntry i = h.AddFile("i"); NUnit.Framework.Assert.IsNotNull(i); NUnit.Framework.Assert.AreEqual("f/g/h/i", i.GetFullName(), "full path of i ok"); NUnit.Framework.Assert.IsTrue(t.FindBlobMember(i.GetFullName()) == i, "Can find i" ); NUnit.Framework.Assert.IsTrue(h.IsModified(), "h modified"); NUnit.Framework.Assert.IsTrue(g.IsModified(), "g modified"); NUnit.Framework.Assert.IsTrue(f.IsModified(), "f modified"); NUnit.Framework.Assert.IsTrue(!e.IsModified(), "e not modified"); NUnit.Framework.Assert.IsTrue(t.IsModified(), "t modified"); NUnit.Framework.Assert.IsTrue(h.GetId() == null, "h no id"); NUnit.Framework.Assert.IsTrue(g.GetId() == null, "g no id"); NUnit.Framework.Assert.IsTrue(f.GetId() == null, "f no id"); NUnit.Framework.Assert.IsTrue(e.GetId() != null, "e has id"); NUnit.Framework.Assert.IsTrue(t.GetId() == null, "t no id"); }
public virtual void TestRemoved() { WriteTrashFile("file2", "file2"); WriteTrashFile("dir/file3", "dir/file3"); Tree tree = new Tree(db); tree.AddFile("file2"); tree.AddFile("dir/file3"); NUnit.Framework.Assert.AreEqual(2, tree.MemberCount()); tree.FindBlobMember("file2").SetId(ObjectId.FromString("30d67d4672d5c05833b7192cc77a79eaafb5c7ad" )); Tree tree2 = (Tree)tree.FindTreeMember("dir"); tree2.FindBlobMember("file3").SetId(ObjectId.FromString("873fb8d667d05436d728c52b1d7a09528e6eb59b" )); tree2.SetId(InsertTree(tree2)); tree.SetId(InsertTree(tree)); FileTreeIterator iterator = new FileTreeIterator(db); IndexDiff diff = new IndexDiff(db, tree.GetId(), iterator); diff.Diff(); NUnit.Framework.Assert.AreEqual(2, diff.GetRemoved().Count); NUnit.Framework.Assert.IsTrue(diff.GetRemoved().Contains("file2")); NUnit.Framework.Assert.IsTrue(diff.GetRemoved().Contains("dir/file3")); NUnit.Framework.Assert.AreEqual(0, diff.GetChanged().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetModified().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetAdded().Count); }
public virtual void Test002_addFile() { Tree t = new Tree(db); t.SetId(SOME_FAKE_ID); NUnit.Framework.Assert.IsTrue(t.GetId() != null, "has id"); NUnit.Framework.Assert.IsFalse(t.IsModified(), "not modified"); string n = "bob"; FileTreeEntry f = t.AddFile(n); NUnit.Framework.Assert.IsNotNull(f, "have file"); NUnit.Framework.Assert.AreEqual(n, f.GetName(), "name matches"); NUnit.Framework.Assert.AreEqual(f.GetName(), Sharpen.Runtime.GetStringForBytes(f. GetNameUTF8(), "UTF-8"), "name matches"); NUnit.Framework.Assert.AreEqual(n, f.GetFullName(), "full name matches"); NUnit.Framework.Assert.IsTrue(f.GetId() == null, "no id"); NUnit.Framework.Assert.IsTrue(t.IsModified(), "is modified"); NUnit.Framework.Assert.IsTrue(t.GetId() == null, "has no id"); NUnit.Framework.Assert.IsTrue(t.FindBlobMember(f.GetName()) == f, "found bob"); TreeEntry[] i = t.Members(); NUnit.Framework.Assert.IsNotNull(i, "members array not null"); NUnit.Framework.Assert.IsTrue(i != null && i.Length > 0, "iterator is not empty"); NUnit.Framework.Assert.IsTrue(i != null && i[0] == f, "iterator returns file"); NUnit.Framework.Assert.IsTrue(i != null && i.Length == 1, "iterator is empty"); }
public virtual void TestRules1thru3_NoIndexEntry() { Tree head = new Tree(db); head = BuildTree(Mk("foo")); ObjectId objectId = head.FindBlobMember("foo").GetId(); Tree merge = new Tree(db); PrescanTwoTrees(head, merge); NUnit.Framework.Assert.IsTrue(GetRemoved().Contains("foo")); PrescanTwoTrees(merge, head); NUnit.Framework.Assert.AreEqual(objectId, GetUpdated().Get("foo")); merge = BuildTree(Mkmap("foo", "a")); ObjectId anotherId = merge.FindBlobMember("foo").GetId(); PrescanTwoTrees(head, merge); NUnit.Framework.Assert.AreEqual(anotherId, GetUpdated().Get("foo")); }
public virtual void Test001_createEmpty() { Tree t = new Tree(db); NUnit.Framework.Assert.IsTrue(t.IsLoaded(), "isLoaded"); NUnit.Framework.Assert.IsTrue(t.IsModified(), "isModified"); NUnit.Framework.Assert.IsTrue(t.GetParent() == null, "no parent"); NUnit.Framework.Assert.IsTrue(t.IsRoot(), "isRoot"); NUnit.Framework.Assert.IsTrue(t.GetName() == null, "no name"); NUnit.Framework.Assert.IsTrue(t.GetNameUTF8() == null, "no nameUTF8"); NUnit.Framework.Assert.IsTrue(t.Members() != null, "has entries array"); NUnit.Framework.Assert.AreEqual(0, t.Members().Length, "entries is empty"); NUnit.Framework.Assert.AreEqual(string.Empty, t.GetFullName(), "full name is empty" ); NUnit.Framework.Assert.IsTrue(t.GetId() == null, "no id"); NUnit.Framework.Assert.IsTrue(t.GetRepository() == db, "database is r"); NUnit.Framework.Assert.IsTrue(t.FindTreeMember("foo") == null, "no foo child"); NUnit.Framework.Assert.IsTrue(t.FindBlobMember("foo") == null, "no foo child"); }
/// <exception cref="System.IO.IOException"></exception> private bool HasParentBlob(Tree t, string name) { if (name.IndexOf("/") == -1) { return false; } string parent = Sharpen.Runtime.Substring(name, 0, name.LastIndexOf("/")); if (t.FindBlobMember(parent) != null) { return true; } return HasParentBlob(t, parent); }
public virtual void TestRemoved() { WriteTrashFile("file2", "file2"); WriteTrashFile("dir/file3", "dir/file3"); Tree tree = new Tree(db); tree.AddFile("file2"); tree.AddFile("dir/file3"); NUnit.Framework.Assert.AreEqual(2, tree.MemberCount()); tree.FindBlobMember("file2").SetId(ObjectId.FromString("30d67d4672d5c05833b7192cc77a79eaafb5c7ad" )); Tree tree2 = (Tree)tree.FindTreeMember("dir"); tree2.FindBlobMember("file3").SetId(ObjectId.FromString("873fb8d667d05436d728c52b1d7a09528e6eb59b" )); tree2.SetId(InsertTree(tree2)); tree.SetId(InsertTree(tree)); FileTreeIterator iterator = new FileTreeIterator(db); IndexDiff diff = new IndexDiff(db, tree.GetId(), iterator); diff.Diff(); NUnit.Framework.Assert.AreEqual(2, diff.GetRemoved().Count); NUnit.Framework.Assert.IsTrue(diff.GetRemoved().Contains("file2")); NUnit.Framework.Assert.IsTrue(diff.GetRemoved().Contains("dir/file3")); NUnit.Framework.Assert.AreEqual(0, diff.GetChanged().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetModified().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetAdded().Count); NUnit.Framework.CollectionAssert.AreEquivalent(Collections<string>.EMPTY_SET, diff.GetUntrackedFolders() ); }
/// <summary> /// Requires absolute path /// </summary> /// <param name="fileName"></param> public void UnStageFile(string fileName) { if (!this.HasGitRepository) return; var fileNameRel = GetRelativeFileName(fileName); var head = repository.Resolve(Constants.HEAD); Tree commitTree = null; TreeEntry treeEntry = null; if (head == null) { commitTree = new Tree(repository); } else { var revTree = new RevWalk(repository).ParseTree(head); var treeId = revTree.Id; commitTree = new Tree(repository, treeId, repository.Open(treeId).GetBytes()); if(commitTree!=null) treeEntry = commitTree.FindBlobMember(fileNameRel); } var index = repository.GetIndex(); index.RereadIfNecessary(); index.Remove(repository.WorkTree, fileName); if (treeEntry != null) { index.AddEntry(treeEntry); } index.Write(); this.cache.Remove(GetCacheKey(fileName)); }