Skip to content

Commit bfd1564

Browse files
committed
Enforce OdbBackend test coverage
1 parent 1ca821c commit bfd1564

1 file changed

Lines changed: 33 additions & 2 deletions

File tree

LibGit2Sharp.Tests/OdbBackendFixture.cs

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,31 @@ public void CanRetrieveObjectsThroughOddSizedShortShas()
122122
}
123123
}
124124

125+
[Fact]
126+
public void CanEnumerateTheContentOfTheObjectDatabase()
127+
{
128+
string repoPath = InitNewRepository();
129+
130+
using (var repo = new Repository(repoPath))
131+
{
132+
var backend = new MockOdbBackend();
133+
repo.ObjectDatabase.AddBackend(backend, priority: 5);
134+
135+
AddCommitToRepo(repo);
136+
137+
var expected = new[]{ "1fe3126", "2b297e6", "6518215", "9daeafb" };
138+
139+
IEnumerable<GitObject> objs = repo.ObjectDatabase;
140+
141+
IEnumerable<string> retrieved =
142+
objs
143+
.Select(o => o.Id.ToString(7))
144+
.OrderBy(s => s, StringComparer.Ordinal);
145+
146+
Assert.Equal(expected, retrieved);
147+
}
148+
}
149+
125150
#region MockOdbBackend
126151

127152
private class MockOdbBackend : OdbBackend
@@ -134,7 +159,8 @@ protected override OdbBackendOperations SupportedOperations
134159
OdbBackendOperations.ReadPrefix |
135160
OdbBackendOperations.Write |
136161
OdbBackendOperations.WriteStream |
137-
OdbBackendOperations.Exists;
162+
OdbBackendOperations.Exists |
163+
OdbBackendOperations.ForEach;
138164
}
139165
}
140166

@@ -286,7 +312,12 @@ public override int ReadStream(ObjectId oid, out OdbBackendStream stream)
286312

287313
public override int ForEach(ForEachCallback callback)
288314
{
289-
throw new NotImplementedException();
315+
foreach (var mockGitObject in m_objectIdToContent)
316+
{
317+
callback(mockGitObject.Key);
318+
}
319+
320+
return GIT_OK;
290321
}
291322

292323
#endregion

0 commit comments

Comments
 (0)