diff --git a/BuildToolsVersion.txt b/BuildToolsVersion.txt
index 5d33180292be..0100d180f327 100644
--- a/BuildToolsVersion.txt
+++ b/BuildToolsVersion.txt
@@ -1 +1 @@
-2.2.0-preview1-03116-01
+2.2.0-preview1-03122-06
\ No newline at end of file
diff --git a/Directory.Build.props b/Directory.Build.props
index c7f9f43c51e3..f89d2cf48264 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -19,7 +19,8 @@
10.0.16300
- UAP,Version=v$(UAPvNextVersion)
+ UAP
+ $(UAPvNextTFI),Version=v$(UAPvNextVersion)uap$(UAPvNextVersion)
@@ -45,9 +46,7 @@
$(ProjectDir)bin/
-
- $(BinDir)obj/
- $(ObjDir)
+
$(BinDir)tests/$(BinDir)packages_noship/$(BinDir)packages/
@@ -88,6 +87,7 @@
https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json;
https://dotnet.myget.org/F/dotnet-core/api/v3/index.json;
https://api.nuget.org/v3/index.json;
+ https://www.myget.org/F/xunit/api/v3/index.json;
$(OverridePackageSource);
$(RestoreSources)
@@ -166,9 +166,8 @@
truetrue
- true
- truetrue
+ truetrue
@@ -260,6 +259,15 @@
+
+ false
+
+
+ true
+
$(OSGroup).$(Platform).$(ConfigurationGroup)$(TargetGroup)/
@@ -268,8 +276,8 @@
/Compat$(BaseOutputPath)$(OSPlatformConfig)/$(MSBuildProjectName)/$(TargetOutputRelPath)$(OutputPathSubfolder)
- $(BaseIntermediateOutputPath)$(OSPlatformConfig)/
- $(IntermediateOutputRootPath)$(MSBuildProjectName)/$(TargetOutputRelPath)
+ $(RootIntermediateOutputPath)$(OSPlatformConfig)/$(MSBuildProjectName)/
+ $(BaseIntermediateOutputPath)$(TargetOutputRelPath)$(BinDir)runtime/$(BuildConfiguration)/$(BinDir)shimsTargetRuntime/
diff --git a/Directory.Build.targets b/Directory.Build.targets
index c0195bd907e4..db81c59fcf74 100644
--- a/Directory.Build.targets
+++ b/Directory.Build.targets
@@ -131,6 +131,17 @@
+
+
+
+
+
+
diff --git a/Documentation/debugging/unix-instructions.md b/Documentation/debugging/unix-instructions.md
index 70998ad1d99f..20d37c820357 100644
--- a/Documentation/debugging/unix-instructions.md
+++ b/Documentation/debugging/unix-instructions.md
@@ -75,6 +75,6 @@ lldb-3.9 -O "settings set target.exec-search-paths /home/parallels/Downloads/Sys
- set `cwd` to the test bin directory.
- using the System.Net.Sockets example, it should be something like `corefx/bin/tests/System.Net.Sockets.Tests/netcoreapp-Linux-{Configuration}-{Architecture}`, plus the full path to your corefx directory.
- set `args` to the command line arguments to pass to the test
- - something like: `[ "xunit.console.netcore.exe", ".dll", "-notrait", .... ]`
+ - something like: `[ "xunit.console.dll", ".dll", "-notrait", .... ]`
- to run a specific test, you can append something like: `[ "method", "System.Net.Sockets.Tests.{ClassName}.{TestMethodName}", ...]`
- Set a breakpoint and launch the debugger, inspecting variables and call stacks will now work
diff --git a/Documentation/debugging/windows-instructions.md b/Documentation/debugging/windows-instructions.md
index d5ec4a0248ff..f96f5620d8e4 100644
--- a/Documentation/debugging/windows-instructions.md
+++ b/Documentation/debugging/windows-instructions.md
@@ -41,7 +41,7 @@ Assuming that your repo is at `C:\corefx`:
```
cd C:\corefx\bin\tests\Windows_NT.AnyCPU.Debug\System.Net.Sockets.Tests\netcoreapp1.0
-C:\corefx\bin\tests\Windows_NT.AnyCPU.Debug\System.Net.Sockets.Tests\netcoreapp1.0\CoreRun.exe xunit.console.netcore.exe System.Net.Sockets.Tests.dll -xml testResults.xml -notrait category=nonwindowstests -notrait category=OuterLoop -notrait category=failing
+C:\corefx\bin\tests\Windows_NT.AnyCPU.Debug\System.Net.Sockets.Tests\netcoreapp1.0\CoreRun.exe xunit.console.dll System.Net.Sockets.Tests.dll -xml testResults.xml -notrait category=nonwindowstests -notrait category=OuterLoop -notrait category=failing
```
* If the test crashes or encounteres a `Debugger.Launch()` method call, WinDBG will automatically start and attach to the `CoreRun.exe` process
diff --git a/Documentation/project-docs/developer-guide.md b/Documentation/project-docs/developer-guide.md
index 36f2713c0060..085d1d9cb40e 100644
--- a/Documentation/project-docs/developer-guide.md
+++ b/Documentation/project-docs/developer-guide.md
@@ -270,7 +270,7 @@ msbuild System.Runtime.Tests.csproj /p:TargetGroup=netfx
#### Filtering tests using traits
-The tests can also be filtered based on xunit trait attributes defined in [`xunit.netcore.extensions`](https://github.com/dotnet/buildtools/tree/master/src/xunit.netcore.extensions). These attributes are specified above the test method's definition. The available attributes are:
+The tests can also be filtered based on xunit trait attributes defined in [`Microsoft.DotNet.XUnitExtensions`](https://github.com/dotnet/arcade/tree/master/src/Microsoft.DotNet.XUnitExtensions). These attributes are specified above the test method's definition. The available attributes are:
#### OuterloopAttribute
@@ -298,7 +298,7 @@ Use this attribute on test methods to specify that this test may only be run on
- `nonlinuxtests` for tests that don't run on Linux
- `nonosxtests` for tests that don't run on OS X
-**[Available Test Platforms](https://github.com/dotnet/buildtools/blob/master/src/xunit.netcore.extensions/TestPlatforms.cs#L10)**
+**[Available Test Platforms](https://github.com/dotnet/buildtools/blob/master/src/Microsoft.DotNet.XUnitExtensions/TestPlatforms.cs#L10)**
When running tests by building a test project, tests that don't apply to the `OSGroup` are not run. For example, to run Linux-specific tests on a Linux box, use the following command line:
```sh
@@ -350,7 +350,7 @@ Use this attribute over test methods to skip tests only on the specific target f
If it needs to be skipped in multiple frameworks and the reasons are different please use two attributes on the same test so that you can specify different reasons for each framework.
-**Currently this are the [Framework Monikers](https://github.com/dotnet/buildtools/blob/master/src/xunit.netcore.extensions/TargetFrameworkMonikers.cs#L23-L26) that we support through our test execution infrastructure**
+**Currently this are the [Framework Monikers](https://github.com/dotnet/buildtools/blob/master/src/Microsoft.DotNet.XUnitExtensions/TargetFrameworkMonikers.cs#L23-L26) that we support through our test execution infrastructure**
#### ConditionalFactAttribute
Use this attribute to run the test only when a condition is `true`. This attribute is used when `ActiveIssueAttribute` or `SkipOnTargetFrameworkAttribute` are not flexible enough due to needing to run a custom logic at test time. This test behaves as a `[Fact]` test that has no test data passed in as a parameter.
@@ -431,7 +431,7 @@ msbuild /t:BuildAndTest /p:OSGroup=Windows_NT
Alternatively, you can directly invoke the XUnit executable by changing your working directory to the test execution directory at `bin\tests\{OSPlatformConfig)\{Project}.Tests\{TargetGroup}.{TestTFM}\` which is created when the test project is built. For example, the following command runs all Linux-supported inner-loop tests:
```sh
-./corerun xunit.console.netcore.exe -notrait category=nonlinuxtests -notrait category=OuterLoop
+./corerun xunit.console.dll -notrait category=nonlinuxtests -notrait category=OuterLoop
```
### Code Coverage
@@ -460,7 +460,7 @@ cd src\Microsoft.CSharp\tests
::TODO: The exact properties needed for .NET Native tests runs after engineering work is TBD
msbuild /t:BuildAndTest /p:TargetGroup=uap /p:UseDotNetNativeToolchain=true
```
-If native compilation succeeds, the test will build and run as a native executable named "xunit.console.netcore.exe" in a folder named "native" in the test execution folder. Note many tests in CoreFX are not ready to run though native compilation yet.
+If native compilation succeeds, the test will build and run as a native executable named "xunit.console.dll" in a folder named "native" in the test execution folder. Note many tests in CoreFX are not ready to run though native compilation yet.
A slight variation on these arguments will allow you to build and run against `uap`, the managed version of the UWP Framework subset, used when debugging UWP applications in Visual Studio:
```cmd
diff --git a/Documentation/project-docs/performance-tests.md b/Documentation/project-docs/performance-tests.md
index 50fa84eb32db..02ce6a9ff5d8 100644
--- a/Documentation/project-docs/performance-tests.md
+++ b/Documentation/project-docs/performance-tests.md
@@ -12,10 +12,10 @@ Performance test files (if present) are stored within a library's ```tests/Perfo
**Step # 2:** Change directory to the performance tests directory: ```cd path/to/library/tests/Performance```
**Step # 3:** Build and run the tests:
- - Windows (using admin command shell): ```msbuild /t:BuildAndTest /p:Performance=true /p:ConfigurationGroup=Release /p:TargetOS=Windows_NT```
- - Linux: ```/Tools/msbuild.sh /t:BuildAndTest /p:Performance=true /p:ConfigurationGroup=Release /p:TargetOS=Linux```
+ - Windows (using admin command shell): ```msbuild /t:BuildAndTest /p:ConfigurationGroup=Release```
+ - Linux: ```/Tools/msbuild.sh /t:BuildAndTest /p:ConfigurationGroup=Release```
-**Note: Because build-tests.cmd/sh runs tests concurrently, do not use it for executing performance tests.**
+**Note: Because build-tests.cmd/sh runs tests concurrently, do not use it for executing performance tests. If you still want to run them concurrently you need to pass the flag `/p:Performance=true` to it: `build-tests -release -- /p:Performance=true`.**
The results files will be dropped in corefx/bin/tests/FLAVOR/TESTLIBRARY/TARGETFRAMEWORK. The console output will also specify the location of these files.
diff --git a/buildpipeline/windows.groovy b/buildpipeline/windows.groovy
index 1535b6aaeb5b..a5f311002ef5 100644
--- a/buildpipeline/windows.groovy
+++ b/buildpipeline/windows.groovy
@@ -8,7 +8,7 @@
// TestOuter - If true, runs outerloop, if false runs just innerloop
def submittedHelixJson = null
-def submitToHelix = (params.TGroup == 'netcoreapp' || params.TGroup == 'netfx')
+def submitToHelix = (params.TGroup == 'netcoreapp' || params.TGroup == 'netfx' || params.TGroup == 'uap')
simpleNode('windows.10.amd64.clientrs4.devex.open') {
stage ('Checkout source') {
@@ -46,7 +46,7 @@ simpleNode('windows.10.amd64.clientrs4.devex.open') {
if (submitToHelix) {
archiveTests = 'true'
}
- if (submitToHelix || params.TGroup == 'uap' || params.TGroup == 'uapaot') {
+ if (submitToHelix || params.TGroup == 'uapaot') {
additionalArgs += ' -SkipTests'
}
if (params.TGroup != 'all') {
diff --git a/config.json b/config.json
index 3f2f57f35541..4d0c1567b11e 100644
--- a/config.json
+++ b/config.json
@@ -246,6 +246,12 @@
"values": [],
"defaultValue": ""
},
+ "Performance": {
+ "description": "Enables/Disables performance test execution.",
+ "valueType": "property",
+ "values": ["True", "False"],
+ "defaultValue": false
+ },
},
"commands": {
"build-directory": {
@@ -334,14 +340,16 @@
"tests": {
"description": "Builds src and then builds and runs the tests for the given configuration.",
"settings": {
- "BuildTests": true
+ "BuildTests": true,
+ "Performance": "default"
}
},
"testsOnly": {
"description": "Builds and runs the tests for the given configuration.",
"settings": {
"Project": "src/tests.builds",
- "MsBuildLogging":"/flp:v=normal;LogFile=build-tests.log"
+ "MsBuildLogging":"/flp:v=normal;LogFile=build-tests.log",
+ "Performance": "default"
}
},
"debug": {
diff --git a/dependencies.props b/dependencies.props
index af66cd3c3141..d08dc94045d8 100644
--- a/dependencies.props
+++ b/dependencies.props
@@ -17,7 +17,7 @@
5c21cc5e3582fcdb9e62598974045d17efffbc488bd1ec5fac9f0eec34ff6b34b1d878b4359e02dd9004703a1923e5c5582ceb8d79712df777412446
- e0c1d36d8a19fed21cadfff4890e027bd4c2c214
+ 86816ae37b15ad3631014e96783a3fab70c0e912
@@ -44,10 +44,13 @@
4.4.0
- 2.2.0-preview1-02915-01
- 1.0.0-beta-build0019
+
+ 15.8.0
+ 2.4.1-alpha.1.build4054
+ 1.0.0-beta-build00202.0.5
- 2.2.0-preview1-03116-01
+ 2.4.0-beta.18420.3
+ 1.0.194.6.0-alpha-00001
@@ -183,11 +186,6 @@
$(MSBuildThisFileDirectory)tools-local/ILAsmVersion.txtMicrosoft.NETCore.ILAsm
-
- $(MSBuildThisFileFullPath)
- XunitNetcoreExtensionsVersion
- Microsoft.xunit.netcore.extensions
- $(MSBuildThisFileFullPath)FeedTasksPackageVersion
@@ -196,7 +194,6 @@
- 2.3.0-beta1-build36422.1.0
@@ -223,8 +220,12 @@
$(XUnitPackageVersion)
-
- $(XunitNetcoreExtensionsVersion)
+
+ $(MicrosoftDotNetXUnitExtensionsVersion)
+
+
+
+ $(MicrosoftDotNetTestSdkVersion)
@@ -232,18 +233,13 @@
- $(XunitPerfAnalysisPackageVersion)
+ $(XUnitPerformancePackageVersion)%(Identity)true
-
-
- microsoft.xunit.runner.uwp
- $(AppXRunnerVersion)
-
diff --git a/external/Directory.Build.props b/external/Directory.Build.props
index 674adbbd6923..a78417ede411 100644
--- a/external/Directory.Build.props
+++ b/external/Directory.Build.props
@@ -1,7 +1,6 @@
- $(IntermediateOutputPath)$(OSGroup)-$(ArchGroup)/Nonetrue
diff --git a/external/dir.proj b/external/dir.proj
index 03ea6dea60e9..d422e7d5a0d4 100644
--- a/external/dir.proj
+++ b/external/dir.proj
@@ -1,4 +1,4 @@
-
+
diff --git a/external/test-runtime/Configurations.props b/external/test-runtime/Configurations.props
index 10a9c0e1fed2..3b11f75e394c 100644
--- a/external/test-runtime/Configurations.props
+++ b/external/test-runtime/Configurations.props
@@ -7,6 +7,7 @@
netcoreappaot;
netstandard;
netfx;
+ netcoreapp;
diff --git a/external/test-runtime/XUnit.Runtime.depproj b/external/test-runtime/XUnit.Runtime.depproj
index 03d79cdcdab0..222410ea0faa 100644
--- a/external/test-runtime/XUnit.Runtime.depproj
+++ b/external/test-runtime/XUnit.Runtime.depproj
@@ -9,56 +9,65 @@
win10-armtrue$(RuntimePath)
- xunit.console.netcore
- xunit.runner.console
- .NETStandard,Version=v2.0
- netstandard2.0
- .NETStandard,Version=v2.0
- netstandard2.0
+ xunit.runner.console
+ xunit.console
+ xunit.runner.visualstudio
+ xunit.runner.visualstudio.dotnetcore.testadapter
+ xunit.runner.visualstudio.uwp.testadapter
+ xunit.runner.visualstudio.testadapter
+ microsoft.testplatform.testhost
+ testhost
+ .NETStandard,Version=v2.0
+ netstandard2.0coverlet.msbuild2.2.1
+
+ unknown$(NoWarn);NU1603
+
-
- $(AppXRunnerVersion)
+
+
+ $(XUnitPackageVersion)
-
- $(XunitNetcoreExtensionsVersion)
+
+ $(MicrosoftDotNetXUnitExtensionsVersion)
-
- $(XunitNetcoreExtensionsVersion)
+
+
+ $(XUnitPackageVersion)
-
- $(XunitPerfAnalysisPackageVersion)
+
+ $(XUnitPackageVersion)
-
- $(XunitPerfAnalysisPackageVersion)
+
+
+
+ $(MicrosoftDotNetTestSdkVersion)
-
- $(XunitPerfAnalysisPackageVersion)
+
+ $(MicrosoftDotNetTestSdkVersion)
-
- $(XunitPerfAnalysisPackageVersion)
+
+ $(MicrosoftDotNetTestSdkVersion)
-
- $(TraceEventPackageVersion)
+
+ 2.0.4
+
+ $(MicrosoftDotNetTestSdkVersion)
+
+
1.5.0
-
- 0.10.0-alpha-experimental
- 2.0.4
-
- 2.1.1-beta
- 9.0.1
@@ -74,6 +83,8 @@
3.0.1
+
+
1.0.6-prerelease
@@ -93,22 +104,61 @@
1.0.2
-
-
- $(XUnitPackageVersion)
+
+
+
+
+ $(XUnitPerformancePackageVersion)
+
+
+ $(XUnitPerformancePackageVersion)
+
+ $(XUnitPerformancePackageVersion)
+
+
+ $(XUnitPerformancePackageVersion)
+
+
+ $(TraceEventPackageVersion)
+
+
+ 0.10.1
+
+
+ 2.3.1
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
@@ -128,10 +178,6 @@
SkipUnchangedFiles="true" />
-
- 1.0.17
-
-
$(UAPToolsPackageVersion)
@@ -148,15 +194,6 @@
-
-
-
-
-
-
-
-
-
@@ -221,19 +258,85 @@
-
-
+
+
+
+
+
+ false
+ $(XUnitRunnerPackageId)
+ $(XUnitPackageVersion)
+
+
+ false
+ $(XUnitTestAdapterPackageId)
+ $(XUnitPackageVersion)
+
+
+ false
+ $(TestPlatformHostPackageId)
+ $(MicrosoftDotNetTestSdkVersion)
+
+
+
+
+
+
+
+
+
+
+ false
+ $(XUnitRunnerPackageId)
+ $(XUnitPackageVersion)
+
+
+ false
+ $(XUnitTestAdapterPackageId)
+ $(XUnitPackageVersion)
+
+
+ false
+ $(TestPlatformHostPackageId)
+ $(MicrosoftDotNetTestSdkVersion)
+
+
+
+
+
+
+ false$(XUnitRunnerPackageId)$(XUnitPackageVersion)
+
+ false
+ $(XUnitTestAdapterPackageId)
+ $(XUnitPackageVersion)
+
diff --git a/init-tools.msbuild b/init-tools.msbuild
index 934ae478ab76..c16d51aa77b9 100644
--- a/init-tools.msbuild
+++ b/init-tools.msbuild
@@ -1,14 +1,22 @@
-
+
+
+
+ $(MSBuildThisFileDirectory)Tools/$(BuildToolsPackageVersion)/
+
+
+
+
netcoreapp1.0falsetrue
- $(MSBuildThisFileDirectory)Tools/$(BuildToolsPackageVersion)
-
+
+
+
diff --git a/src/Common/perf/PerfRunner/PerfRunner.csproj b/src/Common/perf/PerfRunner/PerfRunner.csproj
index 0d6a6a78bee1..4fa4ccba451d 100644
--- a/src/Common/perf/PerfRunner/PerfRunner.csproj
+++ b/src/Common/perf/PerfRunner/PerfRunner.csproj
@@ -2,12 +2,15 @@
{F5E941C8-AF2F-47AB-A066-FF25470CE382}Exe
+
+ .exePerfRunnerPerfRunnertruefalse0436true
+ truenetstandard-Debug;netstandard-Release;netstandard1.3-Debug;netstandard1.3-Release
@@ -20,7 +23,7 @@
-
+ PreserveNewest
diff --git a/src/Common/tests/Performance/BenchmarkFilter.cs b/src/Common/tests/Performance/BenchmarkFilter.cs
index f85f148ef13b..2c1843d13a84 100644
--- a/src/Common/tests/Performance/BenchmarkFilter.cs
+++ b/src/Common/tests/Performance/BenchmarkFilter.cs
@@ -8,9 +8,9 @@
using Xunit.Abstractions;
using Xunit.Sdk;
-// Usage: [assembly: TestCaseOrderer("Xunit.NetCore.Extensions.BenchmarkFilter", "System.Drawing.Common.Performance.Tests")]
+// Usage: [assembly: TestCaseOrderer("Microsoft.DotNet.XUnitExtensions.BenchmarkFilter", "System.Drawing.Common.Performance.Tests")]
-namespace Xunit.NetCore.Extensions
+namespace Microsoft.DotNet.XUnitExtensions
{
public class BenchmarkFilter : ITestCaseOrderer
{
diff --git a/src/Common/tests/Performance/Common.Performance.Tests.csproj b/src/Common/tests/Performance/Common.Performance.Tests.csproj
index 2eb574d6ff10..a1889dc75ef5 100644
--- a/src/Common/tests/Performance/Common.Performance.Tests.csproj
+++ b/src/Common/tests/Performance/Common.Performance.Tests.csproj
@@ -1,9 +1,8 @@
- true{B96198F5-9BF7-42DE-83E8-3EE39DA25F43}true
- netcoreapp-Debug;netcoreapp-Release
+ netstandard-Debug;netstandard-Release
diff --git a/src/Common/tests/Performance/Configurations.props b/src/Common/tests/Performance/Configurations.props
index 2845c11c541d..c398e42e8994 100644
--- a/src/Common/tests/Performance/Configurations.props
+++ b/src/Common/tests/Performance/Configurations.props
@@ -2,7 +2,7 @@
- netcoreapp;
+ netstandard;
\ No newline at end of file
diff --git a/src/Common/tests/System/Diagnostics/RemoteExecutorConsoleApp/RemoteExecutorConsoleApp.csproj b/src/Common/tests/System/Diagnostics/RemoteExecutorConsoleApp/RemoteExecutorConsoleApp.csproj
index c99ec33e7546..c8cb09bb5cd5 100644
--- a/src/Common/tests/System/Diagnostics/RemoteExecutorConsoleApp/RemoteExecutorConsoleApp.csproj
+++ b/src/Common/tests/System/Diagnostics/RemoteExecutorConsoleApp/RemoteExecutorConsoleApp.csproj
@@ -2,6 +2,8 @@
{8DE22889-A6CB-41EC-B807-D44A2C184719}Exe
+
+ .exeRemoteExecutorConsoleAppRemoteExecutorConsoleApptrue
diff --git a/src/Common/tests/System/Xml/XmlCoreTest/XmlCoreTest.csproj b/src/Common/tests/System/Xml/XmlCoreTest/XmlCoreTest.csproj
index 0b2ab6a61647..4dba97c2c04b 100644
--- a/src/Common/tests/System/Xml/XmlCoreTest/XmlCoreTest.csproj
+++ b/src/Common/tests/System/Xml/XmlCoreTest/XmlCoreTest.csproj
@@ -1,6 +1,7 @@
{89701565-F68B-46D9-BD78-95B0F052C50B}
+ ExeXmlCoreTestXmlCoreTest.Commonnetstandard-Debug;netstandard-Release
diff --git a/src/CoreFx.Private.TestUtilities/src/CoreFx.Private.TestUtilities.csproj b/src/CoreFx.Private.TestUtilities/src/CoreFx.Private.TestUtilities.csproj
index 7fd3421d45a1..46963d09bd81 100644
--- a/src/CoreFx.Private.TestUtilities/src/CoreFx.Private.TestUtilities.csproj
+++ b/src/CoreFx.Private.TestUtilities/src/CoreFx.Private.TestUtilities.csproj
@@ -1,4 +1,4 @@
-
+CoreFx.Private.TestUtilities{EBDB0247-CA43-4226-B7A1-8FEF21061D09}
@@ -19,7 +19,6 @@
-
@@ -94,7 +93,7 @@
-
+
diff --git a/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.Process.cs b/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.Process.cs
deleted file mode 100644
index c608daafe4a7..000000000000
--- a/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.Process.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for more information.
-
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using System.Threading.Tasks;
-using Xunit;
-
-namespace System.Diagnostics
-{
- /// Base class used for all tests that need to spawn a remote process.
- public abstract partial class RemoteExecutorTestBase : FileCleanupTestBase
- {
- /// Invokes the method from this assembly in another process using the specified arguments.
- /// The method to invoke.
- /// The arguments to pass to the method.
- /// true if this function should Start the Process; false if that responsibility is left up to the caller.
- /// The ProcessStartInfo to use, or null for a default.
- /// true if this function should paste the arguments (e.g. surrounding with quotes); false if that responsibility is left up to the caller.
- private static RemoteInvokeHandle RemoteInvoke(MethodInfo method, string[] args, RemoteInvokeOptions options, bool pasteArguments = true)
- {
- options = options ?? new RemoteInvokeOptions();
-
- // Verify the specified method returns an int (the exit code) or nothing,
- // and that if it accepts any arguments, they're all strings.
- Assert.True(method.ReturnType == typeof(void) || method.ReturnType == typeof(int) || method.ReturnType == typeof(Task));
- Assert.All(method.GetParameters(), pi => Assert.Equal(typeof(string), pi.ParameterType));
-
- // And make sure it's in this assembly. This isn't critical, but it helps with deployment to know
- // that the method to invoke is available because we're already running in this assembly.
- Type t = method.DeclaringType;
- Assembly a = t.GetTypeInfo().Assembly;
-
- // Start the other process and return a wrapper for it to handle its lifetime and exit checking.
- var psi = options.StartInfo;
- psi.UseShellExecute = false;
-
- if (!options.EnableProfiling)
- {
- // Profilers / code coverage tools doing coverage of the test process set environment
- // variables to tell the targeted process what profiler to load. We don't want the child process
- // to be profiled / have code coverage, so we remove these environment variables for that process
- // before it's started.
- psi.Environment.Remove("Cor_Profiler");
- psi.Environment.Remove("Cor_Enable_Profiling");
- psi.Environment.Remove("CoreClr_Profiler");
- psi.Environment.Remove("CoreClr_Enable_Profiling");
- }
-
- // If we need the host (if it exists), use it, otherwise target the console app directly.
- string metadataArgs = PasteArguments.Paste(new string[] { a.FullName, t.FullName, method.Name, options.ExceptionFile }, pasteFirstArgumentUsingArgV0Rules: false);
- string passedArgs = pasteArguments ? PasteArguments.Paste(args, pasteFirstArgumentUsingArgV0Rules: false) : string.Join(" ", args);
- string testConsoleAppArgs = ExtraParameter + " " + metadataArgs + " " + passedArgs;
-
- if (!File.Exists(HostRunner))
- throw new IOException($"{HostRunner} test app isn't present in the test runtime directory.");
-
- if (options.RunAsSudo)
- {
- psi.FileName = "sudo";
- psi.Arguments = HostRunner + " " + testConsoleAppArgs;
- }
- else
- {
- psi.FileName = HostRunner;
- psi.Arguments = testConsoleAppArgs;
- }
-
- // Return the handle to the process, which may or not be started
- return new RemoteInvokeHandle(options.Start ?
- Process.Start(psi) :
- new Process() { StartInfo = psi }, options,
- a.FullName, t.FullName, method.Name
- );
- }
- }
-}
diff --git a/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.aot.cs b/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.aot.cs
index adc0b6af273d..7faa3ce470c3 100644
--- a/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.aot.cs
+++ b/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.aot.cs
@@ -3,16 +3,16 @@
// See the LICENSE file in the project root for more information.
using System.IO;
+using System.Runtime.InteropServices;
namespace System.Diagnostics
{
/// Base class used for all tests that need to spawn a remote process.
public abstract partial class RemoteExecutorTestBase : FileCleanupTestBase
{
- protected static readonly string HostRunnerName = "xunit.console.netcore.exe";
- protected static readonly string HostRunner = TestConsoleApp;
+ protected static readonly string HostRunnerName = PlatformDetection.IsWindows ? "dotnet.exe" : "dotnet";
+ protected static readonly string HostRunner = Process.GetCurrentProcess().MainModule.FileName;
- private static readonly string ExtraParameter = "";
+ private static readonly string ExtraParameter = TestConsoleApp;
}
-
}
diff --git a/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.cs b/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.cs
index b67fb8862b71..71d07b6c1ccb 100644
--- a/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.cs
+++ b/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.cs
@@ -228,6 +228,70 @@ public static RemoteInvokeHandle RemoteInvokeRaw(Delegate method, string unparse
return RemoteInvoke(GetMethodInfo(method), new[] { unparsedArg }, options, pasteArguments: false);
}
+ /// Invokes the method from this assembly in another process using the specified arguments.
+ /// The method to invoke.
+ /// The arguments to pass to the method.
+ /// true if this function should Start the Process; false if that responsibility is left up to the caller.
+ /// The ProcessStartInfo to use, or null for a default.
+ /// true if this function should paste the arguments (e.g. surrounding with quotes); false if that responsibility is left up to the caller.
+ private static RemoteInvokeHandle RemoteInvoke(MethodInfo method, string[] args, RemoteInvokeOptions options, bool pasteArguments = true)
+ {
+ options = options ?? new RemoteInvokeOptions();
+
+ // Verify the specified method returns an int (the exit code) or nothing,
+ // and that if it accepts any arguments, they're all strings.
+ Assert.True(method.ReturnType == typeof(void) || method.ReturnType == typeof(int) || method.ReturnType == typeof(Task));
+ Assert.All(method.GetParameters(), pi => Assert.Equal(typeof(string), pi.ParameterType));
+
+ // And make sure it's in this assembly. This isn't critical, but it helps with deployment to know
+ // that the method to invoke is available because we're already running in this assembly.
+ Type t = method.DeclaringType;
+ Assembly a = t.GetTypeInfo().Assembly;
+
+ // Start the other process and return a wrapper for it to handle its lifetime and exit checking.
+ ProcessStartInfo psi = options.StartInfo;
+ psi.UseShellExecute = false;
+
+ if (!options.EnableProfiling)
+ {
+ // Profilers / code coverage tools doing coverage of the test process set environment
+ // variables to tell the targeted process what profiler to load. We don't want the child process
+ // to be profiled / have code coverage, so we remove these environment variables for that process
+ // before it's started.
+ psi.Environment.Remove("Cor_Profiler");
+ psi.Environment.Remove("Cor_Enable_Profiling");
+ psi.Environment.Remove("CoreClr_Profiler");
+ psi.Environment.Remove("CoreClr_Enable_Profiling");
+ }
+
+ // If we need the host (if it exists), use it, otherwise target the console app directly.
+ string metadataArgs = PasteArguments.Paste(new string[] { a.FullName, t.FullName, method.Name, options.ExceptionFile }, pasteFirstArgumentUsingArgV0Rules: false);
+ string passedArgs = pasteArguments ? PasteArguments.Paste(args, pasteFirstArgumentUsingArgV0Rules: false) : string.Join(" ", args);
+ string testConsoleAppArgs = ExtraParameter + " " + metadataArgs + " " + passedArgs;
+
+ // Uap console app is globally registered.
+ if (!File.Exists(HostRunner) && !PlatformDetection.IsUap)
+ throw new IOException($"{HostRunner} test app isn't present in the test runtime directory.");
+
+ if (options.RunAsSudo)
+ {
+ psi.FileName = "sudo";
+ psi.Arguments = HostRunner + " " + testConsoleAppArgs;
+ }
+ else
+ {
+ psi.FileName = HostRunner;
+ psi.Arguments = testConsoleAppArgs;
+ }
+
+ // Return the handle to the process, which may or not be started
+ return new RemoteInvokeHandle(options.Start ?
+ Process.Start(psi) :
+ new Process() { StartInfo = psi }, options,
+ a.FullName, t.FullName, method.Name
+ );
+ }
+
private static MethodInfo GetMethodInfo(Delegate d)
{
// RemoteInvoke doesn't support marshaling state on classes associated with
@@ -262,25 +326,12 @@ public RemoteInvokeHandle(Process process, RemoteInvokeOptions options, string a
MethodName = methodName;
}
- private int _exitCode;
public int ExitCode
{
get
{
- if (!PlatformDetection.IsUap)
- {
- Process.WaitForExit();
- return Process.ExitCode;
- }
- return _exitCode;
- }
- internal set
- {
- if (!PlatformDetection.IsUap)
- {
- throw new PlatformNotSupportedException("ExitCode property can only be set in UWP");
- }
- _exitCode = value;
+ Process.WaitForExit();
+ return Process.ExitCode;
}
}
public Process Process { get; set; }
diff --git a/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.netcore.cs b/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.netcore.cs
index d0b9aa043b9d..c89032496114 100644
--- a/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.netcore.cs
+++ b/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.netcore.cs
@@ -10,7 +10,7 @@ namespace System.Diagnostics
/// Base class used for all tests that need to spawn a remote process.
public abstract partial class RemoteExecutorTestBase : FileCleanupTestBase
{
- protected static readonly string HostRunnerName = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "dotnet.exe" : "dotnet";
+ protected static readonly string HostRunnerName = PlatformDetection.IsWindows ? "dotnet.exe" : "dotnet";
protected static readonly string HostRunner = Process.GetCurrentProcess().MainModule.FileName;
private static readonly string ExtraParameter = TestConsoleApp;
diff --git a/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.uap.cs b/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.uap.cs
index a90e0c3270d3..8bfc10ebb221 100644
--- a/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.uap.cs
+++ b/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.uap.cs
@@ -2,77 +2,16 @@
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
-using Xunit;
using System.IO;
-using System.Reflection;
-using System.Threading.Tasks;
-using Windows.ApplicationModel;
-using Windows.Foundation.Collections;
-using Windows.ApplicationModel.AppService;
namespace System.Diagnostics
{
/// Base class used for all tests that need to spawn a remote process.
public abstract partial class RemoteExecutorTestBase : FileCleanupTestBase
{
- protected static readonly string HostRunnerName = "xunit.runner.uap.exe";
- protected static readonly string HostRunner = "xunit.runner.uap";
+ protected static readonly string HostRunnerName = "Microsoft.DotNet.XUnitRunnerUap.exe";
+ protected static readonly string HostRunner = "Microsoft.DotNet.XUnitRunnerUap.exe";
- /// Invokes the method from this assembly in another process using the specified arguments.
- /// The method to invoke.
- /// The arguments to pass to the method.
- /// The options to execute the remote process.
- /// Unused in UAP.
- private static RemoteInvokeHandle RemoteInvoke(MethodInfo method, string[] args, RemoteInvokeOptions options, bool pasteArguments = false)
- {
- options = options ?? new RemoteInvokeOptions();
-
- // Verify the specified method returns an int (the exit code) or nothing,
- // and that if it accepts any arguments, they're all strings.
- Assert.True(method.ReturnType == typeof(void) || method.ReturnType == typeof(int) || method.ReturnType == typeof(Task));
- Assert.All(method.GetParameters(), pi => Assert.Equal(typeof(string), pi.ParameterType));
-
- // And make sure it's in this assembly. This isn't critical, but it helps with deployment to know
- // that the method to invoke is available because we're already running in this assembly.
- Type t = method.DeclaringType;
- Assembly a = t.GetTypeInfo().Assembly;
- int exitCode;
-
- using (AppServiceConnection remoteExecutionService = new AppServiceConnection())
- {
- // Here, we use the app service name defined in the app service provider's Package.appxmanifest file in the section.
- remoteExecutionService.AppServiceName = "com.microsoft.corefxuaptests";
- remoteExecutionService.PackageFamilyName = Package.Current.Id.FamilyName;
-
- AppServiceConnectionStatus status = remoteExecutionService.OpenAsync().GetAwaiter().GetResult();
- if (status != AppServiceConnectionStatus.Success)
- {
- throw new IOException($"RemoteInvoke cannot open the remote service. Open Service Status: {status}");
- }
-
- ValueSet message = new ValueSet();
-
- message.Add("AssemblyName", a.FullName);
- message.Add("TypeName", t.FullName);
- message.Add("MethodName", method.Name);
-
- int i = 0;
- foreach (string arg in args)
- {
- message.Add("Arg" + i, arg);
- i++;
- }
-
- AppServiceResponse response = remoteExecutionService.SendMessageAsync(message).GetAwaiter().GetResult();
-
- Assert.True(response.Status == AppServiceResponseStatus.Success, $"response.Status = {response.Status}");
- exitCode = (int)response.Message["Results"];
- Assert.True(!options.CheckExitCode || exitCode == options.ExpectedExitCode, (string)response.Message["Log"] + Environment.NewLine + $"Returned Error code: {exitCode}");
- }
- // RemoteInvokeHandle is not really needed in the UAP scenario but we use it just to have consistent interface as non UAP
- var handle = new RemoteInvokeHandle(null, options, null, null, null);
- handle.ExitCode = exitCode;
- return handle;
- }
+ private static readonly string ExtraParameter = "remote";
}
}
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index aaf979d489d2..c431e35aeed4 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -6,10 +6,15 @@
truetrue
+
+ false
+ false
+ false
+
$(AssemblySearchPaths);$(RefPath);{RawFileName}
diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets
index cb0ba0d01ca5..1596afd41cf0 100644
--- a/src/Directory.Build.targets
+++ b/src/Directory.Build.targets
@@ -12,9 +12,6 @@
-
-
-
@@ -57,10 +54,4 @@
-
-
-
-
- $(TargetGroup)
-
diff --git a/src/Microsoft.XmlSerializer.Generator/src/Microsoft.XmlSerializer.Generator.csproj b/src/Microsoft.XmlSerializer.Generator/src/Microsoft.XmlSerializer.Generator.csproj
index 3197be8ef508..c5aead60ffb1 100644
--- a/src/Microsoft.XmlSerializer.Generator/src/Microsoft.XmlSerializer.Generator.csproj
+++ b/src/Microsoft.XmlSerializer.Generator/src/Microsoft.XmlSerializer.Generator.csproj
@@ -5,10 +5,8 @@
true..\..\System.Private.Xml\src\Resources\Strings.resxExe
- .dllnetstandard-Debug;netstandard-Release
-
diff --git a/src/Microsoft.XmlSerializer.Generator/tests/Microsoft.XmlSerializer.Generator.Tests.csproj b/src/Microsoft.XmlSerializer.Generator/tests/Microsoft.XmlSerializer.Generator.Tests.csproj
index e10a828ac978..7f9a50e3a803 100644
--- a/src/Microsoft.XmlSerializer.Generator/tests/Microsoft.XmlSerializer.Generator.Tests.csproj
+++ b/src/Microsoft.XmlSerializer.Generator/tests/Microsoft.XmlSerializer.Generator.Tests.csproj
@@ -10,7 +10,7 @@
- $(ToolsDir)xunit.console.netcore.runtimeconfig.json
+ $(ToolsDir)xunit.console.runtimeconfig.json$(TestHostRootPath)
diff --git a/src/SharedFrameworkValidation/SharedFrameworkValidation.proj b/src/SharedFrameworkValidation/SharedFrameworkValidation.proj
index 52a0068546ec..29b7292c9ffc 100644
--- a/src/SharedFrameworkValidation/SharedFrameworkValidation.proj
+++ b/src/SharedFrameworkValidation/SharedFrameworkValidation.proj
@@ -131,7 +131,7 @@
-
+
diff --git a/src/System.Collections.Concurrent/tests/Performance/Configurations.props b/src/System.Collections.Concurrent/tests/Performance/Configurations.props
index 2845c11c541d..c398e42e8994 100644
--- a/src/System.Collections.Concurrent/tests/Performance/Configurations.props
+++ b/src/System.Collections.Concurrent/tests/Performance/Configurations.props
@@ -2,7 +2,7 @@
- netcoreapp;
+ netstandard;
\ No newline at end of file
diff --git a/src/System.Collections.Concurrent/tests/Performance/System.Collections.Concurrent.Performance.Tests.csproj b/src/System.Collections.Concurrent/tests/Performance/System.Collections.Concurrent.Performance.Tests.csproj
index 2c2a80dd1a72..6429a3b944f9 100644
--- a/src/System.Collections.Concurrent/tests/Performance/System.Collections.Concurrent.Performance.Tests.csproj
+++ b/src/System.Collections.Concurrent/tests/Performance/System.Collections.Concurrent.Performance.Tests.csproj
@@ -1,10 +1,8 @@
- true{16568C86-E97E-42C6-B683-65A1B5AF2EC8}
- netcoreapp-Debug;netcoreapp-Release
+ netstandard-Debug;netstandard-Release
-
diff --git a/src/System.Collections.Immutable/tests/ImmutableArrayTest.cs b/src/System.Collections.Immutable/tests/ImmutableArrayTest.cs
index dbe75bfd0766..925de264a21b 100644
--- a/src/System.Collections.Immutable/tests/ImmutableArrayTest.cs
+++ b/src/System.Collections.Immutable/tests/ImmutableArrayTest.cs
@@ -33,25 +33,10 @@ public static IEnumerable