Enable Razor integration tests to use repos Roslyn version.
- Updated `BuildVariables` to lift the `Microsoft.Net.Compilers.Toolset` package version into C# so we can pass it as a parameter to our testapps when building them.
- Flowed the `MicrosoftNetCompilersToolsetPackageVersion` to transitive testapp projects on restore. This enables `build.cmd` to properly pre-build our `testapp` projects with the latest version of Roslyn.
- Added several conditions to detect if a user is attempting to independently build a `testapp` at which point we fallback to using the SDKs Roslyn compiler toolset version.
aspnet/AspNetCoredotnet/aspnetcore-tooling#12268
\n\nCommit migrated from 57a72ecc46
This commit is contained in:
parent
4b6a5b26f6
commit
1345358266
|
|
@ -7,6 +7,7 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests
|
||||||
{
|
{
|
||||||
private static string _msBuildPath = string.Empty;
|
private static string _msBuildPath = string.Empty;
|
||||||
private static string _microsoftNETCoreApp30PackageVersion = string.Empty;
|
private static string _microsoftNETCoreApp30PackageVersion = string.Empty;
|
||||||
|
private static string _microsoftNetCompilersToolsetPackageVersion = string.Empty;
|
||||||
|
|
||||||
static partial void InitializeVariables();
|
static partial void InitializeVariables();
|
||||||
|
|
||||||
|
|
@ -27,5 +28,14 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests
|
||||||
return _microsoftNETCoreApp30PackageVersion;
|
return _microsoftNETCoreApp30PackageVersion;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string MicrosoftNetCompilersToolsetPackageVersion
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
InitializeVariables();
|
||||||
|
return _microsoftNetCompilersToolsetPackageVersion;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -77,6 +77,12 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests
|
||||||
[InitializeTestProject(originalProjectName: "SimpleMvc", targetProjectName: "Whitespace in name", baseDirectory: "")]
|
[InitializeTestProject(originalProjectName: "SimpleMvc", targetProjectName: "Whitespace in name", baseDirectory: "")]
|
||||||
public async Task Build_AppWithWhitespaceInName_CanBuildSuccessfully()
|
public async Task Build_AppWithWhitespaceInName_CanBuildSuccessfully()
|
||||||
{
|
{
|
||||||
|
// We need to separately restore the project in order to ensure this project uses the latest Roslyn. Without this
|
||||||
|
// the Csc task from Roslyn would have already been loaded and any update to it from nuget packages would not have
|
||||||
|
// an effect. This allows us to create our obj/Whitespace in name.csproj.nuget.g.props file (we renamed the project)
|
||||||
|
// and then properly build the project with an appropriate Csc.
|
||||||
|
await DotnetMSBuild("Restore");
|
||||||
|
|
||||||
var result = await DotnetMSBuild(
|
var result = await DotnetMSBuild(
|
||||||
"Build",
|
"Build",
|
||||||
"/p:_RazorForceBuildServer=true");
|
"/p:_RazorForceBuildServer=true");
|
||||||
|
|
|
||||||
|
|
@ -95,6 +95,7 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests
|
||||||
"/p:RunningAsTest=true",
|
"/p:RunningAsTest=true",
|
||||||
|
|
||||||
$"/p:MicrosoftNETCoreApp30PackageVersion={BuildVariables.MicrosoftNETCoreApp30PackageVersion}",
|
$"/p:MicrosoftNETCoreApp30PackageVersion={BuildVariables.MicrosoftNETCoreApp30PackageVersion}",
|
||||||
|
$"/p:MicrosoftNetCompilersToolsetPackageVersion={BuildVariables.MicrosoftNetCompilersToolsetPackageVersion}",
|
||||||
|
|
||||||
// Additional restore sources for projects that require built packages
|
// Additional restore sources for projects that require built packages
|
||||||
$"/p:RuntimeAdditionalRestoreSources={additionalRestoreSources}",
|
$"/p:RuntimeAdditionalRestoreSources={additionalRestoreSources}",
|
||||||
|
|
|
||||||
|
|
@ -230,10 +230,10 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests
|
||||||
[InitializeTestProject("PackageLibraryDirectDependency", additionalProjects: new[] { "PackageLibraryTransitiveDependency" })]
|
[InitializeTestProject("PackageLibraryDirectDependency", additionalProjects: new[] { "PackageLibraryTransitiveDependency" })]
|
||||||
public async Task Pack_NoBuild_IncludesStaticWebAssets()
|
public async Task Pack_NoBuild_IncludesStaticWebAssets()
|
||||||
{
|
{
|
||||||
var result = await DotnetMSBuild("Build");
|
var result = await DotnetMSBuild("Build", runRestoreBeforeBuildOrPublish: false);
|
||||||
Assert.BuildPassed(result, allowWarnings: true);
|
Assert.BuildPassed(result, allowWarnings: true);
|
||||||
|
|
||||||
var pack = await DotnetMSBuild("Pack", "/p:NoBuild=true");
|
var pack = await DotnetMSBuild("Pack", "/p:NoBuild=true", runRestoreBeforeBuildOrPublish: false);
|
||||||
Assert.BuildPassed(pack, allowWarnings: true);
|
Assert.BuildPassed(pack, allowWarnings: true);
|
||||||
|
|
||||||
Assert.FileExists(pack, OutputPath, "PackageLibraryDirectDependency.dll");
|
Assert.FileExists(pack, OutputPath, "PackageLibraryDirectDependency.dll");
|
||||||
|
|
|
||||||
|
|
@ -87,6 +87,7 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests
|
||||||
{
|
{
|
||||||
_msBuildPath = @"$(_DesktopMSBuildPath)";
|
_msBuildPath = @"$(_DesktopMSBuildPath)";
|
||||||
_microsoftNETCoreApp30PackageVersion = "$(MicrosoftNETCoreApp30PackageVersion)";
|
_microsoftNETCoreApp30PackageVersion = "$(MicrosoftNETCoreApp30PackageVersion)";
|
||||||
|
_microsoftNetCompilersToolsetPackageVersion = "$(MicrosoftNetCompilersToolsetPackageVersion)";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -108,7 +109,7 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="RestoreTestProjects" BeforeTargets="Restore;Build" Condition="'$(DotNetBuildFromSource)' != 'true'">
|
<Target Name="RestoreTestProjects" BeforeTargets="Restore;Build" Condition="'$(DotNetBuildFromSource)' != 'true'">
|
||||||
<MSBuild Projects="..\testapps\RestoreTestProjects\RestoreTestProjects.csproj" Targets="Restore" />
|
<MSBuild Projects="..\testapps\RestoreTestProjects\RestoreTestProjects.csproj" Targets="Restore" Properties="MicrosoftNetCompilersToolsetPackageVersion=$(MicrosoftNetCompilersToolsetPackageVersion)" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,13 @@
|
||||||
<SolutionRoot>$([MSBuild]::EnsureTrailingSlash('$(SolutionRoot)'))</SolutionRoot>
|
<SolutionRoot>$([MSBuild]::EnsureTrailingSlash('$(SolutionRoot)'))</SolutionRoot>
|
||||||
<RepositoryRoot>$(SolutionRoot)..\..\</RepositoryRoot>
|
<RepositoryRoot>$(SolutionRoot)..\..\</RepositoryRoot>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
In the case that a user is building a sample directly the MicrosoftNetCompilersToolsetPackagerVersion will not be provided.
|
||||||
|
We'll fall back to whatever the current SDK provides in regards to Roslyn's Microsoft.Net.Compilers.Toolset.
|
||||||
|
-->
|
||||||
|
<BuildingTestAppsIndependently>false</BuildingTestAppsIndependently>
|
||||||
|
<BuildingTestAppsIndependently Condition="'$(MicrosoftNetCompilersToolsetPackageVersion)' == ''">true</BuildingTestAppsIndependently>
|
||||||
|
|
||||||
<!-- Retarget tests to use the copy of the Sdk from source -->
|
<!-- Retarget tests to use the copy of the Sdk from source -->
|
||||||
<RazorSdkArtifactsDirectory>$(SolutionRoot)..\..\artifacts\bin\Microsoft.NET.Sdk.Razor\</RazorSdkArtifactsDirectory>
|
<RazorSdkArtifactsDirectory>$(SolutionRoot)..\..\artifacts\bin\Microsoft.NET.Sdk.Razor\</RazorSdkArtifactsDirectory>
|
||||||
|
|
||||||
|
|
@ -19,6 +26,11 @@
|
||||||
https://dotnetfeed.blob.core.windows.net/aspnet-extensions/index.json;
|
https://dotnetfeed.blob.core.windows.net/aspnet-extensions/index.json;
|
||||||
https://api.nuget.org/v3/index.json;
|
https://api.nuget.org/v3/index.json;
|
||||||
</RestoreSources>
|
</RestoreSources>
|
||||||
|
|
||||||
|
<RestoreSources Condition="$(BuildingTestAppsIndependently) == false">
|
||||||
|
$(RestoreSources);
|
||||||
|
https://dotnet.myget.org/F/roslyn/api/v3/index.json;
|
||||||
|
</RestoreSources>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|
@ -36,6 +48,13 @@
|
||||||
<_MvcAssemblyName Include="Microsoft.AspNetCore.Razor.Test.MvcShim.ClassLib" />
|
<_MvcAssemblyName Include="Microsoft.AspNetCore.Razor.Test.MvcShim.ClassLib" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup Condition="$(BuildingTestAppsIndependently) == false">
|
||||||
|
<PackageReference Include="Microsoft.Net.Compilers.Toolset"
|
||||||
|
Version="$(MicrosoftNetCompilersToolsetPackageVersion)"
|
||||||
|
PrivateAssets="all"
|
||||||
|
IsImplicitlyDefined="true" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<Import Project="After.Directory.Build.props" Condition="Exists('After.Directory.Build.props')" />
|
<Import Project="After.Directory.Build.props" Condition="Exists('After.Directory.Build.props')" />
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue