public virtual void TestDiffCached() { Write(new FilePath(db.WorkTree, "test.txt"), "test"); FilePath folder = new FilePath(db.WorkTree, "folder"); folder.Mkdir(); Git git = new Git(db); git.Add().AddFilepattern(".").Call(); git.Commit().SetMessage("Initial commit").Call(); Write(new FilePath(folder, "folder.txt"), "folder"); git.Add().AddFilepattern(".").Call(); OutputStream @out = new ByteArrayOutputStream(); IList <DiffEntry> entries = git.Diff().SetOutputStream(@out).SetCached(true).Call( ); NUnit.Framework.Assert.AreEqual(1, entries.Count); NUnit.Framework.Assert.AreEqual(DiffEntry.ChangeType.ADD, entries[0].GetChangeType ()); NUnit.Framework.Assert.AreEqual("/dev/null", entries[0].GetOldPath()); NUnit.Framework.Assert.AreEqual("folder/folder.txt", entries[0].GetNewPath()); string actual = @out.ToString(); string expected = "diff --git a/folder/folder.txt b/folder/folder.txt\n" + "new file mode 100644\n" + "index 0000000..0119635\n" + "--- /dev/null\n" + "+++ b/folder/folder.txt\n" + "@@ -0,0 +1 @@\n" + "+folder\n" + "\\ No newline at end of file\n"; NUnit.Framework.Assert.AreEqual(expected.ToString(), actual); }
public virtual void TestDiffTwoCommits() { Write(new FilePath(db.WorkTree, "test.txt"), "test"); FilePath folder = new FilePath(db.WorkTree, "folder"); folder.Mkdir(); Write(new FilePath(folder, "folder.txt"), "folder"); Git git = new Git(db); git.Add().AddFilepattern(".").Call(); git.Commit().SetMessage("Initial commit").Call(); Write(new FilePath(folder, "folder.txt"), "folder change"); git.Add().AddFilepattern(".").Call(); git.Commit().SetMessage("second commit").Call(); Write(new FilePath(folder, "folder.txt"), "second folder change"); git.Add().AddFilepattern(".").Call(); git.Commit().SetMessage("third commit").Call(); // bad filter DiffCommand diff = git.Diff().SetShowNameAndStatusOnly(true).SetPathFilter(PathFilter .Create("test.txt")).SetOldTree(GetTreeIterator("HEAD^^")).SetNewTree(GetTreeIterator ("HEAD^")); IList <DiffEntry> entries = diff.Call(); NUnit.Framework.Assert.AreEqual(0, entries.Count); // no filter, two commits OutputStream @out = new ByteArrayOutputStream(); diff = git.Diff().SetOutputStream(@out).SetOldTree(GetTreeIterator("HEAD^^")).SetNewTree (GetTreeIterator("HEAD^")); entries = diff.Call(); NUnit.Framework.Assert.AreEqual(1, entries.Count); NUnit.Framework.Assert.AreEqual(DiffEntry.ChangeType.MODIFY, entries[0].GetChangeType ()); NUnit.Framework.Assert.AreEqual("folder/folder.txt", entries[0].GetOldPath()); NUnit.Framework.Assert.AreEqual("folder/folder.txt", entries[0].GetNewPath()); string actual = @out.ToString(); string expected = "diff --git a/folder/folder.txt b/folder/folder.txt\n" + "index 0119635..95c4c65 100644\n" + "--- a/folder/folder.txt\n" + "+++ b/folder/folder.txt\n" + "@@ -1 +1 @@\n" + "-folder\n" + "\\ No newline at end of file\n" + "+folder change\n" + "\\ No newline at end of file\n"; NUnit.Framework.Assert.AreEqual(expected.ToString(), actual); }
private static string GetPatch(string modifiedFile, string originalText, string newText, Git git) { using (var stream = new MemoryStream()) { File.WriteAllText(modifiedFile, newText); git.Diff().SetOutputStream(stream).Call(); File.WriteAllText(modifiedFile, originalText); return(Encoding.ASCII.GetString(stream.ToArray())); } }
public virtual void TestDiffWithNegativeLineCount() { Write(new FilePath(db.WorkTree, "test.txt"), "0\n1\n2\n3\n4\n5\n6\n7\n8\n9"); Git git = new Git(db); git.Add().AddFilepattern(".").Call(); git.Commit().SetMessage("Initial commit").Call(); Write(new FilePath(db.WorkTree, "test.txt"), "0\n1\n2\n3\n4a\n5\n6\n7\n8\n9"); OutputStream @out = new ByteArrayOutputStream(); git.Diff().SetOutputStream(@out).SetContextLines(1).Call(); string actual = @out.ToString(); string expected = "diff --git a/test.txt b/test.txt\n" + "index f55b5c9..c5ec8fd 100644\n" + "--- a/test.txt\n" + "+++ b/test.txt\n" + "@@ -4,3 +4,3 @@\n" + " 3\n" + "-4\n" + "+4a\n" + " 5\n"; NUnit.Framework.Assert.AreEqual(expected.ToString(), actual); }
public virtual void TestDiffWithPrefixes() { Write(new FilePath(db.WorkTree, "test.txt"), "test"); Git git = new Git(db); git.Add().AddFilepattern(".").Call(); git.Commit().SetMessage("Initial commit").Call(); Write(new FilePath(db.WorkTree, "test.txt"), "test change"); OutputStream @out = new ByteArrayOutputStream(); git.Diff().SetOutputStream(@out).SetSourcePrefix("old/").SetDestinationPrefix("new/" ).Call(); string actual = @out.ToString(); string expected = "diff --git old/test.txt new/test.txt\n" + "index 30d74d2..4dba797 100644\n" + "--- old/test.txt\n" + "+++ new/test.txt\n" + "@@ -1 +1 @@\n" + "-test\n" + "\\ No newline at end of file\n" + "+test change\n" + "\\ No newline at end of file\n"; NUnit.Framework.Assert.AreEqual(expected.ToString(), actual); }
public virtual void TestNoOutputStreamSet() { FilePath file = WriteTrashFile("test.txt", "a"); NUnit.Framework.Assert.IsTrue(file.SetLastModified(file.LastModified() - 5000)); Git git = new Git(db); git.Add().AddFilepattern(".").Call(); Write(file, "b"); IList <DiffEntry> diffs = git.Diff().Call(); NUnit.Framework.Assert.IsNotNull(diffs); NUnit.Framework.Assert.AreEqual(1, diffs.Count); DiffEntry diff = diffs[0]; NUnit.Framework.Assert.AreEqual(DiffEntry.ChangeType.MODIFY, diff.GetChangeType() ); NUnit.Framework.Assert.AreEqual("test.txt", diff.GetOldPath()); NUnit.Framework.Assert.AreEqual("test.txt", diff.GetNewPath()); }
public virtual void TestDiffModified() { Write(new FilePath(db.WorkTree, "test.txt"), "test"); FilePath folder = new FilePath(db.WorkTree, "folder"); folder.Mkdir(); Write(new FilePath(folder, "folder.txt"), "folder"); Git git = new Git(db); git.Add().AddFilepattern(".").Call(); git.Commit().SetMessage("Initial commit").Call(); Write(new FilePath(folder, "folder.txt"), "folder change"); OutputStream @out = new ByteArrayOutputStream(); IList<DiffEntry> entries = git.Diff().SetOutputStream(@out).Call(); NUnit.Framework.Assert.AreEqual(1, entries.Count); NUnit.Framework.Assert.AreEqual(DiffEntry.ChangeType.MODIFY, entries[0].GetChangeType ()); NUnit.Framework.Assert.AreEqual("folder/folder.txt", entries[0].GetOldPath()); NUnit.Framework.Assert.AreEqual("folder/folder.txt", entries[0].GetNewPath()); string actual = @out.ToString(); string expected = "diff --git a/folder/folder.txt b/folder/folder.txt\n" + "index 0119635..95c4c65 100644\n" + "--- a/folder/folder.txt\n" + "+++ b/folder/folder.txt\n" + "@@ -1 +1 @@\n" + "-folder\n" + "\\ No newline at end of file\n" + "+folder change\n" + "\\ No newline at end of file\n"; NUnit.Framework.Assert.AreEqual(expected.ToString(), actual); }
public virtual void TestDiffWithPrefixes() { Write(new FilePath(db.WorkTree, "test.txt"), "test"); Git git = new Git(db); git.Add().AddFilepattern(".").Call(); git.Commit().SetMessage("Initial commit").Call(); Write(new FilePath(db.WorkTree, "test.txt"), "test change"); OutputStream @out = new ByteArrayOutputStream(); git.Diff().SetOutputStream(@out).SetSourcePrefix("old/").SetDestinationPrefix("new/" ).Call(); string actual = @out.ToString(); string expected = "diff --git old/test.txt new/test.txt\n" + "index 30d74d2..4dba797 100644\n" + "--- old/test.txt\n" + "+++ new/test.txt\n" + "@@ -1 +1 @@\n" + "-test\n" + "\\ No newline at end of file\n" + "+test change\n" + "\\ No newline at end of file\n"; NUnit.Framework.Assert.AreEqual(expected.ToString(), actual); }
public virtual void TestDiffWithNegativeLineCount() { Write(new FilePath(db.WorkTree, "test.txt"), "0\n1\n2\n3\n4\n5\n6\n7\n8\n9"); Git git = new Git(db); git.Add().AddFilepattern(".").Call(); git.Commit().SetMessage("Initial commit").Call(); Write(new FilePath(db.WorkTree, "test.txt"), "0\n1\n2\n3\n4a\n5\n6\n7\n8\n9"); OutputStream @out = new ByteArrayOutputStream(); git.Diff().SetOutputStream(@out).SetContextLines(1).Call(); string actual = @out.ToString(); string expected = "diff --git a/test.txt b/test.txt\n" + "index f55b5c9..c5ec8fd 100644\n" + "--- a/test.txt\n" + "+++ b/test.txt\n" + "@@ -4,3 +4,3 @@\n" + " 3\n" + "-4\n" + "+4a\n" + " 5\n"; NUnit.Framework.Assert.AreEqual(expected.ToString(), actual); }
public virtual void TestDiffTwoCommits() { Write(new FilePath(db.WorkTree, "test.txt"), "test"); FilePath folder = new FilePath(db.WorkTree, "folder"); folder.Mkdir(); Write(new FilePath(folder, "folder.txt"), "folder"); Git git = new Git(db); git.Add().AddFilepattern(".").Call(); git.Commit().SetMessage("Initial commit").Call(); Write(new FilePath(folder, "folder.txt"), "folder change"); git.Add().AddFilepattern(".").Call(); git.Commit().SetMessage("second commit").Call(); Write(new FilePath(folder, "folder.txt"), "second folder change"); git.Add().AddFilepattern(".").Call(); git.Commit().SetMessage("third commit").Call(); // bad filter DiffCommand diff = git.Diff().SetShowNameAndStatusOnly(true).SetPathFilter(PathFilter .Create("test.txt")).SetOldTree(GetTreeIterator("HEAD^^")).SetNewTree(GetTreeIterator ("HEAD^")); IList<DiffEntry> entries = diff.Call(); NUnit.Framework.Assert.AreEqual(0, entries.Count); // no filter, two commits OutputStream @out = new ByteArrayOutputStream(); diff = git.Diff().SetOutputStream(@out).SetOldTree(GetTreeIterator("HEAD^^")).SetNewTree (GetTreeIterator("HEAD^")); entries = diff.Call(); NUnit.Framework.Assert.AreEqual(1, entries.Count); NUnit.Framework.Assert.AreEqual(DiffEntry.ChangeType.MODIFY, entries[0].GetChangeType ()); NUnit.Framework.Assert.AreEqual("folder/folder.txt", entries[0].GetOldPath()); NUnit.Framework.Assert.AreEqual("folder/folder.txt", entries[0].GetNewPath()); string actual = @out.ToString(); string expected = "diff --git a/folder/folder.txt b/folder/folder.txt\n" + "index 0119635..95c4c65 100644\n" + "--- a/folder/folder.txt\n" + "+++ b/folder/folder.txt\n" + "@@ -1 +1 @@\n" + "-folder\n" + "\\ No newline at end of file\n" + "+folder change\n" + "\\ No newline at end of file\n"; NUnit.Framework.Assert.AreEqual(expected.ToString(), actual); }
public virtual void TestNoOutputStreamSet() { FilePath file = WriteTrashFile("test.txt", "a"); NUnit.Framework.Assert.IsTrue(file.SetLastModified(file.LastModified() - 5000)); Git git = new Git(db); git.Add().AddFilepattern(".").Call(); Write(file, "b"); IList<DiffEntry> diffs = git.Diff().Call(); NUnit.Framework.Assert.IsNotNull(diffs); NUnit.Framework.Assert.AreEqual(1, diffs.Count); DiffEntry diff = diffs[0]; NUnit.Framework.Assert.AreEqual(DiffEntry.ChangeType.MODIFY, diff.GetChangeType() ); NUnit.Framework.Assert.AreEqual("test.txt", diff.GetOldPath()); NUnit.Framework.Assert.AreEqual("test.txt", diff.GetNewPath()); }