Skip to content

Commit

Permalink
Generate the test projects at build
Browse files Browse the repository at this point in the history
  • Loading branch information
natemcmaster authored and Nate McMaster committed Oct 9, 2017
1 parent 8c50265 commit de04fcf
Show file tree
Hide file tree
Showing 5 changed files with 132 additions and 113 deletions.
16 changes: 14 additions & 2 deletions build/dependencies.props
@@ -1,9 +1,15 @@
<Project>
<PropertyGroup>
<InternalAspNetCoreSdkPackageVersion>2.0.2-beta-15516</InternalAspNetCoreSdkPackageVersion>
<InternalAspNetCoreSdkPackageVersion>2.0.2-beta-15522</InternalAspNetCoreSdkPackageVersion>
<MicrosoftApplicationInsightsAspNetCorePackageVersion>2.1.1</MicrosoftApplicationInsightsAspNetCorePackageVersion>
<MicrosoftAspNetCoreAuthenticationCookiesPackageVersion>2.0.1-rtm-83</MicrosoftAspNetCoreAuthenticationCookiesPackageVersion>
<MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion>2.0.1-rtm-83</MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion>
<MicrosoftAspNetCoreDiagnosticsPackageVersion>2.0.1-rtm-83</MicrosoftAspNetCoreDiagnosticsPackageVersion>
<MicrosoftAspNetCoreHostingPackageVersion>2.0.1-rtm-83</MicrosoftAspNetCoreHostingPackageVersion>
<MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion>2.0.1-rtm-83</MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion>
<MicrosoftAspNetCoreMvcPackageVersion>2.0.1-rtm-83</MicrosoftAspNetCoreMvcPackageVersion>
<MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>2.0.1-rtm-83</MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>
<MicrosoftAspNetCorePackageVersion>2.0.1-rtm-83</MicrosoftAspNetCorePackageVersion>
<MicrosoftAspNetCoreServerIISIntegrationPackageVersion>2.0.1-rtm-83</MicrosoftAspNetCoreServerIISIntegrationPackageVersion>
<MicrosoftAspNetCoreServerKestrelPackageVersion>2.0.1-rtm-83</MicrosoftAspNetCoreServerKestrelPackageVersion>
<MicrosoftAspNetCoreStaticFilesPackageVersion>2.0.1-rtm-83</MicrosoftAspNetCoreStaticFilesPackageVersion>
Expand All @@ -19,15 +25,21 @@
<MicrosoftEntityFrameworkCoreSqlServerPackageVersion>2.0.1-rtm-83</MicrosoftEntityFrameworkCoreSqlServerPackageVersion>
<MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>2.0.0</MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>
<MicrosoftExtensionsConfigurationAbstractionsPackageVersion>2.0.0</MicrosoftExtensionsConfigurationAbstractionsPackageVersion>
<MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>2.0.0</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
<MicrosoftExtensionsConfigurationJsonPackageVersion>2.0.0</MicrosoftExtensionsConfigurationJsonPackageVersion>
<MicrosoftExtensionsConfigurationUserSecretsPackageVersion>2.0.0</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
<MicrosoftExtensionsDependencyInjectionPackageVersion>2.0.0</MicrosoftExtensionsDependencyInjectionPackageVersion>
<MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>2.0.0</MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>
<MicrosoftExtensionsFileProvidersPhysicalPackageVersion>2.0.0</MicrosoftExtensionsFileProvidersPhysicalPackageVersion>
<MicrosoftExtensionsLoggingConsolePackageVersion>2.0.0</MicrosoftExtensionsLoggingConsolePackageVersion>
<MicrosoftExtensionsLoggingDebugPackageVersion>2.0.0</MicrosoftExtensionsLoggingDebugPackageVersion>
<MicrosoftExtensionsLoggingPackageVersion>2.0.0</MicrosoftExtensionsLoggingPackageVersion>
<MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>2.0.0</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>
<MicrosoftNETTestSdkPackageVersion>15.3.0</MicrosoftNETTestSdkPackageVersion>
<MicrosoftVisualStudioWebBrowserLinkPackageVersion>2.0.1-rtm-83</MicrosoftVisualStudioWebBrowserLinkPackageVersion>
<MoqPackageVersion>4.7.49</MoqPackageVersion>
<NewtonsoftJsonRuntimePackageVersion>10.0.1</NewtonsoftJsonRuntimePackageVersion>
<NewtonsoftJsonToolingPackageVersion>9.0.1</NewtonsoftJsonToolingPackageVersion>
<MoqPackageVersion>4.7.49</MoqPackageVersion>
<NuGetFrameworksPackageVersion>4.0.0</NuGetFrameworksPackageVersion>
<XunitPackageVersion>2.3.0-beta2-build3683</XunitPackageVersion>
<XunitRunnerVisualStudioPackageVersion>2.3.0-beta2-build1317</XunitRunnerVisualStudioPackageVersion>
Expand Down
66 changes: 66 additions & 0 deletions test/Directory.Build.targets
@@ -0,0 +1,66 @@
<Project>
<Import Project="..\Directory.Build.targets" />

