From f66820adb778d52a5bc04e7e9e55329dc83c971e Mon Sep 17 00:00:00 2001 From: nulltoken Date: Tue, 16 Jun 2015 11:55:16 +0200 Subject: [PATCH] Enhance .gitignore capabilities test coverage --- LibGit2Sharp.Tests/IgnoreFixture.cs | 34 +++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/LibGit2Sharp.Tests/IgnoreFixture.cs b/LibGit2Sharp.Tests/IgnoreFixture.cs index 790336512..b9af91404 100644 --- a/LibGit2Sharp.Tests/IgnoreFixture.cs +++ b/LibGit2Sharp.Tests/IgnoreFixture.cs @@ -83,5 +83,39 @@ public void CanCheckIfAPathIsIgnoredUsingThePreferedPlatformDirectorySeparatorCh Assert.True(repo.Ignore.IsPathIgnored(string.Format(@"NewFolder{0}NewFolder{0}File.txt", Path.DirectorySeparatorChar))); } } + + [Fact] + public void HonorDeeplyNestedGitIgnoreFile() + { + string path = InitNewRepository(); + using (var repo = new Repository(path)) + { + char pd = Path.DirectorySeparatorChar; + + var gitIgnoreFile = string.Format("deeply{0}nested{0}.gitignore", pd); + Touch(repo.Info.WorkingDirectory, gitIgnoreFile, "SmtCounters.h"); + + repo.Stage(gitIgnoreFile); + repo.Commit("Add .gitignore", Constants.Signature, Constants.Signature); + + Assert.False(repo.RetrieveStatus().IsDirty); + + var ignoredFile = string.Format("deeply{0}nested{0}SmtCounters.h", pd); + Touch(repo.Info.WorkingDirectory, ignoredFile, "Content"); + Assert.False(repo.RetrieveStatus().IsDirty); + + var file = string.Format("deeply{0}nested{0}file.txt", pd); + Touch(repo.Info.WorkingDirectory, file, "Yeah!"); + + var repositoryStatus = repo.RetrieveStatus(); + Assert.True(repositoryStatus.IsDirty); + + Assert.Equal(FileStatus.Ignored, repositoryStatus[ignoredFile].State); + Assert.Equal(FileStatus.NewInWorkdir, repositoryStatus[file].State); + + Assert.True(repo.Ignore.IsPathIgnored(ignoredFile)); + Assert.False(repo.Ignore.IsPathIgnored(file)); + } + } } }