Skip to content

Commit ac2d44a

Browse files
Copilotlinkdotnet
andcommitted
fix: Replace obsolete AnalyzerVerifier with modern CSharpAnalyzerTest
- Fix CS0618 warning by replacing obsolete Microsoft.CodeAnalysis.CSharp.Testing.XUnit.AnalyzerVerifier - Use CSharpAnalyzerTest<TAnalyzer, TVerifier> with DefaultVerifier instead - Update all test code strings to use file-scoped namespaces - Remove obsolete using alias pattern Co-authored-by: linkdotnet <[email protected]>
1 parent c24c14d commit ac2d44a

File tree

1 file changed

+129
-117
lines changed

1 file changed

+129
-117
lines changed
Lines changed: 129 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
using System.Threading.Tasks;
2-
using Microsoft.CodeAnalysis;
2+
using Microsoft.CodeAnalysis.CSharp.Testing;
33
using Microsoft.CodeAnalysis.Testing;
4+
using Microsoft.CodeAnalysis.Testing.Verifiers;
45
using Xunit;
5-
using VerifyCS = Microsoft.CodeAnalysis.CSharp.Testing.XUnit.AnalyzerVerifier<Bunit.Analyzers.PreferGenericFindAnalyzer>;
66

77
namespace Bunit.Analyzers.Tests;
88

@@ -12,206 +12,218 @@ public class PreferGenericFindAnalyzerTests
1212
public async Task NoDiagnostic_WhenUsingGenericFind()
1313
{
1414
const string code = @"
15-
namespace TestNamespace
15+
namespace TestNamespace;
16+
17+
public class TestClass
1618
{
17-
public class TestClass
19+
public void TestMethod()
1820
{
19-
public void TestMethod()
20-
{
21-
var cut = new TestHelper();
22-
var elem = cut.Find<string>(""a"");
23-
}
21+
var cut = new TestHelper();
22+
var elem = cut.Find<string>(""a"");
2423
}
24+
}
2525
26-
public class TestHelper
27-
{
28-
public T Find<T>(string selector) => default(T);
29-
}
30-
}";
26+
public class TestHelper
27+
{
28+
public T Find<T>(string selector) => default(T);
29+
}
30+
";
3131

32-
await VerifyCS.VerifyAnalyzerAsync(code);
32+
await VerifyAnalyzerAsync(code);
3333
}
3434

3535
[Fact]
3636
public async Task NoDiagnostic_WhenCastingNonFindMethod()
3737
{
3838
const string code = @"
39-
namespace TestNamespace
39+
namespace TestNamespace;
40+
41+
public class TestClass
4042
{
41-
public class TestClass
43+
public void TestMethod()
4244
{
43-
public void TestMethod()
44-
{
45-
var obj = new TestHelper();
46-
var elem = (string)obj.GetSomething();
47-
}
45+
var obj = new TestHelper();
46+
var elem = (string)obj.GetSomething();
4847
}
48+
}
4949
50-
public class TestHelper
51-
{
52-
public object GetSomething() => null;
53-
}
54-
}";
50+
public class TestHelper
51+
{
52+
public object GetSomething() => null;
53+
}
54+
";
5555

56-
await VerifyCS.VerifyAnalyzerAsync(code);
56+
await VerifyAnalyzerAsync(code);
5757
}
5858

5959
[Fact]
6060
public async Task NoDiagnostic_WhenFindIsNotFromRenderedComponent()
6161
{
6262
const string code = @"
63-
namespace TestNamespace
63+
namespace TestNamespace;
64+
65+
public class TestClass
6466
{
65-
public class TestClass
67+
public void TestMethod()
6668
{
67-
public void TestMethod()
68-
{
69-
var helper = new UnrelatedHelper();
70-
var result = (string)helper.Find(""test"");
71-
}
69+
var helper = new UnrelatedHelper();
70+
var result = (string)helper.Find(""test"");
7271
}
72+
}
7373
74-
public class UnrelatedHelper
75-
{
76-
public object Find(string selector) => null;
77-
}
78-
}";
74+
public class UnrelatedHelper
75+
{
76+
public object Find(string selector) => null;
77+
}
78+
";
7979

80-
await VerifyCS.VerifyAnalyzerAsync(code);
80+
await VerifyAnalyzerAsync(code);
8181
}
8282

