Skip to content

Commit e90af68

Browse files
committed
- Update testing to use TestLibrary project pattern.
- Update unit tests project to .NET 10.
1 parent 79478a9 commit e90af68

17 files changed

+82
-33
lines changed

DecoratorGenerator.UnitTests/DecoratorGenerator.UnitTests.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net8.0</TargetFramework>
4+
<TargetFramework>net10.0</TargetFramework>
55
<ImplicitUsings>enable</ImplicitUsings>
66
<Nullable>enable</Nullable>
77

@@ -10,7 +10,6 @@
1010
</PropertyGroup>
1111

1212
<ItemGroup>
13-
<PackageReference Include="AWSSDK.DynamoDBv2" Version="3.7.103.8" />
1413
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="5.0.0" />
1514
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing" Version="1.1.2" />
1615
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="5.0.0" />
@@ -29,6 +28,7 @@
2928

3029
<ItemGroup>
3130
<ProjectReference Include="..\DecoratorGenerator\DecoratorGenerator.csproj" />
31+
<ProjectReference Include="..\TestLibrary\TestLibrary.csproj" />
3232
</ItemGroup>
3333

3434
</Project>

DecoratorGenerator.UnitTests/Tests.cs

Lines changed: 48 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ public void Setup() {
2020

2121
[Test]
2222
public async Task OneInterface() {
23-
var source = await ReadCSharpFile<IBird>();
24-
var generated = await ReadCSharpFile<BirdDecorator>();
23+
var source = await ReadCSharpFile<IBird>(true);
24+
var generated = await ReadCSharpFile<BirdDecorator>(true);
2525

2626
await new VerifyCS.Test
2727
{
2828
TestState = {
29-
ReferenceAssemblies = ReferenceAssemblies.Net.Net60,
29+
ReferenceAssemblies = ReferenceAssemblies.Net.Net90,
3030
AdditionalReferences =
3131
{
3232
implementationAssembly,
@@ -42,13 +42,13 @@ public async Task OneInterface() {
4242

4343
[Test]
4444
public async Task OneInterface_Properties() {
45-
var source = await ReadCSharpFile<ILionProperties>();
46-
var generated = await ReadCSharpFile<LionPropertiesDecorator>();
45+
var source = await ReadCSharpFile<ILionProperties>(true);
46+
var generated = await ReadCSharpFile<LionPropertiesDecorator>(true);
4747

4848
await new VerifyCS.Test
4949
{
5050
TestState = {
51-
ReferenceAssemblies = ReferenceAssemblies.Net.Net60,
51+
ReferenceAssemblies = ReferenceAssemblies.Net.Net90,
5252
AdditionalReferences =
5353
{
5454
implementationAssembly,
@@ -64,17 +64,17 @@ public async Task OneInterface_Properties() {
6464

6565
[Test]
6666
public async Task OneInterface_Constraints() {
67-
var source = await ReadCSharpFile<ITigerConstraints>();
68-
var generated = await ReadCSharpFile<TigerConstraintsDecorator>();
67+
var source = await ReadCSharpFile<ITigerConstraints>(true);
68+
var generated = await ReadCSharpFile<TigerConstraintsDecorator>(true);
6969

7070
await new VerifyCS.Test
7171
{
7272
TestState = {
73-
ReferenceAssemblies = ReferenceAssemblies.Net.Net60,
73+
ReferenceAssemblies = ReferenceAssemblies.Net.Net90,
7474
AdditionalReferences =
7575
{
7676
implementationAssembly,
77-
Assembly.GetExecutingAssembly()
77+
GetAssembly("TestLibrary")
7878
},
7979
Sources = { source },
8080
GeneratedSources =
@@ -87,13 +87,13 @@ public async Task OneInterface_Constraints() {
8787

8888
[Test]
8989
public async Task OneInterface_NestedNamespace() {
90-
var source = await ReadCSharpFile<INested>();
91-
var generated = await ReadCSharpFile<NestedDecorator>();
90+
var source = await ReadCSharpFile<INested>(true);
91+
var generated = await ReadCSharpFile<NestedDecorator>(true);
9292

9393
await new VerifyCS.Test
9494
{
9595
TestState = {
96-
ReferenceAssemblies = ReferenceAssemblies.Net.Net60,
96+
ReferenceAssemblies = ReferenceAssemblies.Net.Net90,
9797
AdditionalReferences =
9898
{
9999
implementationAssembly,
@@ -109,16 +109,16 @@ public async Task OneInterface_NestedNamespace() {
109109

110110
[Test]
111111
public async Task TwoInterfaces() {
112-
var sourceOne = await ReadCSharpFile<IBird>();
113-
var sourceTwo = await ReadCSharpFile<ICat>();
112+
var sourceOne = await ReadCSharpFile<IBird>(true);
113+
var sourceTwo = await ReadCSharpFile<ICat>(true);
114114

115-
var generatedOne = await ReadCSharpFile<BirdDecorator>();
116-
var generatedTwo = await ReadCSharpFile<CatDecorator>();
115+
var generatedOne = await ReadCSharpFile<BirdDecorator>(true);
116+
var generatedTwo = await ReadCSharpFile<CatDecorator>(true);
117117

118118
await new VerifyCS.Test
119119
{
120120
TestState = {
121-
ReferenceAssemblies = ReferenceAssemblies.Net.Net60,
121+
ReferenceAssemblies = ReferenceAssemblies.Net.Net90,
122122
AdditionalReferences =
123123
{
124124
implementationAssembly,
@@ -135,19 +135,19 @@ public async Task TwoInterfaces() {
135135

136136
[Test]
137137
public async Task WrapperList() {
138-
var source = await ReadCSharpFile<IBird>();
139-
var wrapperList = await ReadCSharpFile<WrapperList>();
140-
var generated = await ReadCSharpFile<BirdDecorator>();
141-
var generatedThirdParty = await ReadCSharpFile<DynamoDBContextDecorator>();
138+
var source = await ReadCSharpFile<IBird>(true);
139+
var wrapperList = await ReadCSharpFile<WrapperList>(true);
140+
var generated = await ReadCSharpFile<BirdDecorator>(true);
141+
var generatedThirdParty = await ReadCSharpFileByName(true, "DynamoDBContextDecorator.generated");
142142

143143
await new VerifyCS.Test
144144
{
145145
TestState = {
146-
ReferenceAssemblies = ReferenceAssemblies.Net.Net60,
146+
ReferenceAssemblies = ReferenceAssemblies.Net.Net90,
147147
AdditionalReferences =
148148
{
149149
implementationAssembly,
150-
GetAssembly("AWSSDK.DynamoDBv2")
150+
Assembly.GetAssembly(typeof(DynamoDBContext)),
151151
},
152152
Sources = { wrapperList, source },
153153
GeneratedSources =
@@ -164,13 +164,32 @@ private static Assembly GetAssembly(string name) {
164164
return Assembly.Load(implementationAssemblyName);
165165
}
166166

167-
private static async Task<string> ReadCSharpFile<T>() {
168-
var currentDirectory = Directory.GetParent(Directory.GetParent(AppDomain.CurrentDomain.BaseDirectory).Parent.Parent.FullName);
167+
private static async Task<string> ReadCSharpFile<T>(bool isTestLibrary) {
168+
var filenameWithoutExtension = typeof(T).Name;
169+
return await ReadCSharpFileByName(isTestLibrary, filenameWithoutExtension);
170+
}
171+
172+
private static async Task<string> ReadCSharpFileByName(bool isTestLibrary, string filenameWithoutExtension) {
173+
var searchPattern = $"{filenameWithoutExtension}*.cs";
174+
return await ReadFile(isTestLibrary, searchPattern);
175+
}
176+
177+
private static async Task<string> ReadFile(bool isTestLibrary, string searchPattern) {
178+
var currentDirectory = GetCurrentDirectory();
179+
180+
var targetDirectory = isTestLibrary ? GetTestLibraryDirectory(currentDirectory) : currentDirectory;
169181

170-
var searchPattern = $"{typeof(T).Name}*.cs";
171-
var file = currentDirectory.GetFiles(searchPattern).First();
182+
var file = targetDirectory.GetFiles(searchPattern).First();
172183

173184
using var fileReader = new StreamReader(file.OpenRead());
174185
return await fileReader.ReadToEndAsync();
175186
}
176-
}
187+
188+
private static DirectoryInfo? GetCurrentDirectory() {
189+
return Directory.GetParent(Directory.GetParent(AppDomain.CurrentDomain.BaseDirectory).Parent.Parent.FullName);
190+
}
191+
192+
private static DirectoryInfo GetTestLibraryDirectory(DirectoryInfo currentDirectory) {
193+
return currentDirectory.Parent.GetDirectories("TestLibrary").First();
194+
}
195+
}

DecoratorGenerator.sln

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio Version 17
4-
VisualStudioVersion = 17.3.32901.215
3+
# Visual Studio Version 18
4+
VisualStudioVersion = 18.1.11304.174 d18.0
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleApp", "SampleApp\SampleApp.csproj", "{7D42984C-6E63-4CCA-B146-00520C8CE05B}"
77
EndProject
@@ -18,6 +18,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleLibrary2", "SampleLib
1818
EndProject
1919
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DecoratorGenerator.UnitTests", "DecoratorGenerator.UnitTests\DecoratorGenerator.UnitTests.csproj", "{E59C8BDC-6B5C-475A-BB51-11DF383ABA50}"
2020
EndProject
21+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestLibrary", "TestLibrary\TestLibrary.csproj", "{2DB2119C-691F-469B-B8D1-93DA51EC24E0}"
22+
EndProject
2123
Global
2224
GlobalSection(SolutionConfigurationPlatforms) = preSolution
2325
Debug|Any CPU = Debug|Any CPU
@@ -44,6 +46,10 @@ Global
4446
{E59C8BDC-6B5C-475A-BB51-11DF383ABA50}.Debug|Any CPU.Build.0 = Debug|Any CPU
4547
{E59C8BDC-6B5C-475A-BB51-11DF383ABA50}.Release|Any CPU.ActiveCfg = Release|Any CPU
4648
{E59C8BDC-6B5C-475A-BB51-11DF383ABA50}.Release|Any CPU.Build.0 = Release|Any CPU
49+
{2DB2119C-691F-469B-B8D1-93DA51EC24E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
50+
{2DB2119C-691F-469B-B8D1-93DA51EC24E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
51+
{2DB2119C-691F-469B-B8D1-93DA51EC24E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
52+
{2DB2119C-691F-469B-B8D1-93DA51EC24E0}.Release|Any CPU.Build.0 = Release|Any CPU
4753
EndGlobalSection
4854
GlobalSection(SolutionProperties) = preSolution
4955
HideSolutionNode = FALSE
File renamed without changes.
File renamed without changes.

TestLibrary/Directory.Build.props

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<Project>
2+
3+
<ItemGroup>
4+
<InternalsVisibleTo Include="DecoratorGenerator.UnitTests" />
5+
</ItemGroup>
6+
7+
</Project>

DecoratorGenerator.UnitTests/DynamoDBContextDecorator.generated.cs renamed to TestLibrary/DynamoDBContextDecorator.generated.cs

File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)