Skip to content

Commit c1a65a7

Browse files
committed
Switching to TUnit
1 parent 64f68fa commit c1a65a7

File tree

9 files changed

+83
-123
lines changed

9 files changed

+83
-123
lines changed

src/AutoCtor.Tests/AutoCtor.Tests.csproj

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,10 @@
4646
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing" />
4747
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" />
4848
<PackageReference Include="Microsoft.NET.Test.Sdk" />
49+
<PackageReference Include="TUnit" />
4950
<PackageReference Include="Verify.DiffPlex" />
5051
<PackageReference Include="Verify.SourceGenerators" />
51-
<PackageReference Include="Verify.XunitV3" />
52-
<PackageReference Include="xunit.analyzers">
53-
<PrivateAssets>all</PrivateAssets>
54-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
55-
</PackageReference>
56-
<PackageReference Include="xunit.runner.visualstudio" PrivateAssets="all" />
57-
<PackageReference Include="xunit.v3" />
52+
<PackageReference Include="Verify.TUnit" />
5853
</ItemGroup>
5954

6055
<ItemGroup>

src/AutoCtor.Tests/ExampleTests.cs

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ namespace AutoCtor.Tests;
88

99
public class ExampleTests
1010
{
11-
[Theory]
12-
[MemberData(nameof(GetExamples))]
11+
[Test]
12+
[MethodDataSource(nameof(GetExamples))]
1313
public async Task ExamplesGeneratedCode(CodeFileTheoryData theoryData)
1414
{
1515
var builder = CreateCompilation(theoryData);
@@ -18,16 +18,16 @@ public async Task ExamplesGeneratedCode(CodeFileTheoryData theoryData)
1818
.AddGenerator(new AutoConstructSourceGenerator())
1919
.WithAnalyzerOptions(theoryData.Options)
2020
.Build(builder.ParseOptions)
21-
.RunGenerators(compilation, TestContext.Current.CancellationToken);
21+
.RunGenerators(compilation, TestHelper.CancellationToken);
2222

2323
await Verify(driver)
2424
.UseDirectory(theoryData.VerifiedDirectory)
2525
.UseTypeName(theoryData.Name)
2626
.IgnoreParametersForVerified();
2727
}
2828

29-
[Theory]
30-
[MemberData(nameof(GetExamples))]
29+
[Test]
30+
[MethodDataSource(nameof(GetExamples))]
3131
public async Task CodeCompilesProperly(CodeFileTheoryData theoryData)
3232
{
3333
var builder = CreateCompilation(theoryData);
@@ -40,15 +40,16 @@ public async Task CodeCompilesProperly(CodeFileTheoryData theoryData)
4040
compilation,
4141
out var outputCompilation,
4242
out _,
43-
TestContext.Current.CancellationToken);
43+
TestHelper.CancellationToken);
4444

45-
Assert.Empty(outputCompilation.GetDiagnostics(TestContext.Current.CancellationToken)
46-
.Where(d => !theoryData.IgnoredCompileDiagnostics.Contains(d.Id)));
45+
await Assert.That(outputCompilation.GetDiagnostics(TestHelper.CancellationToken)
46+
.Where(d => !theoryData.IgnoredCompileDiagnostics.Contains(d.Id)))
47+
.IsEmpty();
4748
}
4849

4950
#if ROSLYN_4_4
50-
[Theory]
51-
[MemberData(nameof(GetExamples))]
51+
[Test]
52+
[MethodDataSource(nameof(GetExamples))]
5253
public async Task EnsureRunsAreCachedCorrectly(CodeFileTheoryData theoryData)
5354
{
5455
var builder = CreateCompilation(theoryData);
@@ -59,20 +60,20 @@ public async Task EnsureRunsAreCachedCorrectly(CodeFileTheoryData theoryData)
5960
.WithAnalyzerOptions(theoryData.Options)
6061
.Build(builder.ParseOptions);
6162

62-
driver = driver.RunGenerators(compilation, TestContext.Current.CancellationToken);
63+
driver = driver.RunGenerators(compilation, TestHelper.CancellationToken);
6364
var firstResult = driver.GetRunResult();
6465

6566
// Change the compilation
6667
compilation = compilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText("// dummy",
6768
CSharpParseOptions.Default.WithLanguageVersion(theoryData.LangPreview
6869
? LanguageVersion.Preview
6970
: LanguageVersion.Latest),
70-
cancellationToken: TestContext.Current.CancellationToken));
71+
cancellationToken: TestHelper.CancellationToken));
7172

72-
driver = driver.RunGenerators(compilation, TestContext.Current.CancellationToken);
73+
driver = driver.RunGenerators(compilation, TestHelper.CancellationToken);
7374
var secondResult = driver.GetRunResult();
7475

