public void GitConfiguration_Enumerate_CallbackReturnsTrue_InvokesCallbackForEachEntry() { string repoPath = CreateRepository(out string workDirPath); ExecGit(repoPath, workDirPath, "config --local foo.name lancelot").AssertSuccess(); ExecGit(repoPath, workDirPath, "config --local foo.quest seek-holy-grail").AssertSuccess(); ExecGit(repoPath, workDirPath, "config --local foo.favcolor blue").AssertSuccess(); var expectedVisitedEntries = new List <(string name, string value)> { ("foo.name", "lancelot"), ("foo.quest", "seek-holy-grail"), ("foo.favcolor", "blue") }; string gitPath = GetGitPath(); var trace = new NullTrace(); var git = new GitProcess(trace, gitPath, repoPath); IGitConfiguration config = git.GetConfiguration(); var actualVisitedEntries = new List <(string name, string value)>(); bool cb(GitConfigurationEntry entry) { if (entry.Key.StartsWith("foo.")) { actualVisitedEntries.Add((entry.Key, entry.Value)); } // Continue enumeration return(true); } config.Enumerate(cb); Assert.Equal(expectedVisitedEntries, actualVisitedEntries); }
public void GitConfiguration_Enumerate_CallbackReturnsFalse_InvokesCallbackForEachEntryUntilReturnsFalse() { string repoPath = CreateRepository(out string workDirPath); Git(repoPath, workDirPath, "config --local foo.name lancelot").AssertSuccess(); Git(repoPath, workDirPath, "config --local foo.quest seek-holy-grail").AssertSuccess(); Git(repoPath, workDirPath, "config --local foo.favcolor blue").AssertSuccess(); var expectedVisitedEntries = new List <(string name, string value)> { ("foo.name", "lancelot"), ("foo.quest", "seek-holy-grail") }; string gitPath = GetGitPath(); var trace = new NullTrace(); var git = new GitProcess(trace, gitPath, repoPath); IGitConfiguration config = git.GetConfiguration(); var actualVisitedEntries = new List <(string name, string value)>(); bool cb(string name, string value) { if (name.StartsWith("foo.")) { actualVisitedEntries.Add((name, value)); } // Stop enumeration after 2 'foo' entries return(actualVisitedEntries.Count < 2); } config.Enumerate(cb); Assert.Equal(expectedVisitedEntries, actualVisitedEntries); }