summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndon Andonov <anandono@microsoft.com>2018-06-27 14:43:36 -0700
committerGitHub <noreply@github.com>2018-06-27 14:43:36 -0700
commitd3772d9efc39591d15ffdfbcf60f5b5936c25d0e (patch)
treecceb302103ac423db096a139061e3e9149b162aa
parenteeb9e89062de718a5cce60b520aa919299840142 (diff)
downloadcoreclr-d3772d9efc39591d15ffdfbcf60f5b5936c25d0e.tar.gz
coreclr-d3772d9efc39591d15ffdfbcf60f5b5936c25d0e.tar.bz2
coreclr-d3772d9efc39591d15ffdfbcf60f5b5936c25d0e.zip
Windows CoreFX CI (#18365)
* Add test list CL switch * End-To-End Test Run on Windows * Cleanup * MAX_PATH Workaround * Set Execution directory for CoreFX tests * Add All CoreFX PR Tests * Add test dependencies * Add extra dependencies * Add parallel test execution * Disable OuterLoop tests and System.Data.SqlClient.* tests * Initialize maximum degree of parallelization to Environment.ProcessCount * Remove unnecessary cli option * Update Dependencies * Add "enabled" property to tests * Remove exclusions due to TestUtilities mismatch * Add capability to run all tests for running Helix test lists directly * Refactor build script to build testhost when skipping managed tests * Disable failing System.Threading.Tests.EventWaitHandleTests.Ctor_InvalidMode * Add switch to skip native test build * Add testing documentation * Don't run tests marked as "disabled" when running all available tests * Add switch to build only testhost and remove Core_Root_Stage * Clean up TopN.CoreFX.Windows.issues.json * Refactor build-test.cmd * PR feedback - build pipeline and documentation * PR Feedback - Test Helper headers and comments * Fix buildtesthost option for only building CoreFX test dependencies * Disable intermittently failing test DrawBezier_PointFs
-rw-r--r--Documentation/building/testing-with-corefx.md72
-rw-r--r--build-test.cmd85
-rw-r--r--config.json12
-rw-r--r--dependencies.props3
-rw-r--r--tests/CoreFX/CoreFXTestListURL.txt1
-rw-r--r--tests/CoreFX/CoreFXTestListURL_Linux.txt1
-rw-r--r--tests/CoreFX/CoreFXTestListURL_OSX.txt1
-rw-r--r--tests/CoreFX/TopN.CoreFX.x64.Unix.issues.json48
-rw-r--r--tests/CoreFX/TopN.CoreFX.x64.Windows.issues.json1268
-rw-r--r--tests/runtest.cmd106
-rw-r--r--tests/runtest.proj97
-rw-r--r--tests/src/Common/CoreFX/CoreFX.depproj173
-rw-r--r--tests/src/Common/CoreFX/TestFileSetup/CoreFX.TestUtils.TestFileSetup.csproj35
-rw-r--r--tests/src/Common/CoreFX/TestFileSetup/Helpers/TestFileHelper.cs326
-rw-r--r--tests/src/Common/CoreFX/TestFileSetup/Helpers/TestRunHelper.cs158
-rw-r--r--tests/src/Common/CoreFX/TestFileSetup/Program.cs176
-rw-r--r--tests/src/Common/CoreFX/TestFileSetup/RSPGenerator.cs83
-rw-r--r--tests/src/Common/CoreFX/TestFileSetup/XUnit/XUnitTestAssembly.cs63
-rw-r--r--tests/src/dirs.proj1
19 files changed, 2682 insertions, 27 deletions
diff --git a/Documentation/building/testing-with-corefx.md b/Documentation/building/testing-with-corefx.md
index a400d1426f..0f7beefc0a 100644
--- a/Documentation/building/testing-with-corefx.md
+++ b/Documentation/building/testing-with-corefx.md
@@ -3,6 +3,7 @@ Testing with CoreFX
It may be valuable to use CoreFX tests to validate your changes to CoreCLR or mscorlib.
+## Building CoreFX against CoreCLR
**NOTE:** The `BUILDTOOLS_OVERRIDE_RUNTIME` property no longer works.
To run CoreFX tests with an updated System.Private.Corelib.dll, [use these instructions](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/developer-guide.md#testing-with-private-coreclr-bits).
@@ -27,3 +28,74 @@ Use the following instructions to test a change to the dotnet/coreclr repo using
[run-corefx-tests.py](https://github.com/dotnet/coreclr/blob/master/tests/scripts/run-corefx-tests.py) will clone dotnet/corefx and run steps 2-4 above automatically. It is primarily intended to be run by the dotnet/coreclr CI system, but it might provide a useful reference or shortcut for individuals running the tests locally.
+## Using the built CoreCLR testhost
+**These instructions are currently Windows only.**
+
+Instead of copying CoreCLR binaries you can also test your changes with an existing CoreFX build or CoreCLR's CI assemblies
+
+### Locally-built CoreFX
+Once you have finished steps 1, 2. and 4. above execute the following instructions to test your local CLR changes with the built-CoreFX changes.
+
+1. From `<coreclr_root>` run `build-test.cmd <arch> <build_type> skipmanaged` to generate the test host.
+2. Navigate to `<corefx_root>\bin\tests\` and then the test you would like to run
+3. Run
+
+```cmd
+<coreclr_root>\bin\<os>.<arch>.<build_type>\testhost\dotnet.exe <corefx_root>\bin\tests\<testname>\xunit.console.netcore.exe <testname>.dll
+```
+followed by any extra command-line arguments.
+
+For example to run .NET Core Windows tests from System.Collections.Tests with an x64 Release build of CoreCLR.
+```
+pushd C:\corefx\bin\tests\System.Collections.Tests
+C:\coreclr\bin\tests\Windows_NT.x64.Release\testhost\dotnet.exe .\xunit.console.netcore.exe .\System.Collections.Tests.dll -notrait category=nonnetcoretests -notrait category=nonwindowstests
+```
+
+### CI Script
+CoreCLR has an alternative way to run CoreFX tests, built for PR CI jobs. To run tests against pre-built binaries you can execute the following from the CoreCLR repo root:
+
+1. `.\build.cmd <arch> <build_type>`
+2. `.\build-test.cmd <arch> <build_type> skipmanaged` - generates the test host
+3. `.\tests\runtest.cmd <arch> <build_type> corefxtests|corefxtestsall` - runs CoreFX tests
+
+CoreFXTests - runs all tests defined in TopN.Windows.CoreFX.issues.json or the test list specified with the argument `CoreFXTestList`
+CoreFXTestsAll - runs all tests available in the test list found at the URL in `.\coreclr\tests\CoreFX\CoreFXTestListURL.txt`.
+
+### Helix Testing
+To use Helix-built binaries, substitute the URL in `.\coreclr\tests\CoreFX\CoreFXTestListURL.txt` with one acquired from a Helix test run and run the commands above.
+
+### Test List Format
+The tests defined in TopN.Windows.CoreFX.issues.json or the test list specified with the argument `CoreFXTestList` should conform to the following format -
+```json
+ {
+ "name": "<Fully Qualified Assembly Name>", //e.g. System.Collections.Concurrent.Tests
+ "enabled": true|false, // Defines whether a test assembly should be run. If set to false any tests with the same name will not be run even if corefxtestsall is specified
+ "exclusions": {
+ "namespaces": // Can be null
+ [
+ {
+ "name": "System.Collections.Concurrent.Tests", // All test methods under this namespace will be skipped
+ "reason": "<Reason for exclusion>" // This should be a link to the GitHub issue describing the problem
+ }
+ ]
+ "classes": // Can be null
+ [
+ {
+ "name": "System.Collections.Concurrent.Tests.ConcurrentDictionaryTests", // All test methods in this class will be skipped
+ "reason": "<Reason for exclusion>"
+ }
+ ]
+ "methods": // Can be null
+ [
+ {
+ "name": "System.Collections.Concurrent.Tests.ConcurrentDictionaryTests.TestAddNullValue_IDictionary_ReferenceType_null",
+ "reason": "<Reason for exclusion>"
+ },
+ {
+ "name": "System.Collections.Concurrent.Tests.ConcurrentDictionaryTests.TestAddNullValue_IDictionary_ValueType_null_add",
+ "reason": "<Reason for exclusion>"
+ }
+ ]
+ }
+ }
+``` \ No newline at end of file
diff --git a/build-test.cmd b/build-test.cmd
index e65cbcacff..58c6d32f84 100644
--- a/build-test.cmd
+++ b/build-test.cmd
@@ -46,6 +46,9 @@ set processedArgs=
set __unprocessedBuildArgs=
set __RunArgs=
set __BuildAgainstPackagesArg=
+set __SkipRestorePackages=
+set __SkipManaged=
+set __SkipNative=
set __RuntimeId=
set __ZipTests=
set __TargetsWindows=1
@@ -74,8 +77,11 @@ if /i "%1" == "release" (set __BuildType=Release&set processedArgs
if /i "%1" == "checked" (set __BuildType=Checked&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
if /i "%1" == "skipmanaged" (set __SkipManaged=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "skipnative" (set __SkipNative=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "buildtesthostonly" (set __SkipNative=1&set __SkipManaged=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
if /i "%1" == "toolset_dir" (set __ToolsetDir=%2&set __PassThroughArgs=%__PassThroughArgs% %2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop)
if /i "%1" == "buildagainstpackages" (set __ZipTests=1&set __BuildAgainstPackagesArg=-BuildTestsAgainstPackages&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "skiprestorepackages" (set __SkipRestorePackages=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
if /i "%1" == "ziptests" (set __ZipTests=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
if /i "%1" == "crossgen" (set __DoCrossgen=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
if /i "%1" == "runtimeid" (set __RuntimeId=%2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop)
@@ -160,6 +166,8 @@ REM ============================================================================
call "%__TestDir%\setup-stress-dependencies.cmd" /arch %__BuildArch% /outputdir %__BinDir%
@if defined _echo @echo on
+if defined __SkipNative goto skipnative
+
REM =========================================================================================
REM ===
REM === Native test build section
@@ -224,8 +232,7 @@ if errorlevel 1 (
:skipnative
set "__TestWorkingDir=%__RootBinDir%\tests\%__BuildOS%.%__BuildArch%.%__BuildType%"
-
-if not defined __BuildAgainstPackagesArg goto SkipRestoreProduct
+if "%__SkipRestorePackages%" == 1 goto SkipRestoreProduct
REM =========================================================================================
REM ===
REM === Restore product binaries from packages
@@ -245,6 +252,7 @@ set __msbuildErr=/flp2:ErrorsOnly;LogFile="%__BuildErr%"
call "%__ProjectDir%\run.cmd" build -Project=%__ProjectDir%\tests\build.proj -BatchRestorePackages -MsBuildLog=!__msbuildLog! -MsBuildWrn=!__msbuildWrn! -MsBuildErr=!__msbuildErr! %__RunArgs% %__BuildAgainstPackagesArg% %__unprocessedBuildArgs%
+if not defined __BuildAgainstPackagesArg goto SkipRestoreProduct
set __BuildLogRootName=Tests_GenerateRuntimeLayout
set __BuildLog=%__LogsDir%\%__BuildLogRootName%_%__BuildOS%__%__BuildArch%__%__BuildType%.log
set __BuildWrn=%__LogsDir%\%__BuildLogRootName%_%__BuildOS%__%__BuildArch%__%__BuildType%.wrn
@@ -263,7 +271,7 @@ echo %__MsgPrefix% Restored CoreCLR product from packages
:SkipRestoreProduct
-if defined __SkipManaged exit /b 0
+if defined __SkipManaged goto SkipManagedBuild
REM =========================================================================================
REM ===
@@ -316,6 +324,7 @@ for /l %%G in (1, 1, %__BuildLoopCount%) do (
set __AppendToLog=true
)
+:SkipManagedBuild
REM Prepare the Test Drop
REM Cleans any NI from the last run
powershell -NoProfile "Get-ChildItem -path %__TestWorkingDir% -Include '*.ni.*' -Recurse -Force | Remove-Item -force"
@@ -344,22 +353,14 @@ if defined __BuildAgainstPackagesArg (
)
)
-echo %__MsgPrefix%Creating test wrappers...
-
-set RuntimeIdArg=
-set TargetsWindowsArg=
-
-if defined __RuntimeId (
- set RuntimeIdArg=-RuntimeID="%__RuntimeId%"
-)
-
-if "%__TargetsWindows%"=="1" (
- set TargetsWindowsArg=-TargetsWindows=true
-) else if "%__TargetsWindows%"=="0" (
- set TargetsWindowsArg=-TargetsWindows=false
-)
+REM =========================================================================================
+REM ===
+REM === Create the test overlay
+REM ===
+REM =========================================================================================
+echo %__MsgPrefix%Creating test overlay...
-set __BuildLogRootName=Tests_XunitWrapper
+set __BuildLogRootName=Tests_Overlay_Managed
set __BuildLog=%__LogsDir%\%__BuildLogRootName%_%__BuildOS%__%__BuildArch%__%__BuildType%.log
set __BuildWrn=%__LogsDir%\%__BuildLogRootName%_%__BuildOS%__%__BuildArch%__%__BuildType%.wrn
set __BuildErr=%__LogsDir%\%__BuildLogRootName%_%__BuildOS%__%__BuildArch%__%__BuildType%.err
@@ -367,15 +368,21 @@ set __msbuildLog=/flp:Verbosity=normal;LogFile="%__BuildLog%"
set __msbuildWrn=/flp1:WarningsOnly;LogFile="%__BuildWrn%"
set __msbuildErr=/flp2:ErrorsOnly;LogFile="%__BuildErr%"
-call %__ProjectDir%\run.cmd build -Project=%__ProjectDir%\tests\runtest.proj -BuildWrappers -MsBuildEventLogging=" " -MsBuildLog=!__msbuildLog! -MsBuildWrn=!__msbuildWrn! -MsBuildErr=!__msbuildErr! %__RunArgs% %__BuildAgainstPackagesArg% %TargetsWindowsArg% %__unprocessedBuildArgs%
+call %__ProjectDir%\run.cmd build -Project=%__ProjectDir%\tests\runtest.proj -testOverlay -MsBuildLog=!__msbuildLog! -MsBuildWrn=!__msbuildWrn! -MsBuildErr=!__msbuildErr! %__RunArgs% %RuntimeIdArg% %__unprocessedBuildArgs%
if errorlevel 1 (
- echo Xunit Wrapper build failed
+ echo %__MsgPrefix%Error: build failed. Refer to the build log files for details:
+ echo %__BuildLog%
+ echo %__BuildWrn%
+ echo %__BuildErr%
exit /b 1
)
-echo %__MsgPrefix%Creating test overlay...
+xcopy /s /y "%CORE_ROOT_STAGE%" "%CORE_ROOT%"
-set __BuildLogRootName=Tests_Overlay_Managed
+REM Create the test host necessary for running CoreFX tests
+REM The test host includes a dotnet executable, system libraries and CoreCLR assemblies found in CoreRoot
+
+set __BuildLogRootName=Tests_CoreFX_Testhost
set __BuildLog=%__LogsDir%\%__BuildLogRootName%_%__BuildOS%__%__BuildArch%__%__BuildType%.log
set __BuildWrn=%__LogsDir%\%__BuildLogRootName%_%__BuildOS%__%__BuildArch%__%__BuildType%.wrn
set __BuildErr=%__LogsDir%\%__BuildLogRootName%_%__BuildOS%__%__BuildArch%__%__BuildType%.err
@@ -383,7 +390,7 @@ set __msbuildLog=/flp:Verbosity=normal;LogFile="%__BuildLog%"
set __msbuildWrn=/flp1:WarningsOnly;LogFile="%__BuildWrn%"
set __msbuildErr=/flp2:ErrorsOnly;LogFile="%__BuildErr%"
-call %__ProjectDir%\run.cmd build -Project=%__ProjectDir%\tests\runtest.proj -testOverlay -MsBuildLog=!__msbuildLog! -MsBuildWrn=!__msbuildWrn! -MsBuildErr=!__msbuildErr! %__RunArgs% %RuntimeIdArg% %__unprocessedBuildArgs%
+call %__ProjectDir%\run.cmd build -Project=%__ProjectDir%\tests\runtest.proj -testHost -MsBuildLog=!__msbuildLog! -MsBuildWrn=!__msbuildWrn! -MsBuildErr=!__msbuildErr! %__RunArgs% %RuntimeIdArg% %__unprocessedBuildArgs%
if errorlevel 1 (
echo %__MsgPrefix%Error: build failed. Refer to the build log files for details:
echo %__BuildLog%
@@ -392,7 +399,37 @@ if errorlevel 1 (
exit /b 1
)
-xcopy /s /y "%CORE_ROOT_STAGE%" "%CORE_ROOT%"
+if defined __SkipManaged goto SkipBuildingWrappers
+
+echo %__MsgPrefix%Creating test wrappers...
+
+set RuntimeIdArg=
+set TargetsWindowsArg=
+
+if defined __RuntimeId (
+ set RuntimeIdArg=-RuntimeID="%__RuntimeId%"
+)
+
+if "%__TargetsWindows%"=="1" (
+ set TargetsWindowsArg=-TargetsWindows=true
+) else if "%__TargetsWindows%"=="0" (
+ set TargetsWindowsArg=-TargetsWindows=false
+)
+
+set __BuildLogRootName=Tests_XunitWrapper
+set __BuildLog=%__LogsDir%\%__BuildLogRootName%_%__BuildOS%__%__BuildArch%__%__BuildType%.log
+set __BuildWrn=%__LogsDir%\%__BuildLogRootName%_%__BuildOS%__%__BuildArch%__%__BuildType%.wrn
+set __BuildErr=%__LogsDir%\%__BuildLogRootName%_%__BuildOS%__%__BuildArch%__%__BuildType%.err
+set __msbuildLog=/flp:Verbosity=normal;LogFile="%__BuildLog%"
+set __msbuildWrn=/flp1:WarningsOnly;LogFile="%__BuildWrn%"
+set __msbuildErr=/flp2:ErrorsOnly;LogFile="%__BuildErr%"
+
+call %__ProjectDir%\run.cmd build -Project=%__ProjectDir%\tests\runtest.proj -BuildWrappers -MsBuildEventLogging=" " -MsBuildLog=!__msbuildLog! -MsBuildWrn=!__msbuildWrn! -MsBuildErr=!__msbuildErr! %__RunArgs% %__BuildAgainstPackagesArg% %TargetsWindowsArg% %__unprocessedBuildArgs%
+if errorlevel 1 (
+ echo Xunit Wrapper build failed
+ exit /b 1
+)
+:SkipBuildingWrappers
set __CrossgenArg = ""
if defined __DoCrossgen (
diff --git a/config.json b/config.json
index 406ea5189a..65ebfa1c7d 100644
--- a/config.json
+++ b/config.json
@@ -336,6 +336,12 @@
"values": [],
"defaultValue": ""
},
+ "CreateTestHost": {
+ "description": "Place test dependencies in the /bin/testhost folder to be used to run CoreFX tests",
+ "valueType": "target",
+ "values": [],
+ "defaultValue": ""
+ },
"Verbosity": {
"description": "Sets build verbosity.",
"valueType": "passThrough",
@@ -504,6 +510,12 @@
"CreateTestOverlay": "default"
}
},
+ "testHost": {
+ "description": "Runs test host target, which creates a dotnet executable from the built CoreCLR repo to run pre-built CoreFX test assemblies",
+ "settings": {
+ "CreateTestHost": "default"
+ }
+ },
"priority": {
"description": "Sets CLRTestPriorityToBuild property.",
"settings": {
diff --git a/dependencies.props b/dependencies.props
index 8024ae0a16..ed8514b8eb 100644
--- a/dependencies.props
+++ b/dependencies.props
@@ -36,7 +36,7 @@
<PgoDataPackageVersion>99.99.99-master-20180621-0050</PgoDataPackageVersion>
<MicrosoftNETCoreRuntimeCoreCLRPackageVersion>2.2.0-preview1-26621-01</MicrosoftNETCoreRuntimeCoreCLRPackageVersion>
<XunitPackageVersion>2.2.0-beta2-build3300</XunitPackageVersion>
- <XunitConsoleNetcorePackageVersion>1.0.2-prerelease-00177</XunitConsoleNetcorePackageVersion>
+ <XunitConsoleNetcorePackageVersion>2.2.0-preview1-02830-02</XunitConsoleNetcorePackageVersion>
<XunitPerformanceApiPackageVersion>1.0.0-beta-build0015</XunitPerformanceApiPackageVersion>
<MicrosoftDiagnosticsTracingTraceEventPackageVersion>2.0.4</MicrosoftDiagnosticsTracingTraceEventPackageVersion>
<CommandLineParserVersion>2.2.0</CommandLineParserVersion>
@@ -137,6 +137,7 @@
<XUnitDependency Include="xunit"/>
<XUnitDependency Include="xunit.assert"/>
<XUnitDependency Include="xunit.core"/>
+ <XUnitDependency Include="xunit.extensibility.core" />
<XUnitDependency Include="xunit.runner.console"/>
<XUnitDependency Include="xunit.runner.msbuild"/>
<XUnitDependency Include="xunit.runner.utility"/>
diff --git a/tests/CoreFX/CoreFXTestListURL.txt b/tests/CoreFX/CoreFXTestListURL.txt
new file mode 100644
index 0000000000..926cf3c8f3
--- /dev/null
+++ b/tests/CoreFX/CoreFXTestListURL.txt
@@ -0,0 +1 @@
+https://cloudcijobs.blob.core.windows.net/coreclrci/CoreFXArchives/TestList.json \ No newline at end of file
diff --git a/tests/CoreFX/CoreFXTestListURL_Linux.txt b/tests/CoreFX/CoreFXTestListURL_Linux.txt
new file mode 100644
index 0000000000..e7b7c744e7
--- /dev/null
+++ b/tests/CoreFX/CoreFXTestListURL_Linux.txt
@@ -0,0 +1 @@
+https://cloudcijobs.blob.core.windows.net/corertci/TestList_Linux.json \ No newline at end of file
diff --git a/tests/CoreFX/CoreFXTestListURL_OSX.txt b/tests/CoreFX/CoreFXTestListURL_OSX.txt
new file mode 100644
index 0000000000..e201a86154
--- /dev/null
+++ b/tests/CoreFX/CoreFXTestListURL_OSX.txt
@@ -0,0 +1 @@
+https://cloudcijobs.blob.core.windows.net/corertci/TestList_OSX.json \ No newline at end of file
diff --git a/tests/CoreFX/TopN.CoreFX.x64.Unix.issues.json b/tests/CoreFX/TopN.CoreFX.x64.Unix.issues.json
new file mode 100644
index 0000000000..7076613451
--- /dev/null
+++ b/tests/CoreFX/TopN.CoreFX.x64.Unix.issues.json
@@ -0,0 +1,48 @@
+// The expected format of this file can be found at https://github.com/dotnet/coreclr/blob/master/Documentation/building/testing-with-corefx.md
+[
+ {
+ "name": "System.Collections.Tests",
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Collections.Tests.SortedList_Generic_Tests_string_string.ICollection_Generic_Remove_DefaultValueContainedInCollection",
+ "reason": "Exclusion Sample"
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Runtime.Extensions.Tests",
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": []
+ }
+ },
+ {
+ "name": "System.Runtime.Tests",
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": []
+ }
+ },
+ {
+ "name": "System.Threading.Tasks.Tests",
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": []
+ }
+ },
+ {
+ "name": "System.Threading.Tests",
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": []
+ }
+ }
+] \ No newline at end of file
diff --git a/tests/CoreFX/TopN.CoreFX.x64.Windows.issues.json b/tests/CoreFX/TopN.CoreFX.x64.Windows.issues.json
new file mode 100644
index 0000000000..5518056a1f
--- /dev/null
+++ b/tests/CoreFX/TopN.CoreFX.x64.Windows.issues.json
@@ -0,0 +1,1268 @@
+// The expected format of this file can be found at https://github.com/dotnet/coreclr/blob/master/Documentation/building/testing-with-corefx.md
+[
+ {
+ "name": "Microsoft.Win32.SystemEvents.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "Microsoft.Win32.SystemEventsTests.PowerModeTests.SignalsPowerModeChanged",
+ "reason": "Xunit.Sdk.TrueException Assert.True() Failure\\r\\nExpected: True\\r\\nActual: False"
+ },
+ {
+ "name": "Microsoft.Win32.SystemEventsTests.SessionEndingTests.CancelSessionEnding",
+ "reason": "Xunit.Sdk.EqualException Assert.Equal() Failure\\r\\nExpected: 0\\r\\nActual: 1"
+ },
+ {
+ "name": "Microsoft.Win32.SystemEventsTests.SessionEndingTests.SignalsSessionEnding",
+ "reason": "Xunit.Sdk.TrueException Assert.True() Failure\\r\\nExpected: True\\r\\nActual: False"
+ },
+ {
+ "name": "Microsoft.Win32.SystemEventsTests.PaletteChangedTests.SignalsEventsAsynchronouslyOnMessage",
+ "reason": "Xunit.Sdk.TrueException Assert.True() Failure\\r\\nExpected: True\\r\\nActual: False"
+ },
+ {
+ "name": "Microsoft.Win32.SystemEventsTests.PaletteChangedTests.SignalsEventsSynchronouslyOnReflectedMessage",
+ "reason": "Xunit.Sdk.TrueException Assert.True() Failure\\r\\nExpected: True\\r\\nActual: False"
+ },
+ {
+ "name": "Microsoft.Win32.SystemEventsTests.InvokeOnEventsThreadTests.InvokeOnEventsThreadRunsOnSameThreadAsOtherEvents",
+ "reason": "Xunit.Sdk.NotEqualException Assert.NotEqual() Failure\\r\\nExpected: Not -1\\r\\nActual: -1"
+ },
+ {
+ "name": "Microsoft.Win32.SystemEventsTests.LowMemoryTests.SignalsEventsAsynchronouslyOnMessage",
+ "reason": "Xunit.Sdk.TrueException Assert.True() Failure\\r\\nExpected: True\\r\\nActual: False"
+ },
+ {
+ "name": "Microsoft.Win32.SystemEventsTests.LowMemoryTests.SignalsEventsSynchronouslyOnReflectedMessage",
+ "reason": "Xunit.Sdk.TrueException Assert.True() Failure\\r\\nExpected: True\\r\\nActual: False"
+ },
+ {
+ "name": "Microsoft.Win32.SystemEventsTests.UserPreferenceTests.SignalsUserPreferenceEventsAsynchronouslyOnThemeChanged",
+ "reason": "Xunit.Sdk.TrueException Assert.True() Failure\\r\\nExpected: True\\r\\nActual: False"
+ },
+ {
+ "name": "Microsoft.Win32.SystemEventsTests.UserPreferenceTests.SignalsUserPreferenceEventsSynchronously",
+ "reason": "Xunit.Sdk.TrueException Assert.True() Failure\\r\\nExpected: True\\r\\nActual: False"
+ },
+ {
+ "name": "Microsoft.Win32.SystemEventsTests.SessionSwitchTests.SignalsSessionSwitch",
+ "reason": "Xunit.Sdk.TrueException Assert.True() Failure\\r\\nExpected: True\\r\\nActual: False"
+ },
+ {
+ "name": "Microsoft.Win32.SystemEventsTests.TimeChangedTests.SignalsEventsAsynchronouslyOnMessage",
+ "reason": "Xunit.Sdk.TrueException Assert.True() Failure\\r\\nExpected: True\\r\\nActual: False"
+ },
+ {
+ "name": "Microsoft.Win32.SystemEventsTests.TimeChangedTests.SignalsEventsSynchronouslyOnReflectedMessage",
+ "reason": "Xunit.Sdk.TrueException Assert.True() Failure\\r\\nExpected: True\\r\\nActual: False"
+ },
+ {
+ "name": "Microsoft.Win32.SystemEventsTests.SessionEndedTests.SignalsSessionEnded",
+ "reason": "Xunit.Sdk.TrueException Assert.True() Failure\\r\\nExpected: True\\r\\nActual: False"
+ },
+ {
+ "name": "Microsoft.Win32.SystemEventsTests.InstalledFontsChangedTests.SignalsEventsSynchronouslyOnReflectedMessage",
+ "reason": "Xunit.Sdk.TrueException Assert.True() Failure\\r\\nExpected: True\\r\\nActual: False"
+ },
+ {
+ "name": "Microsoft.Win32.SystemEventsTests.InstalledFontsChangedTests.SignalsEventsAsynchronouslyOnMessage",
+ "reason": "Xunit.Sdk.TrueException Assert.True() Failure\\r\\nExpected: True\\r\\nActual: False"
+ },
+ {
+ "name": "Microsoft.Win32.SystemEventsTests.DisplaySettingsTests.SignalsDisplayEventsAsynchronouslyOnDISPLAYCHANGE",
+ "reason": "Xunit.Sdk.TrueException Assert.True() Failure\\r\\nExpected: True\\r\\nActual: False"
+ },
+ {
+ "name": "Microsoft.Win32.SystemEventsTests.DisplaySettingsTests.SignalsDisplayEventsSynchronouslyOnREFLECTDISPLAYCHANGE",
+ "reason": "Xunit.Sdk.TrueException Assert.True() Failure\\r\\nExpected: True\\r\\nActual: False"
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Collections.Concurrent.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Collections.Concurrent.Tests.ConcurrentDictionaryTests.TestAddNullValue_IDictionary_ReferenceType_null",
+ "reason": "System.ArgumentException System.ArgumentException : The value was of an incorrect type for this dictionary."
+ },
+ {
+ "name": "System.Collections.Concurrent.Tests.ConcurrentDictionaryTests.TestAddNullValue_IDictionary_ValueType_null_add",
+ "reason": "Xunit.Sdk.ThrowsException Assert.Throws() Failure\\r\\nExpected: typeof(System.ArgumentException)\\r\\nActual: typeof(System.NullReferenceException): Object reference not set to an instance of an object."
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Collections.Immutable.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Collections.Immutable.Tests.ImmutableArrayTest.CreateRangeSliceWithSelector",
+ "reason": "System.IndexOutOfRangeException System.IndexOutOfRangeException : Index was outside the bounds of the array."
+ },
+ {
+ "name": "System.Collections.Immutable.Tests.ImmutableArrayTest.CreateRangeWithSelector",
+ "reason": "System.IndexOutOfRangeException System.IndexOutOfRangeException : Index was outside the bounds of the array."
+ },
+ {
+ "name": "System.Collections.Immutable.Tests.ImmutableArrayTest.CreateRangeWithSelectorAndArgument",
+ "reason": "System.IndexOutOfRangeException System.IndexOutOfRangeException : Index was outside the bounds of the array."
+ },
+ {
+ "name": "System.Collections.Immutable.Tests.ImmutableArrayTest.CreateRangeSliceWithSelectorAndArgument",
+ "reason": "System.IndexOutOfRangeException System.IndexOutOfRangeException : Index was outside the bounds of the array."
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.ComponentModel.TypeConverter.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.ComponentModel.ToolboxItemAttributeTests.Ctor_NullToolboxItemTypeName_ThrowsArgumentNullException",
+ "reason": "Xunit.Sdk.ThrowsException Assert.Throws() Failure\\r\\nExpected: typeof(System.ArgumentNullException)\\r\\nActual: typeof(System.NullReferenceException): Object reference not set to an instance of an object."
+ },
+ {
+ "name": "System.ComponentModel.Tests.EditorAttributeTests.Ctor_NullEditorTypeName_ThrowsArgumentNullException",
+ "reason": "Xunit.Sdk.ThrowsException Assert.Throws() Failure\\r\\nExpected: typeof(System.ArgumentNullException)\\r\\nActual: typeof(System.NullReferenceException): Object reference not set to an instance of an object."
+ },
+ {
+ "name": "System.ComponentModel.Tests.DesignerAttributeTests.Ctor_NullDesignerTypeName_ThrowsArgumentNullExceptionException",
+ "reason": "Xunit.Sdk.ThrowsException Assert.Throws() Failure\\r\\nExpected: typeof(System.ArgumentNullException)\\r\\nActual: typeof(System.NullReferenceException): Object reference not set to an instance of an object."
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Console.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "WindowAndCursorProps.WindowLeftTop_Windows",
+ "reason": "Assert.Throws() Failure\r\nExpected: typeof(System.IO.IOException)\r\nActual: (No exception was thrown)"
+ },
+ {
+ "name": "WindowAndCursorProps.WindowWidth_WindowHeight_InvalidSize",
+ "reason": "Assert.Throws() Failure\r\nExpected: typeof(System.IO.IOException)\r\nActual: typeof(System.ArgumentOutOfRangeException): Positive number required.\r\nParameter name: width\r\nActual value was 0."
+ },
+ {
+ "name": "WindowAndCursorProps.SetWindowPosition_GetWindowPosition_ReturnsExpected",
+ "reason": "Xunit.Sdk.EqualException Assert.Equal() Failure\\r\\n ↓ (pos 0)\\r\\nExpected: top\\r\\nActual: left\\r\\n ↑ (pos 0)"
+ },
+ {
+ "name": "WindowAndCursorProps.GetCursorPosition",
+ "reason": "Xunit.Sdk.EqualException Assert.Equal() Failure\\r\\nExpected: 2886\\r\\nActual: 2887"
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Data.DataSetExtensions.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Data.Tests.DataRowComparerTests.Equals_NullStringValueInStringArray_CanBeCompared",
+ "reason": "System.NullReferenceException : Object reference not set to an instance of an object."
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Drawing.Common.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Drawing.Tests.GraphicsTests.InterpolationMode_SetInvalid_ThrowsInvalidEnumArgumentException",
+ "reason": "Xunit.Sdk.ThrowsException Assert.Throws() Failure\\r\\nExpected: typeof(System.ComponentModel.InvalidEnumArgumentException)\\r\\nActual: typeof(System.ComponentModel.InvalidEnumArgumentException): The value of argument 'value' (-2) is invalid for Enum type 'InterpolationMode'.\\r\\nParameter name: value"
+ },
+ {
+ "name": "System.Drawing.Tests.GraphicsTests.CompositingQuality_SetInvalid_ThrowsInvalidEnumArgumentException",
+ "reason": "Xunit.Sdk.ThrowsException Assert.Throws() Failure\\r\\nExpected: typeof(System.ComponentModel.InvalidEnumArgumentException)\\r\\nActual: typeof(System.ComponentModel.InvalidEnumArgumentException): The value of argument 'value' (-2) is invalid for Enum type 'CompositingQuality'.\\r\\nParameter name: value"
+ },
+ {
+ "name": "System.Drawing.Tests.GraphicsTests.PixelOffsetMode_SetInvalid_ThrowsInvalidEnumArgumentException",
+ "reason": "Xunit.Sdk.ThrowsException Assert.Throws() Failure\\r\\nExpected: typeof(System.ComponentModel.InvalidEnumArgumentException)\\r\\nActual: typeof(System.ComponentModel.InvalidEnumArgumentException): The value of argument 'value' (-2) is invalid for Enum type 'PixelOffsetMode'.\\r\\nParameter name: value"
+ },
+ {
+ "name": "System.Drawing.Tests.GraphicsTests.PageUnit_SetInvalid_ThrowsInvalidEnumArgumentException",
+ "reason": "Xunit.Sdk.ThrowsException Assert.Throws() Failure\\r\\nExpected: typeof(System.ComponentModel.InvalidEnumArgumentException)\\r\\nActual: typeof(System.ComponentModel.InvalidEnumArgumentException): The value of argument 'value' (-1) is invalid for Enum type 'GraphicsUnit'.\\r\\nParameter name: value"
+ },
+ {
+ "name": "System.Drawing.Tests.GraphicsTests.SmoothingMode_SetInvalid_ThrowsInvalidEnumArgumentException",
+ "reason": "Xunit.Sdk.ThrowsException Assert.Throws() Failure\\r\\nExpected: typeof(System.ComponentModel.InvalidEnumArgumentException)\\r\\nActual: typeof(System.ComponentModel.InvalidEnumArgumentException): The value of argument 'value' (-2) is invalid for Enum type 'SmoothingMode'.\\r\\nParameter name: value"
+ },
+ {
+ "name": "System.Drawing.Tests.GraphicsTests.CompositingMode_SetInvalid_ThrowsInvalidEnumArgumentException",
+ "reason": "Xunit.Sdk.ThrowsException Assert.Throws() Failure\\r\\nExpected: typeof(System.ComponentModel.InvalidEnumArgumentException)\\r\\nActual: typeof(System.ComponentModel.InvalidEnumArgumentException): The value of argument 'value' (-1) is invalid for Enum type 'CompositingMode'.\\r\\nParameter name: value"
+ },
+ {
+ "name": "System.Drawing.Tests.GraphicsTests.TextRenderingHint_SetInvalid_ThrowsInvalidEnumArgumentException",
+ "reason": "Xunit.Sdk.ThrowsException Assert.Throws() Failure\\r\\nExpected: typeof(System.ComponentModel.InvalidEnumArgumentException)\\r\\nActual: typeof(System.ComponentModel.InvalidEnumArgumentException): The value of argument 'value' (-1) is invalid for Enum type 'TextRenderingHint'.\\r\\nParameter name: value"
+ },
+ {
+ "name": "System.Drawing.Tests.Graphics_DrawBezierTests.DrawBezier_PointFs",
+ "reason": "Intermittent Failure"
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.IO.Compression.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.IO.Compression.GzipStreamUnitTests.ConcatenatedGzipStreams",
+ "reason": "Xunit.Sdk.EqualException Assert.Equal() Failure\\r\\nExpected: Stream 2\\r\\nActual: (null)"
+ },
+ {
+ "name": "System.IO.Compression.GzipStreamUnitTests.ManyConcatenatedGzipStreams",
+ "reason": "Xunit.Sdk.EqualException Assert.Equal() Failure\\r\\nExpected: 1000\\r\\nActual: 1"
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.IO.FileSystem.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.IO.Tests.Enumeration.RemovedDirectoryTests.RemoveDirectoryBeforeHandleCreationAndReplaceWithFile",
+ "reason": "System.MissingMethodException System.MissingMethodException : Method not found: 'System.String System.IO.Path.Join(System.String, System.String)'."
+ },
+ {
+ "name": "System.IO.Tests.Enumeration.RemovedDirectoryTests.RemoveDirectoryBeforeHandleCreation",
+ "reason": "System.MissingMethodException System.MissingMethodException : Method not found: 'System.String System.IO.Path.Join(System.String, System.String)'."
+ },
+ {
+ "name": "System.IO.Tests.Enumeration.ExampleTests.TestCountFiles",
+ "reason": "System.MissingMethodException System.MissingMethodException : Method not found: 'System.String System.IO.Path.Join(System.String, System.String)'."
+ },
+ {
+ "name": "System.IO.Tests.Enumeration.ExampleTests.TestGetFilesWithExtensions",
+ "reason": "System.MissingMethodException System.MissingMethodException : Method not found: 'System.String System.IO.Path.Join(System.String, System.String)'."
+ },
+ {
+ "name": "System.IO.Tests.Enumeration.ExampleTests.TestCountFileBytes",
+ "reason": "System.MissingMethodException System.MissingMethodException : Method not found: 'System.String System.IO.Path.Join(System.String, System.String)'."
+ },
+ {
+ "name": "System.IO.Tests.Enumeration.ExampleTests.GetFileNamesEnumerable",
+ "reason": "System.MissingMethodException System.MissingMethodException : Method not found: 'System.String System.IO.Path.Join(System.String, System.String)'."
+ },
+ {
+ "name": "System.IO.Tests.DirectoryInfo_CreateSubDirectory.ValidPathWithoutTrailingSlash",
+ "reason": "System.ArgumentException System.ArgumentException : The directory specified, 'oq3eklx3.oeu', is not a subdirectory of 'C:\\\\Users\\\\anandono\\\\AppData\\\\Local\\\\Temp\\\\DirectoryInfo_CreateSubDirectory_vv4tbdki.2q5\\\\ValidPathWithoutTrailingSlash_142_98959e38\\\\'.\\r\\nParameter name: path"
+ },
+ {
+ "name": "System.IO.Tests.DirectoryInfo_CreateSubDirectory.ValidPathWithTrailingSlash",
+ "reason": "System.ArgumentException System.ArgumentException : The directory specified, '3tw22dam.r5w\\\\', is not a subdirectory of 'C:\\\\Users\\\\anandono\\\\AppData\\\\Local\\\\Temp\\\\DirectoryInfo_CreateSubDirectory_xiv2oluq.bps\\\\ValidPathWithTrailingSlash_121_6652a2bc\\\\'.\\r\\nParameter name: path"
+ },
+ {
+ "name": "System.IO.Tests.Enumeration.TrimmedPaths.TrimmedPathsText_Windows",
+ "reason": "System.MissingMethodException System.MissingMethodException : Method not found: 'System.String System.IO.Path.Join(System.String, System.String)'."
+ },
+ {
+ "name": "System.IO.Tests.Enumeration.TrimmedPaths.TrimmedPathsCopyTo_Windows",
+ "reason": "System.MissingMethodException System.MissingMethodException : Method not found: 'System.String System.IO.Path.Join(System.String, System.String)'."
+ },
+ {
+ "name": "System.IO.Tests.Enumeration.TrimmedPaths.TrimmedPathsOpen_Windows",
+ "reason": "System.MissingMethodException System.MissingMethodException : Method not found: 'System.String System.IO.Path.Join(System.String, System.String)'."
+ },
+ {
+ "name": "System.IO.Tests.Enumeration.TrimmedPaths.TrimmedPathsMoveTo_Windows",
+ "reason": "System.MissingMethodException System.MissingMethodException : Method not found: 'System.String System.IO.Path.Join(System.String, System.String, System.String)'."
+ },
+ {
+ "name": "System.IO.Tests.Enumeration.TrimmedPaths.TrimmedPathsReplace_Windows",
+ "reason": "System.MissingMethodException System.MissingMethodException : Method not found: 'System.String System.IO.Path.Join(System.String, System.String)'."
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Linq.Expressions.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Linq.Expressions.Tests.GetDelegateTypeTests.CantBeFunc",
+ "reason": "System.TypeLoadException System.TypeLoadException : The generic type 'System.Func`1' was used with an invalid instantiation in assembly 'System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'."
+ },
+ {
+ "name": "System.Linq.Expressions.Tests.GetDelegateTypeTests.CantBeAction",
+ "reason": "System.TypeLoadException System.TypeLoadException : The generic type 'System.Action`1' was used with an invalid instantiation in assembly 'System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'."
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Net.Http.Functional.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Net.Http.Functional.Tests.SocketsHttpHandler_HttpClientHandlerTest.GetAsync_ExpectContinueTrue_NoContent_StillSendsHeader",
+ "reason": "System.Net.Http.HttpRequestException System.Net.Http.HttpRequestException : Response status code does not indicate success: 100 (Continue)."
+ },
+ {
+ "name": "System.Net.Http.Functional.Tests.SocketsHttpHandler_HttpProtocolTests_Dribble.CustomMethod_SentUppercasedIfKnown",
+ "reason": "Xunit.Sdk.StartsWithException Assert.StartsWith() Failure:\\r\\nExpected: GET \\r\\nActual: get ..."
+ },
+ {
+ "name": "System.Net.Http.Functional.Tests.SocketsHttpHandler_HttpProtocolTests.CustomMethod_SentUppercasedIfKnown_Additional",
+ "reason": "Xunit.Sdk.StartsWithException Assert.StartsWith() Failure:\\r\\nExpected: DELETE \\r\\nActual: delete ..."
+ },
+ {
+ "name": "System.Net.Http.Functional.Tests.SocketsHttpHandler_HttpProtocolTests.CustomMethod_SentUppercasedIfKnown",
+ "reason": "Xunit.Sdk.StartsWithException Assert.StartsWith() Failure:\\r\\nExpected: GET \\r\\nActual: get ..."
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Net.Primitives.Functional.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Net.Primitives.Functional.Tests.CookieCollectionTest.Remove_NonExistantCookie_ReturnsFalse",
+ "reason": "System.EntryPointNotFoundException System.EntryPointNotFoundException : Entry point was not found."
+ },
+ {
+ "name": "System.Net.Primitives.Functional.Tests.CookieCollectionTest.Contains_Success",
+ "reason": "System.EntryPointNotFoundException System.EntryPointNotFoundException : Entry point was not found."
+ },
+ {
+ "name": "System.Net.Primitives.Functional.Tests.CookieCollectionTest.Remove_Success",
+ "reason": "System.EntryPointNotFoundException System.EntryPointNotFoundException : Entry point was not found."
+ },
+ {
+ "name": "System.Net.Primitives.Functional.Tests.CookieCollectionTest.Clear_Success",
+ "reason": "System.EntryPointNotFoundException System.EntryPointNotFoundException : Entry point was not found."
+ }
+ ]
+ }
+ },
+
+ {
+ "name": "System.Net.Security.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Net.Security.Tests.SslStreamCredentialCacheTest.SslStream_SameCertUsedForClientAndServer_Ok",
+ "reason": "Unreliable"
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Net.Security.Unit.Tests",
+ "enabled": false,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": null
+ }
+ },
+ {
+ "name": "System.Net.WebSockets.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Net.WebSockets.Tests.WebSocketTests.ReceiveAsync_ServerSplitHeader_ValidDataReceived",
+ "reason": "Xunit.Sdk.EqualException Assert.Equal() Failure\\r\\nExpected: 84\\r\\nActual: 0"
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Net.WebSockets.WebSocketProtocol.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Net.WebSockets.Tests.WebSocketProtocolCreateTests.ReceiveAsync_ServerSplitHeader_ValidDataReceived",
+ "reason": "Xunit.Sdk.EqualException Assert.Equal() Failure\\r\\nExpected: 84\\r\\nActual: 0"
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Reflection.Context.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertyGetter_Tests.Invoke_NullObject_Throws",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertyGetter_Tests.GetCustomAttributes_NoType_Test",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertyGetter_Tests.GetCustomAttributes_WithType_Test",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertyGetter_Tests.Invoke_NotEmptyParameter_Throws",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertyGetter_Tests.ProjectionTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertyGetter_Tests.GetCustomAttributesDataTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertyGetter_Tests.IsDefinedTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertyGetter_Tests.Invoke_NullParameters_Success",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertyGetter_Tests.Invoke_EmptyParameters_Success",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertyGetter_Tests.Invoke_WrongObject_Throws",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.SetValue_HasSetter_Success",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.Ctor_NullPropertyName_Throws",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.ReflectedTypeTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.AttributesTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.GetCustomAttributes_NoType_Test",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.CanReadTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.Ctor_NullPropertyType_Throws",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.ModuleTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.ToStringTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.GetAccessorsTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.GetConstantValueTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.GetHashCodeTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.GetOptionalCustomModifiersTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.GetRawConstantValueTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.GetValue_NoGetter_Throws",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.ProjectionTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.SetValue_NoSetter_Throws",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.Ctor_WrongPropertyType_Throws",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.SetValue_HasSetterWithIndex_Success",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.GetCustomAttributesDataTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.GetRequiredCustomModifiersTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.GetValue_HasGetter_Success",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.CanWriteTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.MetadataTokenTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.Ctor_GetterAndSetterNull_Throws",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.GetCustomAttributes_WithType_Test",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.Ctor_EmptyPropertyName_Throws",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.GetIndexParametersTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfoTests.IsDefinedTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomAssemblyTests.IsDefinedTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomAssemblyTests.GetTypesTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomAssemblyTests.ProjectAssemblyTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomAssemblyTests.GetTypeTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomAssemblyTests.GetCustomAttributesTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomAssemblyTests.GetExportedTypesTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomAssemblyTests.GetModuleTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomAssemblyTests.GetManifestResourceInfoTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomAssemblyTests.EntryPoint",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomAssemblyTests.GetModulesTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomAssemblyTests.GetCustomAttributesDataTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomAssemblyTests.GetHashCodeTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomAssemblyTests.EqualsTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomAssemblyTests.GetSatelliteAssemblyTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomAssemblyTests.ManifestModuleTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomAssemblyTests.GetLoadedModulesTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.GetCustomAttributes_NoType_Test",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.MakeGenericMethodTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.Invoke_WrongObject_Throws",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.GetGenericMethodDefinitionTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.Invoke_NotSingleParameter_Throws",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.IsGenericMethodDefinitionTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.GetMethodImplementationFlagsTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.GetBaseDefinition",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.MethodHandleTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.ProjectionTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.Invoke_NullParameter_Throws",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.ReturnTypeCustomAttributes",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.Invoke_ValidArguments_Success",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.CallingConventionTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.ModuleTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.GetParametersTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.GetCustomAttributesTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.IsGenericMethodTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.Invoke_NullObject_Throws",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.IsDefinedTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.GetCustomAttributes_WithType_Test",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.ReturnParameterTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.GetGenericArgumentsTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.ContainsGenericParametersTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.VirtualPropertyInfo_PropertySetter_Tests.GetCustomAttributesDataTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomPropertyInfoTests.GetCustomAttributesDataTest",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomReflectionContextTests.MapType_ParameterAttributes_Success",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomReflectionContextTests.MapType_MemberAttributes_Success",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomReflectionContextTests.MapType_Null_Throws",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomReflectionContextTests.MapAssembly_Null_Throws",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomReflectionContextTests.Ctor_Null_Throws",
+ "reason": "Xunit.Sdk.ThrowsException Assert.Throws() Failure\\r\\nExpected: typeof(System.ArgumentNullException)\\r\\nActual: typeof(System.PlatformNotSupportedException): Customized reflection contexts are only supported on .NET Framework."
+ },
+ {
+ "name": "System.Reflection.Context.Tests.CustomReflectionContextTests.MapType_Interface_Throws",
+ "reason": "System.PlatformNotSupportedException System.PlatformNotSupportedException : Customized reflection contexts are only supported on .NET Framework."
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Runtime.Extensions.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.IO.Tests.PathTests_Join.JoinTwoPaths",
+ "reason": "System.MissingMethodException System.MissingMethodException : Method not found: 'System.String System.IO.Path.Join(System.String, System.String)'."
+ },
+ {
+ "name": "System.IO.Tests.PathTests_Join.JoinThreePaths",
+ "reason": "System.MissingMethodException System.MissingMethodException : Method not found: 'System.String System.IO.Path.Join(System.String, System.String, System.String)'."
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Runtime.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Tests.DecimalTests.GetHashCode",
+ "reason": "Xunit.Sdk.XunitException Decimal 3 has multiple hash codes: 1074266112 (3) and -1074266097 (3.000000000000000000000000000)"
+ },
+ {
+ "name": "System.Runtime.CompilerServices.Tests.CallerArgumentExpressionAttributeTests.ArgumentToCallerArgumentExpressionSetsParameterNameProperty",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Runtime.CompilerServices.CallerArgumentExpressionAttribute' from assembly 'System.Runtime, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Tests.ArrayTests.Copy",
+ "reason": "Xunit.Sdk.EqualException Assert.Equal() Failure\\r\\nExpected: Object[,] [1, 2, 3, 4, 5, ...]\\r\\nActual: Object[,] [1, 2, 3, 4, 5, ...]"
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampRequestTests.ProcessResponse_Symantec_NoCerts_WithNonce",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampRequestTests.NegativeNonceIsMadePositive",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampRequestTests.BuildFromSignerInfo",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampRequestTests.BuildExpectedRequest_FromHashAndName",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampRequestTests.NonceLeadingZerosIgnored",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampRequestTests.BuildExpectedRequest_FromData",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampRequestTests.NoncePaddingZerosIgnored",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampRequestTests.BuildFromNullSignerInfo",
+ "reason": "Xunit.Sdk.ThrowsException Assert.Throws() Failure\\r\\nExpected: typeof(System.ArgumentNullException)\\r\\nActual: typeof(System.TypeLoadException): Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampRequestTests.TryDecode_WithExtensions",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampRequestTests.BuildExpectedRequest_FromHashAndOid",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampRequestTests.ProcessResponse_FreeTsa_WithCerts_NoNonce",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampRequestTests.BuildWithAllOptions",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampRequestTests.EmptyNonce",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.SignedCmsTests.EnsureExtraCertsAdded",
+ "reason": "System.Security.Cryptography.CryptographicException System.Security.Cryptography.CryptographicException : Unknown algorithm '1.2.840.10040.4.3'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.SignedCmsTests.SignCmsUsingECDsaCertWithNotMatchingKeyThrows",
+ "reason": "Xunit.Sdk.ThrowsException Assert.Throws() Failure\\r\\nExpected: typeof(System.Security.Cryptography.CryptographicException)\\r\\nActual: (No exception was thrown)"
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.SignedCmsTests.CheckSignedEncrypted_IssuerSerial_FromNetFx",
+ "reason": "System.Security.Cryptography.CryptographicException System.Security.Cryptography.CryptographicException : Unable to set field EncapContentInfo on type System.Security.Cryptography.Pkcs.Asn1.SignedDataAsn.\\r\\n---- System.Security.Cryptography.CryptographicException : Unable to set field Content on type System.Security.Cryptography.Pkcs.Asn1.EncapsulatedContentInfoAsn.\\r\\n-------- System.Security.Cryptography.CryptographicException : ASN1 corrupted data."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.SignedCmsTests.AddFirstSigner_DSA",
+ "reason": "System.Security.Cryptography.CryptographicException System.Security.Cryptography.CryptographicException : Could not determine signature algorithm for the signer certificate."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.SignedCmsTests.CounterSignCmsUsingExplicitDSAKeyForFirstSignerAndECDsaForCounterSignature",
+ "reason": "System.Security.Cryptography.CryptographicException System.Security.Cryptography.CryptographicException : Could not determine signature algorithm for the signer certificate."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.SignedCmsTests.CounterSignCmsUsingExplicitRSAKeyForFirstSignerAndDSAForCounterSignature",
+ "reason": "System.Security.Cryptography.CryptographicException System.Security.Cryptography.CryptographicException : Could not determine signature algorithm for the signer certificate."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.SignedCmsTests.SignEnveloped",
+ "reason": "Xunit.Sdk.EqualException Assert.Equal() Failure\\r\\nExpected: 2\\r\\nActual: 0"
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.SignedCmsTests.SignIdentifiedContent_BadOid",
+ "reason": "System.ArgumentNullException System.ArgumentNullException : Value cannot be null.\\r\\nParameter name: oidValue"
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.SignedCmsTests.SignCmsUsingExplicitDSAKey",
+ "reason": "System.Security.Cryptography.CryptographicException System.Security.Cryptography.CryptographicException : Could not determine signature algorithm for the signer certificate."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.SignedCmsTests.SignerInfoCollection_Indexer_MinusOne",
+ "reason": "Xunit.Sdk.ThrowsException Assert.Throws() Failure\\r\\nExpected: typeof(System.ArgumentOutOfRangeException)\\r\\nActual: typeof(System.IndexOutOfRangeException): Index was outside the bounds of the array."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.DecryptTestsUsingExplicitPrivateKey.DecryptEnvelopedEmptyOctetStringWithIndefiniteLength",
+ "reason": "Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Unexpected cryptographic message encoding."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.DecryptTestsUsingExplicitPrivateKey.DecryptEnvelopedDataWithNonPkcs7Oid",
+ "reason": "Xunit.Sdk.EqualException Assert.Equal() Failure\\r\\n ↓ (pos 0)\\r\\nExpected: 3003010203\\r\\nActual: 010203\\r\\n ↑ (pos 0)"
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.DecryptTestsUsingExplicitPrivateKey.DecryptEnvelopedOctetStringWithExtraData",
+ "reason": "Xunit.Sdk.EqualException Assert.Equal() Failure\\r\\n ↓ (pos 0)\\r\\nExpected: 300102\\r\\nActual: 02\\r\\n ↑ (pos 0)"
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.DecryptTestsUsingExplicitPrivateKey.DecryptEnvelopedEmptyArray",
+ "reason": "Xunit.Sdk.EqualException Assert.Equal() Failure\\r\\n ↓ (pos 0)\\r\\nExpected: 3000\\r\\nActual: \\r\\n ↑ (pos 0)"
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.DecryptTestsUsingExplicitPrivateKey.DecryptEnvelopedOctetStringWithDefiniteLength",
+ "reason": "Xunit.Sdk.EqualException Assert.Equal() Failure\\r\\n ↓ (pos 0)\\r\\nExpected: 3003010203\\r\\nActual: 010203\\r\\n ↑ (pos 0)"
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.DecryptTestsUsingExplicitPrivateKey.DecryptEnvelopedOctetStringWithIndefiniteLength",
+ "reason": "Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Unexpected cryptographic message encoding."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.DecryptTestsUsingExplicitPrivateKey.DecryptEnvelopedEmptyOctetString",
+ "reason": "Xunit.Sdk.EqualException Assert.Equal() Failure\\r\\n ↓ (pos 0)\\r\\nExpected: 3000\\r\\nActual: \\r\\n ↑ (pos 0)"
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.DecryptTestsUsingExplicitPrivateKey.DecryptEnvelopedOctetStringWithInefficientlyEncodedLength",
+ "reason": "Xunit.Sdk.EqualException Assert.Equal() Failure\\r\\n ↓ (pos 0)\\r\\nExpected: 3003010203\\r\\nActual: 010203\\r\\n ↑ (pos 0)"
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.SignerInfoTests.SignerInfo_AddRemoveUnsignedAttributes_JoinCounterSignaturesAttributesIntoOne",
+ "reason": "System.Security.Cryptography.CryptographicException System.Security.Cryptography.CryptographicException : Could not determine signature algorithm for the signer certificate."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.SignerInfoTests.SignerInfo_AddUnsignedAttribute_Adds",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.SignerInfoTests.EnsureExtraCertsAdded",
+ "reason": "System.Security.Cryptography.CryptographicException System.Security.Cryptography.CryptographicException : Unknown algorithm '1.2.840.10040.4.3'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.SignerInfoTests.AddCounterSigner_DSA",
+ "reason": "System.Security.Cryptography.CryptographicException System.Security.Cryptography.CryptographicException : Could not determine signature algorithm for the signer certificate."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.SignerInfoTests.SignerInfo_RemoveUnsignedAttributes_MultipleAttributeValues",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.SignerInfoTests.RemoveCounterSignature_EncodedInSingleAttribute",
+ "reason": "System.Security.Cryptography.CryptographicException System.Security.Cryptography.CryptographicException : Unknown algorithm '1.2.840.10040.4.3'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.TryDecode_Fails_Empty",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.NoEkuExtension",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.CertHashMismatchV2",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.MatchV2",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.TimestampTooOld",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.TryDecode_Fails_SignedCmsOfData",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.TwoEkuExtensions",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.TryDecode_Fails_MalformedToken",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.CertMismatchIssuerAndSerialV2",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.CertHashMismatchV1",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.TimestampTooNew",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.MatchV1",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.CertMismatchIssuerAndSerialV1",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.CertMismatchV1OrV2",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.CertMatchV1AndV2",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.TryDecode_Fails_EnvelopedCms",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.NonCriticalEkuExtension",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.ParseDocument_ExcessData",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.NoTsaEku",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenTests.ParseDocument",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampToken' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.DecryptTestsUsingCertWithPrivateKey.DecryptEnvelopedOctetStringWithIndefiniteLength",
+ "reason": "Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Unexpected cryptographic message encoding."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.DecryptTestsUsingCertWithPrivateKey.DecryptEnvelopedEmptyOctetStringWithIndefiniteLength",
+ "reason": "Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Unexpected cryptographic message encoding."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenInfoTests.BuilderCtor_TsaNameOptional",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenInfoTests.BuilderCtor_IsOrdering_Roundtrips",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenInfoTests.BuilderCtor_HashAlgorithmIdRequired",
+ "reason": "Xunit.Sdk.ThrowsException Assert.Throws() Failure\\r\\nExpected: typeof(System.ArgumentNullException)\\r\\nActual: typeof(System.TypeLoadException): Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenInfoTests.Accuracy_Bounds_ParsesAsExpected",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenInfoTests.NegativeAccuracyThrows",
+ "reason": "Xunit.Sdk.ThrowsException Assert.Throws() Failure\\r\\nExpected: typeof(System.ArgumentOutOfRangeException)\\r\\nActual: typeof(System.TypeLoadException): Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenInfoTests.ExtensionsRoundtrips",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenInfoTests.AccuracyRoundtrips",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenInfoTests.CreateFromValue",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenInfoTests.BuilderCtor_AccuracyOptional",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenInfoTests.TryDecode_Invalid",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenInfoTests.CreateFromParameters",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenInfoTests.BuilderCtor_Timestamp_KeepsSubSeconds",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenInfoTests.TryDecode_LongerThanNeeded",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenInfoTests.BuilderCtor_PolicyIdRequired",
+ "reason": "Xunit.Sdk.ThrowsException Assert.Throws() Failure\\r\\nExpected: typeof(System.ArgumentNullException)\\r\\nActual: typeof(System.TypeLoadException): Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ },
+ {
+ "name": "System.Security.Cryptography.Pkcs.Tests.TimestampTokenInfoTests.TsaName_SameDataSecondInvocation",
+ "reason": "System.TypeLoadException System.TypeLoadException : Could not load type 'System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo' from assembly 'System.Security.Cryptography.Pkcs, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Security.Cryptography.Xml.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Security.Cryptography.Xml.Tests.EncryptionMethodTests.KeySize_SetNegativeValue_ThrowsArgumentOutOfRangeException",
+ "reason": "System.MissingMethodException System.MissingMethodException : Method not found: 'Void System.AssertExtensions.Throws(System.String, System.String, System.Func`1<System.Object>)'."
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Data.SqlClient.ManualTesting.Tests",
+ "enabled": false,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": null
+ }
+ },
+ {
+ "name": "System.Data.SqlClient.Stress.Tests",
+ "enabled": false,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": null
+ }
+ },
+ {
+ "name": "System.Data.SqlClient.Tests",
+ "enabled": false,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": null
+ }
+ },
+ {
+ "name": "System.Text.Encoding.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Text.Tests.DecoderFallbackTests.TestDecoderFallbackIndex",
+ "reason": "System.Text.DecoderFallbackException System.Text.DecoderFallbackException : Encountered a negative index during Utf8 decoding fallback "
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Text.RegularExpressions.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Text.RegularExpressions.Tests.GroupCollectionReadOnlyDictionaryTests.IReadOnlyDictionary_GetEnumerator",
+ "reason": "System.EntryPointNotFoundException System.EntryPointNotFoundException : Entry point was not found."
+ },
+ {
+ "name": "System.Text.RegularExpressions.Tests.GroupCollectionReadOnlyDictionaryTests.GetEnumerator_Invalid",
+ "reason": "System.EntryPointNotFoundException System.EntryPointNotFoundException : Entry point was not found."
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Threading.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Threading.Tests.EventWaitHandleTests.OpenExisting_Windows",
+ "reason": "System.ArgumentException System.ArgumentException : The name 'fac694268eb248e9990777825b5aaab9aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' can be no more than 260 characters in length.\\r\\nParameter name: name"
+ },
+ {
+ "name": "System.Threading.Tests.EventWaitHandleTests.Ctor_ValidNames",
+ "reason": "System.ArgumentException System.ArgumentException : The name '8503e07c28f04a8e8ce1c4604f6adbb2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' can be no more than 260 characters in length.\\r\\nParameter name: name"
+ },
+ {
+ "name": "System.Threading.Tests.MutexTests.Ctor_ValidName",
+ "reason": "System.ArgumentException System.ArgumentException : The name '998ce9564d1745d8b901082f7ad17183aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' can be no more than 260 characters in length.\\r\\nParameter name: name"
+ },
+ {
+ "name": "System.Threading.Tests.MutexTests.OpenExisting",
+ "reason": "System.ArgumentException System.ArgumentException : The name '9cc4ad4ac10046cdb05f91bf0f81ad13aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' can be no more than 260 characters in length.\\r\\nParameter name: name"
+ },
+ {
+ "name": "System.Threading.Tests.SemaphoreTests.OpenExisting_SameAsOriginal_Windows",
+ "reason": "System.ArgumentException System.ArgumentException : The name '03ded9d0ccd74eefa101daae32e80ef8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' can be no more than 260 characters in length.\\r\\nParameter name: name"
+ },
+ {
+ "name": "System.Threading.Tests.SemaphoreTests.Ctor_ValidName_Windows",
+ "reason": "System.ArgumentException System.ArgumentException : The name '27095bdc00264a159609fd12b7052b03aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' can be no more than 260 characters in length.\\r\\nParameter name: name"
+ },
+ {
+ "name": "System.Threading.Tests.EventWaitHandleTests.Ctor_InvalidMode",
+ "reason": "Assert.Equal() Failure Expected: (null) Actual: mode"
+ }
+ ]
+ }
+ },
+ {
+ "name": "System.Xml.Xsl.XslTransformApi.Tests",
+ "enabled": true,
+ "exclusions": {
+ "namespaces": null,
+ "classes": null,
+ "methods": [
+ {
+ "name": "System.Xml.Tests.CXmlResolverTest.TC_AbsolutePath_Transform",
+ "reason": "Xunit.Sdk.TrueException Assert.True() Failure\\r\\nExpected: True\\r\\nActual: False"
+ },
+ {
+ "name": "System.Xml.Tests.CTransformResolverTest.TC_AbsolutePath_Transform",
+ "reason": "Xunit.Sdk.TrueException Assert.True() Failure\\r\\nExpected: True\\r\\nActual: False"
+ }
+ ]
+ }
+ }
+] \ No newline at end of file
diff --git a/tests/runtest.cmd b/tests/runtest.cmd
index 89a5acdba1..368451a27e 100644
--- a/tests/runtest.cmd
+++ b/tests/runtest.cmd
@@ -41,6 +41,7 @@ set __DoCrossgen=
set __CrossgenAltJit=
set __PerfTests=
set __CoreFXTests=
+set __CoreFXTestsRunAllAvailable=
:Arg_Loop
if "%1" == "" goto ArgsDone
@@ -79,7 +80,9 @@ if /i "%1" == "jitdisasm" (set __JitDisasm=1&shift&goto Arg_Loop)
if /i "%1" == "ilasmroundtrip" (set __IlasmRoundTrip=1&shift&goto Arg_Loop)
if /i "%1" == "GenerateLayoutOnly" (set __GenerateLayoutOnly=1&shift&goto Arg_Loop)
if /i "%1" == "PerfTests" (set __PerfTests=true&shift&goto Arg_Loop)
-if /i "%1" == "CoreFXTests" (exit /b 0)
+if /i "%1" == "CoreFXTests" (set __CoreFXTests=true&shift&goto Arg_Loop)
+if /i "%1" == "CoreFXTestsAll" (set __CoreFXTests=true&set __CoreFXTestsRunAllAvailable=true&shift&goto Arg_Loop)
+if /i "%1" == "CoreFXTestList" (set __CoreFXTests=true&set __CoreFXTestList=%2&shift&shift&goto Arg_Loop)
if /i "%1" == "runcrossgentests" (set RunCrossGen=true&shift&goto Arg_Loop)
if /i "%1" == "link" (set DoLink=true&set ILLINK=%2&shift&shift&goto Arg_Loop)
if /i "%1" == "tieredcompilation" (set COMPLUS_TieredCompilation=1&shift&goto Arg_Loop)
@@ -107,7 +110,15 @@ shift
:: Done with argument processing. Check argument values for validity.
if defined __TestEnv (if not exist %__TestEnv% echo %__MsgPrefix%Error: Test Environment script %__TestEnv% not found && exit /b 1)
-if "%__PerfTests%"=="true" (if defined __GenerateLayoutOnly echo %__MsgPrefix%Error: Don't specify both "PerfTests" and "GenerateLayoutOnly" && exit /b 1)
+if "%__PerfTests%"=="true" (if defined __GenerateLayoutOnly echo %__MsgPrefix%Error: Don't specify both "PerfTests" and "GenerateLayoutOnly" && exit /b 1)
+if "%__CoreFXTests%"=="true" (if defined __GenerateLayoutOnly echo %__MsgPrefix%Error: Don't specify both "CoreFXTests" and "GenerateLayoutOnly" && exit /b 1)
+
+if defined __CoreFXTestList (
+ if not exist "%__CoreFXTestList%" (
+ echo %__MsgPrefix%Error: Couldn't find CoreFX Test List "%__CoreFXTestList%".
+ exit /b 1
+ )
+)
:: Set the remaining variables based upon the determined configuration
set "__BinDir=%__RootBinDir%\Product\%__BuildOS%.%__BuildArch%.%__BuildType%"
@@ -203,6 +214,8 @@ if not exist %CORE_ROOT%\coreclr.dll (
exit /b 1
)
+if "%__CoreFXTests%"=="true" goto RunCoreFXTests
+
if "%__PerfTests%"=="true" goto RunPerfTests
REM =========================================================================================
@@ -285,7 +298,63 @@ if errorlevel 1 (
echo %__MsgPrefix%Test Run failed. Refer to the following:
echo Html report: %__TestRunHtmlLog%
)
+goto TestsDone
+
+REM =========================================================================================
+REM ===
+REM === Run CoreFX tests
+REM ===
+REM =========================================================================================
+:RunCoreFXTests
+set _CoreFXTestHost=%XunitTestBinBase%\testhost
+set _toolsDir=%__ProjectDir%\..\Tools
+set _dotnet=%_toolsDir%\dotnetcli\dotnet.exe
+
+set _RootCoreFXTestPath=%__TestWorkingDir%\CoreFX
+set _CoreFXTestUtilitiesOutputPath=%_RootCoreFXTestPath%\CoreFXTestUtilities
+set _CoreFXTestBinariesPath=%_RootCoreFXTestPath%\tests_downloaded
+set _CoreFXLogsDir=%__LogsDir%\CoreFX\%__BuildOS%.%__BuildArch%.%__BuildType%
+if not exist "%_CoreFXLogsDir%" (mkdir "%_CoreFXLogsDir%")
+
+set _CoreFXTestSetupUtilityName=CoreFX.TestUtils.TestFileSetup
+set _CoreFXTestSetupUtility=%__ProjectFilesDir%\src\Common\CoreFX\TestFileSetup\%_CoreFXTestSetupUtilityName%.csproj
+
+call :ResolveDependencies
+if errorlevel 1 exit /b 1
+
+if defined __GenerateTestHostOnly (
+ exit /b 0
+)
+
+if not exist %_CoreFXTestHost%\dotnet.exe echo CoreFX test host not found, please run runtest.cmd again && exit /b 1
+
+set /p _CoreFXTestRemoteURL=< "%__ProjectFilesDir%\CoreFX\CoreFXTestListURL.txt"
+if not defined __CoreFXTestList ( set __CoreFXTestList=%__ProjectFilesDir%\CoreFX\TopN.CoreFX.x64.Windows.issues.json )
+
+
+set _CoreFXTestExecutable=xunit.console.netcore.exe
+set _CoreFXTestExecutableArgs= --notrait category=nonnetcoreapptests --notrait category=nonwindowstests --notrait category=failing --notrait category=IgnoreForCI --notrait category=OuterLoop --notrait Benchmark=true
+
+REM Set the log file name to something Jenkins can understand
+set _CoreFX_TestLogFileName=testResults.xml
+set _CoreFX_TestRunScriptName=CoreCLR_RunTest.cmd
+if "%__CoreFXTestsRunAllAvailable%" == "true" (
+ set _CoreFX_RunCommand=--runAllTests
+) else (
+ set _CoreFX_RunCommand=--runSpecifiedTests
+)
+
+
+echo Downloading and Running CoreFX Test Binaries
+echo %__MsgPrefix%call "%_dotnet%" "%_CoreFXTestUtilitiesOutputPath%\%_CoreFXTestSetupUtilityName%.dll" --clean --outputDirectory "%_CoreFXTestBinariesPath%" --testListJsonPath "%__CoreFXTestList%" --testUrl "!_CoreFXTestRemoteURL!" %_CoreFX_RunCommand% --dotnetPath "%_CoreFXTestHost%\dotnet.exe" --executable %_CoreFXTestExecutable% --logPath %_CoreFXLogsDir% %_CoreFXTestExecutableArgs%
+call "%_dotnet%" "%_CoreFXTestUtilitiesOutputPath%\%_CoreFXTestSetupUtilityName%.dll" --clean --outputDirectory "%_CoreFXTestBinariesPath%" --testListJsonPath "%__CoreFXTestList%" --testUrl "!_CoreFXTestRemoteURL!" %_CoreFX_RunCommand% --dotnetPath "%_CoreFXTestHost%\dotnet.exe" --executable %_CoreFXTestExecutable% --log %_CoreFXLogsDir% %_CoreFXTestExecutableArgs%
+if errorlevel 1 (
+ echo %__MsgPrefix%Running CoreFX tests finished with Failures
+ echo %__MsgPrefix%Check %_CoreFXLogsDir% for test run logs
+ exit /b 1
+)
+)
goto TestsDone
REM =========================================================================================
@@ -473,6 +542,39 @@ if errorlevel 1 (
)
echo %__MsgPrefix%Created the runtime layout with all dependencies in %CORE_ROOT%
+if "%__CoreFXTests%"=="true" goto ResolveCoreFXDependencies
+
+exit /b 0
+
+REM =========================================================================================
+REM ===
+REM === Generate the "testhost" directory for running CoreFX tests; download dependencies.
+REM ===
+REM =========================================================================================
+
+:ResolveCoreFXDependencies
+set __BuildLogRootName=Tests_GenerateTestHost
+echo %__MsgPrefix%Building CoreFX Test Host
+call :msbuild "%__ProjectFilesDir%\runtest.proj" /p:GenerateTestHost=true
+if errorlevel 1 (
+ echo %__MsgPrefix%Test Host Dependency Resolution Failed
+ exit /b 1
+)
+echo %__MsgPrefix%Created the Test Host layout with all dependencies in %_CoreFXTestHost%
+
+REM Publish and call the CoreFX test helper projects - should this be integrated into runtest.proj?
+REM Build Helper project
+echo "%_dotnet%" msbuild /t:Restore "%_CoreFXTestSetupUtility%"
+call "%_dotnet%" msbuild /t:Restore "%_CoreFXTestSetupUtility%"
+if errorlevel 1 (
+ exit /b 1
+)
+echo "%_dotnet%" msbuild "/p:Configuration=%CoreRT_BuildType%" "/p:OSGroup=%CoreRT_BuildOS%" "/p:Platform=%CoreRT_BuildArch%" "/p:OutputPath=%_CoreFXTestUtilitiesOutputPath%" "%_CoreFXTestSetupUtility%"
+call "%_dotnet%" msbuild "/p:Configuration=%CoreRT_BuildType%" "/p:OSGroup=%CoreRT_BuildOS%" "/p:Platform=%CoreRT_BuildArch%" "/p:OutputPath=%_CoreFXTestUtilitiesOutputPath%" "%_CoreFXTestSetupUtility%"
+if errorlevel 1 (
+ exit /b 1
+)
+
exit /b 0
REM =========================================================================================
diff --git a/tests/runtest.proj b/tests/runtest.proj
index 3ab7b9f708..aaff5b1bdc 100644
--- a/tests/runtest.proj
+++ b/tests/runtest.proj
@@ -10,6 +10,14 @@
<MSBuildEnableAllPropertyFunctions>1</MSBuildEnableAllPropertyFunctions>
</PropertyGroup>
+ <!-- TestHost destinations -->
+ <PropertyGroup>
+ <NETCoreAppTestSharedFxVersion>9.9.9</NETCoreAppTestSharedFxVersion>
+ <TestHostRootPath>$(BinDir)testhost\</TestHostRootPath>
+ <NETCoreAppTestHostFxrPath>$(TestHostRootPath)host\fxr\$(NETCoreAppTestSharedFxVersion)\</NETCoreAppTestHostFxrPath>
+ <NETCoreAppTestSharedFrameworkPath>$(TestHostRootPath)shared\Microsoft.NETCore.App\$(NETCoreAppTestSharedFxVersion)\</NETCoreAppTestSharedFrameworkPath>
+ </PropertyGroup>
+
<ItemGroup>
<DisabledTestDir Include="Common" />
<_SkipTestDir Include="@(DisabledTestDir)" />
@@ -363,6 +371,91 @@ namespace $([System.String]::Copy($(Category)).Replace(".","_").Replace("\","").
Condition=" '$(BuildTestsAgainstPackages)'=='true' " />
</Target>
+ <Target Name="ResolveTestHostDependencies">
+ <MSBuild Projects="$(MSBuildThisFileDirectory)src\Common\CoreFX\CoreFX.depproj"
+ Properties="OutputPath=$(NETCoreAppTestSharedFrameworkPath);" />
+ </Target>
+
+ <Target Name="CreateTestHost" DependsOnTargets="ResolveTestHostDependencies">
+ <MSBuild Projects="$(MSBuildProjectFile)"
+ Targets="SetupTestingHost"/>
+
+ <MSBuild Projects="$(MSBuildProjectFile)"
+ Targets="GenerateTestSharedFrameworkDepsFile"/>
+ </Target>
+
+ <UsingTask TaskName="GenerateDepsJson" AssemblyFile="$(BuildToolsTaskDir)Microsoft.DotNet.Build.Tasks.dll"/>
+ <!-- After we copied all the framework libraries we need to generate a deps.json file for the shared test framework -->
+ <Target Name="GenerateTestSharedFrameworkDepsFile" AfterTargets="SetupTestingHost">
+ <ItemGroup>
+ <!-- This is for HostPolicy, CoreCLR and Jit dependencies to continue to remain inside of the dep.json -->
+ <ExceptionForDepsJson Include="microsoft.netcore.app" />
+
+ <!-- TODO: We should see about generating this from scratch instead of relying on a previous deps file as a template -->
+ <_sharedFrameworkDepsJson Include="$(ToolsDir)dotnetcli\shared\Microsoft.NETCore.App\*\Microsoft.NETCore.App.deps.json" />
+ </ItemGroup>
+
+ <PropertyGroup>
+ <_OriginalDepsJsonPath>%(_sharedFrameworkDepsJson.FullPath)</_OriginalDepsJsonPath>
+ <_OutputTestSharedFrameworkDepsPath>$(NETCoreAppTestSharedFrameworkPath)\Microsoft.NETCore.App.deps.json</_OutputTestSharedFrameworkDepsPath>
+ </PropertyGroup>
+
+ <GenerateDepsJson DepsJsonPath="$(_OriginalDepsJsonPath)"
+ GenerateNewDepsJson="true"
+ RuntimeDirectory="$(NETCoreAppTestSharedFrameworkPath)"
+ DepsExceptions="@(ExceptionForDepsJson)"
+ OutputPath="$(_OutputTestSharedFrameworkDepsPath)"/>
+ </Target>
+
+ <Target Name="SetupTestingHost" AfterTargets="CreateTestOverlay" Condition="'$(CreateTestHost)' != 'false'">
+
+ <PropertyGroup Condition="'$(OSGroup)'=='Windows_NT'">
+ <HostFxrFileName>hostfxr</HostFxrFileName>
+ <DotnetExecutableName>dotnet.exe</DotnetExecutableName>
+ <HostFxrFileExtension>dll</HostFxrFileExtension>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(OSGroup)'!='Windows_NT'">
+ <HostFxrFileName>libhostfxr</HostFxrFileName>
+ <HostFxrFileExtension Condition="'$(OSGroup)' == 'Linux' Or '$(OSGroup)' == 'FreeBSD'">so</HostFxrFileExtension>
+ <HostFxrFileExtension Condition="$(OSGroup) =='OSX'">dylib</HostFxrFileExtension>
+ <DotnetExecutableName>dotnet</DotnetExecutableName>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <!-- Workaround for packages on which Microsoft.NetCoreApp expresses a dependency
+ The <PackageToInclude> element doesn't allow a version to be specified and we end up with clashing assembly versions in Core_Root-->
+ <NetCoreAppPackagedAssemblies Include="System.Text.Encoding.CodePages.dll"/>
+ </ItemGroup>
+
+ <ItemGroup>
+ <CoreCLRBinaries Include="$(CORE_ROOT)\**\*.*" Exclude="$(CORE_ROOT)\**\@(NetCoreAppPackagedAssemblies -> '%(Identity)' )" />
+ <HostFxFile Include="$(ToolsDir)\dotnetcli\**\$(HostFxrFileName).$(HostFxrFileExtension)" />
+ <DotnetExe Include="$(ToolsDir)\dotnetcli\$(DotnetExecutableName)" />
+ <HostPolicyFile Include="$(ToolsDir)\dotnetcli\**\hostpolicy.dll" />
+ </ItemGroup>
+
+ <Copy SourceFiles="@(HostFxFile)"
+ DestinationFolder="$(NETCoreAppTestHostFxrPath)"
+ SkipUnchangedFiles="true"
+ UseHardlinksIfPossible="true" />
+
+ <!-- Should this be referenced from a NuGet package? -->
+ <Copy SourceFiles="@(HostPolicyFile)"
+ DestinationFolder="$(NETCoreAppTestSharedFrameworkPath)"
+ SkipUnchangedFiles="true"
+ UseHardlinksIfPossible="true" />
+
+ <Copy SourceFiles="@(DotnetExe)"
+ DestinationFolder="$(TestHostRootPath)"
+ SkipUnchangedFiles="true"
+ UseHardlinksIfPossible="true" />
+
+ <Copy SourceFiles="@(CoreCLRBinaries)"
+ DestinationFolder="$(NETCoreAppTestSharedFrameworkPath)"
+ SkipUnchangedFiles="true" />
+ </Target>
+
<Target Name="RunPerfTests" Condition="'$(Performance)'=='true'">
<Message Text="Executing steps for perf tests" Importance="High"/>
@@ -396,6 +489,10 @@ namespace $([System.String]::Copy($(Category)).Replace(".","_").Replace("\","").
Targets="CreateTestOverlay"
Condition=" '$(GenerateRuntimeLayout)'=='true' "/>
+ <MSBuild Projects="$(MSBuildProjectFile)"
+ Targets="CreateTestHost"
+ Condition=" '$(GenerateTestHost)'=='true' "/>
+
<MSBuild Projects="$(MSBuildProjectFile)" Targets="RunTests"
Condition=" '$(RunTests)'=='true' "/>
</Target>
diff --git a/tests/src/Common/CoreFX/CoreFX.depproj b/tests/src/Common/CoreFX/CoreFX.depproj
new file mode 100644
index 0000000000..5863b19145
--- /dev/null
+++ b/tests/src/Common/CoreFX/CoreFX.depproj
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
+ <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+ <PropertyGroup>
+ <RestoreOutputPath>$(SourceDir)Common\CoreFX\obj</RestoreOutputPath>
+ <Language>C#</Language>
+ <NugetTargetMoniker>.NETCoreApp,Version=v2.0</NugetTargetMoniker>
+ <NugetTargetMonikerShort>netcoreapp2.0</NugetTargetMonikerShort>
+ <ContainsPackageReferences>true</ContainsPackageReferences>
+ <CLRTestKind>SharedLibrary</CLRTestKind>
+ <IsTestProject>false</IsTestProject>
+ <!-- System.Composition and System.Composition.AttributedModel use different versioning conventions -->
+ <SystemCompositionVersions>1.3.0-preview3-26501-04</SystemCompositionVersions>
+ <XUnitNetcoreExtensionsVersion>2.2.0-preview1-02902-01</XUnitNetcoreExtensionsVersion>
+ <!-- Xunit Abstractions is differently versioned then the rest of XUnit -->
+ <XUnitAbstractionsVersion>2.0.1</XUnitAbstractionsVersion>
+ <CoreFXXUnitPackageVersion>2.2.0-beta2-build3300</CoreFXXUnitPackageVersion>
+ </PropertyGroup>
+
+ <!-- Switch RuntimeIdentifier according to currently running OSGroup -->
+ <PropertyGroup>
+ <RuntimeIdentifier Condition="'$(OSGroup)' == 'Windows_NT'">win-x64</RuntimeIdentifier>
+ <RuntimeIdentifier Condition="'$(OSGroup)' == 'Linux'">linux-x64</RuntimeIdentifier>
+ <RuntimeIdentifier Condition="'$(OSGroup)' == 'OSX'">osx-x64</RuntimeIdentifier>
+ <NugetRuntimeIdentifier>$(RuntimeIdentifier)</NugetRuntimeIdentifier>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="xunit">
+ <Version>$(CoreFXXUnitPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="xunit.core">
+ <Version>$(CoreFXXUnitPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="xunit.assert">
+ <Version>$(CoreFXXUnitPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="xunit.abstractions">
+ <Version>$(XUnitAbstractionsVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="xunit.extensibility.core">
+ <Version>$(CoreFXXUnitPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="xunit.extensibility.execution">
+ <Version>$(CoreFXXUnitPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="xunit.runner.utility">
+ <Version>$(CoreFXXUnitPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="microsoft.xunit.netcore.extensions">
+ <Version>$(XUnitNetcoreExtensionsVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="CoreFx.Private.TestUtilities">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.CodeDom">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Configuration.ConfigurationManager">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Composition.Hosting">
+ <Version>$(SystemCompositionVersions)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Composition.AttributedModel">
+ <Version>$(SystemCompositionVersions)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Composition.Convention">
+ <Version>$(SystemCompositionVersions)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Composition.Runtime">
+ <Version>$(SystemCompositionVersions)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Composition.TypedParts">
+ <Version>$(SystemCompositionVersions)</Version>
+ </PackageReference>
+ <PackageReference Include="System.ComponentModel.Composition">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Data.DataSetExtensions">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Data.Odbc">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Data.SqlClient">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.DirectoryServices">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.DirectoryServices.AccountManagement">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.DirectoryServices.Protocols">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Drawing.Common">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.IO.Packaging">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.IO.Pipelines">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.IO.Ports">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Management">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Net.Http.WinHttpHandler">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Net.WebSockets.WebSocketProtocol">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Runtime.Caching">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Reflection.Context">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Security.Cryptography.ProtectedData">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Security.Cryptography.Pkcs">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Security.Cryptography.Xml">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.ServiceModel.Syndication">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.ServiceProcess.ServiceController">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Text.Encoding.CodePages">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Text.Encodings.Web">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Threading.Channels">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="System.Json">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+
+ </ItemGroup>
+ <ItemGroup Condition="'$(OSGroup)' == 'Windows_NT'">
+ <!-- Windows Dependencies -->
+ <PackageReference Include="Microsoft.Win32.Registry.AccessControl">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="Microsoft.Win32.SystemEvents">
+ <Version>$(MicrosoftPrivateCoreFxNETCoreAppPackageVersion)</Version>
+ </PackageReference>
+ </ItemGroup>
+ <PropertyGroup>
+ <TargetFramework>netcoreapp2.2</TargetFramework>
+ </PropertyGroup>
+ <ItemGroup>
+ <PackageToInclude Include="@(PackageReference -> '%(Identity)' )"/>
+ </ItemGroup>
+ <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+ <PropertyGroup>
+ <ProjectAssetsFile>$(SourceDir)Common\CoreFX\obj\project.assets.json</ProjectAssetsFile>
+ </PropertyGroup>
+</Project>
diff --git a/tests/src/Common/CoreFX/TestFileSetup/CoreFX.TestUtils.TestFileSetup.csproj b/tests/src/Common/CoreFX/TestFileSetup/CoreFX.TestUtils.TestFileSetup.csproj
new file mode 100644
index 0000000000..90a5cf148f
--- /dev/null
+++ b/tests/src/Common/CoreFX/TestFileSetup/CoreFX.TestUtils.TestFileSetup.csproj
@@ -0,0 +1,35 @@
+<Project Sdk="Microsoft.NET.Sdk">
+ <Import Project="..\..\..\..\..\dependencies.props" />
+ <PropertyGroup>
+ <SystemCommandLineVersion>0.1.0-e160909-1</SystemCommandLineVersion>
+ <NewtonsoftJsonVersion>11.0.2</NewtonsoftJsonVersion>
+ <NewtonsoftJsonSchemaVersion>3.0.10</NewtonsoftJsonSchemaVersion>
+ <XunitPackageVersion>2.3.0-beta1-build3642</XunitPackageVersion>
+ <!-- Due to an API surface mismatch, if the xunit.netcore executable attempts to run the wrong version of the
+ runner utility, running the tests wil break, so separate both into different version definitions -->
+ <XunitRunnerUtilityVersion>2.2.0-beta2-build3300</XunitRunnerUtilityVersion>
+ <XunitAbstractionsVersion>2.0.1</XunitAbstractionsVersion>
+ <XunitNetcoreExtensionsVersion>2.1.0-preview2-02516-02</XunitNetcoreExtensionsVersion>
+ <CoreFxTestUtilitiesVersion>4.5.0-preview2-26219-0</CoreFxTestUtilitiesVersion>
+ <RestoreSources>$(RestoreSources);https://dotnet.myget.org/F/dotnet-corefxlab/api/v3/index.json</RestoreSources>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <TargetFramework>netcoreapp2.0</TargetFramework>
+ <OutputType>Exe</OutputType>
+ <NETCoreAppMaximumVersion>99.9</NETCoreAppMaximumVersion>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Newtonsoft.Json">
+ <Version>$(NewtonsoftJsonVersion)</Version>
+ </PackageReference>
+ <PackageReference Include="Newtonsoft.Json.Schema">
+ <Version>$(NewtonsoftJsonSchemaVersion)</Version>
+ </PackageReference>
+ <!-- TODO Remove this reference - System.CommandLine is now archived and not under active development -->
+ <PackageReference Include="System.CommandLine">
+ <Version>$(SystemCommandLineVersion)</Version>
+ </PackageReference>
+ </ItemGroup>
+</Project>
diff --git a/tests/src/Common/CoreFX/TestFileSetup/Helpers/TestFileHelper.cs b/tests/src/Common/CoreFX/TestFileSetup/Helpers/TestFileHelper.cs
new file mode 100644
index 0000000000..c30b97dbdb
--- /dev/null
+++ b/tests/src/Common/CoreFX/TestFileSetup/Helpers/TestFileHelper.cs
@@ -0,0 +1,326 @@
+// 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;
+using System.Collections.Generic;
+using System.CommandLine;
+using System.Diagnostics;
+using System.IO;
+using System.IO.Compression;
+using System.Net.Http;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Schema;
+using Newtonsoft.Json.Schema.Generation;
+
+namespace CoreFX.TestUtils.TestFileSetup.Helpers
+{
+ /// <summary>
+ /// Defines the set of flags that represent exit codes
+ /// </summary>
+ [Flags]
+ public enum ExitCode : int
+ {
+ Success = 0,
+ TestFailure = 1,
+ HttpError = 2,
+ IOError = 3,
+ JsonSchemaValidationError = 4,
+ UnknownError = 10
+
+ }
+
+ /// <summary>
+ /// This helper class is used to fetch CoreFX tests from a specified URL, unarchive them and create a flat directory structure
+ /// through which to iterate.
+ /// </summary>
+ public class TestFileHelper
+ {
+ private HttpClient httpClient;
+ public HttpClient HttpClient
+ {
+ get
+ {
+ if (httpClient == null)
+ {
+ httpClient = new HttpClient();
+ }
+ return httpClient;
+ }
+ set{ httpClient = value; }
+ }
+
+ private HashSet<string> disabledTests;
+
+ /// <summary>
+ /// Default constructor - initialize list of disabled tests
+ /// </summary>
+ public TestFileHelper() {
+ disabledTests = new HashSet<string>();
+ }
+
+ /// <summary>
+ /// Deserialize a list of JSON objects defining test assemblies
+ /// </summary>
+ /// <param name="testDefinitionFilePath">The path on disk to the test list. The test list must conform to a schema generated from XUnitTestAssembly</param>
+ /// <returns></returns>
+ public Dictionary<string, XUnitTestAssembly> DeserializeTestJson(string testDefinitionFilePath)
+ {
+ JSchemaGenerator jsonGenerator = new JSchemaGenerator();
+
+ // Generate a JSON schema from the XUnitTestAssembly class against which to validate the test list
+ JSchema testDefinitionSchema = jsonGenerator.Generate(typeof(IList<XUnitTestAssembly>));
+ IList<XUnitTestAssembly> testAssemblies = new List<XUnitTestAssembly>();
+
+ IList<string> validationMessages = new List<string>();
+
+ using (var sr = new StreamReader(testDefinitionFilePath))
+ using (var jsonReader = new JsonTextReader(sr))
+ using (var jsonValidationReader = new JSchemaValidatingReader(jsonReader))
+ {
+ // Create schema validator
+ jsonValidationReader.Schema = testDefinitionSchema;
+ jsonValidationReader.ValidationEventHandler += (o, a) => validationMessages.Add(a.Message);
+
+ // Deserialize json test assembly definitions
+ JsonSerializer serializer = new JsonSerializer();
+ try
+ {
+ testAssemblies = serializer.Deserialize<List<XUnitTestAssembly>>(jsonValidationReader);
+ }
+ catch (JsonSerializationException ex)
+ {
+ // Invalid definition
+ throw new AggregateException(ex);
+ }
+ }
+
+ if (validationMessages.Count != 0)
+ {
+ StringBuilder aggregateExceptionMessage = new StringBuilder();
+ foreach (string validationMessage in validationMessages)
+ {
+ aggregateExceptionMessage.Append("JSON Validation Error: ");
+ aggregateExceptionMessage.Append(validationMessage);
+ aggregateExceptionMessage.AppendLine();
+ }
+
+ throw new AggregateException(new JSchemaValidationException(aggregateExceptionMessage.ToString()));
+
+ }
+ // Generate a map of test assembly names to their object representations - this is used to download and match them to their on-disk representations
+ var nameToTestAssemblyDef = new Dictionary<string, XUnitTestAssembly>();
+
+ // Map test names to their definitions
+ foreach (XUnitTestAssembly assembly in testAssemblies)
+ {
+ // Filter disabled tests
+ if(assembly.IsEnabled)
+ nameToTestAssemblyDef.Add(assembly.Name, assembly);
+ else
+ disabledTests.Add(assembly.Name);
+ }
+
+ return nameToTestAssemblyDef;
+ }
+
+ /// <summary>
+ /// Layout tests on disk. This method sets up every downloaded test as it would appear after running build-test.[cmd/sh] in CoreFX
+ /// </summary>
+ /// <param name="jsonUrl">URL to a test list - we expect a test list, which conforms to the Helix layout</param>
+ /// <param name="destinationDirectory">Directory to which the tests are downloaded</param>
+ /// <param name="testDefinitions">The mapping of tests parsed from a test definition list to their names</param>
+ /// <param name="runAllTests">Optional argument, which denotes whether all tests available in the test list downloaded from jsonUrl should be run</param>
+ /// <returns></returns>
+ public async Task SetupTests(string jsonUrl, string destinationDirectory, Dictionary<string, XUnitTestAssembly> testDefinitions = null, bool runAllTests = false)
+ {
+ Debug.Assert(Directory.Exists(destinationDirectory));
+ // testDefinitions should not be empty unless we're running all tests with no exclusions
+ Debug.Assert(runAllTests || testDefinitions != null);
+
+ // Download archives to a temporary directory
+ string tempDirPath = Path.Combine(destinationDirectory, "temp");
+ if (!Directory.Exists(tempDirPath))
+ {
+ Directory.CreateDirectory(tempDirPath);
+ }
+ // Map test names to their URLs, specified by the test list found at jsonUrl
+ Dictionary<string, XUnitTestAssembly> testPayloads = await GetTestUrls(jsonUrl, testDefinitions, runAllTests);
+
+ // If none were found or the testList did not have the expected format - return
+ if (testPayloads == null)
+ {
+ return;
+ }
+
+ // Download and unzip tests
+ await GetTestArchives(testPayloads, tempDirPath);
+ ExpandArchivesInDirectory(tempDirPath, destinationDirectory);
+
+ // Generate response file for each tests
+ RSPGenerator rspGenerator = new RSPGenerator();
+ foreach (XUnitTestAssembly assembly in testDefinitions.Values)
+ {
+ rspGenerator.GenerateRSPFile(assembly, Path.Combine(destinationDirectory, assembly.Name));
+ }
+
+ Directory.Delete(tempDirPath);
+ }
+
+ /// <summary>
+ /// Maps test names to their respective URLs as found in the test list found at the specified URL
+ /// </summary>
+ /// <param name="jsonUrl">URL to a test list - we expect a test list, which conforms to the Helix layout</param>
+ /// <param name="testDefinitions">The mapping of tests parsed from a test definition list to their names</param>
+ /// <param name="runAllTests">Optional argument, which denotes whether all tests available in the test list downloaded from jsonUrl should be run</param>
+ /// <returns></returns>
+ public async Task<Dictionary<string, XUnitTestAssembly>> GetTestUrls(string jsonUrl, Dictionary<string, XUnitTestAssembly> testDefinitions = null, bool runAllTests = false)
+ {
+ // testDefinitions should not be empty unless we're running all tests with no exclusions
+ Debug.Assert(runAllTests || testDefinitions != null);
+ // Set up the json stream reader
+ using (var responseStream = await HttpClient.GetStreamAsync(jsonUrl))
+ using (var streamReader = new StreamReader(responseStream))
+ using (var jsonReader = new JsonTextReader(streamReader))
+ {
+ // Manual parsing - we only need to key-value pairs from each object and this avoids deserializing all of the work items into objects
+ string markedTestName = string.Empty;
+ string currentPropertyName = string.Empty;
+
+ // The expected layout is produced by regular Helix runs - this allows us to parse and run tests from any Helix test list without special considerations
+ // The expected fields are
+ // { "WorkItemId": "<Fully Qualified Test Name>" , "PayloadUri":"<Url Of Test>" }
+
+ while (jsonReader.Read())
+ {
+ if (jsonReader.Value != null)
+ {
+ switch (jsonReader.TokenType)
+ {
+ case JsonToken.PropertyName:
+ currentPropertyName = jsonReader.Value.ToString();
+ break;
+ case JsonToken.String:
+ // Test Name Value
+ if (currentPropertyName.Equals("WorkItemId"))
+ {
+ string currentTestName = jsonReader.Value.ToString();
+
+ // If the test has been marked as disabled in the test list - ignore it
+ if ((runAllTests || testDefinitions.ContainsKey(currentTestName)) && !disabledTests.Contains(currentTestName))
+ {
+ markedTestName = currentTestName;
+ }
+ }
+ // Test URL value
+ else if (currentPropertyName.Equals("PayloadUri") && markedTestName != string.Empty)
+ {
+ if (!testDefinitions.ContainsKey(markedTestName))
+ {
+ testDefinitions[markedTestName] = new XUnitTestAssembly() { Name = markedTestName };
+ }
+ testDefinitions[markedTestName].Url = jsonReader.Value.ToString();
+ markedTestName = string.Empty;
+ }
+ break;
+ }
+ }
+ }
+
+ }
+ return testDefinitions;
+ }
+
+ /// <summary>
+ /// Download each test from its specified URL
+ /// </summary>
+ /// <param name="testPayloads">The mapping of tests parsed from a test definition list to their names. The test definitions are populated with test URLs</param>
+ /// <param name="downloadDir">Directory to which to download tests</param>
+ /// <returns></returns>
+ public async Task GetTestArchives(Dictionary<string, XUnitTestAssembly> testPayloads, string downloadDir)
+ {
+ foreach (string testName in testPayloads.Keys)
+ {
+ string payloadUri = testPayloads[testName].Url;
+
+ // Check URL for validity
+ if (!Uri.IsWellFormedUriString(payloadUri, UriKind.Absolute))
+ continue;
+
+ // Download tests from specified URL
+ using (var response = await HttpClient.GetStreamAsync(payloadUri))
+ {
+ if (response.CanRead)
+ {
+ // Create the test setup directory if it doesn't exist
+ if (!Directory.Exists(downloadDir))
+ {
+ Directory.CreateDirectory(downloadDir);
+ }
+
+ // CoreFX test archives are output as .zip regardless of platform
+ string archivePath = Path.Combine(downloadDir, testName + ".zip");
+
+ // Copy to a temp folder
+ using (FileStream file = new FileStream(archivePath, FileMode.Create))
+ {
+ await response.CopyToAsync(file);
+ }
+
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// Expand Archives
+ /// </summary>
+ /// <param name="archiveDirectory">Directory containing archives</param>
+ /// <param name="destinationDirectory">Directory to which to unpack archives</param>
+ /// <param name="cleanup">Optional parameter stating, whether archives should be deleted once downloaded</param>
+ public void ExpandArchivesInDirectory(string archiveDirectory, string destinationDirectory, bool cleanup = true)
+ {
+ Debug.Assert(Directory.Exists(archiveDirectory));
+ Debug.Assert(Directory.Exists(destinationDirectory));
+
+ // Get all archives in the directory
+ string[] archives = Directory.GetFiles(archiveDirectory, "*.zip", SearchOption.TopDirectoryOnly);
+
+ foreach (string archivePath in archives)
+ {
+ string destinationDirName = Path.Combine(destinationDirectory, Path.GetFileNameWithoutExtension(archivePath));
+
+ ZipFile.ExtractToDirectory(archivePath, destinationDirName);
+
+ // Delete archives if cleanup was
+ if (cleanup)
+ {
+ File.Delete(archivePath);
+ }
+ }
+ }
+
+ /// <summary>
+ /// Cleans build directory
+ /// </summary>
+ /// <param name="directoryToClean">Directory the contents of which to delete.</param>
+ public void CleanBuild(string directoryToClean)
+ {
+ Debug.Assert(Directory.Exists(directoryToClean));
+ DirectoryInfo dirInfo = new DirectoryInfo(directoryToClean);
+
+ foreach (FileInfo file in dirInfo.EnumerateFiles())
+ {
+ file.Delete();
+ }
+
+ foreach (DirectoryInfo dir in dirInfo.EnumerateDirectories())
+ {
+ dir.Delete(true);
+ }
+ }
+
+ }
+}
diff --git a/tests/src/Common/CoreFX/TestFileSetup/Helpers/TestRunHelper.cs b/tests/src/Common/CoreFX/TestFileSetup/Helpers/TestRunHelper.cs
new file mode 100644
index 0000000000..a8a97916c5
--- /dev/null
+++ b/tests/src/Common/CoreFX/TestFileSetup/Helpers/TestRunHelper.cs
@@ -0,0 +1,158 @@
+// 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;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CoreFX.TestUtils.TestFileSetup.Helpers
+{
+ /// <summary>
+ /// A class which runs all tests conforming to the current format of CoreFX tests -
+ /// Each folder:
+ /// is named for the test it contains - e.g. System.Collections.Tests
+ /// contains a test assembly named for the library it tests - e.g. System.Collections.Tests.dll
+ /// contains a test executable with the specified name - e.g. xunit.console.netcore.exe
+ /// </summary>
+ public class NetCoreTestRunHelper
+ {
+
+ public string DotnetExecutablePath { get; set; }
+
+ public string logRootOutputPath { get; set; }
+
+ /// <summary>
+ /// Default Constructor
+ /// </summary>
+ /// <param name="DotnetExecutablePath"> Path to the dotnet executable, which is used to run the test executable In CoreFX tests this will be the built test host</param>
+ /// <param name="logRootOutputPath">Path to which to output test run logs</param>
+ public NetCoreTestRunHelper(string DotnetExecutablePath, string logRootOutputPath)
+ {
+ this.DotnetExecutablePath = DotnetExecutablePath;
+ this.logRootOutputPath = logRootOutputPath;
+ }
+
+ /// <summary>
+ /// Run a single test executabke
+ /// </summary>
+ /// <param name="workingDirectory">Directory from which to start the test executable</param>
+ /// <param name="executableName">Name of the test executable</param>
+ /// <param name="xunitTestTraits">Test trait exclusions to pass to the runner.</param>
+ /// <param name="logOutputPath">Path to which to output the single test run's results</param>
+ /// <returns>0 if single test run is succesful; 1 if not</returns>
+ public int RunExecutable(string workingDirectory, string executableName, IReadOnlyList<string> xunitTestTraits, string logOutputPath)
+ {
+ // Calculate and create the path to the test log
+ string logPath = Path.Combine(logOutputPath, Path.GetFileName(workingDirectory));
+ if (!Directory.Exists(logPath))
+ Directory.CreateDirectory(logPath);
+
+ // Calculate the arguments to pass to the test runner
+ string arguments = CalculateCommandLineArguments(workingDirectory, executableName, xunitTestTraits, Path.Combine(logPath,"testResults.xml"));
+
+ // Create and initialize the test executable process
+ ProcessStartInfo startInfo = new ProcessStartInfo(DotnetExecutablePath, arguments)
+ {
+ Arguments = arguments,
+ WorkingDirectory = workingDirectory
+ };
+
+
+ Process executableProcess = new Process();
+ executableProcess.StartInfo = startInfo;
+ executableProcess.EnableRaisingEvents = true;
+ executableProcess.Start();
+ executableProcess.WaitForExit();
+
+ return executableProcess.ExitCode;
+ }
+ /// <summary>
+ /// Run all test executables conforming to the specified pattern in a directory
+ /// </summary>
+ /// <param name="rootDirectory">Directory containing tests to run</param>
+ /// <param name="executableName">Name of the test executable contained in folders</param>
+ /// <param name="xunitTestTraits">Test trait exclusions to pass to the runner.</param>
+ /// <param name="processLimit">Maximum number of tests to run in parallel</param>
+ /// <param name="logRootOutputPath">Root path to which to output the all test runs' results</param>
+ /// <returns>0 if entire test run is succesful; 1 if not</returns>
+ public int RunAllExecutablesInDirectory(string rootDirectory, string executableName, IReadOnlyList<string> xunitTestTraits, int processLimit, string logRootOutputPath = null)
+ {
+ int result = 0;
+ // Do a Depth-First Search to find and run executables with the same name
+ Stack<string> directories = new Stack<string>();
+ List<string> testDirectories = new List<string>();
+ // Push rootdir
+ directories.Push(rootDirectory);
+
+ while (directories.Count > 0)
+ {
+ string currentDirectory = directories.Pop();
+
+ // If a directory contains an executable with the specified name - add it
+ if (File.Exists(Path.Combine(currentDirectory, executableName)))
+ testDirectories.Add(currentDirectory);
+
+ foreach (string subDir in Directory.GetDirectories(currentDirectory))
+ directories.Push(subDir);
+ }
+
+ // Initialize max degree of parallelism
+ ParallelOptions parallelOptions = new ParallelOptions();
+ parallelOptions.MaxDegreeOfParallelism = processLimit;
+
+ Parallel.ForEach(testDirectories, parallelOptions,
+ (testDirectory) =>
+ {
+ if (RunExecutable(testDirectory, executableName, xunitTestTraits, logRootOutputPath) != 0)
+ {
+ // If any tests fail mark the whole run as failed
+ Console.WriteLine("Test Run Failed " + testDirectory);
+ result = 1;
+ }
+ }
+ );
+ return result;
+ }
+
+ /// <summary>
+ /// Calculate the commandline arguments to pass to the test executable
+ /// </summary>
+ /// <param name="testDirectory">Current test directory name - assumed to have the same name as the test</param>
+ /// <param name="executableName">>Name of the test executable contained in the folder</param>
+ /// <param name="xunitTestTraits">Test trait exclusions to pass to the runner.</param>
+ /// <param name="logPath">Path to which to output the single test run's results</param>
+ /// <returns>A string representing command line arguments to be passed to the console test runner</returns>
+ private string CalculateCommandLineArguments(string testDirectory, string executableName, IReadOnlyList<string> xunitTestTraits, string logPath)
+ {
+ StringBuilder arguments = new StringBuilder();
+
+ // Append test executable name
+ arguments.Append($"\"{Path.Combine(testDirectory, Path.GetFileName(executableName))}\" ");
+
+ // Append test name dll\
+ arguments.Append($"\"{Path.Combine(testDirectory, Path.GetFileName(testDirectory))}.dll\" ");
+
+ // Append RSP file
+ arguments.Append($"@\"{Path.Combine(testDirectory, Path.GetFileName(testDirectory))}.rsp\" ");
+
+ if (!String.IsNullOrEmpty(logPath))
+ {
+ // Add logging information
+ arguments.Append($"-xml {logPath} ");
+ }
+
+ // Append all additional arguments
+ foreach (string traitToExclude in xunitTestTraits)
+ {
+ arguments.Append($"-notrait {traitToExclude} ");
+ }
+
+ return arguments.ToString();
+ }
+ }
+}
diff --git a/tests/src/Common/CoreFX/TestFileSetup/Program.cs b/tests/src/Common/CoreFX/TestFileSetup/Program.cs
new file mode 100644
index 0000000000..107f242918
--- /dev/null
+++ b/tests/src/Common/CoreFX/TestFileSetup/Program.cs
@@ -0,0 +1,176 @@
+// 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;
+using System.Collections.Generic;
+using System.CommandLine;
+using System.IO;
+using System.Net.Http;
+using System.Text;
+using CoreFX.TestUtils.TestFileSetup.Helpers;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Schema;
+
+namespace CoreFX.TestUtils.TestFileSetup
+{
+ /// <summary>
+ /// This is a driver class, which downloads archived CoreFX test assemblies from a specified URL, lays out their contents
+ /// and subsequently runs them in parallel.
+ /// This is invoked from .tests\runtests.cmd and depends on a test host (CoreCLR components with a dotnet executable) being present
+ /// </summary>
+ public class Program
+ {
+ // Helper class to lay out files on disk
+ private static TestFileHelper testFileHelper;
+ // Helper class to run tests in parallel
+ private static NetCoreTestRunHelper testRunHelper;
+
+ // Test Set-up Options
+ private static string outputDir;
+ private static string testUrl;
+ private static string testListPath;
+ private static bool cleanTestBuild;
+
+ // Test Run Options
+ private static string dotnetPath;
+ private static bool runSpecifiedTests;
+ private static bool runAllTests;
+ private static int maximumDegreeOfParalellization;
+ private static string logRootOutputPath;
+
+ private static ExitCode exitCode;
+ private static string executableName;
+ private static IReadOnlyList<string> traitExclusions = Array.Empty<string>();
+
+ public static void Main(string[] args)
+ {
+ // Initialize default options
+ exitCode = ExitCode.Success;
+ maximumDegreeOfParalellization = Environment.ProcessorCount;
+ runSpecifiedTests = false;
+ runAllTests = false;
+ cleanTestBuild = false;
+
+ ArgumentSyntax argSyntax = ParseCommandLine(args);
+ try
+ {
+ // Download and lay out files on disk
+ SetupTests(runAllTests);
+
+ // Only run tests if the relevant commandline switch is passed
+ if (runSpecifiedTests || runAllTests)
+ {
+ exitCode = RunTests();
+
+ }
+ }
+ catch (AggregateException e)
+ {
+ // Handle failure cases and exit gracefully
+ e.Handle(innerExc =>
+ {
+
+ if (innerExc is HttpRequestException)
+ {
+ exitCode = ExitCode.HttpError;
+ Console.WriteLine("Error downloading tests from: " + testUrl);
+ Console.WriteLine(innerExc.Message);
+ return true;
+ }
+ else if (innerExc is IOException)
+ {
+ exitCode = ExitCode.IOError;
+ Console.WriteLine(innerExc.Message);
+ return true;
+ }
+ else if (innerExc is JSchemaValidationException || innerExc is JsonSerializationException)
+ {
+ exitCode = ExitCode.JsonSchemaValidationError;
+ Console.WriteLine("Error validating test list: ");
+ Console.WriteLine(innerExc.Message);
+ return true;
+ }
+ else
+ {
+ exitCode = ExitCode.UnknownError;
+ }
+ return false;
+ });
+ }
+
+ Environment.Exit((int)exitCode);
+ }
+
+ /// <summary>
+ /// Parse passed Command Line arguments
+ /// </summary>
+ /// <param name="args"></param>
+ /// <returns></returns>
+ private static ArgumentSyntax ParseCommandLine(string[] args)
+ {
+ ArgumentSyntax argSyntax = ArgumentSyntax.Parse(args, syntax =>
+ {
+ syntax.DefineOption("out|outDir|outputDirectory", ref outputDir, "Directory where tests are downloaded");
+ syntax.DefineOption("testUrl", ref testUrl, "URL, pointing to the list of tests");
+ syntax.DefineOption("testListJsonPath", ref testListPath, "JSON-formatted list of test assembly names to download");
+ syntax.DefineOption("clean|cleanOutputDir", ref cleanTestBuild, "Clean test assembly output directory");
+ syntax.DefineOption("runSpecified|runSpecifiedTests", ref runSpecifiedTests, "Run specified Tests after setup");
+ syntax.DefineOption("runAll|runAllTests", ref runAllTests, "Run All available Tests in the specified TestList");
+ syntax.DefineOption("dotnet|dotnetPath", ref dotnetPath, "Path to dotnet executable used to run tests.");
+ syntax.DefineOption("executable|executableName", ref executableName, "Name of the test executable to start");
+ syntax.DefineOption("log|logPath|logRootOutputPath", ref logRootOutputPath, "Run Tests after setup");
+ syntax.DefineOption("maxProcessCount|numberOfParallelTests|maximumDegreeOfParalellization", ref maximumDegreeOfParalellization, "Maximum number of concurrently executing processes");
+ syntax.DefineOptionList("notrait", ref traitExclusions, "Traits to be excluded from test runs");
+
+ });
+
+ if (runSpecifiedTests || runAllTests)
+ {
+ if (String.IsNullOrEmpty(dotnetPath))
+ throw new ArgumentException("Please supply a test host location to run tests.");
+
+ if (!File.Exists(dotnetPath))
+ throw new ArgumentException("Invalid testhost path. Please supply a test host location to run tests.");
+ }
+
+ return argSyntax;
+ }
+
+ /// <summary>
+ /// Method, which calls into the Test File Setup helper class to download and layout test assemblies on disk
+ /// </summary>
+ /// <param name="runAll">Specifies whether all tests available in the test list should be run</param>
+ private static void SetupTests(bool runAll = false)
+ {
+ testFileHelper = new TestFileHelper();
+
+ if (!Directory.Exists(outputDir))
+ Directory.CreateDirectory(outputDir);
+
+ // If the --clean switch has been specified delete existing assemblies
+ if (cleanTestBuild)
+ {
+ testFileHelper.CleanBuild(outputDir);
+ }
+
+ // Map test names to their definitions
+ Dictionary<string, XUnitTestAssembly> testAssemblyDefinitions = testFileHelper.DeserializeTestJson(testListPath);
+
+ testFileHelper.SetupTests(testUrl, outputDir, testAssemblyDefinitions, runAll).Wait();
+ }
+
+ /// <summary>
+ /// Runs all tests in a directory
+ /// Only tests, the executable driver of which has the same name as the passed argument are executed - e.g. xunit.console.netcore.exe
+ /// </summary>
+ /// <returns></returns>
+ private static ExitCode RunTests()
+ {
+ testRunHelper = new NetCoreTestRunHelper(dotnetPath, logRootOutputPath);
+ int result = testRunHelper.RunAllExecutablesInDirectory(outputDir, executableName, traitExclusions, maximumDegreeOfParalellization, logRootOutputPath);
+
+ return result == 0 ? ExitCode.Success : ExitCode.TestFailure;
+ }
+ }
+}
diff --git a/tests/src/Common/CoreFX/TestFileSetup/RSPGenerator.cs b/tests/src/Common/CoreFX/TestFileSetup/RSPGenerator.cs
new file mode 100644
index 0000000000..ae323026ca
--- /dev/null
+++ b/tests/src/Common/CoreFX/TestFileSetup/RSPGenerator.cs
@@ -0,0 +1,83 @@
+// 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;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+
+namespace CoreFX.TestUtils.TestFileSetup
+{
+ /// <summary>
+ /// A class which generates .rsp files to be passed to the test executable
+ /// The file contains a list of methods, classes and namespaces to be excluded from running.
+ /// </summary>
+ public class RSPGenerator
+ {
+ /// <summary>
+ /// Generate an rsp file from an XUnitTestAssembly class
+ /// </summary>
+ /// <param name="testDefinition">The XUnitTestAssembly object parsed from a specified test list</param>
+ /// <param name="outputPath">Path to which to output a .rsp file</param>
+ public void GenerateRSPFile(XUnitTestAssembly testDefinition, string outputPath)
+ {
+ if (!Directory.Exists(outputPath))
+ {
+ Directory.CreateDirectory(outputPath);
+ }
+ string rspFilePath = Path.Combine(outputPath, testDefinition.Name + ".rsp");
+
+ if (File.Exists(rspFilePath))
+ File.Delete(rspFilePath);
+
+ // Write RSP file to disk
+ using (StreamWriter sr = File.CreateText(rspFilePath))
+ {
+ // If no exclusions are defined, we don't need to generate an .rsp file
+ if (testDefinition.Exclusions == null)
+ return;
+
+ // Method exclusions
+ if (testDefinition.Exclusions.Methods != null)
+ {
+ foreach (Exclusion exclusion in testDefinition.Exclusions.Methods)
+ {
+ if (String.IsNullOrWhiteSpace(exclusion.Name))
+ continue;
+ sr.Write("-skipmethod ");
+ sr.Write(exclusion.Name);
+ sr.WriteLine();
+ }
+ }
+
+ // Class exclusions
+ if (testDefinition.Exclusions.Classes != null)
+ {
+ foreach (Exclusion exclusion in testDefinition.Exclusions.Classes)
+ {
+ if (String.IsNullOrWhiteSpace(exclusion.Name))
+ continue;
+ sr.Write("-skipclass ");
+ sr.Write(exclusion.Name);
+ sr.WriteLine();
+ }
+
+ }
+
+ // Namespace exclusions
+ if (testDefinition.Exclusions.Namespaces != null)
+ {
+ foreach (Exclusion exclusion in testDefinition.Exclusions.Namespaces)
+ {
+ if (String.IsNullOrWhiteSpace(exclusion.Name))
+ continue;
+ sr.Write("-skipnamespace ");
+ sr.Write(exclusion.Name);
+ sr.WriteLine();
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/tests/src/Common/CoreFX/TestFileSetup/XUnit/XUnitTestAssembly.cs b/tests/src/Common/CoreFX/TestFileSetup/XUnit/XUnitTestAssembly.cs
new file mode 100644
index 0000000000..efe78853c8
--- /dev/null
+++ b/tests/src/Common/CoreFX/TestFileSetup/XUnit/XUnitTestAssembly.cs
@@ -0,0 +1,63 @@
+// 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;
+using System.Collections.Generic;
+using System.Text;
+using Newtonsoft.Json;
+
+namespace CoreFX.TestUtils.TestFileSetup
+{
+ /// <summary>
+ /// A class representing a CoreFX test assembly to be run
+ /// </summary>
+ public class XUnitTestAssembly
+ {
+ [JsonRequired]
+ [JsonProperty("name")]
+ public string Name;
+
+ [JsonRequired]
+ [JsonProperty("enabled")]
+ public bool IsEnabled;
+
+ [JsonRequired]
+ [JsonProperty("exclusions")]
+ public Exclusions Exclusions;
+
+ // Used to assign a test url or to override it via the json file definition - mark it as optional in the test definition
+ [JsonIgnore]
+ [JsonProperty(Required = Required.Default)]
+ public string Url;
+
+ }
+ /// <summary>
+ /// Class representing a collection of test exclusions
+ /// </summary>
+ public class Exclusions
+ {
+ [JsonProperty("namespaces")]
+ public Exclusion[] Namespaces;
+
+ [JsonProperty("classes")]
+ public Exclusion[] Classes;
+
+ [JsonProperty("methods")]
+ public Exclusion[] Methods;
+ }
+
+ /// <summary>
+ /// Class representing a single test exclusion
+ /// </summary>
+ public class Exclusion
+ {
+ [JsonRequired]
+ [JsonProperty("name", Required = Required.DisallowNull)]
+ public string Name;
+
+ [JsonRequired]
+ [JsonProperty("reason", Required = Required.DisallowNull)]
+ public string Reason;
+ }
+}
diff --git a/tests/src/dirs.proj b/tests/src/dirs.proj
index 6009e2ed08..58c35591b5 100644
--- a/tests/src/dirs.proj
+++ b/tests/src/dirs.proj
@@ -20,6 +20,7 @@
<DisabledProjects Include="Common\Desktop.Coreclr.TestWrapper\Desktop.Coreclr.TestWrapper.csproj" Condition="('$(BuildTestsAgainstPackages)' == 'true') Or ('$(BuildOS)' != 'Windows_NT')" />
<DisabledProjects Include="Common\test_runtime\test_runtime.csproj" />
<DisabledProjects Include="Common\test_dependencies\test_dependencies.csproj" />
+ <DisabledProjects Include="Common\CoreFX\TestFileSetup\CoreFX.TestUtils.TestFileSetup.csproj" />
<DisabledProjects Include="Common\build_against_pkg_dependencies\build_against_pkg_dependencies.csproj" />
<DisabledProjects Include="Common\targeting_pack_ref\targeting_pack_ref.csproj" />
<DisabledProjects Include="Common\external\external.csproj" />