75-
AssertRunsEqual(firstResult, secondResult,
76+
await AssertRunsEqual(firstResult, secondResult,
7677
AutoConstructSourceGenerator.TrackingNames.AllTrackers);
7778
}
7879
#endif
@@ -99,39 +100,35 @@ private static CompilationBuilder CreateCompilation(CodeFileTheoryData theoryDat
99100

100101
private static IEnumerable<string> GetExamplesFiles(string path) => Directory.GetFiles(Path.Combine(BaseDir?.FullName ?? "", path), "*.cs").Where(e => !e.Contains(".g."));
101102

102-
public static TheoryData<CodeFileTheoryData> GetExamples()
103+
public static IEnumerable<CodeFileTheoryData> GetExamples()
103104
{
104105
if (BaseDir == null)
105106
throw new Exception("BaseDir is null");
106107

107-
var data = new TheoryData<CodeFileTheoryData>();
108-
109108
foreach (var example in GetExamplesFiles("Examples"))
110109
{
111-
data.Add(new CodeFileTheoryData(example) with
110+
yield return new CodeFileTheoryData(example) with
112111
{
113112
IgnoredCompileDiagnostics = ["CS0414", "CS0169"] // Ignore unused fields
114-
});
113+
};
115114
}
116115

117116
foreach (var guardExample in GetExamplesFiles("GuardExamples"))
118117
{
119-
data.Add(new CodeFileTheoryData(guardExample) with
118+
yield return new CodeFileTheoryData(guardExample) with
120119
{
121120
Options = new() { { "build_property.AutoCtorGuards", "true" } }
122-
});
121+
};
123122
}
124123

125124
foreach (var langExample in GetExamplesFiles("LangExamples"))
126125
{
127126
var verifiedName = string.Concat("Verified_", PreprocessorSymbols.Last().AsSpan(7));
128-
data.Add(new CodeFileTheoryData(langExample) with
127+
yield return new CodeFileTheoryData(langExample) with
129128
{
130129
VerifiedDirectory = Path.Combine(Path.GetDirectoryName(langExample) ?? "", verifiedName),
131130
LangPreview = true,
132-
});
131+
};
133132
}
134-
135-
return data;
136133
}
137134
}

src/AutoCtor.Tests/GeneratedAttributeTests.cs

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
public class GeneratedAttributeTests
44
{
5-
[Fact]
5+
[Test]
66
public async Task AttributeGeneratedCode()
77
{
88
var builder = new CompilationBuilder()
@@ -12,12 +12,12 @@ public async Task AttributeGeneratedCode()
1212
var driver = new GeneratorDriverBuilder()
1313
.AddGenerator(new AttributeSourceGenerator())
1414
.Build(builder.ParseOptions)
15-
.RunGenerators(compilation, TestContext.Current.CancellationToken);
15+
.RunGenerators(compilation, TestHelper.CancellationToken);
1616

1717
await Verify(driver);
1818
}
1919

20-
[Fact]
20+
[Test]
2121
public async Task AttributeCompilesProperly()
2222
{
2323
var builder = new CompilationBuilder()
@@ -31,13 +31,16 @@ public async Task AttributeCompilesProperly()
3131
compilation,
3232
out var outputCompilation,
3333
out var diagnostics,
34-
TestContext.Current.CancellationToken);
34+
TestHelper.CancellationToken);
3535

36-
Assert.Empty(diagnostics);
37-
Assert.Empty(outputCompilation.GetDiagnostics(TestContext.Current.CancellationToken));
36+
var outputCompilationDiagnostics = outputCompilation
37+
.GetDiagnostics(TestHelper.CancellationToken);
38+
39+
await Assert.That(diagnostics).IsEmpty();
40+
await Assert.That(outputCompilationDiagnostics).IsEmpty();
3841
}
3942

40-
[Fact]
43+
[Test]
4144
public async Task PreserveAttributesTest()
4245
{
4346
var builder = new CompilationBuilder()
@@ -54,13 +57,16 @@ public async Task PreserveAttributesTest()
5457
compilation,
5558
out var outputCompilation,
5659
out var diagnostics,
57-
TestContext.Current.CancellationToken);
60+
TestHelper.CancellationToken);
61+
62+
var outputCompilationDiagnostics = outputCompilation
63+
.GetDiagnostics(TestHelper.CancellationToken);
5864

59-
Assert.Empty(diagnostics);
60-
Assert.Empty(outputCompilation.GetDiagnostics(TestContext.Current.CancellationToken));
65+
await Assert.That(diagnostics).IsEmpty();
66+
await Assert.That(outputCompilationDiagnostics).IsEmpty();
6167
}
6268

63-
[Fact]
69+
[Test]
6470
public async Task EnsureGeneratedAttributesAreNotExternallyVisible()
6571
{
6672
// Issue 312
@@ -75,7 +81,7 @@ public async Task EnsureGeneratedAttributesAreNotExternallyVisible()
7581
var projectA = await compileBuilder
7682
.Build("ProjectA");
7783

78-
genDriver = genDriver.RunGeneratorsAndUpdateCompilation(projectA, out var genProjectA, out _, TestContext.Current.CancellationToken);
84+
genDriver = genDriver.RunGeneratorsAndUpdateCompilation(projectA, out var genProjectA, out _, TestHelper.CancellationToken);
7985

8086
var projectB = await compileBuilder
8187
.AddCompilationReference(genProjectA)
@@ -85,9 +91,12 @@ public async Task EnsureGeneratedAttributesAreNotExternallyVisible()
8591
projectB,
8692
out var outputCompilation,
8793
out var diagnostics,
88-
TestContext.Current.CancellationToken);
94+
TestHelper.CancellationToken);
95+
96+
var outputCompilationDiagnostics = outputCompilation
97+
.GetDiagnostics(TestHelper.CancellationToken);
8998

