Skip to content

Commit d778e00

Browse files
committed
More test cases for IServiceProvider.GetRequiredService.
Still no repro for #210
1 parent 98ef5f7 commit d778e00

File tree

1 file changed

+34
-0
lines changed
  • IDisposableAnalyzers.NetCoreTests/IDISP004DontIgnoreReturnValueOfTypeIDisposableTests

1 file changed

+34
-0
lines changed

IDisposableAnalyzers.NetCoreTests/IDISP004DontIgnoreReturnValueOfTypeIDisposableTests/Valid.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,5 +100,39 @@ public void Dispose()
100100
}".AssertReplace("var disposable = serviceProvider.GetRequiredService<Disposable>();", statement);
101101
RoslynAssert.Valid(Analyzer, code);
102102
}
103+
104+
[TestCase("var disposable = this.serviceProvider.GetRequiredService<Disposable>();")]
105+
[TestCase("_ = this.serviceProvider.GetRequiredService<Disposable>();")]
106+
[TestCase("var loggerFactory = this.serviceProvider.GetRequiredService<ILoggerFactory>();")]
107+
[TestCase("_ = this.serviceProvider.GetRequiredService<ILoggerFactory>();")]
108+
public static void IServiceProviderGetRequiredServiceField(string statement)
109+
{
110+
var code = @"
111+
namespace N
112+
{
113+
using System;
114+
using Microsoft.Extensions.DependencyInjection;
115+
using Microsoft.Extensions.Logging;
116+
117+
public class C
118+
{
119+
private readonly IServiceProvider serviceProvider;
120+
121+
public C(IServiceProvider serviceProvider)
122+
{
123+
this.serviceProvider = serviceProvider;
124+
var disposable = this.serviceProvider.GetRequiredService<Disposable>();
125+
}
126+
127+
public sealed class Disposable : IDisposable
128+
{
129+
public void Dispose()
130+
{
131+
}
132+
}
133+
}
134+
}".AssertReplace("var disposable = this.serviceProvider.GetRequiredService<Disposable>();", statement);
135+
RoslynAssert.Valid(Analyzer, code);
136+
}
103137
}
104138
}

0 commit comments

Comments
 (0)