<PropertyGroup>
<TestProjectTemplateFile>$(MSBuildThisFileDirectory)Shared\MsBuildProjectStrings.cs.in</TestProjectTemplateFile>
<GeneratedTestProjectFile>$(IntermediateOutputPath)MSBuildProjectStrings.cs</GeneratedTestProjectFile>
</PropertyGroup>

<ItemGroup>
<None Include="$(TestProjectTemplateFile)" />
</ItemGroup>

<ItemGroup>
<TestProjectGenInputs Include="$(ProjectAssetsFile)" />
<TestProjectGenInputs Include="$(MSBuildAllProjects)" />
<TestProjectGenInputs Include="$(TestProjectTemplateFile)" />
<TestProjectGenInputs Include="$(MSBuildThisFileDirectory)..\build\dependencies.props" />
<TestProjectGenInputs Include="$(MSBuildThisFileDirectory)..\build\sources.props" />
<TestProjectGenInputs Include="$(DotNetPackageVersionPropsPath)" Condition=" '$(DotNetPackageVersionPropsPath)' != '' " />
<TestProjectGenInputs Include="$(DotNetRestoreSourcePropsPath)" Condition=" '$(DotNetRestoreSourcePropsPath)' != '' " />
</ItemGroup>

<Target Name="GenerateTestProject" BeforeTargets="CoreCompile" Inputs="@(TestProjectGenInputs)" Outputs="$(GeneratedTestProjectFile)">
<PropertyGroup>
<RestoreSources>
$(RestoreSources);
$(MSBuildThisFileDirectory)..\artifacts\build;
</RestoreSources>
<TestProjectProperties>
RestoreSources=$([MSBuild]::Escape($(RestoreSources.Trim())));
RuntimeFrameworkVersion=$(RuntimeFrameworkVersion);
MicrosoftApplicationInsightsAspNetCorePackageVersion=$(MicrosoftApplicationInsightsAspNetCorePackageVersion);
MicrosoftAspNetCoreAuthenticationCookiesPackageVersion=$(MicrosoftAspNetCoreAuthenticationCookiesPackageVersion);
MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion=$(MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion);
MicrosoftAspNetCoreDiagnosticsPackageVersion=$(MicrosoftAspNetCoreDiagnosticsPackageVersion);
MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion=$(MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion);
MicrosoftAspNetCoreMvcPackageVersion=$(MicrosoftAspNetCoreMvcPackageVersion);
MicrosoftAspNetCorePackageVersion=$(MicrosoftAspNetCorePackageVersion);
MicrosoftAspNetCoreServerIISIntegrationPackageVersion=$(MicrosoftAspNetCoreServerIISIntegrationPackageVersion);
MicrosoftAspNetCoreServerKestrelPackageVersion=$(MicrosoftAspNetCoreServerKestrelPackageVersion);
MicrosoftAspNetCoreStaticFilesPackageVersion=$(MicrosoftAspNetCoreStaticFilesPackageVersion);
MicrosoftEntityFrameworkCoreDesignPackageVersion=$(MicrosoftEntityFrameworkCoreDesignPackageVersion);
MicrosoftEntityFrameworkCoreSqlServerPackageVersion=$(MicrosoftEntityFrameworkCoreSqlServerPackageVersion);
MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion=$(MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion);
MicrosoftExtensionsConfigurationJsonPackageVersion=$(MicrosoftExtensionsConfigurationJsonPackageVersion);
MicrosoftExtensionsConfigurationUserSecretsPackageVersion=$(MicrosoftExtensionsConfigurationUserSecretsPackageVersion);
MicrosoftExtensionsLoggingConsolePackageVersion=$(MicrosoftExtensionsLoggingConsolePackageVersion);
MicrosoftExtensionsLoggingDebugPackageVersion=$(MicrosoftExtensionsLoggingDebugPackageVersion);
MicrosoftExtensionsLoggingPackageVersion=$(MicrosoftExtensionsLoggingPackageVersion);
MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion=$(MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion);
MicrosoftVisualStudioWebBrowserLinkPackageVersion=$(MicrosoftVisualStudioWebBrowserLinkPackageVersion);
MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion=$(Version);
MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion=$(Version);
</TestProjectProperties>
</PropertyGroup>

