Skip to content

Commit 5982d23

Browse files
committed
Adding unit test for t4 template
1 parent c363cbc commit 5982d23

File tree

7 files changed

+51
-0
lines changed

7 files changed

+51
-0
lines changed

‎eng/Dependencies.props‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ and are generated based on the last package release.
189189
<LatestPackageReference Include="MessagePackAnalyzer" />
190190
<LatestPackageReference Include="Microsoft.Data.SqlClient" />
191191
<LatestPackageReference Include="Mono.Cecil" />
192+
<LatestPackageReference Include="Mono.TextTemplating" />
192193
<LatestPackageReference Include="Moq" />
193194
<LatestPackageReference Include="Newtonsoft.Json.Bson" />
194195
<LatestPackageReference Include="NSwag.ApiDescription.Client" />

‎eng/Versions.props‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@
257257
<MessagePackAnalyzerVersion>$(MessagePackVersion)</MessagePackAnalyzerVersion>
258258
<MoqVersion>4.10.0</MoqVersion>
259259
<MonoCecilVersion>0.11.2</MonoCecilVersion>
260+
<MonoTextTemplatingVersion>2.2.1</MonoTextTemplatingVersion>
260261
<NewtonsoftJsonBsonVersion>1.0.2</NewtonsoftJsonBsonVersion>
261262
<NewtonsoftJsonVersion>13.0.1</NewtonsoftJsonVersion>
262263
<NSwagApiDescriptionClientVersion>13.0.4</NSwagApiDescriptionClientVersion>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<Project>
2+
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
3+
4+
<PropertyGroup>
5+
<HttpResultsSourceRoot>$(MSBuildThisFileDirectory)\src</HttpResultsSourceRoot>
6+
</PropertyGroup>
7+
</Project>

‎src/Http/Http.Results/src/Microsoft.AspNetCore.Http.Results.csproj‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,11 @@
3333
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
3434
</ItemGroup>
3535

36+
<ItemGroup>
37+
<None Update="ResultsCache.StatusCodes.tt">
38+
<Generator>TextTemplatingFileGenerator</Generator>
39+
<LastGenOutput>ResultsCache.StatusCodes.cs</LastGenOutput>
40+
</None>
41+
</ItemGroup>
42+
3643
</Project>

‎src/Http/Http.Results/test/Microsoft.AspNetCore.Http.Results.Tests.csproj‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,12 @@
88
<Reference Include="Microsoft.AspNetCore.Http" />
99
<Reference Include="Microsoft.AspNetCore.Http.Results" />
1010
<Reference Include="Microsoft.Extensions.DependencyInjection" />
11+
<Reference Include="Mono.TextTemplating" />
1112

1213
<Compile Include="$(SharedSourceRoot)ResultsTests\*.cs" LinkBase="Shared" />
14+
15+
<Content Include="$(HttpResultsSourceRoot)\ResultsCache.StatusCodes.tt" LinkBase="Shared\GeneratedContent" CopyToOutputDirectory="PreserveNewest" />
16+
<Content Include="$(HttpResultsSourceRoot)\ResultsCache.StatusCodes.cs" LinkBase="Shared\GeneratedContent" CopyToOutputDirectory="PreserveNewest" />
1317
</ItemGroup>
1418

1519
</Project>
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
namespace Microsoft.AspNetCore.Http.Results.Tests;
5+
6+
using Mono.TextTemplating;
7+
8+
public class ResultsCacheTests
9+
{
10+
[Fact]
11+
public void GeneratedCodeIsUpToData()
12+
{
13+
var currentContentPath = Path.Combine(AppContext.BaseDirectory, "shared", "GeneratedContent", "ResultsCache.StatusCodes.cs");
14+
var templatePath = Path.Combine(AppContext.BaseDirectory, "shared", "GeneratedContent", "ResultsCache.StatusCodes.tt");
15+
16+
var generator = new TemplateGenerator();
17+
var compiledTemplate = generator.CompileTemplate(File.ReadAllText(templatePath));
18+
19+
var generatedContent = compiledTemplate.Process();
20+
var currentContent = File.ReadAllText(currentContentPath);
21+
22+
Assert.Equal(currentContent, generatedContent);
23+
}
24+
}

‎src/Http/README.md‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@ The following contains a description of each sub-directory in the `Http` directo
2424

2525
## Development Setup
2626

27+
To run the code generation using [T4 Text Templates](https://docs.microsoft.com/en-us/visualstudio/modeling/code-generation-and-t4-text-templates), you can use an IDE that supports it (eg. Visual Studio or JetBrains Rider) or install the cross-platform open-source dotnet tool [Mono/T4](https://github.com/mono/t4).
28+
29+
```powershell
30+
> dotnet tool install -g dotnet-t4
31+
> t4 Http.Results\ResultsCache.StatusCodes.cs
32+
```
33+
2734
### Build
2835

2936
To build this specific project from source, follow the instructions [on building the project](../../docs/BuildFromSource.md#step-3-build-the-repo).

0 commit comments

Comments
 (0)