90-
Assert.Empty(diagnostics);
91-
Assert.Empty(outputCompilation.GetDiagnostics(TestContext.Current.CancellationToken));
99+
await Assert.That(diagnostics).IsEmpty();
100+
await Assert.That(outputCompilationDiagnostics).IsEmpty();
92101
}
93102
}

src/AutoCtor.Tests/Issue73.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,20 @@ namespace AutoCtor.Tests;
55

66
public class Issue73
77
{
8-
[Fact]
8+
[Test]
99
public async Task VerifyGeneratedCode()
1010
{
1111
var common = Common();
1212
var compilation = await Compile(common);
1313
var driver = new GeneratorDriverBuilder()
1414
.AddGenerator(new AutoConstructSourceGenerator())
1515
.Build(common.ParseOptions)
16-
.RunGenerators(compilation, TestContext.Current.CancellationToken);
16+
.RunGenerators(compilation, TestHelper.CancellationToken);
1717

1818
await Verify(driver);
1919
}
2020

21-
[Fact]
21+
[Test]
2222
public async Task CodeCompilesWithoutErrors()
2323
{
2424
string[] ignoredWarnings = ["CS0414"]; // Ignore unused fields
@@ -32,11 +32,14 @@ public async Task CodeCompilesWithoutErrors()
3232
compilation,
3333
out var outputCompilation,
3434
out var diagnostics,
35-
TestContext.Current.CancellationToken);
35+
TestHelper.CancellationToken);
3636

37-
Assert.Empty(diagnostics);
38-
Assert.Empty(outputCompilation.GetDiagnostics(TestContext.Current.CancellationToken)
39-
.Where(d => !ignoredWarnings.Contains(d.Id)));
37+
var outputCompilationDiagnostics = outputCompilation
38+
.GetDiagnostics(TestHelper.CancellationToken)
39+
.Where(d => !ignoredWarnings.Contains(d.Id));
40+
41+
await Assert.That(diagnostics).IsEmpty();
42+
await Assert.That(outputCompilationDiagnostics).IsEmpty();
4043
}
4144

4245
private static CompilationBuilder Common()
Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
using System.Diagnostics.CodeAnalysis;
2-
using Microsoft.CodeAnalysis;
3-
using Xunit.Sdk;
42

5-
public record CodeFileTheoryData : IXunitSerializable
3+
public record CodeFileTheoryData
64
{
75
public required string Name { get; set; }
86
public required string[] Codes { get; set; }
@@ -20,34 +18,5 @@ public CodeFileTheoryData(string file, params string[] codes)
2018
VerifiedDirectory = Path.GetDirectoryName(file) ?? "";
2119
}
2220

23-
public CodeFileTheoryData() { }
24-
25-
public void Deserialize(IXunitSerializationInfo info)
26-
{
27-
Name = info.GetValue<string>(nameof(Name))
28-
?? throw new Exception($"Missing {nameof(Name)} in theory serialization");
29-
Codes = info.GetValue<string[]>(nameof(Codes))
30-
?? throw new Exception($"Missing {nameof(Codes)} in theory serialization");
31-
VerifiedDirectory = info.GetValue<string>(nameof(VerifiedDirectory))
32-
?? throw new Exception($"Missing {nameof(VerifiedDirectory)} in theory serialization");
33-
Options = info.GetValue<string[]>(nameof(Options))?
34-
.Select(o => o.Split('|'))
35-
.ToDictionary(o => o[0], o => o[1])
36-
?? throw new Exception($"Missing {nameof(Options)} in theory serialization");
37-
LangPreview = info.GetValue<bool>(nameof(LangPreview));
38-
IgnoredCompileDiagnostics = info.GetValue<string[]>(nameof(IgnoredCompileDiagnostics))
39-
?? throw new Exception($"Missing {nameof(IgnoredCompileDiagnostics)} in theory serialization");
40-
}
41-
42-
public void Serialize(IXunitSerializationInfo info)
43-
{
44-
info.AddValue(nameof(Name), Name);
45-
info.AddValue(nameof(Codes), Codes);
46-
info.AddValue(nameof(VerifiedDirectory), VerifiedDirectory);
47-
info.AddValue(nameof(Options), Options.Select(o => $"{o.Key}|{o.Value}").ToArray());
48-
info.AddValue(nameof(LangPreview), LangPreview);
49-
info.AddValue(nameof(IgnoredCompileDiagnostics), IgnoredCompileDiagnostics);
50-
}
51-
5221
public override string ToString() => Name + ".cs";
5322
}

0 commit comments

Comments
 (0)