Skip to content

Commit 3834bda

Browse files
authored
Merge pull request #149 from tsimbalar/bugfix/nullable-iconfig
No longer throw when calling a method with optional IConfiguration param
2 parents dc53ec3 + 7ead54e commit 3834bda

File tree

3 files changed

+29
-4
lines changed

3 files changed

+29
-4
lines changed

src/Serilog.Settings.Configuration/Settings/Configuration/ConfigurationReader.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ static void CallConfigurationMethods(ILookup<string, Dictionary<string, IConfigu
331331
select directive.Key == null ? p.DefaultValue : directive.Value.ConvertTo(p.ParameterType, declaredLevelSwitches)).ToList();
332332

333333
var parm = methodInfo.GetParameters().FirstOrDefault(i => i.ParameterType == typeof(IConfiguration));
334-
if (parm != null)
334+
if (parm != null && !parm.HasDefaultValue)
335335
{
336336
if (_configuration is null)
337337
{

test/Serilog.Settings.Configuration.Tests/ConfigurationSettingsTests.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,8 @@ public void SinkWithOptionalIConfigurationArguments()
462462

463463
log.Write(Some.InformationEvent());
464464

465-
Assert.NotNull(DummyConfigurationSink.Configuration);
465+
// null is the default value
466+
Assert.Null(DummyConfigurationSink.Configuration);
466467
}
467468

468469
[Fact]

test/Serilog.Settings.Configuration.Tests/LoggerConfigurationExtensionsTests.cs

+26-2
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,7 @@ public void ReadFromConfigurationSectionThrowsWhenTryingToCallConfigurationMetho
5555
""Using"": [""TestDummies""],
5656
""WriteTo"": [{
5757
""Name"": ""DummyWithConfiguration"",
58-
""Args"": {""pathFormat"" : ""C:\\"",
59-
""configurationSection"" : { ""foo"" : ""bar"" } }
58+
""Args"": {}
6059
}]
6160
}
6261
}";
@@ -76,5 +75,30 @@ public void ReadFromConfigurationSectionThrowsWhenTryingToCallConfigurationMetho
7675
exception.Message);
7776

7877
}
78+
79+
[Fact]
80+
[Trait("BugFix", "https://github.com/serilog/serilog-settings-configuration/issues/143")]
81+
public void ReadFromConfigurationSectionDoesNotThrowWhenTryingToCallConfigurationMethodWithOptionalIConfigurationParam()
82+
{
83+
var json = @"{
84+
""NotSerilog"": {
85+
""Using"": [""TestDummies""],
86+
""WriteTo"": [{
87+
""Name"": ""DummyWithOptionalConfiguration"",
88+
""Args"": {}
89+
}]
90+
}
91+
}";
92+
93+
var config = new ConfigurationBuilder()
94+
.AddJsonString(json)
95+
.Build();
96+
97+
// this should not throw because DummyWithOptionalConfiguration accepts an optional config
98+
new LoggerConfiguration()
99+
.ReadFrom.ConfigurationSection(config.GetSection("NotSerilog"))
100+
.CreateLogger();
101+
102+
}
79103
}
80104
}

0 commit comments

Comments
 (0)