|
5 | 5 | <ItemGroup> |
6 | 6 | <PackageReports Condition="'$(TestPackage)' == ''" Include="$(PackageReportDir)*.json" /> |
7 | 7 | <PackageReports Condition="'$(TestPackage)' != ''" Include="$(PackageReportDir)$(TestPackage).json" /> |
| 8 | + |
| 9 | + <!-- support override via commandline --> |
| 10 | + <RuntimesToInclude Condition="'$(RuntimesToInclude)' != ''" Include="$(RuntimesToInclude)" /> |
| 11 | + <TargetFrameworksToInclude Condition="'$(TargetFrameworksToInclude)' != ''" Include="$(TargetFrameworksToInclude)" /> |
8 | 12 |
|
9 | 13 | <!-- restrict restore sources to the current build and publicly shipped packages --> |
10 | 14 | <RestoreSource Include="$(PackageOutputPath)" /> |
11 | 15 | <RestoreSource Include="https:%2F%2Fapi.nuget.org/v3/index.json" /> |
12 | 16 |
|
13 | 17 | <!-- needed for SQLClient's SNI packages --> |
14 | 18 | <RestoreSource Include="https:%2F%2Fdotnet.myget.org/F/dotnet-core/api/v3/index.json" /> |
| 19 | + |
| 20 | + <!-- we don't build alpine or older OSX versions --> |
| 21 | + <RuntimesToExclude Include="alpine.3.4.3-x64;osx.10.10-x64;osx.10.11-x64" /> |
| 22 | + |
| 23 | + <!-- no targeting pack was ever shipped for net463 --> |
| 24 | + <TargetFrameworksToExclude Include="net463" /> |
15 | 25 | </ItemGroup> |
16 | 26 |
|
17 | 27 | <PropertyGroup> |
18 | | - <TestProjectDir>$(PackageOutputPath)projects/</TestProjectDir> |
| 28 | + <TestDir>$(PackageOutputPath)test/</TestDir> |
| 29 | + <TestToolsDir>$(TestDir)tools/</TestToolsDir> |
| 30 | + <TestProjectDir>$(TestDir)projects/</TestProjectDir> |
19 | 31 | <TestPackageDir>$(BinDir)testPackages</TestPackageDir> |
| 32 | + <TestDotNetPath>$(TestToolsDir)/dotnet</TestDotNetPath> |
| 33 | + |
| 34 | + <ProjectTemplate>project.csproj.template</ProjectTemplate> |
20 | 35 |
|
21 | | - <TestRestoreCommand>$(DotnetToolCommand)</TestRestoreCommand> |
| 36 | + <TestRestoreCommand>$(TestDotNetPath)</TestRestoreCommand> |
22 | 37 | <TestRestoreCommand>$(TestRestoreCommand) restore</TestRestoreCommand> |
23 | 38 | <TestRestoreCommand>$(TestRestoreCommand) @(RestoreSource->'-s %(Identity)', ' ')</TestRestoreCommand> |
24 | 39 | <TestRestoreCommand>$(TestRestoreCommand) --packages "$(TestPackageDir)"</TestRestoreCommand> |
| 40 | + |
25 | 41 | </PropertyGroup> |
| 42 | + |
| 43 | + <ItemGroup> |
| 44 | + <TestSupportFiles Include="$(DotnetCliPath)\**\*.*"> |
| 45 | + <DestinationFolder>$(TestToolsDir)%(RecursiveDir)</DestinationFolder> |
| 46 | + </TestSupportFiles> |
| 47 | + </ItemGroup> |
| 48 | + |
| 49 | + <Target Name="CreateTestDir" |
| 50 | + Inputs="@(TestSupportFiles)" |
| 51 | + Outputs="@(TestSupportFiles->'%(DestinationFolder)\%(FileName)%(Extension)')"> |
| 52 | + <MakeDir Directories="%(TestSupportFiles.DestinationFolder)" /> |
| 53 | + <Copy SourceFiles="@(TestSupportFiles)" DestinationFolder="%(TestSupportFiles.DestinationFolder)" /> |
| 54 | + </Target> |
26 | 55 |
|
27 | 56 | <Target Name="GetSupportedPackages"> |
28 | 57 | <GetSupportedPackagesFromPackageReports PackageReports="@(PackageReports)"> |
29 | 58 | <Output TaskParameter="SupportedPackages" ItemName="SupportedPackage"/> |
30 | 59 | </GetSupportedPackagesFromPackageReports> |
| 60 | + |
| 61 | + <ItemGroup> |
| 62 | + <SupportedPackage> |
| 63 | + <ProjectDir>$(TestProjectDir)%(Identity)/%(TargetFrameworkShort)/</ProjectDir> |
| 64 | + </SupportedPackage> |
| 65 | + <SupportedPackage> |
| 66 | + <ProjectFile>%(ProjectDir)project.csproj</ProjectFile> |
| 67 | + <AssetsFile>%(ProjectDir)obj/project.assets.json</AssetsFile> |
| 68 | + <SemaphoreFile>%(ProjectDir)project.built.semaphore</SemaphoreFile> |
| 69 | + </SupportedPackage> |
| 70 | + </ItemGroup> |
31 | 71 | </Target> |
32 | 72 |
|
33 | | - <Target Name="GenerateProjects" |
34 | | - DependsOnTargets="GetSupportedPackages" |
35 | | - Inputs="@(PackageReports)" |
36 | | - Outputs="$(TestProjectDir)%(SupportedPackage.Identity)/%(SupportedPackage.TargetFramework)/project.json"> |
| 73 | + <Target Name="UpdateTargetFrameworks" AfterTargets="GetSupportedPackages"> |
37 | 74 | <ItemGroup> |
38 | | - <_projectRuntimes Remove="@(_projectRuntimes)" /> |
39 | | - <_projectRuntimes Include="%(SupportedPackage.RuntimeIdentifiers)" /> |
| 75 | + <_supportedPackageByTargetFramework Include="@(SupportedPackage->'%(TargetFrameworkShort)')"> |
| 76 | + <Original>%(Identity)</Original> |
| 77 | + </_supportedPackageByTargetFramework> |
| 78 | + |
| 79 | + <_supportedPackageByTargetFrameworkToRemove Include="@(_supportedPackageByTargetFramework)" Exclude="@(TargetFrameworksToInclude)" Condition="'@(TargetFrameworksToInclude)' != ''" /> |
| 80 | + <_filteredSupportedPackageByTargetFramework Include="@(_supportedPackageByTargetFramework)" Exclude="@(TargetFrameworksToExclude);@(_supportedPackageByTargetFrameworkToRemove)" /> |
| 81 | + |
| 82 | + <SupportedPackage Remove="@(SupportedPackage)" /> |
| 83 | + <SupportedPackage Include="@(_filteredSupportedPackageByTargetFramework->'%(Original)')" /> |
| 84 | + </ItemGroup> |
| 85 | + </Target> |
| 86 | + |
| 87 | + <Target Name="UpdateRuntimeIdentifiers" |
| 88 | + AfterTargets="GetSupportedPackages" |
| 89 | + Inputs="%(SupportedPackage.Identity);%(SupportedPackage.TargetFrameworkShort)" |
| 90 | + Outputs="unused"> |
| 91 | + <ItemGroup> |
| 92 | + <_supportedPackageRuntimes Remove="@(_supportedPackageRuntimes)" /> |
| 93 | + <_supportedPackageRuntimes Include="%(SupportedPackage.RuntimeIdentifiers)" /> |
| 94 | + |
| 95 | + <_supportedPackageRuntimesToRemove Include="@(_supportedPackageRuntimes)" Exclude="@(RuntimesToInclude)" Condition="'@(RuntimesToInclude)' != ''" /> |
| 96 | + <_filteredSupportedPackageRuntimes Include="@(_supportedPackageRuntimes)" Exclude="@(RuntimesToExclude);@(_supportedPackageRuntimesToRemove)" /> |
| 97 | + |
| 98 | + <SupportedPackage> |
| 99 | + <RuntimeIdentifiers>@(_filteredSupportedPackageRuntimes)</RuntimeIdentifiers> |
| 100 | + </SupportedPackage> |
40 | 101 | </ItemGroup> |
| 102 | + </Target> |
41 | 103 |
|
| 104 | + <Target Name="GenerateProjects" |
| 105 | + DependsOnTargets="GetSupportedPackages;CreateTestDir" |
| 106 | + Inputs="@(PackageReports);$(ProjectTemplate)" |
| 107 | + Outputs="%(SupportedPackage.ProjectFile)"> |
42 | 108 | <PropertyGroup> |
43 | | - <_projectDir>$(TestProjectDir)%(SupportedPackage.Identity)/%(SupportedPackage.TargetFramework)/</_projectDir> |
44 | | - <_projectFile>$(_projectDir)project.json</_projectFile> |
| 109 | + <_projectDir>%(SupportedPackage.ProjectDir)/</_projectDir> |
| 110 | + <_projectFile>%(SupportedPackage.ProjectFile)</_projectFile> |
45 | 111 | <_packageId>%(SupportedPackage.Identity)</_packageId> |
46 | 112 | <_packageVersion>%(SupportedPackage.Version)</_packageVersion> |
47 | | - <_projectTFM>%(SupportedPackage.TargetFramework)</_projectTFM> |
48 | | - <_projectRuntimeSection /> |
49 | | - <_projectRuntimeSection Condition="'@(_projectRuntimes)' != ''">@(_projectRuntimes->'"%(Identity)": {}', ', ')</_projectRuntimeSection> |
| 113 | + <_projectTFM>%(SupportedPackage.TargetFrameworkShort)</_projectTFM> |
| 114 | + <_projectRIDs>%(SupportedPackage.RuntimeIdentifiers)</_projectRIDs> |
50 | 115 | </PropertyGroup> |
51 | 116 |
|
52 | 117 | <MakeDir Directories="$(_projectDir)" /> |
53 | 118 | <!-- Update project.json template --> |
54 | 119 | <WriteLinesToFile |
55 | 120 | File="$(_projectFile)" |
56 | | - Lines="$([System.IO.File]::ReadAllText('project.template.json').Replace('{PackageId}', $(_packageId)).Replace('{PackageVersion}', $(_packageVersion)).Replace('{TFM}', $(_projectTFM)).Replace('{RuntimeSection}', $(_projectRuntimeSection)))" |
| 121 | + Lines="$([System.IO.File]::ReadAllText('$(ProjectTemplate)').Replace('{PackageId}', $(_packageId)).Replace('{PackageVersion}', $(_packageVersion)).Replace('{TFM}', $(_projectTFM)).Replace('{RIDs}', '$(_projectRIDs)'))" |
57 | 122 | Overwrite="true" /> |
58 | 123 | <Message Text="Generated $(_projectFile)" /> |
59 | 124 | </Target> |
60 | 125 |
|
61 | 126 | <Target Name="RestoreProjects" |
62 | 127 | DependsOnTargets="GenerateProjects" |
63 | | - Inputs="$(TestProjectDir)%(SupportedPackage.Identity)/%(SupportedPackage.TargetFramework)/project.json" |
64 | | - Outputs="$(TestProjectDir)%(SupportedPackage.Identity)'%(SupportedPackage.TargetFramework)/project.lock.json"> |
| 128 | + Inputs="%(SupportedPackage.ProjectFile)" |
| 129 | + Outputs="%(SupportedPackage.AssetsFile)"> |
65 | 130 | <PropertyGroup> |
66 | | - <_projectDir>$(TestProjectDir)%(SupportedPackage.Identity)/%(SupportedPackage.TargetFramework)/</_projectDir> |
67 | | - <_projectFile>$(_projectDir)project.json</_projectFile> |
| 131 | + <_projectDir>%(SupportedPackage.ProjectDir)/</_projectDir> |
| 132 | + <_projectFile>%(SupportedPackage.ProjectFile)</_projectFile> |
| 133 | + <_projectAssetsFile>%(SupportedPackage.AssetsFile)</_projectAssetsFile> |
68 | 134 | </PropertyGroup> |
69 | 135 |
|
70 | | - <Message Importance="High" Text="Testing $(_projectFile)" /> |
| 136 | + <Message Importance="High" Text="Restoring $(_projectFile)" /> |
71 | 137 | <Exec Command="$(TestRestoreCommand) "$(_projectFile)"" StandardOutputImportance="Low" ContinueOnError="ErrorAndContinue" /> |
| 138 | + <Touch Files="$(_projectAssetsFile)" /> |
| 139 | + </Target> |
72 | 140 | </Target> |
73 | 141 |
|
74 | 142 | <Target Name="Build" DependsOnTargets="RestoreProjects" /> |
|
0 commit comments