Skip to content

Commit 1d16de1

Browse files
committed
fixup! Configuration.Testability++
1 parent 684769f commit 1d16de1

4 files changed

Lines changed: 25 additions & 10 deletions

File tree

LibGit2Sharp.Tests/ConfigurationFixture.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
using System;
2-
using System.Collections.Generic;
32
using System.IO;
43
using System.Linq;
54
using LibGit2Sharp.Tests.TestHelpers;
6-
using Moq;
75
using Xunit;
86

97
namespace LibGit2Sharp.Tests

LibGit2Sharp.Tests/MockingFixture.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,17 @@ public void CanFakeEnumerationOfConfiguration()
9595
Assert.Equal(2, fakeConfig.Object.Count());
9696
}
9797

98-
private IEnumerator<ConfigurationEntry<string>> FakeEntries()
98+
private static IEnumerator<ConfigurationEntry<string>> FakeEntries()
9999
{
100-
yield return new ConfigurationEntry<string>("foo", "bar", ConfigurationLevel.Local);
101-
yield return new ConfigurationEntry<string>("baz", "quux", ConfigurationLevel.Global);
100+
yield return FakeConfigurationEntry("foo", "bar", ConfigurationLevel.Local);
101+
yield return FakeConfigurationEntry("baz", "quux", ConfigurationLevel.Global);
102+
}
103+
104+
private static ConfigurationEntry<string> FakeConfigurationEntry(string key, string value, ConfigurationLevel level)
105+
{
106+
return Mock.Of<ConfigurationEntry<string>>(e => e.Key == key &&
107+
e.Value == value &&
108+
e.Level == level);
102109
}
103110
}
104111
}

LibGit2Sharp/Configuration.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,10 @@ private static Action<string, object, ConfigurationSafeHandle> GetUpdater<T>(Act
266266
{ typeof(string), GetUpdater<string>(Proxy.git_config_set_string) },
267267
};
268268

269+
/// <summary>
270+
/// Returns an enumerator that iterates through the configuration entries.
271+
/// </summary>
272+
/// <returns>An <see cref="IEnumerator{T}"/> object that can be used to iterate through the configuration entries.</returns>
269273
public virtual IEnumerator<ConfigurationEntry<string>> GetEnumerator()
270274
{
271275
return BuildConfigEntries().GetEnumerator();

LibGit2Sharp/ConfigurationEntry.cs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,30 +8,36 @@ namespace LibGit2Sharp
88
/// </summary>
99
/// <typeparam name="T">The configuration value type</typeparam>
1010
[DebuggerDisplay("{DebuggerDisplay,nq}")]
11-
public sealed class ConfigurationEntry<T>
11+
public class ConfigurationEntry<T>
1212
{
1313
/// <summary>
1414
/// The fully-qualified option name.
1515
/// </summary>
16-
public string Key { get; private set; }
16+
public virtual string Key { get; private set; }
1717

1818
/// <summary>
1919
/// The option value.
2020
/// </summary>
21-
public T Value { get; private set; }
21+
public virtual T Value { get; private set; }
2222

2323
/// <summary>
2424
/// The origin store.
2525
/// </summary>
26-
public ConfigurationLevel Level { get; private set; }
26+
public virtual ConfigurationLevel Level { get; private set; }
27+
28+
/// <summary>
29+
/// Needed for mocking purposes.
30+
/// </summary>
31+
protected ConfigurationEntry()
32+
{ }
2733

2834
/// <summary>
2935
/// Initializes a new instance of the <see cref="ConfigurationEntry{T}"/> class with a given key and value
3036
/// </summary>
3137
/// <param name="key">The option name</param>
3238
/// <param name="value">The option value</param>
3339
/// <param name="level">The origin store</param>
34-
public ConfigurationEntry(string key, T value, ConfigurationLevel level)
40+
internal ConfigurationEntry(string key, T value, ConfigurationLevel level)
3541
{
3642
Key = key;
3743
Value = value;

0 commit comments

Comments
 (0)