Skip to content

Commit 868abd6

Browse files
committed
Refactor CodeBuilder
1 parent 013b6e6 commit 868abd6

File tree

5 files changed

+32
-18
lines changed

5 files changed

+32
-18
lines changed

NetFabric.Hyperlinq.UnitTests/GenerateSourceTests.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,13 +131,18 @@ public async Task GenerateSourceShouldGenerate(string[] paths, string expected)
131131
.ToList();
132132

133133
// Act
134-
var builder = new CodeBuilder(isUnitTest: true);
134+
var builder = new CodeBuilder { IsUnitTest = true };
135135
Generator.GenerateSource(compilation, typeSymbolsCache, memberAccessExpressions, builder, CancellationToken.None);
136136
var result = builder.ToString();
137137

138138
// Assert
139+
#if NET5_0_OR_GREATER
140+
_ = result.Must()
141+
.BeEqualTo(await File.ReadAllTextAsync(expected));
142+
#else
139143
_ = result.Must()
140144
.BeEqualTo(File.ReadAllText(expected));
145+
#endif
141146
}
142147
}
143148
}

NetFabric.Hyperlinq.UnitTests/NetFabric.Hyperlinq.UnitTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
<ItemGroup>
1515
<PackageReference Include="Ben.TypeDictionary" Version="0.1.4" />
16+
<PackageReference Include="Microsoft.CodeAnalysis.Common" Version="3.11.0" />
1617
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="3.11.0" />
1718
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.10.0" />
1819
<PackageReference Include="NetFabric.Assertive" Version="4.0.0" />

NetFabric.Hyperlinq/NetFabric.Hyperlinq.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
</ItemGroup>
4949

5050
<ItemGroup>
51-
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.11.0"/>
51+
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.11.0" />
5252
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.2">
5353
<PrivateAssets>all</PrivateAssets>
5454
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>

NetFabric.Hyperlinq/Utils/CodeBuilder.cs

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,12 @@ namespace NetFabric.Hyperlinq.SourceGenerator
77
{
88
class CodeBuilder
99
{
10-
static readonly string indentation = " ";
11-
12-
static readonly string assemblyName = typeof(CodeBuilder).Assembly.GetName().Name;
13-
static readonly string assemblyVersion = typeof(CodeBuilder).Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion ?? string.Empty;
10+
const string indentation = " ";
1411

1512
readonly StringBuilder builder = new();
1613
int currentLevel = 0;
1714

18-
public CodeBuilder(bool isUnitTest = false)
19-
=> IsUnitTest = isUnitTest;
20-
21-
public bool IsUnitTest { get; }
15+
public bool IsUnitTest { get; init; } = false;
2216

2317
StringBuilder Indent()
2418
{
@@ -85,14 +79,6 @@ public void Dispose()
8579
}
8680
}
8781

88-
public CodeBuilder AppendGeneratedCodeMethodAttributes()
89-
=> IsUnitTest
90-
? this // do nothing
91-
: AppendLine($"[GeneratedCode(\"{assemblyName}\", \"{(IsUnitTest ? "0.0.0" : assemblyVersion)}\")]")
92-
.AppendLine("[DebuggerNonUserCode]")
93-
.AppendLine("[ExcludeFromCodeCoverage]")
94-
.AppendLine("[EditorBrowsable(EditorBrowsableState.Never)]");
95-
9682
public override string ToString()
9783
=> builder.ToString();
9884
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using System;
2+
using System.Reflection;
3+
4+
namespace NetFabric.Hyperlinq.SourceGenerator
5+
{
6+
static class CodeBuilderExtensions
7+
{
8+
static readonly string assemblyName = typeof(CodeBuilder).Assembly
9+
.GetName().Name;
10+
static readonly string assemblyVersion = typeof(CodeBuilder).Assembly
11+
.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion
12+
?? string.Empty;
13+
14+
public static CodeBuilder AppendGeneratedCodeMethodAttributes(this CodeBuilder builder)
15+
=> builder.IsUnitTest
16+
? builder // do nothing
17+
: builder.AppendLine($"[GeneratedCode(\"{assemblyName}\", \"{assemblyVersion}\")]")
18+
.AppendLine("[DebuggerNonUserCode]")
19+
.AppendLine("[ExcludeFromCodeCoverage]")
20+
.AppendLine("[EditorBrowsable(EditorBrowsableState.Never)]");
21+
}
22+
}

0 commit comments

Comments
 (0)