8383
[Fact]
8484
public async Task Diagnostic_WhenCastingFindResultFromIRenderedComponent()
8585
{
8686
const string code = @"
87-
namespace TestNamespace
88-
{
89-
public interface IMyElement { }
87+
namespace TestNamespace;
9088
91-
public class TestClass
92-
{
93-
public void TestMethod()
94-
{
95-
var cut = new MockRenderedComponent();
96-
IMyElement elem = {|#0:(IMyElement)cut.Find(""a"")|};
97-
}
98-
}
89+
public interface IMyElement { }
9990
100-
public interface IRenderedComponent
91+
public class TestClass
92+
{
93+
public void TestMethod()
10194
{
102-
object Find(string selector);
95+
var cut = new MockRenderedComponent();
96+
IMyElement elem = {|#0:(IMyElement)cut.Find(""a"")|};
10397
}
98+
}
10499
105-
public class MockRenderedComponent : IRenderedComponent
106-
{
107-
public object Find(string selector) => null;
108-
}
109-
}";
100+
public interface IRenderedComponent
101+
{
102+
object Find(string selector);
103+
}
110104
111-
var expected = VerifyCS.Diagnostic(DiagnosticDescriptors.PreferGenericFind.Id)
105+
public class MockRenderedComponent : IRenderedComponent
106+
{
107+
public object Find(string selector) => null;
108+
}
109+
";
110+
111+
var expected = new DiagnosticResult(DiagnosticDescriptors.PreferGenericFind)
112112
.WithLocation(0)
113113
.WithArguments("IMyElement", "\"a\"");
114114

115-
await VerifyCS.VerifyAnalyzerAsync(code, expected);
115+
await VerifyAnalyzerAsync(code, expected);
116116
}
117117

118118
[Fact]
119119
public async Task Diagnostic_WhenCastingFindResultFromRenderedComponent()
120120
{
121121
const string code = @"
122-
namespace TestNamespace
123-
{
124-
public interface IMyElement { }
122+
namespace TestNamespace;
125123
126-
public class TestClass
127-
{
128-
public void TestMethod()
129-
{
130-
var cut = new MockRenderedComponent();
131-
var elem = {|#0:(IMyElement)cut.Find(""div"")|};
132-
}
133-
}
124+
public interface IMyElement { }
134125
135-
public interface IRenderedComponent
126+
public class TestClass
127+
{
128+
public void TestMethod()
136129
{
137-
object Find(string selector);
130+
var cut = new MockRenderedComponent();
131+
var elem = {|#0:(IMyElement)cut.Find(""div"")|};
138132
}
133+
}
139134
140-
public class MockRenderedComponent : IRenderedComponent
141-
{
142-
public object Find(string selector) => null;
143-
}
144-
}";
135+
public interface IRenderedComponent
136+
{
137+
object Find(string selector);
138+
}
139+
140+
public class MockRenderedComponent : IRenderedComponent
141+
{
142+
public object Find(string selector) => null;
143+
}
144+
";
145145

146-
var expected = VerifyCS.Diagnostic(DiagnosticDescriptors.PreferGenericFind.Id)
146+
var expected = new DiagnosticResult(DiagnosticDescriptors.PreferGenericFind)
147147
.WithLocation(0)
148148
.WithArguments("IMyElement", "\"div\"");
149149

150-
await VerifyCS.VerifyAnalyzerAsync(code, expected);
150+
await VerifyAnalyzerAsync(code, expected);
151151
}
152152

153153
[Fact]
154154
public async Task Diagnostic_WhenCastingFindResultFromRenderedComponentType()
155155
{
156156
const string code = @"
157-
namespace TestNamespace
158-
{
159-
public interface IMyElement { }
157+
namespace TestNamespace;
160158
161-
public class TestClass
162-
{
163-
public void TestMethod()
164-
{
165-
var cut = new RenderedComponent();
166-
var button = {|#0:(IMyElement)cut.Find(""button"")|};
167-
}
168-
}
159+
public interface IMyElement { }
169160
170-
public class RenderedComponent
161+
public class TestClass
162+
{
163+
public void TestMethod()
171164
{
172-
public object Find(string selector) => null;
165+
var cut = new RenderedComponent();
166+
var button = {|#0:(IMyElement)cut.Find(""button"")|};
173167
}
174-
}";
168+
}
169+
170+
public class RenderedComponent
171+
{
172+
public object Find(string selector) => null;
173+
}
174+
";
175175

176-
var expected = VerifyCS.Diagnostic(DiagnosticDescriptors.PreferGenericFind.Id)
176+
var expected = new DiagnosticResult(DiagnosticDescriptors.PreferGenericFind)
177177
.WithLocation(0)
178178
.WithArguments("IMyElement", "\"button\"");
179179

180-
await VerifyCS.VerifyAnalyzerAsync(code, expected);
180+
await VerifyAnalyzerAsync(code, expected);
181181
}
182182

183183
[Fact]
184184
public async Task Diagnostic_WithComplexSelector()
185185
{
186186
const string code = @"
187-
namespace TestNamespace
188-
{
189-
public interface IMyElement { }
187+
namespace TestNamespace;
190188
191-
public class TestClass
192-
{
193-
public void TestMethod()
194-
{
195-
var cut = new MockRenderedComponent();
196-
var link = {|#0:(IMyElement)cut.Find(""a.nav-link[href='/home']"")|};
197-
}
198-
}
189+
public interface IMyElement { }
199190
200-
public interface IRenderedComponent
191+
public class TestClass
192+
{
193+
public void TestMethod()
201194
{
202-
object Find(string selector);
195+
var cut = new MockRenderedComponent();
196+
var link = {|#0:(IMyElement)cut.Find(""a.nav-link[href='/home']"")|};
203197
}
198+
}
204199
205-
public class MockRenderedComponent : IRenderedComponent
206-
{
207-
public object Find(string selector) => null;
208-
}
209-
}";
200+
public interface IRenderedComponent
201+
{
202+
object Find(string selector);
203+
}
210204
211-
var expected = VerifyCS.Diagnostic(DiagnosticDescriptors.PreferGenericFind.Id)
205+
public class MockRenderedComponent : IRenderedComponent
206+
{
207+
public object Find(string selector) => null;
208+
}
209+
";
210+
211+
var expected = new DiagnosticResult(DiagnosticDescriptors.PreferGenericFind)
212212
.WithLocation(0)
213213
.WithArguments("IMyElement", "\"a.nav-link[href='/home']\"");
214214

215-
await VerifyCS.VerifyAnalyzerAsync(code, expected);
215+
await VerifyAnalyzerAsync(code, expected);
216+
}
217+
218+
private static Task VerifyAnalyzerAsync(string source, params DiagnosticResult[] expected)
219+
{
220+
var test = new CSharpAnalyzerTest<PreferGenericFindAnalyzer, DefaultVerifier>
221+
{
222+
TestCode = source,
223+
ReferenceAssemblies = ReferenceAssemblies.Net.Net80
224+
};
225+
226+
test.ExpectedDiagnostics.AddRange(expected);
227+
return test.RunAsync();
216228
}
217229
}

0 commit comments

Comments
 (0)