Skip to content

Commit

Permalink
Add language version target tests
Browse files Browse the repository at this point in the history
  • Loading branch information
chsienki committed Jun 11, 2020
1 parent 1606437 commit 96eaf82
Show file tree
Hide file tree
Showing 2 changed files with 109 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
'$(MaxSupportedLangVersion)' == ''">8.0</MaxSupportedLangVersion>

<!-- .NETCoreApp == 5.0 -->
<!-- https://github.com/dotnet/roslyn/issues/44962 Remove this when CSharp9 becomes the default -->
<MaxSupportedLangVersion Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND '$(_TargetFrameworkVersionWithoutV)' == '5.0' AND
'$(MaxSupportedLangVersion)' == ''">9.0</MaxSupportedLangVersion>

Expand Down
109 changes: 109 additions & 0 deletions src/Compilers/Core/MSBuildTaskTests/TargetTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -390,6 +390,115 @@ public void GenerateEditorConfigCoreHandlesMalformedCompilerVisibleItemMetadata(
Assert.Equal("", metaName.EvaluatedValue);
}

[Theory]
[InlineData(".NETFramework", "4.5", "7.3")]
[InlineData(".NETFramework", "4.7.2", "7.3")]
[InlineData(".NETFramework", "4.8", "7.3")]

[InlineData(".NETCoreApp", "1.0", "7.3")]
[InlineData(".NETCoreApp", "2.0", "7.3")]
[InlineData(".NETCoreApp", "2.1", "7.3")]
[InlineData(".NETCoreApp", "3.0", "8.0")]
[InlineData(".NETCoreApp", "3.1", "8.0")]
[InlineData(".NETCoreApp", "5.0", "9.0")]

[InlineData(".NETStandard", "1.0", "7.3")]
[InlineData(".NETStandard", "1.5", "7.3")]
[InlineData(".NETStandard", "2.0", "7.3")]
[InlineData(".NETStandard", "2.1", "8.0")]

[InlineData("UnknownTFM", "0.0", "7.3")]
public void LanguageVersionGivenTargetFramework(string tfi, string tfv, string expectedVersion)
{
XmlReader xmlReader = XmlReader.Create(new StringReader($@"
<Project>
<PropertyGroup>
<TargetFrameworkIdentifier>{tfi}</TargetFrameworkIdentifier>
<_TargetFrameworkVersionWithoutV>{tfv}</_TargetFrameworkVersionWithoutV>
</PropertyGroup>
<Import Project=""Microsoft.CSharp.Core.targets"" />
</Project>
"));

var instance = CreateProjectInstance(xmlReader);
instance.Build(GetTestLoggers());

var langVersion = instance.GetPropertyValue("LangVersion");
var maxLangVersion = instance.GetPropertyValue("MaxSupportedLangVersion");

Assert.Equal(expectedVersion, langVersion);
Assert.Equal(expectedVersion, maxLangVersion);
}

[Fact]
public void ExplicitLangVersion()
{
XmlReader xmlReader = XmlReader.Create(new StringReader($@"
<Project>
<PropertyGroup>
<TargetFrameworkIdentifier>.NETCoreApp</TargetFrameworkIdentifier>
<_TargetFrameworkVersionWithoutV>2.0</_TargetFrameworkVersionWithoutV>
<LangVersion>55.0</LangVersion>
</PropertyGroup>
<Import Project=""Microsoft.CSharp.Core.targets"" />
</Project>
"));

var instance = CreateProjectInstance(xmlReader);
instance.Build(GetTestLoggers());

var langVersion = instance.GetPropertyValue("LangVersion");
var maxLangVersion = instance.GetPropertyValue("MaxSupportedLangVersion");

Assert.Equal("55.0", langVersion);
Assert.Equal("7.3", maxLangVersion);
}

[Fact]
public void ExplicitMaxLanguageVersion()
{
XmlReader xmlReader = XmlReader.Create(new StringReader($@"
<Project>
<PropertyGroup>
<MaxSupportedLangVersion>55.0</MaxSupportedLangVersion>
</PropertyGroup>
<Import Project=""Microsoft.CSharp.Core.targets"" />
</Project>
"));

var instance = CreateProjectInstance(xmlReader);
instance.Build(GetTestLoggers());

var langVersion = instance.GetPropertyValue("LangVersion");
var maxLangVersion = instance.GetPropertyValue("MaxSupportedLangVersion");

Assert.Equal("55.0", langVersion);
Assert.Equal("55.0", maxLangVersion);
}

[Fact]
public void ExplicitLanguageVersionOverridesExplicitMaxLanguageVersion()
{
XmlReader xmlReader = XmlReader.Create(new StringReader($@"
<Project>
<PropertyGroup>
<MaxSupportedLangVersion>55.0</MaxSupportedLangVersion>
<LangVersion>40.0</LangVersion>
</PropertyGroup>
<Import Project=""Microsoft.CSharp.Core.targets"" />
</Project>
"));

var instance = CreateProjectInstance(xmlReader);
instance.Build(GetTestLoggers());

var langVersion = instance.GetPropertyValue("LangVersion");
var maxLangVersion = instance.GetPropertyValue("MaxSupportedLangVersion");

Assert.Equal("40.0", langVersion);
Assert.Equal("55.0", maxLangVersion);
}

private ProjectInstance CreateProjectInstance(XmlReader reader)
{
Project proj = new Project(reader);
Expand Down

0 comments on commit 96eaf82

Please sign in to comment.