Skip to content

Commit 1787c61

Browse files
committed
Enhance Index.RetrieveStatus() test coverage
1 parent e39a21d commit 1787c61

File tree

2 files changed

+38
-3
lines changed

2 files changed

+38
-3
lines changed

LibGit2Sharp.Tests/CheckoutFixture.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -500,9 +500,7 @@ public void CheckoutRetainsIgnoredChanges()
500500
string ignoredFilePath = Path.Combine(repo.Info.WorkingDirectory, Path.Combine("bin", "some_ignored_file.txt"));
501501
File.WriteAllText(ignoredFilePath, "hello from this ignored file.");
502502

503-
// The following check does not report ignored entries...
504-
// TODO: Uncomment once libgit2/libgit2#1251 is merged
505-
// Assert.Equal(1, repo.Index.RetrieveStatus().Ignored.Count());
503+
Assert.Equal(1, repo.Index.RetrieveStatus().Ignored.Count());
506504

507505
Assert.Equal(FileStatus.Ignored, repo.Index.RetrieveStatus(ignoredFilePath));
508506

LibGit2Sharp.Tests/StatusFixture.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.IO;
33
using System.Linq;
4+
using System.Text;
45
using LibGit2Sharp.Tests.TestHelpers;
56
using Xunit;
67
using Xunit.Extensions;
@@ -310,5 +311,41 @@ private static void AssertStatus(bool shouldIgnoreCase, FileStatus expectedFileS
310311
Assert.False(shouldIgnoreCase);
311312
}
312313
}
314+
315+
[Fact]
316+
public void RetrievingTheStatusOfTheRepositoryHonorsTheGitIgnoreDirectivesThroughoutDirectories()
317+
{
318+
char dirSep = Path.DirectorySeparatorChar;
319+
320+
string path = CloneStandardTestRepo();
321+
using (var repo = new Repository(path))
322+
{
323+
Touch(repo.Info.WorkingDirectory, "bin/look-ma.txt", "I'm going to be ignored!");
324+
Touch(repo.Info.WorkingDirectory, "bin/what-about-me.txt", "Huh?");
325+
326+
string gitignorePath = Path.Combine(repo.Info.WorkingDirectory, ".gitignore");
327+
328+
File.WriteAllText(gitignorePath, "bin");
329+
330+
Assert.Equal(FileStatus.Ignored, repo.Index.RetrieveStatus("bin/look-ma.txt"));
331+
Assert.Equal(FileStatus.Ignored, repo.Index.RetrieveStatus("bin/what-about-me.txt"));
332+
333+
RepositoryStatus newStatus = repo.Index.RetrieveStatus();
334+
Assert.Equal(new[] { "bin" + dirSep }, newStatus.Ignored);
335+
336+
var sb = new StringBuilder();
337+
sb.AppendLine("bin/*");
338+
sb.AppendLine("!bin/w*");
339+
File.WriteAllText(gitignorePath, sb.ToString());
340+
341+
Assert.Equal(FileStatus.Ignored, repo.Index.RetrieveStatus("bin/look-ma.txt"));
342+
Assert.Equal(FileStatus.Untracked, repo.Index.RetrieveStatus("bin/what-about-me.txt"));
343+
344+
newStatus = repo.Index.RetrieveStatus();
345+
346+
Assert.Equal(new[] { "bin" + dirSep + "look-ma.txt" }, newStatus.Ignored);
347+
Assert.True(newStatus.Untracked.Contains("bin" + dirSep + "what-about-me.txt" ));
348+
}
349+
}
313350
}
314351
}

0 commit comments

Comments
 (0)