8000 Tests create global config stub if required · apfunk/libgit2sharp@9bfe5e4 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9bfe5e4

Browse files
committed
Tests create global config stub if required
Instead of relying on the global configuration and skipping the test if Git is not installed, the following tests create a configuration file containing user.name and user.email using BaseFixture.CreateConfigurationWithDummyUser(Signature): * CommitFixture.CanCommitWithSignatureFromConfig() * ConfigurationFixture.CanEnumerateGlobalConfig() Fixes libgit2#561
1 parent 91d52df commit 9bfe5e4

File tree

4 files changed

+27
-33
lines changed

4 files changed

+27
-33
lines changed

LibGit2Sharp.Tests/CommitFixture.cs

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -507,20 +507,19 @@ public void DirectlyAccessingAnUnknownTreeEntryOfTheCommitReturnsNull()
507507
}
508508
}
509509

510-
[SkippableFact]
510+
[Fact]
511511
public void CanCommitWithSignatureFromConfig()
512512
{
513513
string repoPath = InitNewRepository();
514+
string configPath = CreateConfigurationWithDummyUser(Constants.Signature);
515+
var options = new RepositoryOptions { GlobalConfigurationLocation = configPath };
514516

515-
using (var repo = new Repository(repoPath))
517+
using (var repo = new Repository(repoPath, options))
516518
{
517519
string dir = repo.Info.Path;
518520
Assert.True(Path.IsPathRooted(dir));
519521
Assert.True(Directory.Exists(dir));
520522

521-
InconclusiveIf(() => !repo.Config.HasConfig(ConfigurationLevel.Global),
522-
"No Git global configuration available");
523-
524523
const string relativeFilepath = "new.txt";
525524
string filePath = Touch(repo.Info.WorkingDirectory, relativeFilepath, "null");
526525
repo.Index.Stage(relativeFilepath);
@@ -535,12 +534,7 @@ public void CanCommitWithSignatureFromConfig()
535534
AssertBlobContent(repo.Head[relativeFilepath], "nulltoken\n");
536535
AssertBlobContent(commit[relativeFilepath], "nulltoken\n");
537536

538-
var name = repo.Config.Get<string>("user.name");
539-
var email = repo.Config.Get<string>("user.email");
540-
Assert.Equal(commit.Author.Name, name.Value);
541-
Assert.Equal(commit.Author.Email, email.Value);
542-
Assert.Equal(commit.Committer.Name, name.Value);
543-
Assert.Equal(commit.Committer.Email, email.Value);
537+
AssertCommitSignaturesAre(commit, Constants.Signature);
544538
}
545539
}
546540

LibGit2Sharp.Tests/ConfigurationFixture.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,17 +186,20 @@ public void CanReadStringValue()
186186
}
187187
}
188188

189-
[SkippableFact]
189+
[Fact]
190190
public void CanEnumerateGlobalConfig()
191191
{
192-
using (var repo = new Repository(StandardTestRepoPath))
192+
string configPath = CreateConfigurationWithDummyUser(Constants.Signature);
193+
var options = new RepositoryOptions { GlobalConfigurationLocation = configPath };
194+
195+
using (var repo = new Repository(StandardTestRepoPath, options))
193196
{
194197
InconclusiveIf(() => !repo.Config.HasConfig(ConfigurationLevel.Global),
195198
"No Git global configuration available");
196199

197200
var entry = repo.Config.FirstOrDefault<ConfigurationEntry<string>>(e => e.Key == "user.name");
198201
Assert.NotNull(entry);
199-
Assert.NotNull(entry.Value);
202+
Assert.Equal(Constants.Signature.Name, entry.Value);
200203
}
201204
}
202205

LibGit2Sharp.Tests/NoteFixture.cs

Lines changed: 3 additions & 19 deletions
D5FB
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ public void CreatingANoteWhichAlreadyExistsOverwritesThePreviousNote()
154154
public void CanAddANoteWithSignatureFromConfig()
155155
{
156156
string configPath = CreateConfigurationWithDummyUser(Constants.Signature);
157-
RepositoryOptions options = new RepositoryOptions() { GlobalConfigurationLocation = configPath };
157+
var options = new RepositoryOptions { GlobalConfigurationLocation = configPath };
158158
string path = CloneBareTestRepo();
159159

160160
using (var repo = new Repository(path, options))
@@ -168,7 +168,7 @@ public void CanAddANoteWithSignatureFromConfig()
168168
Assert.Equal("I'm batman!\n", newNote.Message);
169169
Assert.Equal("batmobile", newNote.Namespace);
170170

171-
AssertCommitSignaturesAre(repo, "refs/notes/batmobile", Constants.Signature);
171+
AssertCommitSignaturesAre(repo.Lookup<Commit>("refs/notes/batmobile"), Constants.Signature);
172172
}
173173
}
174174

@@ -265,7 +265,7 @@ public void CanRemoveANoteWithSignatureFromConfig()
265265

266266
Assert.Empty(notes);
267267

268-
AssertCommitSignaturesAre(repo, "refs/notes/" + repo.Notes.DefaultNamespace, Constants.Signature);
268+
AssertCommitSignaturesAre(repo.Lookup<Commit>("refs/notes/" + repo.Notes.DefaultNamespace), Constants.Signature);
269269
}
270270
}
271271

@@ -289,22 +289,6 @@ public void CanRetrieveTheListOfNotesForAGivenNamespace()
289289
}
290290
}
291291

292-
/// <summary>
293-
/// Verifies that the commit has been authored and committed by the specified signature
294-
/// </summary>
295-
/// <param name="repo">The repository</param>
296-
/// <param name="commitish">The commit whose author and commiter properties to verify</param>
297-
/// <param name="signature">The signature to compare author and commiter to</param>
298-
private void AssertCommitSignaturesAre(Repository repo, string commitish, Signature signature)
299-
{
300-
Commit commit = repo.Lookup<Commit>(commitish);
301-
Assert.NotNull(commit);
302-
Assert.Equal(signature.Name, commit.Author.Name);
303-
Assert.Equal(signature.Email, commit.Author.Email);
304-
Assert.Equal(signature.Name, commit.Committer.Name);
305-
Assert.Equal(signature.Email, commit.Committer.Email);
306-
}
307-
308292
private static T[] SortedNotes<T>(IEnumerable<Note> notes, Func<Note, T> selector)
309293
{
310294
return notes.OrderBy(n => n.Message, StringComparer.Ordinal).Select(selector).ToArray();

LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,19 @@ protected string CreateConfigurationWithDummyUser(Signature signature)
286286
return configFilePath;
287287
}
288288

289+
/// <summary>
290+
/// Asserts that the commit has been authored and committed by the specified signature
291+
/// </summary>
292+
/// <param name="commit">The commit</param>
293+
/// <param name="signature">The signature to compare author and commiter to</param>
294+
protected void AssertCommitSignaturesAre(Commit commit, Signature signature)
295+
{
296+
Assert.Equal(signature.Name, commit.Author.Name);
297+
Assert.Equal(signature.Email, commit.Author.Email);
298+
Assert.Equal(signature.Name, commit.Committer.Name);
299+
Assert.Equal(signature.Email, commit.Committer.Email);
300+
}
301+
289302
protected static string Touch(string parent, string file, string content = null, Encoding encoding = null)
290303
{
291304
string filePath = Path.Combine(parent, file);

0 commit comments

Comments
 (0)
0