<Sdk_GenerateFileFromTemplate
TemplateFile="$(TestProjectTemplateFile)"
Properties="$(TestProjectProperties)"
OutputPath="$(GeneratedTestProjectFile)">
<Output TaskParameter="OutputPath" ItemName="FileWrites" />
<Output TaskParameter="OutputPath" ItemName="Compile" />
</Sdk_GenerateFileFromTemplate>

</Target>
</Project>
39 changes: 5 additions & 34 deletions test/Shared/MsBuildProjectSetupHelper.cs
Expand Up @@ -21,42 +21,13 @@ internal class MsBuildProjectSetupHelper

private static object _syncObj = new object();

private string AspNetCoreVersion
{
get
{
var aspnetCoreLib = DependencyContext
.Default
.CompileLibraries
.FirstOrDefault(l => l.Name.StartsWith("Microsoft.Extensions.FileProviders.Abstractions", StringComparison.OrdinalIgnoreCase));

return aspnetCoreLib?.Version;
}
}

private string RuntimeFrameworkVersion =>
DependencyContext
.Default
.RuntimeLibraries
.FirstOrDefault(l => l.Name.StartsWith("Microsoft.NETCore.App", StringComparison.OrdinalIgnoreCase))
?.Version;

private string CodeGenerationVersion
{
get
{
var informationalVersionAttr = this.GetType().Assembly.GetCustomAttributes(typeof(AssemblyInformationalVersionAttribute), false).First();
return ((AssemblyInformationalVersionAttribute)informationalVersionAttr).InformationalVersion;
}
}

public void SetupProjects(TemporaryFileProvider fileProvider, ITestOutputHelper output, bool fullFramework = false)
{
Directory.CreateDirectory(Path.Combine(fileProvider.Root, "Root"));
Directory.CreateDirectory(Path.Combine(fileProvider.Root, "Library1"));

var rootProjectTxt = fullFramework ? MsBuildProjectStrings.RootNet45ProjectTxt : MsBuildProjectStrings.RootProjectTxt;
fileProvider.Add($"Root/{MsBuildProjectStrings.RootProjectName}", string.Format(rootProjectTxt, AspNetCoreVersion, CodeGenerationVersion, RuntimeFrameworkVersion, "2.0.1-*"));
fileProvider.Add($"Root/{MsBuildProjectStrings.RootProjectName}", rootProjectTxt);
fileProvider.Add($"Root/Startup.cs", MsBuildProjectStrings.StartupTxt);
fileProvider.Add($"Root/{MsBuildProjectStrings.ProgramFileName}", MsBuildProjectStrings.ProgramFileText);

Expand Down Expand Up @@ -99,9 +70,9 @@ public void SetupProjectsWithoutEF(TemporaryFileProvider fileProvider, ITestOutp
{
Directory.CreateDirectory(Path.Combine(fileProvider.Root, "Root"));
Directory.CreateDirectory(Path.Combine(fileProvider.Root, "Library1"));

var rootProjectTxt = MsBuildProjectStrings.RootProjectTxtWithoutEF;
fileProvider.Add($"Root/{MsBuildProjectStrings.RootProjectName}", string.Format(rootProjectTxt, AspNetCoreVersion, CodeGenerationVersion, RuntimeFrameworkVersion, "2.0.1-*"));
fileProvider.Add($"Root/{MsBuildProjectStrings.RootProjectName}", rootProjectTxt);
fileProvider.Add($"Root/Startup.cs", MsBuildProjectStrings.StartupTxtWithoutEf);
fileProvider.Add($"Root/{MsBuildProjectStrings.ProgramFileName}", MsBuildProjectStrings.ProgramFileText);

Expand All @@ -113,4 +84,4 @@ public void SetupProjectsWithoutEF(TemporaryFileProvider fileProvider, ITestOutp
RestoreAndBuild(Path.Combine(fileProvider.Root, "Root"), output);
}
}
}
}

0 comments on commit de04fcf

Please sign in to comment.