Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/linker.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Safar <marek.safar@gmail.com>2020-02-06 12:57:51 +0300
committerGitHub <noreply@github.com>2020-02-06 12:57:51 +0300
commitec876591ca3102629400e2ec912c5a958516967e (patch)
treeb533cc09045c6eeb02c66e68481c689cbe93b5e8
parentbc937463aeb42db2d541135a71e29fdf301ac355 (diff)
Run illink tests on CI (#937)
* Set ILLink.Tasks.Tests to be test project * Unconditionally use arcade * Fix ILLink.Tasks test project - Renamed to ILLink.Tasks.IntegrationTests because it depends on the .nupkg and arcade schedules Test projects before Pack - Fixed path to nupgk in nuget config - Move override of Test target for NUnit project from root Directory.Build.targets. For some reason Condition doesn't work there so the target would always be overriden. - Disabled MusicStore tests They were already disabled in https://github.com/mono/linker/commit/04eb53822f98749bdf6ab47009ba7c269f504eae because of https://github.com/mono/linker/commit/04eb53822f98749bdf6ab47009ba7c269f504eae but looks like that got reverted somehow * Make arcade enabled builds the default and remove special illink_ configs Mono builds can be done with /p:MonoBuild=true * Remove .net framework targets from netcore build * Update ILLink.Tasks to netcore3.0 * Fix netcore condition * More netcore3.0 updates * Try to mimic weird arcade behaviour * Enable test results publishing in arcade * Remove DisableArcadeImport property and use temp folder for ILLink.Tasks test projects instead * Fix net471 build on Unix * Use a temp folder in the repo and write empty Directory.Build.props/targets instead This works better with arcade temp folder overrides. * Revert "Try to mimic weird arcade behaviour" This reverts commit 3923c5410bf2d17073373924dc53020c91fea346. * Force always downloading a local dotnet We need this for the ILLink.Tasks tests. Co-authored-by: Alexander Köplinger <alex.koeplinger@outlook.com>
-rw-r--r--Directory.Build.props2
-rw-r--r--Directory.Build.targets8
-rw-r--r--build.cmd2
-rwxr-xr-xbuild.sh16
-rw-r--r--eng/azure-pipelines.yml9
-rw-r--r--eng/ilasm.ilproj3
-rw-r--r--external/Mono.Cecil.overrides2
-rw-r--r--global.json5
-rw-r--r--illink.sln122
-rw-r--r--monobuild/Makefile6
-rw-r--r--src/ILLink.Tasks/ILLink.Tasks.csproj11
-rw-r--r--src/ILLink.Tasks/ILLink.Tasks.targets2
-rw-r--r--src/ILLink.Tasks/LinkTask.cs2
-rw-r--r--src/ILLink.Tasks/Sdk/Sdk.props2
-rw-r--r--src/analyzer/analyzer.csproj18
-rw-r--r--src/linker/Mono.Linker.csproj22
-rw-r--r--test/ILLink.Tasks.IntegrationTests/CommandRunner.cs (renamed from test/ILLink.Tasks.Tests/CommandRunner.cs)0
-rw-r--r--test/ILLink.Tasks.IntegrationTests/HelloWorldTest.cs (renamed from test/ILLink.Tasks.Tests/HelloWorldTest.cs)7
-rw-r--r--test/ILLink.Tasks.IntegrationTests/ILLink.Tasks.IntegrationTests.csproj20
-rw-r--r--test/ILLink.Tasks.IntegrationTests/IntegrationTestBase.cs (renamed from test/ILLink.Tasks.Tests/IntegrationTestBase.cs)41
-rw-r--r--test/ILLink.Tasks.IntegrationTests/Loggers.cs (renamed from test/ILLink.Tasks.Tests/Loggers.cs)0
-rwxr-xr-xtest/ILLink.Tasks.IntegrationTests/MusicStoreReflection.xml (renamed from test/ILLink.Tasks.Tests/MusicStoreReflection.xml)0
-rw-r--r--test/ILLink.Tasks.IntegrationTests/MusicStoreTest.cs (renamed from test/ILLink.Tasks.Tests/MusicStoreTest.cs)19
-rw-r--r--test/ILLink.Tasks.IntegrationTests/TestContext.cs (renamed from test/ILLink.Tasks.Tests/TestContext.cs)11
-rw-r--r--test/ILLink.Tasks.IntegrationTests/WebApiTest.cs (renamed from test/ILLink.Tasks.Tests/WebApiTest.cs)6
-rw-r--r--test/ILLink.Tasks.IntegrationTests/xunit.runner.json (renamed from test/ILLink.Tasks.Tests/xunit.runner.json)0
-rw-r--r--test/ILLink.Tasks.Tests/ILLink.Tasks.Tests.csproj33
-rw-r--r--test/ILLink.Tasks.Tests/nuget/NuGet.config11
-rw-r--r--test/Mono.Linker.Tests.Cases.Expectations/Mono.Linker.Tests.Cases.Expectations.csproj6
-rw-r--r--test/Mono.Linker.Tests.Cases/Mono.Linker.Tests.Cases.csproj10
-rw-r--r--test/Mono.Linker.Tests/Mono.Linker.Tests.csproj38
-rw-r--r--test/Mono.Linker.Tests/TestCases/TestDatabase.cs17
-rw-r--r--test/Mono.Linker.Tests/TestCasesRunner/ILCompiler.cs7
33 files changed, 237 insertions, 221 deletions
diff --git a/Directory.Build.props b/Directory.Build.props
index 419c6cb50..86a068481 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -1,5 +1,5 @@
<Project>
- <Import Project="Sdk.props" Sdk="Microsoft.DotNet.Arcade.Sdk" Condition=" '$(ArcadeBuild)' == 'true' " />
+ <Import Project="Sdk.props" Sdk="Microsoft.DotNet.Arcade.Sdk" Condition="'$(MonoBuild)' == ''" />
<PropertyGroup>
<IsPackable>false</IsPackable>
</PropertyGroup>
diff --git a/Directory.Build.targets b/Directory.Build.targets
index d11d6a117..e149bf138 100644
--- a/Directory.Build.targets
+++ b/Directory.Build.targets
@@ -1,11 +1,5 @@
<Project>
- <Import Project="Sdk.targets" Sdk="Microsoft.DotNet.Arcade.Sdk" Condition=" '$(ArcadeBuild)' == 'true' " />
-
- <!-- Map the Arcade "Test" target to the "VSTest" target used by "dotnet test" -->
- <Target Name="Test"
- Condition=" '$(ArcadeBuild)' == 'true' And '$(DisableArcadeTestFramework)' == 'true' ">
- <MSBuild Projects="$(MSBuildProjectFile)" Targets="VSTest" />
- </Target>
+ <Import Project="Sdk.targets" Sdk="Microsoft.DotNet.Arcade.Sdk" Condition="'$(MonoBuild)' == ''" />
<Target Name="VSTestIfTestProject">
<CallTarget Targets="VSTest" Condition="'$(IsTestProject)' == 'true'" />
diff --git a/build.cmd b/build.cmd
new file mode 100644
index 000000000..675fdf83f
--- /dev/null
+++ b/build.cmd
@@ -0,0 +1,2 @@
+@echo off
+powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0eng\common\Build.ps1""" -restore -build %*"
diff --git a/build.sh b/build.sh
new file mode 100755
index 000000000..8477d5af8
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+
+source="${BASH_SOURCE[0]}"
+
+# resolve $SOURCE until the file is no longer a symlink
+while [[ -h $source ]]; do
+ scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
+ source="$(readlink "$source")"
+
+ # if $source was a relative symlink, we need to resolve it relative to the path where the
+ # symlink file was located
+ [[ $source != /* ]] && source="$scriptroot/$source"
+done
+
+scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
+"$scriptroot/eng/common/build.sh" --build --restore $@
diff --git a/eng/azure-pipelines.yml b/eng/azure-pipelines.yml
index 48b71a149..74a442c31 100644
--- a/eng/azure-pipelines.yml
+++ b/eng/azure-pipelines.yml
@@ -11,12 +11,12 @@ variables:
- name: _BuildConfig
value: Release
- name: _BuildArgs
- value: /p:ArcadeBuild=true
+ value:
- name: _DotNetArtifactsCategory
value: .NETCore
- ${{ if eq(variables.officialBuild, 'true') }}:
- name: _BuildArgs
- value: ${{ format('{0} /p:OfficialBuildId=$(Build.BuildNumber) /p:Test=false', variables['_BuildArgs']) }}
+ value: ${{ format('{0} /p:OfficialBuildId=$(Build.BuildNumber) /p:Test=false /p:IntegrationTest=false', variables['_BuildArgs']) }}
# Provide HelixApiAccessToken for telemetry
- group: DotNet-HelixApi-Access
@@ -31,7 +31,7 @@ stages:
helixRepo: mono/linker
enablePublishUsingPipelines: true
enablePublishBuildArtifacts: true # publish build logs to pipeline storage
- # enablePublishTestResults
+ enablePublishTestResults: true
enablePublishBuildAssets: true # generate build manifests and publish to BAR in internal builds
enableMicrobuild: true # only affects internal builds
@@ -64,6 +64,7 @@ stages:
submodules: true
- script: eng\common\cibuild.cmd -projects $(Build.SourcesDirectory)\illink.sln
-configuration $(_BuildConfig) $(_BuildArgs) $(_PublishArgs)
+ -integrationTest
-warnAsError "$false"
-nodeReuse "$false" # https://github.com/Microsoft/vstest/issues/1503
env:
@@ -84,6 +85,7 @@ stages:
submodules: true
- script: eng/common/cibuild.sh --projects $(Build.SourcesDirectory)/illink.sln
--configuration $(_BuildConfig) $(_BuildArgs)
+ --integrationTest
--warnAsError false
--nodeReuse false # https://github.com/Microsoft/vstest/issues/1503
env:
@@ -117,6 +119,7 @@ stages:
submodules: true
- script: eng/common/cibuild.sh --projects $(Build.SourcesDirectory)/illink.sln
--configuration $(_BuildConfig) $(_BuildArgs)
+ --integrationTest
--warnAsError false
--nodeReuse false # https://github.com/Microsoft/vstest/issues/1503
env:
diff --git a/eng/ilasm.ilproj b/eng/ilasm.ilproj
index 0e2dc0816..97db3594b 100644
--- a/eng/ilasm.ilproj
+++ b/eng/ilasm.ilproj
@@ -3,9 +3,6 @@
<!-- This project exists solely to restore ilasm for use in the test
project. -->
- <!-- Get version number of ilasm package -->
- <Import Condition=" '$(ArcadeBuild)' != 'true' " Project="$(MSBuildThisFileDirectory)Versions.props" />
-
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
diff --git a/external/Mono.Cecil.overrides b/external/Mono.Cecil.overrides
index d49a1bef8..e4819f27c 100644
--- a/external/Mono.Cecil.overrides
+++ b/external/Mono.Cecil.overrides
@@ -10,7 +10,7 @@
<PublicSign>true</PublicSign>
</PropertyGroup>
- <PropertyGroup Condition=" '$(ArcadeBuild)' == 'true' ">
+ <PropertyGroup Condition="'$(MonoBuild)' == ''">
<!-- Work around
https://github.com/dotnet/arcade/issues/2321. This disables
arcade's selection of AssemblyOriginatorKeyFile based on the
diff --git a/global.json b/global.json
index 9764c6abe..378b925ce 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,9 @@
{
"tools": {
- "dotnet": "3.0.101"
+ "dotnet": "3.0.101",
+ "runtimes": {
+ "dotnet": [ "3.0.0" ]
+ }
},
"msbuild-sdks": {
"Microsoft.DotNet.Arcade.Sdk": "5.0.0-beta.20105.2",
diff --git a/illink.sln b/illink.sln
index 0275f5526..3a0216dd4 100644
--- a/illink.sln
+++ b/illink.sln
@@ -19,7 +19,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mono.Linker.Tests.Cases", "
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mono.Linker.Tests.Cases.Expectations", "test\Mono.Linker.Tests.Cases.Expectations\Mono.Linker.Tests.Cases.Expectations.csproj", "{2C26601F-3E2F-45B9-A02F-58EE9296E19E}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ILLink.Tasks.Tests", "test\ILLink.Tasks.Tests\ILLink.Tasks.Tests.csproj", "{10249F19-1B72-4087-AF7F-C95B7672B204}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ILLink.Tasks.IntegrationTests", "test\ILLink.Tasks.IntegrationTests\ILLink.Tasks.IntegrationTests.csproj", "{10249F19-1B72-4087-AF7F-C95B7672B204}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "analyzer", "analyzer", "{AA0569FB-73E9-4B42-9A19-714BB1229DAE}"
EndProject
@@ -59,18 +59,18 @@ Global
{D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Release|x64.Build.0 = Release|Any CPU
{D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Release|x86.ActiveCfg = Release|Any CPU
{D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Release|x86.Build.0 = Release|Any CPU
- {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Debug|Any CPU.ActiveCfg = illink_Debug|Any CPU
- {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Debug|Any CPU.Build.0 = illink_Debug|Any CPU
- {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Debug|x64.ActiveCfg = illink_Debug|Any CPU
- {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Debug|x64.Build.0 = illink_Debug|Any CPU
- {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Debug|x86.ActiveCfg = illink_Debug|Any CPU
- {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Debug|x86.Build.0 = illink_Debug|Any CPU
- {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Release|Any CPU.ActiveCfg = illink_Release|Any CPU
- {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Release|Any CPU.Build.0 = illink_Release|Any CPU
- {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Release|x64.ActiveCfg = illink_Release|Any CPU
- {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Release|x64.Build.0 = illink_Release|Any CPU
- {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Release|x86.ActiveCfg = illink_Release|Any CPU
- {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Release|x86.Build.0 = illink_Release|Any CPU
+ {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Debug|x64.Build.0 = Debug|Any CPU
+ {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Debug|x86.Build.0 = Debug|Any CPU
+ {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Release|x64.ActiveCfg = Release|Any CPU
+ {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Release|x64.Build.0 = Release|Any CPU
+ {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Release|x86.ActiveCfg = Release|Any CPU
+ {DD28E2B1-057B-4B4D-A04D-B2EBD9E76E46}.Release|x86.Build.0 = Release|Any CPU
{A7A026C4-DEB4-4EF6-963E-17E7B98A6527}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A7A026C4-DEB4-4EF6-963E-17E7B98A6527}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A7A026C4-DEB4-4EF6-963E-17E7B98A6527}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -83,42 +83,42 @@ Global
{A7A026C4-DEB4-4EF6-963E-17E7B98A6527}.Release|x64.Build.0 = Release|Any CPU
{A7A026C4-DEB4-4EF6-963E-17E7B98A6527}.Release|x86.ActiveCfg = Release|Any CPU
{A7A026C4-DEB4-4EF6-963E-17E7B98A6527}.Release|x86.Build.0 = Release|Any CPU
- {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Debug|Any CPU.ActiveCfg = illink_Debug|Any CPU
- {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Debug|Any CPU.Build.0 = illink_Debug|Any CPU
- {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Debug|x64.ActiveCfg = illink_Debug|Any CPU
- {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Debug|x64.Build.0 = illink_Debug|Any CPU
- {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Debug|x86.ActiveCfg = illink_Debug|Any CPU
- {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Debug|x86.Build.0 = illink_Debug|Any CPU
- {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Release|Any CPU.ActiveCfg = illink_Release|Any CPU
- {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Release|Any CPU.Build.0 = illink_Release|Any CPU
- {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Release|x64.ActiveCfg = illink_Release|Any CPU
- {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Release|x64.Build.0 = illink_Release|Any CPU
- {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Release|x86.ActiveCfg = illink_Release|Any CPU
- {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Release|x86.Build.0 = illink_Release|Any CPU
- {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Debug|Any CPU.ActiveCfg = illink_Debug|Any CPU
- {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Debug|Any CPU.Build.0 = illink_Debug|Any CPU
- {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Debug|x64.ActiveCfg = illink_Debug|Any CPU
- {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Debug|x64.Build.0 = illink_Debug|Any CPU
- {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Debug|x86.ActiveCfg = illink_Debug|Any CPU
- {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Debug|x86.Build.0 = illink_Debug|Any CPU
- {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Release|Any CPU.ActiveCfg = illink_Release|Any CPU
- {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Release|Any CPU.Build.0 = illink_Release|Any CPU
- {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Release|x64.ActiveCfg = illink_Release|Any CPU
- {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Release|x64.Build.0 = illink_Release|Any CPU
- {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Release|x86.ActiveCfg = illink_Release|Any CPU
- {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Release|x86.Build.0 = illink_Release|Any CPU
- {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Debug|Any CPU.ActiveCfg = illink_Debug|Any CPU
- {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Debug|Any CPU.Build.0 = illink_Debug|Any CPU
- {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Debug|x64.ActiveCfg = illink_Debug|Any CPU
- {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Debug|x64.Build.0 = illink_Debug|Any CPU
- {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Debug|x86.ActiveCfg = illink_Debug|Any CPU
- {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Debug|x86.Build.0 = illink_Debug|Any CPU
- {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Release|Any CPU.ActiveCfg = illink_Release|Any CPU
- {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Release|Any CPU.Build.0 = illink_Release|Any CPU
- {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Release|x64.ActiveCfg = illink_Release|Any CPU
- {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Release|x64.Build.0 = illink_Release|Any CPU
- {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Release|x86.ActiveCfg = illink_Release|Any CPU
- {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Release|x86.Build.0 = illink_Release|Any CPU
+ {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Debug|x64.Build.0 = Debug|Any CPU
+ {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Debug|x86.Build.0 = Debug|Any CPU
+ {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Release|Any CPU.Build.0 = Release|Any CPU
+ {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Release|x64.ActiveCfg = Release|Any CPU
+ {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Release|x64.Build.0 = Release|Any CPU
+ {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Release|x86.ActiveCfg = Release|Any CPU
+ {400A1561-B6B6-482D-9E4C-3DDAEDE5BD07}.Release|x86.Build.0 = Release|Any CPU
+ {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Debug|x64.Build.0 = Debug|Any CPU
+ {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Debug|x86.Build.0 = Debug|Any CPU
+ {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Release|x64.ActiveCfg = Release|Any CPU
+ {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Release|x64.Build.0 = Release|Any CPU
+ {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Release|x86.ActiveCfg = Release|Any CPU
+ {B6BEE6AA-ADA0-4E1D-9A17-FBF2936F82B5}.Release|x86.Build.0 = Release|Any CPU
+ {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Debug|x64.Build.0 = Debug|Any CPU
+ {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Debug|x86.Build.0 = Debug|Any CPU
+ {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Release|x64.ActiveCfg = Release|Any CPU
+ {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Release|x64.Build.0 = Release|Any CPU
+ {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Release|x86.ActiveCfg = Release|Any CPU
+ {2C26601F-3E2F-45B9-A02F-58EE9296E19E}.Release|x86.Build.0 = Release|Any CPU
{10249F19-1B72-4087-AF7F-C95B7672B204}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{10249F19-1B72-4087-AF7F-C95B7672B204}.Debug|Any CPU.Build.0 = Debug|Any CPU
{10249F19-1B72-4087-AF7F-C95B7672B204}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -131,18 +131,18 @@ Global
{10249F19-1B72-4087-AF7F-C95B7672B204}.Release|x64.Build.0 = Release|Any CPU
{10249F19-1B72-4087-AF7F-C95B7672B204}.Release|x86.ActiveCfg = Release|Any CPU
{10249F19-1B72-4087-AF7F-C95B7672B204}.Release|x86.Build.0 = Release|Any CPU
- {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Debug|Any CPU.ActiveCfg = illink_Debug|Any CPU
- {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Debug|Any CPU.Build.0 = illink_Debug|Any CPU
- {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Debug|x64.ActiveCfg = illink_Debug|Any CPU
- {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Debug|x64.Build.0 = illink_Debug|Any CPU
- {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Debug|x86.ActiveCfg = illink_Debug|Any CPU
- {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Debug|x86.Build.0 = illink_Debug|Any CPU
- {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Release|Any CPU.ActiveCfg = illink_Release|Any CPU
- {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Release|Any CPU.Build.0 = illink_Release|Any CPU
- {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Release|x64.ActiveCfg = illink_Release|Any CPU
- {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Release|x64.Build.0 = illink_Release|Any CPU
- {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Release|x86.ActiveCfg = illink_Release|Any CPU
- {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Release|x86.Build.0 = illink_Release|Any CPU
+ {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Debug|x64.Build.0 = Debug|Any CPU
+ {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Debug|x86.Build.0 = Debug|Any CPU
+ {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Release|Any CPU.Build.0 = Release|Any CPU
+ {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Release|x64.ActiveCfg = Release|Any CPU
+ {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Release|x64.Build.0 = Release|Any CPU
+ {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Release|x86.ActiveCfg = Release|Any CPU
+ {96182221-C5C4-436D-9BE0-EC499F9BAF17}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/monobuild/Makefile b/monobuild/Makefile
index c5258a693..aff96e692 100644
--- a/monobuild/Makefile
+++ b/monobuild/Makefile
@@ -4,10 +4,10 @@ CONFIGURATION = Debug
all: build check
build:
- $(MSBUILD) ../monolinker.sln /restore /p:Configuration=$(CONFIGURATION)
+ $(MSBUILD) ../monolinker.sln /restore /p:Configuration=$(CONFIGURATION) /p:MonoBuild=true
clean:
- $(MSBUILD) ../monolinker.sln /t:clean
+ $(MSBUILD) ../monolinker.sln /p:MonoBuild=true /t:clean
check:
- $(MSBUILD) ../test/Mono.Linker.Tests/Mono.Linker.Tests.csproj /t:RunTestsOnMono
+ $(MSBUILD) ../test/Mono.Linker.Tests/Mono.Linker.Tests.csproj /p:MonoBuild=true /t:RunTestsOnMono
diff --git a/src/ILLink.Tasks/ILLink.Tasks.csproj b/src/ILLink.Tasks/ILLink.Tasks.csproj
index 401706729..73501b1bf 100644
--- a/src/ILLink.Tasks/ILLink.Tasks.csproj
+++ b/src/ILLink.Tasks/ILLink.Tasks.csproj
@@ -1,17 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
- <Import Project="$(MSBuildThisFileDirectory)../../eng/Versions.props" Condition=" '$(ArcadeBuild)' != 'true' " />
<PropertyGroup>
- <TargetFrameworks>netcoreapp2.0;net472</TargetFrameworks>
- <TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">netcoreapp2.0</TargetFrameworks>
+ <TargetFrameworks>netcoreapp3.0;net472</TargetFrameworks>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
- <BaseOutputPath>bin/</BaseOutputPath>
- <PackageOutputPath>$(BaseOutputPath)nupkgs</PackageOutputPath>
<IsPackable>true</IsPackable>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<Description>MSBuild tasks for running the IL Linker</Description>
<!-- Don't include the build output. Instead, we want to include
the TargetFramework-specific publish output. -->
<IncludeBuildOutput>false</IncludeBuildOutput>
+ <!-- Suppress NuGet warning for package which sets IncludeBuildOutput=false, see https://github.com/NuGet/Home/issues/8583 -->
+ <NoWarn>$(NoWarn);NU5128</NoWarn>
<!-- We want to package the tasks package together with its
transitive dependencies and the linker, without marking them
as dependencies in the tasks package.
@@ -77,7 +75,7 @@
</Target>
<ItemGroup>
- <ProjectReference Include="../linker/Mono.Linker.csproj" PrivateAssets="All" Condition=" '$(TargetFramework)' == 'netcoreapp2.0' " />
+ <ProjectReference Include="../linker/Mono.Linker.csproj" PrivateAssets="All" />
<ProjectReference Include="../../external/cecil/Mono.Cecil.csproj" PrivateAssets="All" />
</ItemGroup>
@@ -90,5 +88,6 @@
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCoreVersion)" PrivateAssets="All" ExcludeAssets="Runtime" />
<PackageReference Include="System.Reflection.Metadata" Version="$(SystemReflectionMetadataVersion)" Condition=" '$(TargetFramework)' == 'net472' " PrivateAssets="All" Publish="True" />
+ <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" PrivateAssets="All" Version="1.0.0" />
</ItemGroup>
</Project>
diff --git a/src/ILLink.Tasks/ILLink.Tasks.targets b/src/ILLink.Tasks/ILLink.Tasks.targets
index 3a38f07f1..f5024eded 100644
--- a/src/ILLink.Tasks/ILLink.Tasks.targets
+++ b/src/ILLink.Tasks/ILLink.Tasks.targets
@@ -2,7 +2,7 @@
<PropertyGroup>
<_LinkTaskDirectoryRoot>$(MSBuildThisFileDirectory)../tools/</_LinkTaskDirectoryRoot>
- <_LinkTaskTFM Condition=" '$(MSBuildRuntimeType)' == 'Core' ">netcoreapp2.0</_LinkTaskTFM>
+ <_LinkTaskTFM Condition=" '$(MSBuildRuntimeType)' == 'Core' ">netcoreapp3.0</_LinkTaskTFM>
<_LinkTaskTFM Condition=" '$(_LinkTaskTFM)' == '' ">net46</_LinkTaskTFM>
<_LinkTaskDirectory>$(_LinkTaskDirectoryRoot)$(_LinkTaskTFM)/</_LinkTaskDirectory>
<LinkTaskDllPath Condition=" '$(LinkTaskDllPath)' == '' ">$(_LinkTaskDirectory)ILLink.Tasks.dll</LinkTaskDllPath>
diff --git a/src/ILLink.Tasks/LinkTask.cs b/src/ILLink.Tasks/LinkTask.cs
index 6c9b15a65..f176f32d4 100644
--- a/src/ILLink.Tasks/LinkTask.cs
+++ b/src/ILLink.Tasks/LinkTask.cs
@@ -111,7 +111,7 @@ namespace ILLink.Tasks
var taskDirectory = Path.GetDirectoryName (Assembly.GetExecutingAssembly ().Location);
// The linker always runs on .NET Core, even when using desktop MSBuild to host ILLink.Tasks.
- _illinkPath = Path.Combine (Path.GetDirectoryName (taskDirectory), "netcoreapp2.0", "illink.dll");
+ _illinkPath = Path.Combine (Path.GetDirectoryName (taskDirectory), "netcoreapp3.0", "illink.dll");
return _illinkPath;
}
set => _illinkPath = value;
diff --git a/src/ILLink.Tasks/Sdk/Sdk.props b/src/ILLink.Tasks/Sdk/Sdk.props
index 8c9c2cacd..89633629c 100644
--- a/src/ILLink.Tasks/Sdk/Sdk.props
+++ b/src/ILLink.Tasks/Sdk/Sdk.props
@@ -13,7 +13,7 @@ Copyright (c) .NET Foundation. All rights reserved.
<PropertyGroup>
<_ILLinkTasksDirectoryRoot Condition=" '$(_ILLinkTasksDirectoryRoot)' == '' ">$(MSBuildThisFileDirectory)../tools/</_ILLinkTasksDirectoryRoot>
- <_ILLinkTasksTFM Condition=" '$(MSBuildRuntimeType)' == 'Core' ">netcoreapp2.0</_ILLinkTasksTFM>
+ <_ILLinkTasksTFM Condition=" '$(MSBuildRuntimeType)' == 'Core' ">netcoreapp3.0</_ILLinkTasksTFM>
<_ILLinkTasksTFM Condition=" '$(_ILLinkTasksTFM)' == '' ">net472</_ILLinkTasksTFM>
<_ILLinkTasksDirectory>$(_ILLinkTasksDirectoryRoot)$(_ILLinkTasksTFM)/</_ILLinkTasksDirectory>
<ILLinkTasksAssembly Condition=" '$(ILLinkTasksAssembly)' == '' ">$(_ILLinkTasksDirectory)ILLink.Tasks.dll</ILLinkTasksAssembly>
diff --git a/src/analyzer/analyzer.csproj b/src/analyzer/analyzer.csproj
index 49b053be8..1d4852b68 100644
--- a/src/analyzer/analyzer.csproj
+++ b/src/analyzer/analyzer.csproj
@@ -4,26 +4,24 @@
<OutputType>Exe</OutputType>
<RootNamespace>LinkerAnalyzer</RootNamespace>
<AssemblyName>illinkanalyzer</AssemblyName>
- <Configurations>Debug;Release;illink_Debug;illink_Release</Configurations>
+ <Configurations>Debug;Release</Configurations>
</PropertyGroup>
- <PropertyGroup Condition="$(Configuration.StartsWith('illink'))">
+ <PropertyGroup Condition="'$(MonoBuild)' == ''">
<DefineConstants>$(DefineConstants);FEATURE_ILLINK</DefineConstants>
- <!-- net46 build is disabled until cecil uses SDK-style projects. -->
- <TargetFrameworks>netcoreapp3.0</TargetFrameworks>
- <TargetFrameworks Condition="'$(MSBuildRuntimeType)' == 'Core' And '$(OS)' != 'Windows_NT'">netcoreapp3.0</TargetFrameworks>
+ <TargetFrameworks>netcoreapp3.0;net471</TargetFrameworks>
</PropertyGroup>
- <PropertyGroup Condition="!$(Configuration.StartsWith('illink'))">
+ <PropertyGroup Condition="'$(MonoBuild)' != ''">
<TargetFrameworks>net471</TargetFrameworks>
</PropertyGroup>
- <PropertyGroup Condition="$(Configuration.EndsWith('Debug'))">
+ <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<DebugSymbols Condition="'$(DebugSymbols)' == ''">true</DebugSymbols>
<Optimize Condition="'$(Optimize)' == ''">false</Optimize>
</PropertyGroup>
- <PropertyGroup Condition="$(Configuration.EndsWith('Release'))">
+ <PropertyGroup Condition="'$(Configuration)' == 'Release'">
<Optimize Condition="'$(Optimize)' == ''">true</Optimize>
</PropertyGroup>
@@ -32,4 +30,8 @@
</ProjectReference>
</ItemGroup>
+ <ItemGroup Condition="'$(MonoBuild)' == ''">
+ <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" PrivateAssets="All" Version="1.0.0" />
+ </ItemGroup>
+
</Project> \ No newline at end of file
diff --git a/src/linker/Mono.Linker.csproj b/src/linker/Mono.Linker.csproj
index 62dd3aecd..71cb832a4 100644
--- a/src/linker/Mono.Linker.csproj
+++ b/src/linker/Mono.Linker.csproj
@@ -5,37 +5,35 @@
<RootNamespace>Mono</RootNamespace>
<Copyright>(C) 2006, Jb Evain</Copyright>
<Version>0.2.0.0</Version>
- <Configurations>Debug;Release;illink_Debug;illink_Release</Configurations>
+ <Configurations>Debug;Release</Configurations>
<LangVersion>latest</LangVersion>
</PropertyGroup>
- <PropertyGroup Condition="$(Configuration.StartsWith('illink'))">
+ <PropertyGroup Condition="'$(MonoBuild)' == ''">
<AssemblyName>illink</AssemblyName>
<Description>IL Linker</Description>
<DefineConstants>$(DefineConstants);FEATURE_ILLINK</DefineConstants>
- <!-- net46 build is disabled until cecil uses SDK-style projects. -->
- <TargetFrameworks>netcoreapp2.0</TargetFrameworks>
- <TargetFrameworks Condition="'$(MSBuildRuntimeType)' == 'Core' And '$(OS)' != 'Windows_NT'">netcoreapp2.0</TargetFrameworks>
+ <TargetFrameworks>netcoreapp3.0;net471</TargetFrameworks>
</PropertyGroup>
- <PropertyGroup Condition="!$(Configuration.StartsWith('illink'))">
+ <PropertyGroup Condition="'$(MonoBuild)' != ''">
<AssemblyName>monolinker</AssemblyName>
<AssemblyTitle>Mono.Linker</AssemblyTitle>
<Description>Mono CIL Linker</Description>
<TargetFrameworks>net471</TargetFrameworks>
</PropertyGroup>
- <PropertyGroup Condition="$(Configuration.EndsWith('Debug'))">
+ <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<DefineConstants>$(DefineConstants);DEBUG</DefineConstants>
<DebugSymbols Condition="'$(DebugSymbols)' == ''">true</DebugSymbols>
<Optimize Condition="'$(Optimize)' == ''">false</Optimize>
</PropertyGroup>
- <PropertyGroup Condition="$(Configuration.EndsWith('Release'))">
+ <PropertyGroup Condition="'$(Configuration)' == 'Release'">
<Optimize Condition="'$(Optimize)' == ''">true</Optimize>
</PropertyGroup>
- <ItemGroup Condition="$(Configuration.StartsWith('illink'))">
+ <ItemGroup Condition="'$(MonoBuild)' == ''">
<Compile Remove="Linker\I18nAssemblies.cs" />
<Compile Remove="Linker\XApiReader.cs" />
<Compile Remove="Linker.Steps\LoadI18nAssemblies.cs" />
@@ -48,7 +46,11 @@
<ProjectReference Include="..\..\external\cecil\symbols\pdb\Mono.Cecil.Pdb.csproj" />
</ItemGroup>
- <ItemGroup Condition="!$(Configuration.StartsWith('illink'))">
+ <ItemGroup Condition="'$(MonoBuild)' == ''">
+ <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" PrivateAssets="All" Version="1.0.0" />
+ </ItemGroup>
+
+ <ItemGroup Condition="'$(MonoBuild)' != ''">
<ProjectReference Include="..\..\external\cecil\symbols\mdb\Mono.Cecil.Mdb.csproj" />
</ItemGroup>
diff --git a/test/ILLink.Tasks.Tests/CommandRunner.cs b/test/ILLink.Tasks.IntegrationTests/CommandRunner.cs
index bc790c09a..bc790c09a 100644
--- a/test/ILLink.Tasks.Tests/CommandRunner.cs
+++ b/test/ILLink.Tasks.IntegrationTests/CommandRunner.cs
diff --git a/test/ILLink.Tasks.Tests/HelloWorldTest.cs b/test/ILLink.Tasks.IntegrationTests/HelloWorldTest.cs
index b9d1528c5..63b0990c9 100644
--- a/test/ILLink.Tasks.Tests/HelloWorldTest.cs
+++ b/test/ILLink.Tasks.IntegrationTests/HelloWorldTest.cs
@@ -17,8 +17,8 @@ namespace ILLink.Tests
public string SetupProject()
{
- string projectRoot = "helloworld";
- string csproj = Path.Combine(projectRoot, $"{projectRoot}.csproj");
+ string projectRoot = CreateTestFolder("helloworld");
+ string csproj = Path.Combine(projectRoot, $"helloworld.csproj");
if (File.Exists(csproj)) {
LogMessage ($"using existing project {csproj}");
@@ -38,9 +38,10 @@ namespace ILLink.Tests
AddLinkerReference(csproj);
+ AddNuGetConfig(projectRoot);
+
return csproj;
}
-
}
public class HelloWorldTest : IntegrationTestBase, IClassFixture<HelloWorldFixture>
diff --git a/test/ILLink.Tasks.IntegrationTests/ILLink.Tasks.IntegrationTests.csproj b/test/ILLink.Tasks.IntegrationTests/ILLink.Tasks.IntegrationTests.csproj
new file mode 100644
index 000000000..81a44f503
--- /dev/null
+++ b/test/ILLink.Tasks.IntegrationTests/ILLink.Tasks.IntegrationTests.csproj
@@ -0,0 +1,20 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>netcoreapp3.0</TargetFramework>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <Content Remove="MusicStoreReflection.xml" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <EmbeddedResource Include="MusicStoreReflection.xml" LogicalName="MusicStoreReflection.xml" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <!-- tell xunit to log diagnostic messages -->
+ <Content Include="xunit.runner.json" CopyToOutputDirectory="PreserveNewest" />
+ </ItemGroup>
+
+</Project>
diff --git a/test/ILLink.Tasks.Tests/IntegrationTestBase.cs b/test/ILLink.Tasks.IntegrationTests/IntegrationTestBase.cs
index 3027f4fca..d65990895 100644
--- a/test/ILLink.Tasks.Tests/IntegrationTestBase.cs
+++ b/test/ILLink.Tasks.IntegrationTests/IntegrationTestBase.cs
@@ -3,6 +3,7 @@ using System.Diagnostics;
using System.IO;
using System.Collections.Generic;
using System.Linq;
+using System.Reflection;
using System.Text;
using System.Xml.Linq;
using Xunit;
@@ -32,6 +33,27 @@ namespace ILLink.Tests
CommandHelper = new CommandHelper (logger);
}
+ protected void AddNuGetConfig(string projectRoot)
+ {
+ var nugetConfig = Path.Combine(projectRoot, "NuGet.config");
+ var xdoc = new XDocument();
+ var configuration = new XElement("configuration");
+ var packageSources = new XElement("packageSources");
+ packageSources.Add(new XElement("add",
+ new XAttribute("key", "dotnet-core"),
+ new XAttribute("value", "https://dotnet.myget.org/F/dotnet-core/api/v3/index.json")));
+ packageSources.Add(new XElement("add",
+ new XAttribute("key", "local linker feed"),
+ new XAttribute("value", TestContext.PackageSource)));
+
+ configuration.Add(packageSources);
+ xdoc.Add(configuration);
+
+ using (var fs = new FileStream(nugetConfig, FileMode.Create)) {
+ xdoc.Save(fs);
+ }
+ }
+
protected void AddLinkerReference(string csproj)
{
var xdoc = XDocument.Load(csproj);
@@ -59,6 +81,25 @@ namespace ILLink.Tests
}
}
+ protected string CreateTestFolder(string projectName)
+ {
+ string tempFolder = Path.GetFullPath(Path.Combine("tests-temp", projectName));
+ Directory.CreateDirectory(tempFolder);
+
+ // write empty Directory.Build.props and Directory.Build.targets to disable accidental import of arcade from repo root
+ File.WriteAllText(Path.Combine(tempFolder, "Directory.Build.props"), "<Project></Project>");
+ File.WriteAllText(Path.Combine(tempFolder, "Directory.Build.targets"), "<Project></Project>");
+
+ return Path.Combine(tempFolder, projectName);
+ }
+
+ protected void WriteEmbeddedResource(string resourceName, string destination)
+ {
+ var assembly = Assembly.GetExecutingAssembly();
+ var resourceStream = assembly.GetManifestResourceStream(resourceName);
+ resourceStream.CopyTo(File.Create(destination));
+ }
+
static void AddLinkerRoots(string csproj, List<string> rootFiles)
{
var xdoc = XDocument.Load(csproj);
diff --git a/test/ILLink.Tasks.Tests/Loggers.cs b/test/ILLink.Tasks.IntegrationTests/Loggers.cs
index 083cb2769..083cb2769 100644
--- a/test/ILLink.Tasks.Tests/Loggers.cs
+++ b/test/ILLink.Tasks.IntegrationTests/Loggers.cs
diff --git a/test/ILLink.Tasks.Tests/MusicStoreReflection.xml b/test/ILLink.Tasks.IntegrationTests/MusicStoreReflection.xml
index e35f91155..e35f91155 100755
--- a/test/ILLink.Tasks.Tests/MusicStoreReflection.xml
+++ b/test/ILLink.Tasks.IntegrationTests/MusicStoreReflection.xml
diff --git a/test/ILLink.Tasks.Tests/MusicStoreTest.cs b/test/ILLink.Tasks.IntegrationTests/MusicStoreTest.cs
index 0ae386cf2..cbb78b62b 100644
--- a/test/ILLink.Tasks.Tests/MusicStoreTest.cs
+++ b/test/ILLink.Tasks.IntegrationTests/MusicStoreTest.cs
@@ -13,7 +13,6 @@ namespace ILLink.Tests
public static List<string> rootFiles = new List<string> { "MusicStoreReflection.xml" };
private static string gitRepo = "http://github.com/aspnet/JitBench";
- private static string repoName = "JitBench";
// Revision can also be a branch name. We generally
// want to ensure that we are able to link the latest
@@ -57,6 +56,7 @@ namespace ILLink.Tests
string SetupProject()
{
int ret;
+ string repoName = CreateTestFolder("MusicStore");
string demoRoot = Path.Combine(repoName, Path.Combine("src", "MusicStore"));
string csproj = Path.Combine(demoRoot, "MusicStore.csproj");
@@ -86,8 +86,10 @@ namespace ILLink.Tests
Assert.True(false);
}
- // Copy root files into the project directory
- CopyRootFiles(demoRoot);
+ // Write root files into the project directory
+ foreach (var rf in rootFiles) {
+ WriteEmbeddedResource(rf, Path.Combine(demoRoot, rf));
+ }
// This is necessary because JitBench comes with a
// NuGet.Config that has a <clear /> line, preventing
@@ -175,13 +177,6 @@ namespace ILLink.Tests
return GetDotnetToolPath(dotnetDir);
}
- static void CopyRootFiles(string demoRoot)
- {
- foreach (var rf in rootFiles) {
- File.Copy(rf, Path.Combine(demoRoot, rf));
- }
- }
-
private void AddLocalNugetFeedAfterClear(string nugetConfig)
{
string localPackagePath = Path.GetFullPath(TestContext.PackageSource);
@@ -211,14 +206,14 @@ namespace ILLink.Tests
// context.DotnetToolPath = ObtainSDK(context.TestBin, repoName);
}
- [Fact]
+ //[Fact] // https://github.com/aspnet/JitBench/issues/96
public void RunMusicStoreStandalone()
{
string executablePath = BuildAndLink(MusicStoreFixture.csproj, MusicStoreFixture.rootFiles, MusicStoreFixture.VersionPublishArgs, selfContained: true);
CheckOutput(executablePath, selfContained: true);
}
- [Fact]
+ //[Fact] // https://github.com/aspnet/JitBench/issues/96
public void RunMusicStorePortable()
{
Dictionary<string, string> extraPublishArgs = new Dictionary<string, string>(MusicStoreFixture.VersionPublishArgs);
diff --git a/test/ILLink.Tasks.Tests/TestContext.cs b/test/ILLink.Tasks.IntegrationTests/TestContext.cs
index 593e5ec95..d8f7f0b6d 100644
--- a/test/ILLink.Tasks.Tests/TestContext.cs
+++ b/test/ILLink.Tasks.IntegrationTests/TestContext.cs
@@ -69,9 +69,14 @@ namespace ILLink.Tests
var testBin = Path.Combine(Environment.CurrentDirectory, "..", "..");
var repoRoot = Path.GetFullPath(Path.Combine(testBin, "..", "..", ".."));
+ // We want to build and link integration projects in the
+ // release configuration.
+ Configuration = "Release";
+ TestBin = testBin;
+
// Locate task package
var packageName = "ILLink.Tasks";
- var packageSource = Path.Combine(repoRoot, "src", "ILLink.Tasks", "bin", "nupkgs");
+ var packageSource = Path.Combine(repoRoot, "artifacts", "packages", Configuration, "Shipping");
var tasksPackages = Directory.GetFiles(packageSource)
.Where(p => Path.GetExtension(p) == ".nupkg")
.Select(p => Path.GetFileNameWithoutExtension(p))
@@ -110,10 +115,6 @@ namespace ILLink.Tests
{
RuntimeIdentifier = "osx.10.13-x64";
}
- // We want to build and link integration projects in the
- // release configuration.
- Configuration = "Release";
- TestBin = testBin;
}
}
}
diff --git a/test/ILLink.Tasks.Tests/WebApiTest.cs b/test/ILLink.Tasks.IntegrationTests/WebApiTest.cs
index 2cdd3495a..334468167 100644
--- a/test/ILLink.Tasks.Tests/WebApiTest.cs
+++ b/test/ILLink.Tasks.IntegrationTests/WebApiTest.cs
@@ -16,8 +16,8 @@ namespace ILLink.Tests
public string SetupProject()
{
- string projectRoot = "webapi";
- string csproj = Path.Combine(projectRoot, $"{projectRoot}.csproj");
+ string projectRoot = CreateTestFolder("webapi");
+ string csproj = Path.Combine(projectRoot, $"webapi.csproj");
if (File.Exists(csproj)) {
LogMessage($"using existing project {csproj}");
@@ -39,6 +39,8 @@ namespace ILLink.Tests
AddLinkerReference(csproj);
+ AddNuGetConfig(projectRoot);
+
return csproj;
}
diff --git a/test/ILLink.Tasks.Tests/xunit.runner.json b/test/ILLink.Tasks.IntegrationTests/xunit.runner.json
index 40be06652..40be06652 100644
--- a/test/ILLink.Tasks.Tests/xunit.runner.json
+++ b/test/ILLink.Tasks.IntegrationTests/xunit.runner.json
diff --git a/test/ILLink.Tasks.Tests/ILLink.Tasks.Tests.csproj b/test/ILLink.Tasks.Tests/ILLink.Tasks.Tests.csproj
deleted file mode 100644
index 5ce4708cc..000000000
--- a/test/ILLink.Tasks.Tests/ILLink.Tasks.Tests.csproj
+++ /dev/null
@@ -1,33 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
- <PropertyGroup>
- <TargetFramework>netcoreapp3.0</TargetFramework>
-
- <IsPackable>false</IsPackable>
- <IsTestProject>false</IsTestProject>
- </PropertyGroup>
-
- <ItemGroup>
- <Content Include="MusicStoreReflection.xml">
- <!-- It doesn't seem to get copied unless we specify this
- explicitly. -->
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- </ItemGroup>
-
- <Target Name="CopyNuGetConfig" AfterTargets="AfterBuild">
- <Copy SourceFiles="nuget/NuGet.config" DestinationFolder="$(OutDir)" />
- </Target>
-
- <ItemGroup>
- <!-- tell xunit to log diagnostic messages -->
- <Content Include="xunit.runner.json" CopyToOutputDirectory="PreserveNewest" />
- </ItemGroup>
-
- <ItemGroup>
- <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="3.1.1" />
- <PackageReference Include="xunit" Version="2.4.0" />
- <PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
- </ItemGroup>
-
-</Project>
diff --git a/test/ILLink.Tasks.Tests/nuget/NuGet.config b/test/ILLink.Tasks.Tests/nuget/NuGet.config
deleted file mode 100644
index 1954d0af0..000000000
--- a/test/ILLink.Tasks.Tests/nuget/NuGet.config
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
- <packageSources>
- <add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
- <!-- When the tests are run from the repo's test bin directory,
- this NuGet.config should be read to find the local package
- directory. The path is relative to the test <baseoutputpath>/<config>/<tfm>
- directory. -->
- <add key="local linker packages" value="../../../../../src/ILLink.Tasks/bin/nupkgs" />
- </packageSources>
-</configuration>
diff --git a/test/Mono.Linker.Tests.Cases.Expectations/Mono.Linker.Tests.Cases.Expectations.csproj b/test/Mono.Linker.Tests.Cases.Expectations/Mono.Linker.Tests.Cases.Expectations.csproj
index db2718da3..a7faebae5 100644
--- a/test/Mono.Linker.Tests.Cases.Expectations/Mono.Linker.Tests.Cases.Expectations.csproj
+++ b/test/Mono.Linker.Tests.Cases.Expectations/Mono.Linker.Tests.Cases.Expectations.csproj
@@ -1,13 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
- <Configurations>Debug;Release;illink_Debug;illink_Release</Configurations>
+ <Configurations>Debug;Release</Configurations>
</PropertyGroup>
- <PropertyGroup Condition="$(Configuration.StartsWith('illink'))">
+ <PropertyGroup Condition="'$(MonoBuild)' == ''">
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
- <PropertyGroup Condition="!$(Configuration.StartsWith('illink'))">
+ <PropertyGroup Condition="'$(MonoBuild)' != ''">
<TargetFramework>net471</TargetFramework>
</PropertyGroup>
diff --git a/test/Mono.Linker.Tests.Cases/Mono.Linker.Tests.Cases.csproj b/test/Mono.Linker.Tests.Cases/Mono.Linker.Tests.Cases.csproj
index f1b5db37a..852a4a5bb 100644
--- a/test/Mono.Linker.Tests.Cases/Mono.Linker.Tests.Cases.csproj
+++ b/test/Mono.Linker.Tests.Cases/Mono.Linker.Tests.Cases.csproj
@@ -6,18 +6,16 @@
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<LangVersion>8.0</LangVersion>
- <Configurations>Debug;Release;illink_Debug;illink_Release</Configurations>
+ <Configurations>Debug;Release</Configurations>
</PropertyGroup>
- <PropertyGroup Condition="$(Configuration.StartsWith('illink'))">
+ <PropertyGroup Condition="'$(MonoBuild)' == ''">
<TargetFramework>netcoreapp3.0</TargetFramework>
- <ILLinkBuild>true</ILLinkBuild>
<DefineConstants>$(DefineConstants);ILLINK</DefineConstants>
</PropertyGroup>
- <PropertyGroup Condition="!$(Configuration.StartsWith('illink'))">
+ <PropertyGroup Condition="'$(MonoBuild)' != ''">
<TargetFramework>net471</TargetFramework>
- <ILLinkBuild>false</ILLinkBuild>
</PropertyGroup>
<ItemGroup>
@@ -131,7 +129,7 @@
<EmbeddedResource Include="LinkXml\CanPreserveExcludedFeatureCom.xml" />
</ItemGroup>
- <ItemGroup Condition="$(ILLinkBuild)">
+ <ItemGroup Condition="'$(MonoBuild)' == ''">
<PackageReference Include="System.Security.Permissions" Version="4.5.0" />
<PackageReference Include="NUnit" Version="3.6.1" />
<PackageReference Include="NUnit.ConsoleRunner" Version="3.6.1" />
diff --git a/test/Mono.Linker.Tests/Mono.Linker.Tests.csproj b/test/Mono.Linker.Tests/Mono.Linker.Tests.csproj
index 3653c8e6b..236ff33ab 100644
--- a/test/Mono.Linker.Tests/Mono.Linker.Tests.csproj
+++ b/test/Mono.Linker.Tests/Mono.Linker.Tests.csproj
@@ -1,26 +1,20 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project>
+ <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<PropertyGroup>
- <IsTestProject>true</IsTestProject>
- <Configurations>Debug;Release;illink_Debug;illink_Release</Configurations>
+ <Configurations>Debug;Release</Configurations>
</PropertyGroup>
- <PropertyGroup Condition="$(Configuration.StartsWith('illink'))">
+ <PropertyGroup Condition="'$(MonoBuild)' == ''">
<TargetFramework>netcoreapp3.0</TargetFramework>
- <ILLinkBuild>true</ILLinkBuild>
<DefineConstants>$(DefineConstants);ILLINK</DefineConstants>
- <DefineConstants Condition="'$(Configuration)' == 'illink_Debug'">$(DefineConstants);DEBUG</DefineConstants>
+ <DefineConstants Condition="'$(Configuration)' == 'Debug'">$(DefineConstants);DEBUG</DefineConstants>
<!-- Simulate https://github.com/dotnet/sdk/pull/2073 until it ships. -->
<DefineConstants Condition="'$(TargetFramework)' == 'netcoreapp3.0'">$(DefineConstants);NETCOREAPP</DefineConstants>
-
- <DefineConstants Condition="'$(ArcadeBuild)' == 'true'">$(DefineConstants);ARCADE</DefineConstants>
- <!-- Arcade's custom test imports assume that we are using xunit. -->
- <DisableArcadeTestFramework Condition="'$(ArcadeBuild)' == 'true'">true</DisableArcadeTestFramework>
</PropertyGroup>
- <PropertyGroup Condition="!$(Configuration.StartsWith('illink'))">
+ <PropertyGroup Condition="'$(MonoBuild)' != ''">
<TargetFramework>net471</TargetFramework>
- <ILLinkBuild>false</ILLinkBuild>
</PropertyGroup>
<ItemGroup>
@@ -36,7 +30,7 @@
<ProjectReference Include="..\Mono.Linker.Tests.Cases.Expectations\Mono.Linker.Tests.Cases.Expectations.csproj" />
</ItemGroup>
- <ItemGroup Condition="$(ILLinkBuild)">
+ <ItemGroup Condition="'$(MonoBuild)' == ''">
<PackageReference Include="System.CodeDom" Version="4.5.0" />
<PackageReference Include="Microsoft.Win32.Registry" Version="4.5.0" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="2.10.0" />
@@ -48,29 +42,37 @@
<PackageReference Include="System.Threading.AccessControl" Version="4.5.0" />
</ItemGroup>
- <Target Name="PrepareTools" BeforeTargets="Build" Condition="$(ILLinkBuild)">
+ <Target Name="PrepareTools" BeforeTargets="Build" Condition="'$(MonoBuild)' == ''">
<!-- Restore ilasm using ilasm.ilproj. Restore must be done
separately from copy with a different set of input
properties, to force MSBuild to re-evaluate using new props
and targets from the restored package. -->
<PropertyGroup>
<IlasmProject>$(MSBuildThisFileDirectory)../../eng/ilasm.ilproj</IlasmProject>
- <IlasmDir Condition="'$(ArcadeBuild)' == 'true'">$(ArtifactsDir)tools</IlasmDir>
- <IlasmDir Condition="'$(ArcadeBuild)' != 'true'">$(MSBuildThisFileDirectory)$(BaseIntermediateOutputPath)tools</IlasmDir>
+ <IlasmDir>$(ArtifactsDir)tools</IlasmDir>
</PropertyGroup>
<MSBuild Projects="$(IlasmProject)" Targets="Restore" Properties="BaseIntermediateOutputPath=$(IlasmDir)" />
<MSBuild Projects="$(IlasmProject)" Targets="CopyILAsmTool" Properties="BaseIntermediateOutputPath=$(IlasmDir);__BuildPhase=Copy" />
</Target>
- <ItemGroup Condition="!$(ILLinkBuild)">
+ <ItemGroup Condition="'$(MonoBuild)' != ''">
<ProjectReference Include="..\..\external\cecil\symbols\mdb\Mono.Cecil.Mdb.csproj" />
<PackageReference Include="NUnit" Version="3.10.0" />
<PackageReference Include="NUnit.ConsoleRunner" Version="3.10.0" />
</ItemGroup>
- <Target Name="RunTestsOnMono" Condition="!$(ILLinkBuild)">
+ <Target Name="RunTestsOnMono" Condition="'$(MonoBuild)' != ''">
<Exec Command="mono $(PkgNUnit_ConsoleRunner)/tools/nunit3-console.exe --result=TestResults.xml $(OutputPath)Mono.Linker.Tests.dll" />
</Target>
+ <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
+
+ <!-- Arcade's custom test imports assume that we are using xunit. -->
+ <!-- Map the Arcade "Test" target to the "VSTest" target used by "dotnet test" -->
+ <Target Name="Test"
+ Condition="'$(MonoBuild)' == ''">
+ <MSBuild Projects="$(MSBuildProjectFile)" Targets="VSTest" />
+ </Target>
+
</Project>
diff --git a/test/Mono.Linker.Tests/TestCases/TestDatabase.cs b/test/Mono.Linker.Tests/TestCases/TestDatabase.cs
index b29dd2d43..fbb516153 100644
--- a/test/Mono.Linker.Tests/TestCases/TestDatabase.cs
+++ b/test/Mono.Linker.Tests/TestCases/TestDatabase.cs
@@ -193,19 +193,11 @@ namespace Mono.Linker.Tests.TestCases
static void GetDirectoryPaths(out string rootSourceDirectory, out string testCaseAssemblyPath, [CallerFilePath] string thisFile = null)
{
-#if ILLINK
-#if DEBUG
- var configDirectoryName = "illink_Debug";
-#else
- var configDirectoryName = "illink_Release";
-#endif
-#else
#if DEBUG
var configDirectoryName = "Debug";
#else
var configDirectoryName = "Release";
#endif
-#endif
#if NETCOREAPP3_0
var tfm = "netcoreapp3.0";
@@ -218,19 +210,12 @@ namespace Mono.Linker.Tests.TestCases
#if ILLINK
// Deterministic builds sanitize source paths, so CallerFilePathAttribute gives an incorrect path.
// Instead, get the testcase dll based on the working directory of the test runner.
-#if ARCADE
+
// working directory is artifacts/bin/Mono.Linker.Tests/<config>/<tfm>
var artifactsBinDir = Path.Combine (Directory.GetCurrentDirectory (), "..", "..", "..");
rootSourceDirectory = Path.GetFullPath (Path.Combine (artifactsBinDir, "..", "..", "test", "Mono.Linker.Tests.Cases"));
testCaseAssemblyPath = Path.GetFullPath (Path.Combine (artifactsBinDir, "Mono.Linker.Tests.Cases", configDirectoryName, tfm, "Mono.Linker.Tests.Cases.dll"));
#else
- // working directory is test/Mono.Linker.Tests/bin/<config>/<tfm>
- var testDir = Path.Combine (Directory.GetCurrentDirectory (), "..", "..", "..", "..");
- rootSourceDirectory = Path.GetFullPath (Path.Combine (testDir, "Mono.Linker.Tests.Cases"));
- testCaseAssemblyPath = Path.GetFullPath (Path.Combine (rootSourceDirectory, "bin", configDirectoryName, tfm, "Mono.Linker.Tests.Cases.dll"));
-#endif // ARCADE
-
-#else
var thisDirectory = Path.GetDirectoryName (thisFile);
rootSourceDirectory = Path.GetFullPath (Path.Combine (thisDirectory, "..", "..", "Mono.Linker.Tests.Cases"));
testCaseAssemblyPath = Path.GetFullPath (Path.Combine (rootSourceDirectory, "bin", configDirectoryName, tfm, "Mono.Linker.Tests.Cases.dll"));
diff --git a/test/Mono.Linker.Tests/TestCasesRunner/ILCompiler.cs b/test/Mono.Linker.Tests/TestCasesRunner/ILCompiler.cs
index 14ec56d9e..a35c10787 100644
--- a/test/Mono.Linker.Tests/TestCasesRunner/ILCompiler.cs
+++ b/test/Mono.Linker.Tests/TestCasesRunner/ILCompiler.cs
@@ -68,13 +68,10 @@ namespace Mono.Linker.Tests.TestCasesRunner {
{
#if ILLINK
var extension = RuntimeInformation.IsOSPlatform (OSPlatform.Windows) ? ".exe" : "";
-#if ARCADE
+
// working directory is artifacts/bin/Mono.Linker.Tests/<config>/<tfm>
var toolsDir = Path.Combine (Directory.GetCurrentDirectory (), "..", "..", "..", "..", "tools");
-#else
- // working directory is test/Mono.Linker.Tests/bin/<config>/<tfm>
- var toolsDir = Path.Combine (Directory.GetCurrentDirectory (), "..", "..", "..", "obj", "tools");
-#endif // ARCADE
+
var ilasmPath = Path.GetFullPath (Path.Combine (toolsDir, "ilasm", $"ilasm{extension}")).ToNPath ();
if (ilasmPath.FileExists ())
return ilasmPath;