Skip to content

Commit e25e7bb

Browse files
committed
Switching tests to compile as netstandard2.0 assembly
1 parent ef721c2 commit e25e7bb

4 files changed

Lines changed: 35 additions & 7 deletions

File tree

src/Directory.Packages.props

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,11 @@
1010
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing" Version="1.1.3" />
1111
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.14.0" />
1212
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.10" />
13-
<PackageVersion Include="Microsoft.NETCore.App.Ref" Version="9.0.10" />
14-
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
13+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.3.0" />
1514
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="10.0.103" />
1615
<PackageVersion Include="TUnit" Version="1.18.21" />
1716
<PackageVersion Include="Verify.DiffPlex" Version="3.1.2" />
1817
<PackageVersion Include="Verify.SourceGenerators" Version="2.5.0" />
1918
<PackageVersion Include="Verify.TUnit" Version="31.13.2" />
2019
</ItemGroup>
21-
</Project>
20+
</Project>

src/Shared/Helpers/CodeBuilder.Templates.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ private void AddDebuggerNonUserCodeAttribute()
3939
=> AppendLine("[global::System.Diagnostics.DebuggerNonUserCode]");
4040

4141
// Class | Struct | Constructor | Method | Property | Event
42-
private void AddExcludeFromCodeCoverage(string justification = "Generated code.")
42+
private void AddExcludeFromCodeCoverage()
4343
=> AppendLine($"[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]");
4444

4545
public CodeBuilder AddGeneratedAttributes(AttributeTargets attributeTargets)

src/Tests/Utilities/CompilationBuilder.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,17 +86,27 @@ public CompilationBuilder AddCodes(params IEnumerable<string> codes)
8686
};
8787
}
8888

89-
public async Task<CompilationBuilder> AddNugetReference(string id, string path = "lib", CancellationToken cancellationToken = default)
89+
public Task<CompilationBuilder> AddNugetReference(string id, string path = "lib", CancellationToken cancellationToken = default)
9090
{
9191
var versionXml = s_packageVersionDoc.Root?.Descendants("PackageVersion")
9292
.FirstOrDefault(el => el.Attribute("Include")?.Value == id);
9393
var version = versionXml?.Attribute("Version")?.Value
9494
?? throw new InvalidOperationException($"{id} missing from Directory.Packages.props");
95+
return AddNugetReference(id, version, path, cancellationToken);
96+
}
97+
98+
public Task<CompilationBuilder> AddNugetReference(string id, string version, string path = "lib", CancellationToken cancellationToken = default)
99+
{
95100
var nugetReference = new ReferenceAssemblies(
96101
_targetFramework,
97102
new(id, version),
98103
Path.Combine(path, _targetFramework));
99-
var references = await nugetReference.ResolveAsync(_parseOptions.Language, cancellationToken)
104+
return AddReference(nugetReference, cancellationToken);
105+
}
106+
107+
public async Task<CompilationBuilder> AddReference(ReferenceAssemblies reference, CancellationToken cancellationToken = default)
108+
{
109+
var references = await reference.ResolveAsync(_parseOptions.Language, cancellationToken)
100110
.ConfigureAwait(false);
101111
return new(this)
102112
{

src/Tests/Utilities/ExampleTestsHelper.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Collections.Immutable;
22
using Microsoft.CodeAnalysis;
33
using Microsoft.CodeAnalysis.CSharp;
4+
using Microsoft.CodeAnalysis.Testing;
45
using TUnit.Core.Interfaces;
56

67
internal static class ExampleTestsHelper
@@ -53,13 +54,31 @@ public virtual async Task InitializeAsync()
5354
.WithNullableContextOptions(NullableContextOptions.Enable)
5455
.WithPreprocessorSymbols(PreprocessorSymbols);
5556

56-
Builder = await Builder.AddNugetReference("Microsoft.NETCore.App.Ref", "ref")
57+
Builder = await Builder
58+
.AddReference(ReferenceAssemblies.NetStandard.NetStandard20)
5759
.ConfigureAwait(false);
5860
foreach (var id in GetNuGetIds())
5961
{
6062
Builder = await Builder.AddNugetReference(id)
6163
.ConfigureAwait(false);
6264
}
65+
Builder = Builder.AddCodes(@"
66+
namespace System.Runtime.CompilerServices;
67+
68+
internal static class IsExternalInit;
69+
70+
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
71+
internal sealed class RequiredMemberAttribute : Attribute;
72+
73+
[AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = false)]
74+
public sealed class CompilerFeatureRequiredAttribute(string featureName) : Attribute
75+
{
76+
public string FeatureName { get; } = featureName;
77+
public bool IsOptional { get; init; }
78+
public const string RefStructs = nameof(RefStructs);
79+
public const string RequiredMembers = nameof(RequiredMembers);
80+
}
81+
");
6382
}
6483

6584
protected virtual IEnumerable<string> GetNuGetIds() => [];

0 commit comments

Comments
 (0)