From 838ddae2de3e375832872bc538b61acb0f37024e Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Sat, 25 Jul 2020 15:43:19 +0200 Subject: [PATCH 01/67] Switch to VSTest in CI and remove xunit.console --- eng/testing/.runsettings | 9 +- eng/testing/RunnerTemplate.cmd | 68 ------ eng/testing/RunnerTemplate.sh | 207 ------------------ eng/testing/coverage.targets | 23 -- .../{ => mobile}/AndroidRunnerTemplate.sh | 0 .../{ => mobile}/AppleRunnerTemplate.sh | 0 .../{ => mobile}/WasmRunnerTemplate.sh | 0 eng/testing/mobile/outerBuild.targets | 7 + eng/testing/mobile/runscript.targets | 74 +++++++ .../tests.targets} | 12 + eng/testing/outerBuild.targets | 5 - eng/testing/runsettings.targets | 1 - eng/testing/tests.props | 35 ++- eng/testing/tests.targets | 99 +-------- eng/testing/xunit/xunit.console.targets | 87 -------- eng/testing/xunit/xunit.props | 22 +- eng/testing/xunit/xunit.targets | 17 -- src/libraries/sendtohelixhelp.proj | 48 ++-- 18 files changed, 154 insertions(+), 560 deletions(-) delete mode 100644 eng/testing/RunnerTemplate.cmd delete mode 100755 eng/testing/RunnerTemplate.sh rename eng/testing/{ => mobile}/AndroidRunnerTemplate.sh (100%) rename eng/testing/{ => mobile}/AppleRunnerTemplate.sh (100%) rename eng/testing/{ => mobile}/WasmRunnerTemplate.sh (100%) create mode 100644 eng/testing/mobile/outerBuild.targets create mode 100644 eng/testing/mobile/runscript.targets rename eng/testing/{tests.mobile.targets => mobile/tests.targets} (91%) delete mode 100644 eng/testing/xunit/xunit.console.targets diff --git a/eng/testing/.runsettings b/eng/testing/.runsettings index cf00c4a467379..55fe5be499705 100644 --- a/eng/testing/.runsettings +++ b/eng/testing/.runsettings @@ -32,7 +32,7 @@ - + $$COVERAGE_INCLUDE$$ $$COVERAGE_EXCLUDEBYFILE$$ @@ -43,7 +43,12 @@ false - + + + + + + \ No newline at end of file diff --git a/eng/testing/RunnerTemplate.cmd b/eng/testing/RunnerTemplate.cmd deleted file mode 100644 index 10737eabe7095..0000000000000 --- a/eng/testing/RunnerTemplate.cmd +++ /dev/null @@ -1,68 +0,0 @@ -@echo off -setlocal enabledelayedexpansion - -set EXECUTION_DIR=%~dp0 - -:argparser_start - if "%~1" == "" goto argparser_end - set "argparser_currentarg=%~1" - shift - - set "argparser_help_specified_inloop=" - if /i "%argparser_currentarg%"=="-h" ( set "argparser_help_specified_inloop=1" ) - if /i "%argparser_currentarg%"=="--help" ( set "argparser_help_specified_inloop=1" ) - if defined argparser_help_specified_inloop ( - goto usage - ) - - set "argparser_runtime_path_specified_inloop=" - if /i "%argparser_currentarg%"=="-r" ( set "argparser_runtime_path_specified_inloop=1" ) - if /i "%argparser_currentarg%"=="--runtime-path" ( set "argparser_runtime_path_specified_inloop=1" ) - if defined argparser_runtime_path_specified_inloop ( - if "%~1" == "" ( goto argparser_invalid ) - set "RUNTIME_PATH=%~1" - goto argparser_break - ) - - if /i "%argparser_currentarg%"=="--rsp-file" ( - if "%~1" == "" ( goto argparser_invalid ) - set "RSP_FILE=@%~1" - goto argparser_break - ) - -:argparser_invalid - echo Invalid argument or value: %argparser_currentarg% - call :usage - exit /b -1 - -:argparser_break - shift - goto argparser_start - -:argparser_end - -:: Don't use a globally installed SDK. -set DOTNET_MULTILEVEL_LOOKUP=0 - -:: ========================= BEGIN Test Execution ============================= -echo ----- start %DATE% %TIME% =============== To repro directly: ===================================================== -echo pushd %EXECUTION_DIR% -[[RunCommandsEcho]] -echo popd -echo =========================================================================================================== -pushd %EXECUTION_DIR% -@echo on -[[RunCommands]] -@echo off -popd -echo ----- end %DATE% %TIME% ----- exit code %ERRORLEVEL% ---------------------------------------------------------- -exit /b %ERRORLEVEL% -:: ========================= END Test Execution ================================= - -:usage -echo Usage: RunTests.cmd {-r^|--runtime-path} ^ [{--rsp-file} ^] -echo. -echo Parameters: -echo --runtime-path (Mandatory) Testhost containing the test runtime used during test execution (short: -r)" -echo --rsp-file RSP file to pass in additional arguments -echo --help Print help and exit (short: -h) diff --git a/eng/testing/RunnerTemplate.sh b/eng/testing/RunnerTemplate.sh deleted file mode 100755 index dbd5f4741a5d1..0000000000000 --- a/eng/testing/RunnerTemplate.sh +++ /dev/null @@ -1,207 +0,0 @@ -#!/usr/bin/env bash - -usage() -{ - echo "Usage: RunTests.sh {-r|--runtime-path} [{--rsp-file} ]" - echo "" - echo "Parameters:" - echo "--runtime-path (Mandatory) Testhost containing the test runtime used during test execution (short: -r)" - echo "--rsp-file RSP file to pass in additional arguments" - echo "--help Print help and exit (short: -h)" -} - -EXECUTION_DIR=$(dirname "$0") -RUNTIME_PATH='' -RSP_FILE='' - -while [[ $# > 0 ]]; do - opt="$(echo "${1}" | awk '{print tolower($0)}')" - case "$opt" in - --help|-h) - usage - exit 0 - ;; - --runtime-path|-r) - RUNTIME_PATH=$2 - shift - ;; - --rsp-file) - RSP_FILE=\@$2 - shift - ;; - *) - echo "Invalid argument: $1" - usage - exit -1 - ;; - esac - - shift -done - -if [ "$RUNTIME_PATH" == "" ]; then - echo "error: -r|--runtime-path argument is required." - usage - exit -1 -fi - -# Don't use a globally installed SDK. -export DOTNET_MULTILEVEL_LOOKUP=0 - -exitcode_list[0]="Exited Successfully" -exitcode_list[130]="SIGINT Ctrl-C occurred. Likely tests timed out." -exitcode_list[131]="SIGQUIT Ctrl-\ occurred. Core dumped." -exitcode_list[132]="SIGILL Illegal Instruction. Core dumped. Likely codegen issue." -exitcode_list[133]="SIGTRAP Breakpoint hit. Core dumped." -exitcode_list[134]="SIGABRT Abort. Managed or native assert, or runtime check such as heap corruption, caused call to abort(). Core dumped." -exitcode_list[135]="IGBUS Unaligned memory access. Core dumped." -exitcode_list[136]="SIGFPE Bad floating point arguments. Core dumped." -exitcode_list[137]="SIGKILL Killed eg by kill" -exitcode_list[139]="SIGSEGV Illegal memory access. Deref invalid pointer, overrunning buffer, stack overflow etc. Core dumped." -exitcode_list[143]="SIGTERM Terminated. Usually before SIGKILL." -exitcode_list[159]="SIGSYS Bad System Call." - -function print_info_from_core_file_using_lldb { - local core_file_name=$1 - local executable_name=$2 - local plugin_path_name="$RUNTIME_PATH/shared/Microsoft.NETCore.App/9.9.9/libsosplugin.so" - - # check for existence of lldb on the path - hash lldb 2>/dev/null || { echo >&2 "lldb was not found. Unable to print core file."; return; } - - # pe, clrstack, and dumpasync are defined in libsosplugin.so - if [ ! -f $plugin_path_name ]; then - echo $plugin_path_name cannot be found. - return - fi - - echo ----- start =============== lldb Output ===================================================== - echo Printing managed exceptions, managed call stacks, and async state machines. - lldb -O "settings set target.exec-search-paths $RUNTIME_PATH" -o "plugin load $plugin_path_name" -o "clrthreads -managedexception" -o "pe -nested" -o "clrstack -all -a -f" -o "dumpasync -fields -stacks -roots" -o "quit" --core $core_file_name $executable_name - echo ----- end =============== lldb Output ======================================================= -} - -function print_info_from_core_file_using_gdb { - local core_file_name=$1 - local executable_name=$2 - - # Check for the existence of GDB on the path - hash gdb 2>/dev/null || { echo >&2 "GDB was not found. Unable to print core file."; return; } - - echo ----- start =============== GDB Output ===================================================== - # Open the dump in GDB and print the stack from each thread. We can add more - # commands here if desired. - echo printing native stack. - gdb --batch -ex "thread apply all bt full" -ex "quit" $executable_name $core_file_name - echo ----- end =============== GDB Output ======================================================= -} - -function print_info_from_core_file { - local core_file_name=$1 - local executable_name=$RUNTIME_PATH/$2 - - if ! [ -e $executable_name ]; then - echo "Unable to find executable $executable_name" - return - elif ! [ -e $core_file_name ]; then - echo "Unable to find core file $core_file_name" - return - fi - echo "Printing info from core file $core_file_name" - print_info_from_core_file_using_gdb $core_file_name $executable_name - print_info_from_core_file_using_lldb $core_file_name $executable_name -} - -function copy_core_file_to_temp_location { - local core_file_name=$1 - - local storage_location="/tmp/coredumps" - - # Create the directory (this shouldn't fail even if it already exists). - mkdir -p $storage_location - - local new_location=$storage_location/core.$RANDOM - - echo "Copying core file $core_file_name to $new_location in case you need it." - cp $core_file_name $new_location -} - -# ========================= BEGIN Core File Setup ============================ -if [ "$(uname -s)" == "Darwin" ]; then - # On OS X, we will enable core dump generation only if there are no core - # files already in /cores/ at this point. This is being done to prevent - # inadvertently flooding the CI machines with dumps. - if [[ ! -d "/cores" || ! "$(ls -A /cores)" ]]; then - ulimit -c unlimited - fi -elif [ "$(uname -s)" == "Linux" ]; then - # On Linux, we'll enable core file generation unconditionally, and if a dump - # is generated, we will print some useful information from it and delete the - # dump immediately. - - if [ -e /proc/self/coredump_filter ]; then - # Include memory in private and shared file-backed mappings in the dump. - # This ensures that we can see disassembly from our shared libraries when - # inspecting the contents of the dump. See 'man core' for details. - echo -n 0x3F > /proc/self/coredump_filter - fi - - ulimit -c unlimited -fi -# ========================= END Core File Setup ============================== - -# ========================= BEGIN Test Execution ============================= -echo ----- start $(date) =============== To repro directly: ===================================================== -echo pushd $EXECUTION_DIR -[[RunCommandsEcho]] -echo popd -echo =========================================================================================================== -pushd $EXECUTION_DIR -[[RunCommands]] -test_exitcode=$? -popd -echo ----- end $(date) ----- exit code $test_exitcode ---------------------------------------------------------- - -if [ "${exitcode_list[$test_exitcode]}" != "" ]; then - echo exit code $test_exitcode means ${exitcode_list[$test_exitcode]} -fi -# ========================= END Test Execution =============================== - -# ======================= BEGIN Core File Inspection ========================= -pushd $EXECUTION_DIR >/dev/null -if [[ "$(uname -s)" == "Linux" && $test_exitcode -ne 0 ]]; then - if [ -n "$HELIX_WORKITEM_PAYLOAD" ]; then - have_sleep=$(which sleep) - if [ -x "$have_sleep" ]; then - echo Waiting a few seconds for any dump to be written.. - sleep 10s - fi - fi - echo Looking around for any Linux dump.. - # Depending on distro/configuration, the core files may either be named "core" - # or "core." by default. We read /proc/sys/kernel/core_uses_pid to - # determine which it is. - core_name_uses_pid=0 - if [ -e /proc/sys/kernel/core_uses_pid ] && [ "1" == $(cat /proc/sys/kernel/core_uses_pid) ]; then - core_name_uses_pid=1 - fi - - if [ $core_name_uses_pid == "1" ]; then - # We don't know what the PID of the process was, so let's look at all core - # files whose name matches core.NUMBER - echo Looking for files matching core.* ... - for f in core.*; do - [[ $f =~ core.[0-9]+ ]] && print_info_from_core_file "$f" "dotnet" && copy_core_file_to_temp_location "$f" && rm "$f" - done - elif [ -f core ]; then - echo found a dump named core in $EXECUTION_DIR ! - print_info_from_core_file "core" "dotnet" - copy_core_file_to_temp_location "core" - rm "core" - else - echo ... found no dump in $PWD - fi -fi -popd >/dev/null -# ======================== END Core File Inspection ========================== -exit $test_exitcode diff --git a/eng/testing/coverage.targets b/eng/testing/coverage.targets index 6f8ac2648f06e..6db15706598a6 100644 --- a/eng/testing/coverage.targets +++ b/eng/testing/coverage.targets @@ -33,29 +33,6 @@ - - - - coverage.opencover.xml - $(CoverageOutputPath) - $([MSBuild]::NormalizeDirectory('$(OutDir)', 'report')) - - "$(DotNetTool)" tool run coverlet "$(TargetFileName)" --target "$(RunScriptHost)" --targetargs "$(RunScriptCommand.Replace('"$(RunScriptHost)"', ''))" --format "opencover" --output "$(CoverageOutputPath)" --verbosity "normal" --use-source-link - $(RunScriptCommand) --exclude-by-file @(CoverageExcludeByFile -> '"%(Identity)"', ' --exclude-by-file ') - $(RunScriptCommand) --include-directory @(CoverageIncludeDirectory -> '"$(RunScriptHostDir)%(Identity)"', ' --include-directory ') - $(RunScriptCommand) --include @(CoverageInclude -> '"[%(Identity)]*"', ' --include ') - "$(DotNetTool)" tool run reportgenerator "-reports:$(CoverageReportInputPath)" "-targetdir:$(CoverageReportDir.TrimEnd('\/'))" "-reporttypes:Html" "-verbosity:Info" - - - - - - - - + + + + + \ No newline at end of file diff --git a/eng/testing/mobile/runscript.targets b/eng/testing/mobile/runscript.targets new file mode 100644 index 0000000000000..413c3b29b082e --- /dev/null +++ b/eng/testing/mobile/runscript.targets @@ -0,0 +1,74 @@ + + + + Build + $(TestDependsOn);RunTests + + + + + + + + + + AppleRunnerTemplate.sh + AndroidRunnerTemplate.sh + WasmRunnerTemplate.sh + + $(MSBuildThisFileDirectory)$(RunScriptInputName) + + RunTests.cmd + RunTests.sh + $([MSBuild]::NormalizePath('$(OutDir)', '$(RunScriptOutputName)')) + + + + + + + $([MSBuild]::Escape('$(RunScriptCommand)')) + + + + + + + + + + "$(RunScriptOutputPath)" + + $(RunTestsCommand) --runtime-path "$(TestHostRootPath.TrimEnd('\/'))" + $(RunTestsCommand) --rsp-file "$(TestRspFile)" + "$(RunScriptOutputPath)" $(AssemblyName) $(TargetArchitecture) + "$(RunScriptOutputPath)" $(JSEngine) $(AssemblyName).dll $(_withoutCategories.Replace(';', ' -notrait category=')) + + + + + + + + + $(OutputPath)$(TestResultsName) + One or more tests failed while running tests from '$(TestProjectName)'. + $(TestRunErrorMessage) Please check $(TestResultsPath) for details! + + + + + + + + + \ No newline at end of file diff --git a/eng/testing/tests.mobile.targets b/eng/testing/mobile/tests.targets similarity index 91% rename from eng/testing/tests.mobile.targets rename to eng/testing/mobile/tests.targets index e3d033b0daaed..7c073558bdb09 100644 --- a/eng/testing/tests.mobile.targets +++ b/eng/testing/mobile/tests.targets @@ -1,11 +1,23 @@ + + + + + $(NetCoreAppCurrent)-$(Configuration) + $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AppleTestRunner', '$(MobileRunnersDirSuffix)')) + $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AndroidTestRunner', '$(MobileRunnersDirSuffix)')) + $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmTestRunner', '$(MobileRunnersDirSuffix)')) + $([MSBuild]::NormalizeDirectory('$(OutDir)', 'AppBundle')) $([MSBuild]::NormalizePath('$(BundleDir)', '$(RunScriptOutputName)')) true V8 $(JSEngineArgs) --engine-arg=--stack-trace-limit=1000 + + $(PackageRID) + true diff --git a/eng/testing/outerBuild.targets b/eng/testing/outerBuild.targets index c071944c21d93..d048c04e7385d 100644 --- a/eng/testing/outerBuild.targets +++ b/eng/testing/outerBuild.targets @@ -1,9 +1,4 @@ - - - - diff --git a/eng/testing/runsettings.targets b/eng/testing/runsettings.targets index 5a2c9a84d6893..10e6defb1d206 100644 --- a/eng/testing/runsettings.targets +++ b/eng/testing/runsettings.targets @@ -31,7 +31,6 @@ $(RunSettingsFileContent.Replace('$$COVERAGE_INCLUDE$$', '$(CoverageIncludeFilter)') .Replace('$$COVERAGE_EXCLUDEBYFILE$$', '$(CoverageExcludeByFileFilter)') .Replace('$$COVERAGE_INCLUDEDIRECTORY$$', '$(CoverageIncludeDirectoryFilter)') - .Replace('$$COVERAGE_ENABLED$$', '$([MSBuild]::ValueOrDefault('$(Coverage)', 'false'))') .Replace('$$TARGETPLATFORM$$', '$(TargetArchitecture)') .Replace('$$DISABLEPARALLELIZATION$$', '$([MSBuild]::ValueOrDefault('$(TestDisableParallelization)', 'false'))') .Replace('$$DISABLEAPPDOMAIN$$', '$([MSBuild]::ValueOrDefault('$(TestDisableAppDomain)', 'false'))') diff --git a/eng/testing/tests.props b/eng/testing/tests.props index 65664f7f74992..c5cd06750df3d 100644 --- a/eng/testing/tests.props +++ b/eng/testing/tests.props @@ -2,11 +2,23 @@ $(MSBuildProjectName) xunit - - Build - $(TestDependsOn);GenerateRunScript;RunTests true + + en + + + + + + + + + @@ -20,23 +32,6 @@ <_withoutCategories Condition="!$(_withCategories.Contains('failing'))">$(_withoutCategories);failing - - - $(NetCoreAppCurrent)-$(Configuration) - $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AppleTestRunner', '$(MobileRunnersDirSuffix)')) - $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AndroidTestRunner', '$(MobileRunnersDirSuffix)')) - $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmTestRunner', '$(MobileRunnersDirSuffix)')) - - $(PackageRID) - true - - - - - - - - - RunnerTemplate.cmd - RunnerTemplate.sh - AppleRunnerTemplate.sh - AndroidRunnerTemplate.sh - WasmRunnerTemplate.sh - - $(MSBuildThisFileDirectory)$(RunScriptInputName) - - RunTests.cmd - RunTests.sh - $([MSBuild]::NormalizePath('$(OutDir)', '$(RunScriptOutputName)')) + $(OutDir) + - %RUNTIME_PATH%\ - $RUNTIME_PATH/ + + $(DotNetTool) + test $(TargetPath) --settings $(OutDir).runsettings + - $(RunScriptHostDir)dotnet.exe - $(RunScriptHostDir)dotnet + + $(DevEnvDir)Extensions\TestPlatform\vstest.console.exe + $(TargetPath) --settings:$(OutDir).runsettings @@ -48,80 +43,8 @@ - - - - - $(RunScriptCommand) %RSP_FILE% - $(RunScriptCommand) $RSP_FILE - - - $([MSBuild]::Escape('$(RunScriptCommand)')) - - - - - $(TestDebugger) $(RunScriptCommand) - $(TestDebugger) /debugexe $(RunScriptCommand) - - - - - - - - - - - - - - - - - - - - "$(RunScriptOutputPath)" - - $(RunTestsCommand) --runtime-path "$(TestHostRootPath.TrimEnd('\/'))" - $(RunTestsCommand) --rsp-file "$(TestRspFile)" - "$(RunScriptOutputPath)" $(AssemblyName) $(TargetArchitecture) - "$(RunScriptOutputPath)" $(JSEngine) $(AssemblyName).dll $(_withoutCategories.Replace(';', ' -notrait category=')) - - - - - - - - - $(OutputPath)$(TestResultsName) - One or more tests failed while running tests from '$(TestProjectName)'. - $(TestRunErrorMessage) Please check $(TestResultsPath) for details! - - - - - - + - - - diff --git a/eng/testing/xunit/xunit.console.targets b/eng/testing/xunit/xunit.console.targets deleted file mode 100644 index 5b71327e96450..0000000000000 --- a/eng/testing/xunit/xunit.console.targets +++ /dev/null @@ -1,87 +0,0 @@ - - - true - testResults.xml - - - - <_depsFileArgument Condition="'$(GenerateDependencyFile)' == 'true'">--depsfile $(AssemblyName).deps.json - "$(RunScriptHost)" exec --runtimeconfig $(AssemblyName).runtimeconfig.json $(_depsFileArgument) xunit.console.dll - xunit.console.exe - - $(RunScriptCommand) $(TargetFileName) - $(RunScriptCommand) -xml $(TestResultsName) - $(RunScriptCommand) -nologo - $(RunScriptCommand) -nocolor - $(RunScriptCommand) -noappdomain - $(RunScriptCommand) -maxthreads 1 - $(RunScriptCommand) -verbose - - - - - $(RunScriptCommand) -method $(XUnitMethodName) - $(RunScriptCommand) -class $(XUnitClassName) - - - $(RunScriptCommand)$(_withCategories.Replace(';', ' -trait category=')) - $(RunScriptCommand)$(_withoutCategories.Replace(';', ' -notrait category=')) - - - $(RunScriptCommand) $(XUnitOptions) - - - - - - - - - - - <_testRunnerConfigDestFile Include="$(TargetDir)xunit.console.exe.config" /> - - - - - - - - - - - - <_xunitConsoleNetCoreExclude Condition="'$(GenerateDependencyFile)' != 'true' and '$(XunitConsoleNetCore21AppPath)' != ''" Include="$([System.IO.Path]::GetDirectoryName('$(XunitConsoleNetCore21AppPath)'))\xunit.console.deps.json" /> - - - - - - - - - - - - diff --git a/eng/testing/xunit/xunit.props b/eng/testing/xunit/xunit.props index 69355a452a48e..eec4cec2516bf 100644 --- a/eng/testing/xunit/xunit.props +++ b/eng/testing/xunit/xunit.props @@ -1,33 +1,13 @@ - - - en - $(MSBuildThisFileDirectory)xunit.runner.json - - - - - - - - - - - - - diff --git a/eng/testing/xunit/xunit.targets b/eng/testing/xunit/xunit.targets index feb429aab6bf4..41dee9fb06ec3 100644 --- a/eng/testing/xunit/xunit.targets +++ b/eng/testing/xunit/xunit.targets @@ -5,21 +5,4 @@ Version="$(NetStandardLibrary20Version)" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'" /> - - - - $(OutDir) - - - - $(DotNetTool) - test $(TargetPath) --settings $(OutDir).runsettings - - - - $(DevEnvDir)Extensions\TestPlatform\vstest.console.exe - $(TargetPath) --settings:$(OutDir).runsettings - - - diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index b0d7ac96df327..74ffb8f04494c 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -38,6 +38,7 @@ $(TestArchiveRuntimeFile) + true $(TestArchiveTestsRoot)**/*.zip $(Configuration) @@ -55,7 +56,7 @@ $(WaitForWorkItemCompletion) - + true sdk @@ -82,13 +83,31 @@ - - dotnet msbuild %HELIX_CORRELATION_PAYLOAD%\test.msbuild - $(HelixCommand) /warnaserror - $(HelixCommand) /p:PackageTestProjectsDir=%HELIX_WORKITEM_PAYLOAD% - $(HelixCommand) /p:RestorePackagesPath=%HELIX_WORKITEM_PAYLOAD%\packages - $(HelixCommand) /p:LocalPackagesPath="%HELIX_CORRELATION_PAYLOAD%\packages\" - + + + + dotnet test %HELIX_WORKITEM_FRIENDLYNAME%.dll --settings .runsettings + $(HelixCommand) -- RunConfiguration.DotNetHostPath="%HELIX_CORRELATION_PAYLOAD%" + dotnet test $HELIX_WORKITEM_FRIENDLYNAME.dll --settings .runsettings + $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD" + + + call RunTests.cmd + $(HelixCommand) --runtime-path %HELIX_CORRELATION_PAYLOAD% + ./RunTests.sh + $(HelixCommand) --runtime-path "$HELIX_CORRELATION_PAYLOAD" + + + + + dotnet msbuild %HELIX_CORRELATION_PAYLOAD%\test.msbuild + $(HelixCommand) /warnaserror + $(HelixCommand) /p:PackageTestProjectsDir=%HELIX_WORKITEM_PAYLOAD% + $(HelixCommand) /p:RestorePackagesPath=%HELIX_WORKITEM_PAYLOAD%\packages + $(HelixCommand) /p:LocalPackagesPath="%HELIX_CORRELATION_PAYLOAD%\packages\" + + + @@ -126,19 +145,6 @@ @(HelixPreCommand) - true - - - - - call RunTests.cmd - $(HelixCommand) --runtime-path %HELIX_CORRELATION_PAYLOAD% - ./RunTests.sh - $(HelixCommand) --runtime-path "$HELIX_CORRELATION_PAYLOAD" From 1e2834f7b251ae7fd652615631ce9f6de8275ef1 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Sat, 25 Jul 2020 22:50:05 +0200 Subject: [PATCH 02/67] Fix GenerateRunScript sequencing --- eng/testing/mobile/runscript.targets | 3 ++- eng/testing/tests.targets | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/testing/mobile/runscript.targets b/eng/testing/mobile/runscript.targets index 413c3b29b082e..a5af9a0a5961b 100644 --- a/eng/testing/mobile/runscript.targets +++ b/eng/testing/mobile/runscript.targets @@ -26,7 +26,8 @@ - + $([MSBuild]::Escape('$(RunScriptCommand)')) diff --git a/eng/testing/tests.targets b/eng/testing/tests.targets index 813dfeeded7c6..29114c4cf816c 100644 --- a/eng/testing/tests.targets +++ b/eng/testing/tests.targets @@ -26,8 +26,7 @@ + AfterTargets="$(ArchiveTestsAfterTargets)"> From 9a37bf5e0a614fb48c905b022722fe972544027d Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Sun, 26 Jul 2020 19:44:47 +0200 Subject: [PATCH 03/67] Update docs and other usages --- .../adding-api-guidelines.md | 2 +- docs/workflow/building/libraries/README.md | 4 +-- .../building/libraries/code-coverage.md | 6 ++-- .../debugging/libraries/debugging-packages.md | 11 +++---- .../debugging/libraries/unix-instructions.md | 2 +- .../libraries/windows-instructions.md | 18 ++---------- .../testing/libraries/filtering-tests.md | 20 ++++++------- .../testing/libraries/testing-android.md | 2 +- .../testing/libraries/testing-apple.md | 2 +- .../testing/libraries/testing-wasm.md | 4 +-- docs/workflow/testing/libraries/testing.md | 29 ++++++++++--------- docs/workflow/testing/mono/testing.md | 2 +- eng/pipelines/libraries/enterprise/linux.yml | 2 +- eng/testing/mobile/outerBuild.targets | 1 + eng/testing/outerBuild.targets | 3 +- .../Net/Http/aspnetcore/ReadMe.SharedCode.md | 4 +-- .../Scripts/Tools/ParallelTestExecution.ps1 | 2 +- .../Net/EnterpriseTests/setup/README.md | 2 +- .../tests/ServiceBaseTests.cs | 2 +- src/libraries/sendtohelixhelp.proj | 17 +++++++++++ src/mono/wasm/Makefile | 8 ++--- 21 files changed, 75 insertions(+), 68 deletions(-) diff --git a/docs/coding-guidelines/adding-api-guidelines.md b/docs/coding-guidelines/adding-api-guidelines.md index b9eba22012015..7362e979a3877 100644 --- a/docs/coding-guidelines/adding-api-guidelines.md +++ b/docs/coding-guidelines/adding-api-guidelines.md @@ -38,7 +38,7 @@ should be added to `net5.0`. [More Information on TargetFrameworks](https://docs **Update tests** - Add new `TargetFramework` to the ```TargetFrameworks```. - Add new test code following [conventions](project-guidelines.md#code-file-naming-conventions) for new files to that are specific to the new target framework. - - To run just the new test targetFramework run `dotnet build .csproj -f /t:Test`. TargetFramework should be chosen only from supported TargetFrameworks. + - To run just the new test targetFramework run `dotnet test .csproj -f `. TargetFramework should be chosen only from supported TargetFrameworks. ## Documentation diff --git a/docs/workflow/building/libraries/README.md b/docs/workflow/building/libraries/README.md index de6969f286582..0a7d14616ddcd 100644 --- a/docs/workflow/building/libraries/README.md +++ b/docs/workflow/building/libraries/README.md @@ -23,7 +23,7 @@ cd tests :: Then inner loop build / test :: (If using Visual Studio, you might run tests inside it instead) -pushd ..\src & dotnet build & popd & dotnet build /t:test +pushd ..\src & dotnet build & popd & dotnet test ``` The instructions for Linux and macOS are essentially the same: @@ -43,7 +43,7 @@ cd src/libraries/System.Text.RegularExpressions cd tests # Then inner loop build / test: -pushd ../src & dotnet build & popd & dotnet build /t:test +pushd ../src & dotnet build & popd & dotnet test ``` The steps above may be all you need to know to make a change. Want more details about what this means? Read on. diff --git a/docs/workflow/building/libraries/code-coverage.md b/docs/workflow/building/libraries/code-coverage.md index d9ab38a2da9d5..7d24d05a12ee4 100644 --- a/docs/workflow/building/libraries/code-coverage.md +++ b/docs/workflow/building/libraries/code-coverage.md @@ -34,9 +34,9 @@ This runs the tests and generates the full code coverage report. The resulting i artifacts\coverage\index.htm -You can also build and test with code coverage for a particular test project rather than for the whole repo with the `/p:Coverage=true` property: +You can also build and test with code coverage for a particular test project rather than for the whole repo with the `--collect:"XPlat Code Coverage"` switch: - dotnet build /t:Test /p:Coverage=true + dotnet test --collect:"XPlat Code Coverage" The results for this one library will then be available in this index.htm file, where $(OutDir) is the directory where the binaries were generated. @@ -44,7 +44,7 @@ The results for this one library will then be available in this index.htm file, For example, to build, test, and get code coverage results for the System.Diagnostics.Debug library, from the root of the repo one can do: - dotnet build src\System.Diagnostics.Debug\tests /t:Test /p:Coverage=true + dotnet test src\System.Diagnostics.Debug\tests --collect:"XPlat Code Coverage" And then once the run completes: diff --git a/docs/workflow/debugging/libraries/debugging-packages.md b/docs/workflow/debugging/libraries/debugging-packages.md index f72887149b7f4..e29298df4df74 100644 --- a/docs/workflow/debugging/libraries/debugging-packages.md +++ b/docs/workflow/debugging/libraries/debugging-packages.md @@ -72,7 +72,7 @@ Build: To validate the content of the nupkg, change the extension to .zip. As before, use an IL disassembler to verify that the right APIs are present within `ref\\contractname.dll` and the right implementations within the `lib\\contractname.dll`. -4. Run the tests from `\tests`: `dotnet build /t:test` +4. Run the tests from `\tests`: `dotnet test` Ensure that the test is referencing the correct pkg. For example: ``` @@ -96,10 +96,11 @@ ResolvePkgProjReferences: To run a test from a single Build Pivot combination, specify all properties and build the `csproj`: ``` -dotnet build System.Net.ServicePoint.Tests.csproj -f netcoreapp2.0 /t:test /p:OuterLoop=true /p:xunitoptions=-showprogress +dotnet test System.Net.ServicePoint.Tests.csproj -f net5.0 /p:OuterLoop=true ``` Will run the test using the following pivot values: * Architecture: AnyCPU -* Flavor: Debug -* OS: Windows_NT -* Target: netstandard2.0 +* Configuration: Debug +* TargetOS: Windows_NT +* TargetFramework: net5.0 +* OuterLoop: true diff --git a/docs/workflow/debugging/libraries/unix-instructions.md b/docs/workflow/debugging/libraries/unix-instructions.md index 95377726237e3..14c11f3ec2151 100644 --- a/docs/workflow/debugging/libraries/unix-instructions.md +++ b/docs/workflow/debugging/libraries/unix-instructions.md @@ -5,7 +5,7 @@ CoreFX can be debugged on unix using both lldb and visual studio code ## Using lldb and SOS -- Run the test using msbuild at least once with `/t:Test`. +- Run the test using the SDK at least once with `dotnet test`. - [Install version 3.9 of lldb](../coreclr/debugging.md#debugging-core-dumps-with-lldb) and launch lldb with dotnet as the process and arguments matching the arguments used when running the test through msbuild. - Load the sos plugin using `plugin load libsosplugin.so`. - Type `soshelp` to get help. You can now use all sos commands like `bpmd`. diff --git a/docs/workflow/debugging/libraries/windows-instructions.md b/docs/workflow/debugging/libraries/windows-instructions.md index 46d916e74da89..06dff13bce913 100644 --- a/docs/workflow/debugging/libraries/windows-instructions.md +++ b/docs/workflow/debugging/libraries/windows-instructions.md @@ -29,19 +29,10 @@ You may need to do this for both x64 and x86 versions. Any application that crashes should now automatically start a WinDBG session. ## Debugging tests -To run a single test from command line: - -* Locate the test binary folder based on the CSPROJ name. - -For example: `src\System.Net.Sockets\tests\Functional\System.Net.Sockets.Tests.csproj` will build and output binaries at `bin\tests\Windows_NT.AnyCPU.Debug\System.Net.Sockets.Tests\netcoreapp1.0`. - -* Execute the test - -Assuming that your repo is at `C:\corefx`: +Assuming that your repo is at `C:\runtime`: ``` -cd C:\corefx\bin\tests\Windows_NT.AnyCPU.Debug\System.Net.Sockets.Tests\netcoreapp1.0 -C:\corefx\bin\tests\Windows_NT.AnyCPU.Debug\System.Net.Sockets.Tests\netcoreapp1.0\CoreRun.exe xunit.console.dll System.Net.Sockets.Tests.dll -xml testResults.xml -notrait category=nonwindowstests -notrait category=OuterLoop -notrait category=failing +dotnet test C:\runtime\src\libraries\System.Net.Sockets\tests ``` * If the test crashes or encounters a `Debugger.Launch()` method call, WinDBG will automatically start and attach to the `CoreRun.exe` process @@ -52,7 +43,7 @@ The following commands will properly configure the debugging extension and fix s .symfix .srcfix .reload -!load C:\corefx\packages\runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR\\tools\sos +!load C:\runtime\coreclr\runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR\\tools\sos ``` _Important_: Pass in the correct path to your SOS extension discovered during the Prerequisites, step 2. @@ -168,6 +159,3 @@ Helper scripts are available at https://github.com/dotnet/runtime/tree/master/sr * `*System.Threading.Tasks.TplEventSource {2e5dba47-a3d2-4d16-8ee0-6671ffdcd7b5}`: Provides an event source for tracing TPL information. * `*System.Threading.Tasks.Parallel.EventSource`: Provides an event source for tracing TPL information. * `*System.Threading.Tasks.Dataflow.DataflowEventSource {16F53577-E41D-43D4-B47E-C17025BF4025}`: Provides an event source for tracing Dataflow information. - -## Notes -* You can find the test invocation command-line by looking at the logs generated after the `dotnet build /t:test` within the test folder. diff --git a/docs/workflow/testing/libraries/filtering-tests.md b/docs/workflow/testing/libraries/filtering-tests.md index 2b1b3d9867b41..27bab894b6cc0 100644 --- a/docs/workflow/testing/libraries/filtering-tests.md +++ b/docs/workflow/testing/libraries/filtering-tests.md @@ -5,13 +5,13 @@ The tests can be filtered based on xunit trait attributes defined in [`Microsoft #### OuterLoopAttribute ```cs -[OuterLoop()] +[OuterLoop] ``` -Tests marked as `OuterLoop` are for scenarios that don't need to run every build. They may take longer than normal tests, cover seldom hit code paths, or require special setup or resources to execute. These tests are excluded by default when testing through `dotnet build` but can be enabled manually by adding the `-testscope outerloop` switch or `/p:TestScope=outerloop` e.g. +Tests marked as `OuterLoop` are for scenarios that don't need to run every build. They may take longer than normal tests, cover seldom hit code paths, or require special setup or resources to execute. These tests are excluded by default when testing through `dotnet test` but can be enabled manually by adding the `-testscope outerloop` switch or `/p:TestScope=outerloop` e.g. ```cmd build -test -testscope outerloop -cd src/System.Text.RegularExpressions/tests && dotnet build /t:Test /p:TestScope=outerloop +dotnet test src/System.Text.RegularExpressions/tests /p:TestScope=outerloop ``` #### PlatformSpecificAttribute @@ -22,17 +22,13 @@ cd src/System.Text.RegularExpressions/tests && dotnet build /t:Test /p:TestScope Use this attribute on test methods to specify that this test may only be run on the specified platforms. This attribute returns the following categories based on platform - `nonwindowstests` for tests that don't run on Windows - `nonlinuxtests` for tests that don't run on Linux -- `nonosxtests` for tests that don't run on OS X +- `nonosxtests` for tests that don't run on macOS **[Available Test Platforms](https://github.com/dotnet/arcade/blob/master/src/Microsoft.DotNet.XUnitExtensions/src/TestPlatforms.cs)** When running tests by building a test project, tests that don't apply to the `TargetOS` are not run. For example, to run Linux-specific tests on a Linux box, use the following command line: ```sh -dotnet build /t:Test /p:TargetOS=Linux -``` -To run all Linux-compatible tests that are failing: -```sh -dotnet build /t:Test /p:TargetOS=Linux /p:WithCategories=failing +dotnet test /p:TargetOS=Linux ``` #### ActiveIssueAttribute @@ -148,9 +144,11 @@ _**A few common examples with the above attributes:**_ - Run all tests acceptable on Windows that are not failing: ```cmd -dotnet build /t:Test /p:TargetOS=Windows_NT +dotnet test /p:TargetOS=Windows_NT ``` - Run all outer loop tests acceptable on OS X that are currently associated with active issues: ```sh -dotnet build /t:Test /p:TargetOS=OSX /p:WithCategories="OuterLoop;failing"" +dotnet test /p:TargetOS=OSX /p:WithCategories="OuterLoop;failing"" ``` + +Note: The `TargetOS` property can usually be omitted as it defaults to the OS. \ No newline at end of file diff --git a/docs/workflow/testing/libraries/testing-android.md b/docs/workflow/testing/libraries/testing-android.md index 5ad1b27f79004..e2f3269c2cd07 100644 --- a/docs/workflow/testing/libraries/testing-android.md +++ b/docs/workflow/testing/libraries/testing-android.md @@ -71,7 +71,7 @@ Make sure an emulator is booted (see `AVD Manager`) or a device is plugged in an ### Running individual test suites The following shows how to run tests for a specific library ``` -./dotnet.sh build /t:Test src/libraries/System.Numerics.Vectors/tests /p:TargetOS=Android /p:TargetArchitecture=x64 +./dotnet.sh test src/libraries/System.Numerics.Vectors/tests /p:TargetOS=Android /p:TargetArchitecture=x64 ``` ### Test App Design diff --git a/docs/workflow/testing/libraries/testing-apple.md b/docs/workflow/testing/libraries/testing-apple.md index 3f99570042065..dca149ef92365 100644 --- a/docs/workflow/testing/libraries/testing-apple.md +++ b/docs/workflow/testing/libraries/testing-apple.md @@ -19,7 +19,7 @@ In order to run the tests on a device you need to specify `DevTeamProvisioning` ### Running individual test suites - The following shows how to run tests for a specific library: ``` -./dotnet.sh build src/libraries/System.Numerics.Vectors/tests /t:Test /p:TargetOS=iOS /p:TargetArchitecture=x64 +./dotnet.sh test src/libraries/System.Numerics.Vectors/tests /p:TargetOS=iOS /p:TargetArchitecture=x64 ``` ### Test App Design diff --git a/docs/workflow/testing/libraries/testing-wasm.md b/docs/workflow/testing/libraries/testing-wasm.md index 7e530859bed44..921012987f9d4 100644 --- a/docs/workflow/testing/libraries/testing-wasm.md +++ b/docs/workflow/testing/libraries/testing-wasm.md @@ -35,14 +35,14 @@ and even run tests one by one for each library: ### Running individual test suites The following shows how to run tests for a specific library ``` -./dotnet.sh build /t:Test src/libraries/System.AppContext/tests /p:TargetOS=Browser /p:TargetArchitecture=wasm /p:Configuration=Release +./dotnet.sh test src/libraries/System.AppContext/tests /p:TargetOS=Browser /p:TargetArchitecture=wasm -c Release ``` ### Running tests using different JavaScript engines It's possible to set a JavaScript engine explicitly by adding `/p:JSEngine` property: ``` -./dotnet.sh build /t:Test src/libraries/System.AppContext/tests /p:TargetOS=Browser /p:TargetArchitecture=wasm /p:Configuration=Release /p:JSEngine=SpiderMonkey +./dotnet.sh test src/libraries/System.AppContext/tests /p:TargetOS=Browser /p:TargetArchitecture=wasm -c Release /p:JSEngine=SpiderMonkey ``` At the moment supported values are: diff --git a/docs/workflow/testing/libraries/testing.md b/docs/workflow/testing/libraries/testing.md index 9ab30e12be41a..b443a37fe116c 100644 --- a/docs/workflow/testing/libraries/testing.md +++ b/docs/workflow/testing/libraries/testing.md @@ -7,59 +7,60 @@ To build the tests and run them you can call the libraries build script. **Examples** - The following shows how to build only the tests but not run them: ``` -build.cmd/sh -subset libs.tests +build.cmd/sh libs.tests ``` - The following builds and runs all tests in release configuration: ``` -build.cmd/sh -subset libs.tests -test -c Release +build.cmd/sh libs.tests -test -c Release ``` - The following example shows how to pass extra msbuild properties to ignore tests ignored in CI: ``` -build.cmd/sh -subset libs.tests -test /p:WithoutCategories=IgnoreForCI +build.cmd/sh libs.tests -test /p:WithoutCategories=IgnoreForCI ``` Unless you specifiy `-testnobuild`, test assemblies are implicitly built when invoking the `Test` action. - The following shows how to only test the libraries without building them ``` -build.cmd/sh -subset libs.tests -test -testnobuild +build.cmd/sh -test -testnobuild ``` ## Running tests on the command line -To build tests you need to specify the `test` subset when invoking build.cmd/sh: `build.cmd/sh -subset libs.tests`. +To build tests you need to specify the `libs.tests` subset when invoking build.cmd/sh: `build.cmd/sh libs.tests`. -The easiest (and recommended) way to build and run the tests for a specific library, is to invoke the `Test` target on that library: +The easiest (and recommended) way to build and run the tests for a specific library, is to invoke `dotnet test` on that library: ```cmd -cd src\libraries\System.Collections.Immutable\tests -dotnet build /t:Test +dotnet test src\libraries\System.Collections.Immutable\tests ``` -It is possible to pass parameters to the underlying xunit runner via the `XUnitOptions` parameter, e.g.: +It is possible to pass parameters to the underlying VSTest runner, e.g.: ```cmd -dotnet build /t:Test /p:XUnitOptions="-class Test.ClassUnderTests" +dotnet test --filter Test.ClassUnderTests ``` +The available arguments for `dotnet test` are documented [here](https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-test) and advanced filtering options can be found [here](https://docs.microsoft.com/en-us/dotnet/core/testing/selective-unit-tests?pivots=xunit). + There may be multiple projects in some directories so you may need to specify the path to a specific test project to get it to build and run the tests. #### Running a single test on the command line -To quickly run or debug a single test from the command line, set the XunitMethodName property, e.g.: +To quickly run or debug a single test from the command line, supply a filter argument value. property, e.g.: ```cmd -dotnet build /t:Test /p:XunitMethodName={FullyQualifiedNamespace}.{ClassName}.{MethodName} +dotnet test --filter {FullyQualifiedNamespace}.{ClassName}.{MethodName} ``` #### Running outer loop tests To run all tests, including "outer loop" tests (which are typically slower and in some test suites less reliable, but which are more comprehensive): ```cmd -dotnet build /t:Test /p:Outerloop=true +dotnet test /p:Outerloop=true ``` #### Running tests on a different target framework Each test project can potentially have multiple target frameworks. There are some tests that might be OS-specific, or might be testing an API that is available only on some target frameworks, so the `TargetFrameworks` property specifies the valid target frameworks. By default we will build and run only the default build target framework which is `net5.0`. The rest of the `TargetFrameworks` will need to be built and ran by specifying the `BuildTargetFramework` option, e.g.: ```cmd -dotnet build src\libraries\System.Runtime\tests\System.Runtime.Tests.csproj /p:BuildTargetFramework=net472 +dotnet test -f net48 src\libraries\System.Text.RegularExpressions\tests ``` diff --git a/docs/workflow/testing/mono/testing.md b/docs/workflow/testing/mono/testing.md index 1bffa1de3389b..c4f7a5e4339f0 100644 --- a/docs/workflow/testing/mono/testing.md +++ b/docs/workflow/testing/mono/testing.md @@ -32,7 +32,7 @@ build.cmd /p:RuntimeFlavor=mono 3. Run the tests ``` -dotnet build /t:Test /p:RuntimeFlavor=mono +dotnet test /p:RuntimeFlavor=mono ``` # Patching Local dotnet (.dotnet-mono) diff --git a/eng/pipelines/libraries/enterprise/linux.yml b/eng/pipelines/libraries/enterprise/linux.yml index caf5d91164ee7..9f0346b1b6fd7 100644 --- a/eng/pipelines/libraries/enterprise/linux.yml +++ b/eng/pipelines/libraries/enterprise/linux.yml @@ -26,7 +26,7 @@ variables: - name: enterpriseTestsSetup value: $(sourcesRoot)/Common/tests/System/Net/EnterpriseTests/setup - name: containerRunTestsCommand - value: /repo/dotnet.sh build /t:test + value: /repo/dotnet.sh test - name: containerLibrariesRoot value: /repo/src/libraries diff --git a/eng/testing/mobile/outerBuild.targets b/eng/testing/mobile/outerBuild.targets index 370e7d67bf07c..345d1c13496d1 100644 --- a/eng/testing/mobile/outerBuild.targets +++ b/eng/testing/mobile/outerBuild.targets @@ -1,4 +1,5 @@ + diff --git a/eng/testing/outerBuild.targets b/eng/testing/outerBuild.targets index d048c04e7385d..f7f7846753cfb 100644 --- a/eng/testing/outerBuild.targets +++ b/eng/testing/outerBuild.targets @@ -1,5 +1,6 @@ - + + diff --git a/src/libraries/Common/src/System/Net/Http/aspnetcore/ReadMe.SharedCode.md b/src/libraries/Common/src/System/Net/Http/aspnetcore/ReadMe.SharedCode.md index eb86cd931280e..aa570da940b0c 100644 --- a/src/libraries/Common/src/System/Net/Http/aspnetcore/ReadMe.SharedCode.md +++ b/src/libraries/Common/src/System/Net/Http/aspnetcore/ReadMe.SharedCode.md @@ -20,8 +20,8 @@ dotnet/AspNetCore code paths: - `PS D:\github\dotnet\src\libraries\System.Net.Http\src> dotnet build` ### Running dotnet/runtime tests: -- `PS D:\github\runtime\src\libraries\Common\tests> dotnet build /t:test` -- `PS D:\github\runtime\src\libraries\System.Net.Http\tests\UnitTests> dotnet build /t:test` +- `PS D:\github\runtime\src\libraries\Common\tests> dotnet test` +- `PS D:\github\runtime\src\libraries\System.Net.Http\tests\UnitTests> dotnet test` ## Building dotnet/AspNetCore code: - https://github.com/dotnet/AspNetCore/blob/master/docs/BuildFromSource.md diff --git a/src/libraries/Common/tests/Scripts/Tools/ParallelTestExecution.ps1 b/src/libraries/Common/tests/Scripts/Tools/ParallelTestExecution.ps1 index df8b8b3b5c0f9..3b41fbe43d30b 100644 --- a/src/libraries/Common/tests/Scripts/Tools/ParallelTestExecution.ps1 +++ b/src/libraries/Common/tests/Scripts/Tools/ParallelTestExecution.ps1 @@ -13,7 +13,7 @@ function BuildAndTestBinary { - $output = (msbuild /t:test /p:OuterLoop=true) + $output = (dotnet test /p:OuterLoop=true) if ($lastexitcode -ne 0) { throw "Build/test failed." diff --git a/src/libraries/Common/tests/System/Net/EnterpriseTests/setup/README.md b/src/libraries/Common/tests/System/Net/EnterpriseTests/setup/README.md index 24a1db60f5a21..7105933eeaa87 100644 --- a/src/libraries/Common/tests/System/Net/EnterpriseTests/setup/README.md +++ b/src/libraries/Common/tests/System/Net/EnterpriseTests/setup/README.md @@ -59,7 +59,7 @@ Now you can run the enterprise tests. Currently, there are tests for System.Net. ```bash cd /repo/src/libraries/System.Net.Http/tests/EnterpriseTests -/repo/dotnet.sh build /t:test +/repo/dotnet.sh test ``` You can exit from the container bash shell: diff --git a/src/libraries/System.ServiceProcess.ServiceController/tests/ServiceBaseTests.cs b/src/libraries/System.ServiceProcess.ServiceController/tests/ServiceBaseTests.cs index da535fafea8e7..b19d080b381f1 100644 --- a/src/libraries/System.ServiceProcess.ServiceController/tests/ServiceBaseTests.cs +++ b/src/libraries/System.ServiceProcess.ServiceController/tests/ServiceBaseTests.cs @@ -41,7 +41,7 @@ private void AssertExpectedProperties(ServiceController testServiceController) // [Fact] // To cleanup lingering Test Services uncomment the Fact attribute, make it public and run the following command - // dotnet build /t:test /p:XunitMethodName=System.ServiceProcess.Tests.ServiceBaseTests.Cleanup /p:OuterLoop=true + // dotnet test --filter System.ServiceProcess.Tests.ServiceBaseTests.Cleanup /p:OuterLoop=true // Remember to comment out the Fact again before running tests otherwise it will cleanup tests running in parallel // and cause them to fail. private void Cleanup() diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 74ffb8f04494c..466da8aede430 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -147,6 +147,23 @@ @(HelixPreCommand) + + + + dotnet test %HELIX_WORKITEM_FRIENDLYNAME%.dll --settings .runsettings + $(HelixCommand) -- RunConfiguration.DotNetHostPath="%HELIX_CORRELATION_PAYLOAD%" + dotnet test $HELIX_WORKITEM_FRIENDLYNAME.dll --settings .runsettings + $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD" + + + call RunTests.cmd --runtime-path %HELIX_CORRELATION_PAYLOAD% + $(HelixCommand) --runtime-path %HELIX_CORRELATION_PAYLOAD% + ./RunTests.sh --runtime-path "$HELIX_CORRELATION_PAYLOAD" + $(HelixCommand) --runtime-path "$HELIX_CORRELATION_PAYLOAD" + + + + diff --git a/src/mono/wasm/Makefile b/src/mono/wasm/Makefile index 4b8c6ade48dac..2679bc45d956e 100644 --- a/src/mono/wasm/Makefile +++ b/src/mono/wasm/Makefile @@ -135,14 +135,14 @@ build-tasks: $(DOTNET) build $(TOP)/tools-local/tasks/mobile.tasks/WasmBuildTasks run-tests-v8-%: - PATH="$(JSVU):$(PATH)" $(DOTNET) build $(TOP)/src/libraries/$*/tests/ /t:Test /p:TargetOS=Browser /p:TargetArchitecture=wasm /p:Configuration=$(CONFIG) /p:JSEngine=V8 $(MSBUILD_ARGS) + PATH="$(JSVU):$(PATH)" $(DOTNET) test $(TOP)/src/libraries/$*/tests/ /p:TargetOS=Browser /p:TargetArchitecture=wasm -c $(CONFIG) /p:JSEngine=V8 $(MSBUILD_ARGS) run-tests-sm-%: - PATH="$(JSVU):$(PATH)" $(DOTNET) build $(TOP)/src/libraries/$*/tests/ /t:Test /p:TargetOS=Browser /p:TargetArchitecture=wasm /p:Configuration=$(CONFIG) /p:JSEngine=SpiderMonkey $(MSBUILD_ARGS) + PATH="$(JSVU):$(PATH)" $(DOTNET) test $(TOP)/src/libraries/$*/tests/ /p:TargetOS=Browser /p:TargetArchitecture=wasm -c $(CONFIG) /p:JSEngine=SpiderMonkey $(MSBUILD_ARGS) run-tests-jsc-%: - PATH="$(JSVU):$(PATH)" $(DOTNET) build $(TOP)/src/libraries/$*/tests/ /t:Test /p:TargetOS=Browser /p:TargetArchitecture=wasm /p:Configuration=$(CONFIG) /p:JSEngine=JavaScriptCore $(MSBUILD_ARGS) + PATH="$(JSVU):$(PATH)" $(DOTNET) test $(TOP)/src/libraries/$*/tests/ /p:TargetOS=Browser /p:TargetArchitecture=wasm -c $(CONFIG) /p:JSEngine=JavaScriptCore $(MSBUILD_ARGS) run-tests-%: - PATH="$(JSVU):$(PATH)" $(DOTNET) build $(TOP)/src/libraries/$*/tests/ /t:Test /p:TargetOS=Browser /p:TargetArchitecture=wasm /p:Configuration=$(CONFIG) $(MSBUILD_ARGS) + PATH="$(JSVU):$(PATH)" $(DOTNET) test $(TOP)/src/libraries/$*/tests/ /p:TargetOS=Browser /p:TargetArchitecture=wasm /p:Configuration=$(CONFIG) $(MSBUILD_ARGS) build-debugger-test-app: $(DOTNET) build --configuration debug --nologo /p:TargetArchitecture=wasm /p:TargetOS=Browser /p:Configuration=Debug /p:RuntimeConfiguration=$(CONFIG) $(TOP)/src/mono/wasm/debugger/tests From c255ed72a713a5f619e2cc9521224ccb4627349e Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Sun, 26 Jul 2020 23:32:51 +0200 Subject: [PATCH 04/67] fixessss --- src/libraries/sendtohelixhelp.proj | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 466da8aede430..ff26532fb3228 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -52,6 +52,7 @@ $(BuildSettings)- $(TestRunNamePrefix)$(TestRunNamePrefixSuffix)- $(TestRunNamePrefix)$(Scenario)- + packaging- $(WaitForWorkItemCompletion) @@ -61,7 +62,6 @@ true sdk - packaging- $([System.IO.File]::ReadAllText('$(RepoRoot)global.json')) $([System.Text.RegularExpressions.Regex]::Match($(GlobalJsonContent), '(%3F<="dotnet": ").*(%3F=")')) @@ -156,6 +156,11 @@ $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD" + call RunTests.cmd --runtime-path %HELIX_CORRELATION_PAYLOAD% $(HelixCommand) --runtime-path %HELIX_CORRELATION_PAYLOAD% ./RunTests.sh --runtime-path "$HELIX_CORRELATION_PAYLOAD" From c2a244cfe1cb560bf8a59b362b07fd17f6d83f76 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Sun, 26 Jul 2020 23:38:19 +0200 Subject: [PATCH 05/67] better syntax --- eng/testing/mobile/outerBuild.targets | 8 ++++---- eng/testing/outerBuild.targets | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/eng/testing/mobile/outerBuild.targets b/eng/testing/mobile/outerBuild.targets index 345d1c13496d1..5b54061410550 100644 --- a/eng/testing/mobile/outerBuild.targets +++ b/eng/testing/mobile/outerBuild.targets @@ -1,8 +1,8 @@ - - + - + Targets="Test" + BuildInParallel="$(BuildAllProjects)" /> \ No newline at end of file diff --git a/eng/testing/outerBuild.targets b/eng/testing/outerBuild.targets index f7f7846753cfb..e99524b4db479 100644 --- a/eng/testing/outerBuild.targets +++ b/eng/testing/outerBuild.targets @@ -1,8 +1,8 @@ - - + - + Targets="VSTest" + BuildInParallel="$(BuildAllProjects)" /> \ No newline at end of file From 8902245f5ad3850739a66f9bed5932a42feb73df Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Mon, 27 Jul 2020 00:24:53 +0200 Subject: [PATCH 06/67] runsettings file path fix --- src/libraries/sendtohelixhelp.proj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index ff26532fb3228..7d6520633e1e0 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -150,9 +150,9 @@ - dotnet test %HELIX_WORKITEM_FRIENDLYNAME%.dll --settings .runsettings + dotnet test %HELIX_WORKITEM_FRIENDLYNAME%.dll --settings %HELIX_WORKITEM_ROOT%\.runsettings $(HelixCommand) -- RunConfiguration.DotNetHostPath="%HELIX_CORRELATION_PAYLOAD%" - dotnet test $HELIX_WORKITEM_FRIENDLYNAME.dll --settings .runsettings + dotnet test $HELIX_WORKITEM_FRIENDLYNAME.dll --settings $HELIX_WORKITEM_ROOT/.runsettings $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD" From c3e46558c82220c7131e60ea443c379b3585316b Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Mon, 27 Jul 2020 00:33:03 +0200 Subject: [PATCH 07/67] DotNetHostPath fix --- src/libraries/sendtohelixhelp.proj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 7d6520633e1e0..66a8ff8763543 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -151,9 +151,9 @@ dotnet test %HELIX_WORKITEM_FRIENDLYNAME%.dll --settings %HELIX_WORKITEM_ROOT%\.runsettings - $(HelixCommand) -- RunConfiguration.DotNetHostPath="%HELIX_CORRELATION_PAYLOAD%" + $(HelixCommand) -- RunConfiguration.DotNetHostPath="%HELIX_CORRELATION_PAYLOAD%\dotnet.exe" dotnet test $HELIX_WORKITEM_FRIENDLYNAME.dll --settings $HELIX_WORKITEM_ROOT/.runsettings - $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD" + $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD/dotnet" - true + true true diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 66a8ff8763543..1754fc462fb13 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -150,9 +150,9 @@ - dotnet test %HELIX_WORKITEM_FRIENDLYNAME%.dll --settings %HELIX_WORKITEM_ROOT%\.runsettings + dotnet test %HELIX_WORKITEM_FRIENDLYNAME%.dll --settings .runsettings $(HelixCommand) -- RunConfiguration.DotNetHostPath="%HELIX_CORRELATION_PAYLOAD%\dotnet.exe" - dotnet test $HELIX_WORKITEM_FRIENDLYNAME.dll --settings $HELIX_WORKITEM_ROOT/.runsettings + dotnet test $HELIX_WORKITEM_FRIENDLYNAME.dll --settings .runsettings $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD/dotnet" From 9410004300e3fdb04e792634e8a43f9e46183373 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Mon, 27 Jul 2020 10:31:43 +0200 Subject: [PATCH 09/67] Fix casing of outerBuild --- eng/testing/mobile/tests.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/testing/mobile/tests.targets b/eng/testing/mobile/tests.targets index 7c073558bdb09..bf1083afbc56e 100644 --- a/eng/testing/mobile/tests.targets +++ b/eng/testing/mobile/tests.targets @@ -1,6 +1,6 @@ - + From b44b1db65817edebcbf18e27953e6974c9779620 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Mon, 27 Jul 2020 11:54:15 +0200 Subject: [PATCH 10/67] Respect MonoEnvOptions --- eng/testing/.runsettings | 3 +++ eng/testing/runsettings.targets | 1 + 2 files changed, 4 insertions(+) diff --git a/eng/testing/.runsettings b/eng/testing/.runsettings index 55fe5be499705..52ea2b6a0a592 100644 --- a/eng/testing/.runsettings +++ b/eng/testing/.runsettings @@ -18,6 +18,9 @@ $$TESTCASEFILTER$$ $$DOTNETHOSTPATH$$ + + $$MONO_ENV_OPTIONS$$ + diff --git a/eng/testing/runsettings.targets b/eng/testing/runsettings.targets index 10e6defb1d206..aab18d83593a0 100644 --- a/eng/testing/runsettings.targets +++ b/eng/testing/runsettings.targets @@ -32,6 +32,7 @@ .Replace('$$COVERAGE_EXCLUDEBYFILE$$', '$(CoverageExcludeByFileFilter)') .Replace('$$COVERAGE_INCLUDEDIRECTORY$$', '$(CoverageIncludeDirectoryFilter)') .Replace('$$TARGETPLATFORM$$', '$(TargetArchitecture)') + .Replace('$$MONO_ENV_OPTIONS$$', '$(MonoEnvOptions)') .Replace('$$DISABLEPARALLELIZATION$$', '$([MSBuild]::ValueOrDefault('$(TestDisableParallelization)', 'false'))') .Replace('$$DISABLEAPPDOMAIN$$', '$([MSBuild]::ValueOrDefault('$(TestDisableAppDomain)', 'false'))') .Replace('$$TESTCASEFILTER$$', '$(_testFilter)') From 2d43525e7e3697e99ccc80a4a295e9eb8016a06c Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Mon, 27 Jul 2020 12:39:32 +0200 Subject: [PATCH 11/67] Respect MonoEnvOptions correctly --- eng/testing/.runsettings | 2 +- eng/testing/runsettings.targets | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/eng/testing/.runsettings b/eng/testing/.runsettings index 52ea2b6a0a592..4b51f56abefb4 100644 --- a/eng/testing/.runsettings +++ b/eng/testing/.runsettings @@ -19,7 +19,7 @@ $$TESTCASEFILTER$$ $$DOTNETHOSTPATH$$ - $$MONO_ENV_OPTIONS$$ + $$MONO_ENV_OPTIONS$$ diff --git a/eng/testing/runsettings.targets b/eng/testing/runsettings.targets index aab18d83593a0..2464e6ad78e2d 100644 --- a/eng/testing/runsettings.targets +++ b/eng/testing/runsettings.targets @@ -28,6 +28,9 @@ $([System.IO.File]::ReadAllText('$(RunSettingsInputFilePath)')) $(RunSettingsFileContent.Replace('$$MAXCPUCOUNT$$', '1')) $(RunSettingsFileContent.Replace('$$MAXCPUCOUNT$$', '0')) + + $(RunSettingsFileContent.Replace('$$MONO_ENV_OPTIONS$$', '$(MonoEnvOptions)')) + $(RunSettingsFileContent.Replace('$$MONO_ENV_OPTIONS$$', '')) $(RunSettingsFileContent.Replace('$$COVERAGE_INCLUDE$$', '$(CoverageIncludeFilter)') .Replace('$$COVERAGE_EXCLUDEBYFILE$$', '$(CoverageExcludeByFileFilter)') .Replace('$$COVERAGE_INCLUDEDIRECTORY$$', '$(CoverageIncludeDirectoryFilter)') From a6cfd27e2a6dd27314c53a92d13ebadedab1eb23 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Thu, 30 Jul 2020 20:34:03 +0200 Subject: [PATCH 12/67] Use the publish output instead of the bin --- eng/Subsets.props | 2 +- eng/testing/mobile/tests.targets | 20 +++++++++++++------- eng/testing/tests.targets | 22 +++++++++++----------- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/eng/Subsets.props b/eng/Subsets.props index a5901268471e4..7937a317398c7 100644 --- a/eng/Subsets.props +++ b/eng/Subsets.props @@ -227,7 +227,7 @@ - + diff --git a/eng/testing/mobile/tests.targets b/eng/testing/mobile/tests.targets index bf1083afbc56e..3ff1b0f500fc0 100644 --- a/eng/testing/mobile/tests.targets +++ b/eng/testing/mobile/tests.targets @@ -39,7 +39,8 @@ TaskName="AndroidAppBuilderTask" AssemblyFile="$(AndroidAppBuilderTasksAssemblyPath)" /> - + arm64-v8a armeabi-v7a @@ -85,7 +86,8 @@ - + @@ -147,7 +149,8 @@ - + @@ -191,8 +194,11 @@ - + diff --git a/eng/testing/tests.targets b/eng/testing/tests.targets index 29114c4cf816c..717575f52cfb7 100644 --- a/eng/testing/tests.targets +++ b/eng/testing/tests.targets @@ -14,23 +14,23 @@ $(TargetPath) --settings:$(OutDir).runsettings - - PrepareForRun - - - - + + Condition="'$(IsCrossTargetingBuild)' != 'true' and + '$(IgnoreForCI)' != 'true' and + ('$(TargetsMobile)' != 'true' or + '$(TargetOS)' == 'Browser')" + AfterTargets="Publish"> - <_ZipSourceDirectory>$(OutDir) + <_ZipSourceDirectory>$(PublishDir) <_ZipSourceDirectory Condition="'$(TargetOS)' == 'Browser'">$(BundleDir) From 043c74f29669f549917e7d37930e0582a698668e Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Fri, 31 Jul 2020 15:21:23 +0200 Subject: [PATCH 13/67] Update docs/workflow/testing/libraries/testing.md Co-authored-by: Maxim Lipnin --- docs/workflow/testing/libraries/testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/workflow/testing/libraries/testing.md b/docs/workflow/testing/libraries/testing.md index b443a37fe116c..c043a15370e02 100644 --- a/docs/workflow/testing/libraries/testing.md +++ b/docs/workflow/testing/libraries/testing.md @@ -46,7 +46,7 @@ There may be multiple projects in some directories so you may need to specify th #### Running a single test on the command line -To quickly run or debug a single test from the command line, supply a filter argument value. property, e.g.: +To quickly run or debug a single test from the command line, supply a filter argument value, e.g.: ```cmd dotnet test --filter {FullyQualifiedNamespace}.{ClassName}.{MethodName} ``` From 5084f08e074c0e784aaf05ff18e841eea268703a Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Sat, 1 Aug 2020 17:53:23 +0200 Subject: [PATCH 14/67] Code cleanup --- eng/testing/coverage.targets | 5 +- eng/testing/mobile/WasmRunnerTemplate.sh | 15 ++- eng/testing/mobile/runscript.targets | 75 ------------ eng/testing/mobile/tests.targets | 73 ++++++++--- eng/testing/tests.props | 6 - eng/testing/xunit/xunit.runner.json | 2 - src/libraries/tests.proj | 14 ++- .../installer.tasks/GenerateRunScript.cs | 113 ------------------ 8 files changed, 77 insertions(+), 226 deletions(-) delete mode 100644 eng/testing/mobile/runscript.targets delete mode 100644 tools-local/tasks/installer.tasks/GenerateRunScript.cs diff --git a/eng/testing/coverage.targets b/eng/testing/coverage.targets index 6db15706598a6..6c08ae7dbbb7e 100644 --- a/eng/testing/coverage.targets +++ b/eng/testing/coverage.targets @@ -1,4 +1,8 @@ + + + + - Build - $(TestDependsOn);RunTests - - - - - - - - - - AppleRunnerTemplate.sh - AndroidRunnerTemplate.sh - WasmRunnerTemplate.sh - - $(MSBuildThisFileDirectory)$(RunScriptInputName) - - RunTests.cmd - RunTests.sh - $([MSBuild]::NormalizePath('$(OutDir)', '$(RunScriptOutputName)')) - - - - - - - $([MSBuild]::Escape('$(RunScriptCommand)')) - - - - - - - - - - "$(RunScriptOutputPath)" - - $(RunTestsCommand) --runtime-path "$(TestHostRootPath.TrimEnd('\/'))" - $(RunTestsCommand) --rsp-file "$(TestRspFile)" - "$(RunScriptOutputPath)" $(AssemblyName) $(TargetArchitecture) - "$(RunScriptOutputPath)" $(JSEngine) $(AssemblyName).dll $(_withoutCategories.Replace(';', ' -notrait category=')) - - - - - - - - - $(OutputPath)$(TestResultsName) - One or more tests failed while running tests from '$(TestProjectName)'. - $(TestRunErrorMessage) Please check $(TestResultsPath) for details! - - - - - - - - - \ No newline at end of file diff --git a/eng/testing/mobile/tests.targets b/eng/testing/mobile/tests.targets index 3ff1b0f500fc0..b260a63b17790 100644 --- a/eng/testing/mobile/tests.targets +++ b/eng/testing/mobile/tests.targets @@ -1,37 +1,37 @@ - - - + + Build + $(TestDependsOn);RunTests + $(NetCoreAppCurrent)-$(Configuration) $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AppleTestRunner', '$(MobileRunnersDirSuffix)')) $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AndroidTestRunner', '$(MobileRunnersDirSuffix)')) $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmTestRunner', '$(MobileRunnersDirSuffix)')) - - $([MSBuild]::NormalizeDirectory('$(OutDir)', 'AppBundle')) + + AppleRunnerTemplate.sh + AndroidRunnerTemplate.sh + WasmRunnerTemplate.sh + $(MSBuildThisFileDirectory)$(RunScriptInputName) + + RunTests.cmd + RunTests.sh $([MSBuild]::NormalizePath('$(BundleDir)', '$(RunScriptOutputName)')) - true - V8 - $(JSEngineArgs) --engine-arg=--stack-trace-limit=1000 + true $(PackageRID) true - - - - - - $HARNESS_RUNNER wasm test --engine=$(JSEngine) $(JSEngineArgs) --js-file=runtime.js -v --output-directory=$XHARNESS_OUT -- --run WasmTestRunner.dll $(AssemblyName).dll - - - - - + @@ -201,4 +201,39 @@ BeforeTargets="ArchiveTests" AfterTargets="Publish" Condition="'$(IsCrossTargetingBuild)' != 'true'" /> + + + + "$(RunScriptOutputPath)" + $(RunTestsCommand) $(AssemblyName) $(TargetArchitecture) + $(RunTestsCommand) $(AssemblyName) "$(JSEngine)" "$(JSEngineArgs)" + + TARGET_ARCH=$(TargetArchitecture) + $(RunTestsEnvironmentVariables);MONO_ENV_OPTIONS=$(MonoEnvOptions) + + + + + + + + + $(OutputPath)$(TestResultsName) + One or more tests failed while running tests from '$(TestProjectName)'. + $(TestRunErrorMessage) Please check $(TestResultsPath) for details! + + + + + + + + + + diff --git a/eng/testing/tests.props b/eng/testing/tests.props index c5cd06750df3d..99c63d1858741 100644 --- a/eng/testing/tests.props +++ b/eng/testing/tests.props @@ -17,14 +17,12 @@ around a dupliate type between System.Runtime.Serialization.Formatters and Newtonsoft.Json. --> - <_withCategories Condition="'$(WithCategories)' != ''">;$(WithCategories.Trim(';')) <_withoutCategories Condition="'$(WithoutCategories)' != ''">;$(WithoutCategories.Trim(';')) - all <_withCategories Condition="'$(TestScope)' == 'outerloop'">$(_withCategories);OuterLoop <_withoutCategories Condition="'$(ArchiveTests)' == 'true'">$(_withoutCategories);IgnoreForCI @@ -32,9 +30,5 @@ <_withoutCategories Condition="!$(_withCategories.Contains('failing'))">$(_withoutCategories);failing - diff --git a/eng/testing/xunit/xunit.runner.json b/eng/testing/xunit/xunit.runner.json index a879e62a4379e..f1699cce5f4df 100644 --- a/eng/testing/xunit/xunit.runner.json +++ b/eng/testing/xunit/xunit.runner.json @@ -1,6 +1,4 @@ { - "diagnosticMessages": true, - "longRunningTestSeconds": 120, "shadowCopy": false, "preEnumerateTheories": false } \ No newline at end of file diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index 2e1c93942657a..c2a532dfb5f10 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -1,18 +1,21 @@ - - false ErrorAndContinue BuildAllProjects=true - $(ArtifactsBinDir)\*.Tests\**\coverage.opencover.xml - $(ArtifactsDir)coverage - true + true false false true + + + false + $(ArtifactsBinDir)\*.Tests\**\coverage.opencover.xml + $(ArtifactsDir)coverage + true + @@ -132,5 +135,4 @@ DependsOnTargets="GenerateCoverageReport" Condition="'$(TestAssemblies)' == 'true' and '$(Coverage)' == 'true'" /> - diff --git a/tools-local/tasks/installer.tasks/GenerateRunScript.cs b/tools-local/tasks/installer.tasks/GenerateRunScript.cs deleted file mode 100644 index a2629768aa202..0000000000000 --- a/tools-local/tasks/installer.tasks/GenerateRunScript.cs +++ /dev/null @@ -1,113 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; -using System; -using System.IO; -using System.Text; - -namespace Microsoft.DotNet.Build.Tasks -{ - public class GenerateRunScript : Task - { - [Required] - public string[] RunCommands { get; set; } - - [Required] - public string TemplatePath { get; set; } - - [Required] - public string OutputPath { get; set; } - - public override bool Execute() - { - if (RunCommands.Length == 0) - { - Log.LogError("Please provide at least one test command to execute via the RunCommands property."); - return false; - } - - if (!File.Exists(TemplatePath)) - { - Log.LogError($"Runner script template {TemplatePath} was not found."); - return false; - } - - string templateContent = File.ReadAllText(TemplatePath); - Directory.CreateDirectory(Path.GetDirectoryName(OutputPath)); - - Log.LogMessage($"Run commands = {string.Join(Environment.NewLine, RunCommands)}"); - - string extension = Path.GetExtension(Path.GetFileName(OutputPath)).ToLowerInvariant(); - switch (extension) - { - case ".sh": - case ".cmd": - case ".bat": - WriteRunScript(templateContent, extension); - break; - default: - Log.LogError($"Generating runner scripts with extension '{extension}' is not supported."); - return false; - } - - return true; - } - - private void WriteRunScript(string templateContent, string extension) - { - bool isUnix = extension == ".sh"; - string lineFeed = isUnix ? "\n" : "\r\n"; - - var runCommandsBuilder = new StringBuilder(); - for (int i = 0; i < RunCommands.Length; i++) - { - runCommandsBuilder.Append(RunCommands[i]); - if (i < RunCommands.Length - 1) - { - runCommandsBuilder.Append(lineFeed); - } - } - templateContent = templateContent.Replace("[[RunCommands]]", runCommandsBuilder.ToString()); - - var runCommandEchoesBuilder = new StringBuilder(); - foreach (string runCommand in RunCommands) - { - // Escape backtick and question mark characters to avoid running commands instead of echo'ing them. - string sanitizedRunCommand = runCommand.Replace("`", "\\`") - .Replace("?", "\\") - .Replace("\r","") - .Replace("\n"," ") - .Replace("&", "^&") - .Replace(">", "^>"); - - if (isUnix) - { - // Remove parentheses and quotes from echo command before wrapping it in quotes to avoid errors on Linux. - sanitizedRunCommand = "\"" + sanitizedRunCommand.Replace("\"", "") - .Replace("(", "") - .Replace(")", "") + "\""; - } - - runCommandEchoesBuilder.Append($"echo {sanitizedRunCommand}{lineFeed}"); - } - templateContent = templateContent.Replace("[[RunCommandsEcho]]", runCommandEchoesBuilder.ToString()); - - if (isUnix) - { - // Just in case any Windows EOLs have made it in by here, clean any up. - templateContent = templateContent.Replace("\r\n", "\n"); - } - - using (StreamWriter sw = new StreamWriter(new FileStream(OutputPath, FileMode.Create))) - { - sw.NewLine = lineFeed; - sw.Write(templateContent); - sw.WriteLine(); - } - - Log.LogMessage($"Wrote {extension} run script to {OutputPath}"); - } - } -} \ No newline at end of file From 556937c30e6105f320b50a25db5e3f650073426c Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Wed, 26 Aug 2020 10:28:20 +0200 Subject: [PATCH 15/67] set VSTEST_DUMP_PATH --- src/libraries/sendtohelixhelp.proj | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 1754fc462fb13..de81208154df6 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -97,6 +97,11 @@ ./RunTests.sh $(HelixCommand) --runtime-path "$HELIX_CORRELATION_PAYLOAD" + + + + + From 1a2f4e1e9721c69d59c15bfef8c78cbde2ebd122 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Thu, 27 Aug 2020 11:05:46 +0200 Subject: [PATCH 16/67] update helix variable --- src/libraries/sendtohelixhelp.proj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index de81208154df6..f16dd0f843cf3 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -99,8 +99,8 @@ - - + + From 3a05f4db3c88b365a1cea7399ca6b421e32bfb3d Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Thu, 10 Sep 2020 16:50:20 +0200 Subject: [PATCH 17/67] Progress --- eng/build.sh | 2 +- eng/testing/coverage.targets | 4 +-- eng/testing/mobile/AppleRunnerTemplate.sh | 3 ++- eng/testing/mobile/tests.targets | 1 - eng/testing/tests.props | 1 - src/libraries/externals.csproj | 2 +- src/libraries/sendtohelixhelp.proj | 28 ++------------------ src/libraries/tests.proj | 32 +++++++++++++---------- 8 files changed, 26 insertions(+), 47 deletions(-) diff --git a/eng/build.sh b/eng/build.sh index 47c02964f1e61..cb6a99412c3d6 100755 --- a/eng/build.sh +++ b/eng/build.sh @@ -298,7 +298,7 @@ while [[ $# > 0 ]]; do ;; -coverage) - arguments="$arguments /p:Coverage=true" + arguments="$arguments /p:VSTestCollect='XPlat Code Coverage'" shift 1 ;; diff --git a/eng/testing/coverage.targets b/eng/testing/coverage.targets index 6c08ae7dbbb7e..c4a49aebd85a7 100644 --- a/eng/testing/coverage.targets +++ b/eng/testing/coverage.targets @@ -39,7 +39,7 @@ @@ -63,7 +63,7 @@ --> + Condition="'$(VSTestCollect.ToLower())' == 'xplat code coverage'"> diff --git a/eng/testing/mobile/AppleRunnerTemplate.sh b/eng/testing/mobile/AppleRunnerTemplate.sh index b78bff38d867a..66bcb9864303f 100644 --- a/eng/testing/mobile/AppleRunnerTemplate.sh +++ b/eng/testing/mobile/AppleRunnerTemplate.sh @@ -1,7 +1,8 @@ #!/usr/bin/env bash EXECUTION_DIR=$(dirname $0) -[[RunCommands]] +TEST_NAME=$1 +TARGET_ARCH=$2 # "Release" in SCHEME_SDK is what xcode produces (see "bool Optimized" property in AppleAppBuilderTask) if [ "$TARGET_ARCH" == "arm" ]; then diff --git a/eng/testing/mobile/tests.targets b/eng/testing/mobile/tests.targets index b260a63b17790..90465b6415573 100644 --- a/eng/testing/mobile/tests.targets +++ b/eng/testing/mobile/tests.targets @@ -209,7 +209,6 @@ $(RunTestsCommand) $(AssemblyName) $(TargetArchitecture) $(RunTestsCommand) $(AssemblyName) "$(JSEngine)" "$(JSEngineArgs)" - TARGET_ARCH=$(TargetArchitecture) $(RunTestsEnvironmentVariables);MONO_ENV_OPTIONS=$(MonoEnvOptions) diff --git a/eng/testing/tests.props b/eng/testing/tests.props index 99c63d1858741..2addbfe6796dd 100644 --- a/eng/testing/tests.props +++ b/eng/testing/tests.props @@ -9,7 +9,6 @@ - $(PackageRID) - true + true $(NetCoreAppCurrent) false diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index f16dd0f843cf3..3b7429c6052df 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -92,10 +92,8 @@ $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD" - call RunTests.cmd - $(HelixCommand) --runtime-path %HELIX_CORRELATION_PAYLOAD% - ./RunTests.sh - $(HelixCommand) --runtime-path "$HELIX_CORRELATION_PAYLOAD" + ./RunTests.sh %HELIX_WORKITEM_FRIENDLYNAME% + $(HelixCommand) $(TargetArchitecture) @@ -152,28 +150,6 @@ @(HelixPreCommand) - - - - dotnet test %HELIX_WORKITEM_FRIENDLYNAME%.dll --settings .runsettings - $(HelixCommand) -- RunConfiguration.DotNetHostPath="%HELIX_CORRELATION_PAYLOAD%\dotnet.exe" - dotnet test $HELIX_WORKITEM_FRIENDLYNAME.dll --settings .runsettings - $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD/dotnet" - - - - call RunTests.cmd --runtime-path %HELIX_CORRELATION_PAYLOAD% - $(HelixCommand) --runtime-path %HELIX_CORRELATION_PAYLOAD% - ./RunTests.sh --runtime-path "$HELIX_CORRELATION_PAYLOAD" - $(HelixCommand) --runtime-path "$HELIX_CORRELATION_PAYLOAD" - - - - diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index c2a532dfb5f10..2016ffcaf5cbe 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -10,19 +10,23 @@ true - - false - $(ArtifactsBinDir)\*.Tests\**\coverage.opencover.xml - $(ArtifactsDir)coverage - true - - - - - - - - + + + + false + $(ArtifactsBinDir)\*.Tests\**\coverage.opencover.xml + $(ArtifactsDir)coverage + true + + + + + + + + + + @@ -134,5 +138,5 @@ AfterTargets="Test" DependsOnTargets="GenerateCoverageReport" Condition="'$(TestAssemblies)' == 'true' and - '$(Coverage)' == 'true'" /> + '$(VSTestCollect.ToLower())' == 'xplat code coverage'" /> From 2931e6480e0b06876ab15f7344186263c4a67400 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Thu, 10 Sep 2020 18:54:39 +0200 Subject: [PATCH 18/67] Cleanup & fixes --- eng/testing/coverage.targets | 4 ++-- eng/testing/runsettings.targets | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/eng/testing/coverage.targets b/eng/testing/coverage.targets index c4a49aebd85a7..fb11d0d4d401b 100644 --- a/eng/testing/coverage.targets +++ b/eng/testing/coverage.targets @@ -1,7 +1,7 @@ - + - + - From dd43a37b2d9c13d63d58168049418dbdc4a43c84 Mon Sep 17 00:00:00 2001 From: Santiago Fernandez Madero Date: Fri, 11 Sep 2020 18:54:16 -0500 Subject: [PATCH 20/67] Update helix SDK to avoid dotnet cli collision --- eng/Version.Details.xml | 4 ++-- global.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index da165c7e2c5d3..479468a65eeaa 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -14,9 +14,9 @@ https://github.com/dotnet/arcade 6baa6d3c20effeee3631eb33e9e08bcf698a799c - + https://github.com/dotnet/arcade - 6baa6d3c20effeee3631eb33e9e08bcf698a799c + a81e6e87cf21837abfde2da6eb9b057bea9f49fc https://github.com/dotnet/arcade diff --git a/global.json b/global.json index 0eda4f2eab99a..6470771303bd3 100644 --- a/global.json +++ b/global.json @@ -15,7 +15,7 @@ "Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk": "5.0.0-beta.20459.1", "Microsoft.DotNet.Arcade.Sdk": "5.0.0-beta.20431.4", "Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk": "5.0.0-beta.20452.6", - "Microsoft.DotNet.Helix.Sdk": "5.0.0-beta.20431.4", + "Microsoft.DotNet.Helix.Sdk": "5.0.0-beta.20461.7", "Microsoft.FIX-85B6-MERGE-9C38-CONFLICT": "1.0.0", "Microsoft.NET.Sdk.IL": "5.0.0-preview.8.20359.4", "Microsoft.Build.NoTargets": "2.0.1", From fba9fccabeb5621deecaf437452809e2e4c6d53f Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Sat, 12 Sep 2020 23:01:59 +0200 Subject: [PATCH 21/67] Publish .runsettings file and nit coverage fixes --- eng/testing/coverage.targets | 9 ++++++--- eng/testing/runsettings.targets | 8 ++++++-- src/libraries/Directory.Build.targets | 2 +- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/eng/testing/coverage.targets b/eng/testing/coverage.targets index fb11d0d4d401b..7c9d152d62b56 100644 --- a/eng/testing/coverage.targets +++ b/eng/testing/coverage.targets @@ -3,7 +3,8 @@ - + + AfterTargets="VSTest" + Condition="'$(VSTestCollect.ToLower())' == 'xplat code coverage' and + '$(BuildAllProjects)' != 'true' and + '$(SkipCoverageReport)' != 'true'"> diff --git a/eng/testing/runsettings.targets b/eng/testing/runsettings.targets index 4b14f51c82b0d..61c399730755f 100644 --- a/eng/testing/runsettings.targets +++ b/eng/testing/runsettings.targets @@ -22,8 +22,7 @@ <_testFilter>$(_testFilter.Trim('&amp;')) - + $([System.IO.File]::ReadAllText('$(RunSettingsInputFilePath)')) $(RunSettingsFileContent.Replace('$$MAXCPUCOUNT$$', '1')) @@ -50,5 +49,10 @@ $(RunSettingsOutputFilePath) + + + diff --git a/src/libraries/Directory.Build.targets b/src/libraries/Directory.Build.targets index 33c304f88578d..9f14604a15472 100644 --- a/src/libraries/Directory.Build.targets +++ b/src/libraries/Directory.Build.targets @@ -123,7 +123,7 @@ - + From 92eac51fae91bf3a498ae103f0c5f826278adf1f Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Sun, 13 Sep 2020 10:10:31 +0200 Subject: [PATCH 22/67] Fix runner copying and dotnet path --- eng/testing/mobile/tests.targets | 4 ++++ src/libraries/sendtohelixhelp.proj | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/eng/testing/mobile/tests.targets b/eng/testing/mobile/tests.targets index 21de959f6e9c4..32e89895cd516 100644 --- a/eng/testing/mobile/tests.targets +++ b/eng/testing/mobile/tests.targets @@ -188,6 +188,10 @@ <_runnerFilesToPublish Include="$(AndroidTestRunnerDir)*" Condition="'$(TargetOS)' == 'Android'" /> <_runnerFilesToPublish Include="$(AppleTestRunnerDir)*" Condition="'$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'tvOS'" /> <_runnerFilesToPublish Include="$(WasmTestRunnerDir)*" Condition="'$(TargetOS)' == 'Browser'" /> + diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 3b7429c6052df..1cfb2e4c62dc8 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -87,9 +87,9 @@ dotnet test %HELIX_WORKITEM_FRIENDLYNAME%.dll --settings .runsettings - $(HelixCommand) -- RunConfiguration.DotNetHostPath="%HELIX_CORRELATION_PAYLOAD%" + $(HelixCommand) -- RunConfiguration.DotNetHostPath="%HELIX_CORRELATION_PAYLOAD%\dotnet.exe" dotnet test $HELIX_WORKITEM_FRIENDLYNAME.dll --settings .runsettings - $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD" + $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD/dotnet" ./RunTests.sh %HELIX_WORKITEM_FRIENDLYNAME% From 6b661aca1fd3751e60f2fa1d80fd9f648adc3df3 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Sun, 13 Sep 2020 12:17:47 +0200 Subject: [PATCH 23/67] Fix code coverage and XmlSerializer.Generator --- eng/build.ps1 | 1 + eng/testing/.runsettings | 6 +-- src/libraries/Directory.Build.props | 4 +- ...osoft.XmlSerializer.Generator.Tests.csproj | 40 +++++++++++++------ 4 files changed, 34 insertions(+), 17 deletions(-) diff --git a/eng/build.ps1 b/eng/build.ps1 index 016ed15d2035a..113fa95aab8d5 100644 --- a/eng/build.ps1 +++ b/eng/build.ps1 @@ -181,6 +181,7 @@ foreach ($argument in $PSBoundParameters.Keys) "framework" { $arguments += " /p:BuildTargetFramework=$($PSBoundParameters[$argument].ToLowerInvariant())" } "os" { $arguments += " /p:TargetOS=$($PSBoundParameters[$argument])" } "allconfigurations" { $arguments += " /p:BuildAllConfigurations=true" } + "coverage" { $arguments += " /p:VSTestCollect='XPlat Code Coverage'" } "properties" { $arguments += " " + $properties } "verbosity" { $arguments += " -$argument " + $($PSBoundParameters[$argument]) } # configuration and arch can be specified multiple times, so they should be no-ops here diff --git a/eng/testing/.runsettings b/eng/testing/.runsettings index 4b51f56abefb4..021099c7a1773 100644 --- a/eng/testing/.runsettings +++ b/eng/testing/.runsettings @@ -1,8 +1,8 @@ - - 300000 + + 910000 .\TestResults\ @@ -49,7 +49,7 @@ - + diff --git a/src/libraries/Directory.Build.props b/src/libraries/Directory.Build.props index 6da689357cce8..4ee4c73c7f062 100644 --- a/src/libraries/Directory.Build.props +++ b/src/libraries/Directory.Build.props @@ -299,7 +299,9 @@ true true - true + + true diff --git a/src/libraries/Microsoft.XmlSerializer.Generator/tests/Microsoft.XmlSerializer.Generator.Tests.csproj b/src/libraries/Microsoft.XmlSerializer.Generator/tests/Microsoft.XmlSerializer.Generator.Tests.csproj index 13024a3e7a7fc..0e924afc2ca07 100644 --- a/src/libraries/Microsoft.XmlSerializer.Generator/tests/Microsoft.XmlSerializer.Generator.Tests.csproj +++ b/src/libraries/Microsoft.XmlSerializer.Generator/tests/Microsoft.XmlSerializer.Generator.Tests.csproj @@ -3,13 +3,7 @@ $(DefineConstants);XMLSERIALIZERGENERATORTESTS $(NetCoreAppCurrent) true - - - $(MSBuildThisFileDirectory)..\pkg\build\dotnet-Microsoft.XmlSerializer.Generator.runtimeconfig.json - "$(DotNetTool)" - set DOTNET_MULTILEVEL_LOOKUP=0 & $(GeneratorCommand) - export DOTNET_MULTILEVEL_LOOKUP=0 && $(GeneratorCommand) @@ -21,11 +15,13 @@ - - - dotnet-Microsoft.XmlSerializer.Generator.runtimeconfig.json - PreserveNewest - + + + + + @@ -34,18 +30,36 @@ - + + "$(DotNetTool)" + set DOTNET_MULTILEVEL_LOOKUP=0 & $(GeneratorCommand) + export DOTNET_MULTILEVEL_LOOKUP=0 && $(GeneratorCommand) $(AssemblyName).XmlSerializers - + + + From e2459e94b7ac5416fa1973181c90691facdc6f09 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Sun, 13 Sep 2020 14:04:36 +0200 Subject: [PATCH 24/67] Set vstest_dump_path correctly --- src/libraries/sendtohelixhelp.proj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 1cfb2e4c62dc8..04dfe6362d841 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -97,8 +97,8 @@ - - + + From 150b3f6b6a27d3ab1c647786e97d19c6f15f627f Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Sun, 13 Sep 2020 17:33:39 +0200 Subject: [PATCH 25/67] wasm template invocation fix --- src/libraries/sendtohelixhelp.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 04dfe6362d841..09a32ddc205f8 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -92,7 +92,7 @@ $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD/dotnet" - ./RunTests.sh %HELIX_WORKITEM_FRIENDLYNAME% + ./RunTests.sh $HELIX_WORKITEM_FRIENDLYNAME $(HelixCommand) $(TargetArchitecture) From e01052cb06e4a7da13aead672152803757fe715a Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Sun, 13 Sep 2020 17:42:57 +0200 Subject: [PATCH 26/67] fix WasmRunnerTemplate args --- eng/testing/mobile/WasmRunnerTemplate.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) mode change 100644 => 100755 eng/testing/mobile/WasmRunnerTemplate.sh diff --git a/eng/testing/mobile/WasmRunnerTemplate.sh b/eng/testing/mobile/WasmRunnerTemplate.sh old mode 100644 new mode 100755 index 2b50c264913c9..f8af0658ddc1b --- a/eng/testing/mobile/WasmRunnerTemplate.sh +++ b/eng/testing/mobile/WasmRunnerTemplate.sh @@ -11,7 +11,7 @@ if [ -z ${2+x} ]; then fi if [ "$JS_ENGINE" == "V8" ]; then - JS_ENGINE_ARGS=${JS_ENGINE_ARGS} --engine-arg=--stack-trace-limit=1000 + JS_ENGINE_ARGS="${JS_ENGINE_ARGS} --engine-arg=--stack-trace-limit=1000" fi if [ ! -z "$XHARNESS_CLI_PATH" ]; then @@ -22,7 +22,7 @@ else HARNESS_RUNNER="dotnet xharness" fi -$HARNESS_RUNNER wasm test --engine=${JSEngine} $JSEngineArgs --js-file=runtime.js -v --output-directory=$XHARNESS_OUT -- --run WasmTestRunner.dll ${TEST_NAME}.dll +$HARNESS_RUNNER wasm test --engine=${JS_ENGINE} ${JS_ENGINE_ARGS} --js-file=runtime.js -v --output-directory=$XHARNESS_OUT -- --run WasmTestRunner.dll ${TEST_NAME}.dll _exitCode=$? From 912259dfc32284b599d05f8ec3649e09bfd3df22 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Tue, 15 Sep 2020 08:22:01 +0200 Subject: [PATCH 27/67] Update helix sdk again --- eng/Version.Details.xml | 2 +- global.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 479468a65eeaa..d5a0d0d4de291 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -14,7 +14,7 @@ https://github.com/dotnet/arcade 6baa6d3c20effeee3631eb33e9e08bcf698a799c - + https://github.com/dotnet/arcade a81e6e87cf21837abfde2da6eb9b057bea9f49fc diff --git a/global.json b/global.json index 6470771303bd3..112ad39285fe4 100644 --- a/global.json +++ b/global.json @@ -15,7 +15,7 @@ "Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk": "5.0.0-beta.20459.1", "Microsoft.DotNet.Arcade.Sdk": "5.0.0-beta.20431.4", "Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk": "5.0.0-beta.20452.6", - "Microsoft.DotNet.Helix.Sdk": "5.0.0-beta.20461.7", + "Microsoft.DotNet.Helix.Sdk": "5.0.0-beta.20464.13", "Microsoft.FIX-85B6-MERGE-9C38-CONFLICT": "1.0.0", "Microsoft.NET.Sdk.IL": "5.0.0-preview.8.20359.4", "Microsoft.Build.NoTargets": "2.0.1", From 70aa76f15026e3f090366b7ee80848908afb6378 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Fri, 25 Sep 2020 15:44:10 +0200 Subject: [PATCH 28/67] Ignore VSTest enabled event sources --- .../tests/BasicEventSourceTest/TestUtilities.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/libraries/System.Diagnostics.Tracing/tests/BasicEventSourceTest/TestUtilities.cs b/src/libraries/System.Diagnostics.Tracing/tests/BasicEventSourceTest/TestUtilities.cs index 3c092bde0c6c4..24c9472a002fa 100644 --- a/src/libraries/System.Diagnostics.Tracing/tests/BasicEventSourceTest/TestUtilities.cs +++ b/src/libraries/System.Diagnostics.Tracing/tests/BasicEventSourceTest/TestUtilities.cs @@ -39,7 +39,13 @@ public static void CheckNoEventSourcesRunning(string message = "") eventSource.Name != "System.Runtime.InteropServices.InteropEventProvider" && eventSource.Name != "System.Reflection.Runtime.Tracing" && eventSource.Name != "Microsoft-Windows-DotNETRuntime" && - eventSource.Name != "System.Runtime" + eventSource.Name != "System.Runtime" && + // Used by VSTest + eventSource.Name != "TestPlatform" && + eventSource.Name != "Private.InternalDiagnostics.System.Net.Sockets" && + eventSource.Name != "System.Net.NameResolution" && + eventSource.Name != "Private.InternalDiagnostics.System.Net.NameResolution" && + eventSource.Name != "System.Net.Sockets" ) { eventSourceNames += eventSource.Name + " "; From 15973905424577d32bc5f220950530067e01c507 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Fri, 25 Sep 2020 19:32:40 +0200 Subject: [PATCH 29/67] Make DebugTests robust against runners with custom trace listeners --- .../System.Diagnostics.Debug/tests/DebugTests.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/libraries/System.Diagnostics.Debug/tests/DebugTests.cs b/src/libraries/System.Diagnostics.Debug/tests/DebugTests.cs index c9226503aa9b1..ba50a00ebe5ba 100644 --- a/src/libraries/System.Diagnostics.Debug/tests/DebugTests.cs +++ b/src/libraries/System.Diagnostics.Debug/tests/DebugTests.cs @@ -14,11 +14,19 @@ public abstract class DebugTests static DebugTests() { - FieldInfo fieldInfo = typeof(Debug).GetField("s_provider", BindingFlags.Static | BindingFlags.NonPublic); - _debugOnlyProvider = (DebugProvider)fieldInfo.GetValue(null); - // Triggers code to wire up TraceListeners with Debug + // Clear the current trace listeners in case test runners add their own. + Trace.Listeners.Clear(); + Trace.Listeners.Add(new DefaultTraceListener()); Assert.Equal(1, Trace.Listeners.Count); + + // Initialize the trace provider. + FieldInfo fieldInfo = typeof(Debug).GetField("s_provider", BindingFlags.Static | BindingFlags.NonPublic); _debugTraceProvider = (DebugProvider)fieldInfo.GetValue(null); + + // Initialize the debug provider. Set it explicitely as test runner might override it (ie vstest). + Debug.SetProvider(new DebugProvider()); + _debugOnlyProvider = (DebugProvider)fieldInfo.GetValue(null); + Assert.NotEqual(_debugOnlyProvider.GetType(), _debugTraceProvider.GetType()); } From 6b699747c35fd911e20dd1fc3552a79ba11a427c Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Tue, 29 Sep 2020 12:28:49 +0200 Subject: [PATCH 30/67] Don't set TargetPlatform in the runsettings file --- eng/testing/runsettings.targets | 3 --- 1 file changed, 3 deletions(-) diff --git a/eng/testing/runsettings.targets b/eng/testing/runsettings.targets index f66559b08af30..c31bf0abbe498 100644 --- a/eng/testing/runsettings.targets +++ b/eng/testing/runsettings.targets @@ -27,9 +27,6 @@ $([System.IO.File]::ReadAllText('$(RunSettingsInputFilePath)')) $(RunSettingsFileContent.Replace('$$MAXCPUCOUNT$$', '1')) $(RunSettingsFileContent.Replace('$$MAXCPUCOUNT$$', '0')) - - $(RunSettingsFileContent.Replace('$$TARGETPLATFORM$$', '$(TargetArchitecture)')) - $(RunSettingsFileContent.Replace('$$TARGETPLATFORM$$', '')) $(RunSettingsFileContent.Replace('$$MONO_ENV_OPTIONS$$', '$(MonoEnvOptions)')) $(RunSettingsFileContent.Replace('$$MONO_ENV_OPTIONS$$', '')) From 66266e887d09af092cc8cc48c8f3b9e106d238da Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Wed, 30 Sep 2020 14:39:04 +0200 Subject: [PATCH 31/67] Pass --runtime switch to dotnet test --- src/libraries/sendtohelixhelp.proj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index fd2f25647c7de..e3b2fba0e7df3 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -90,6 +90,8 @@ $(HelixCommand) -- RunConfiguration.DotNetHostPath="%HELIX_CORRELATION_PAYLOAD%\dotnet.exe" dotnet test $HELIX_WORKITEM_FRIENDLYNAME.dll --settings .runsettings $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD/dotnet" + + $(HelixCommand) --runtime $(TargetRuntimeIdentifier) ./RunTests.sh $HELIX_WORKITEM_FRIENDLYNAME From 2799d3a8918f0868e77d094034913399b8973361 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Wed, 30 Sep 2020 14:41:55 +0200 Subject: [PATCH 32/67] Ordering of HelixCommand --- src/libraries/sendtohelixhelp.proj | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index e3b2fba0e7df3..0aaef45fb3062 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -87,11 +87,12 @@ dotnet test %HELIX_WORKITEM_FRIENDLYNAME%.dll --settings .runsettings - $(HelixCommand) -- RunConfiguration.DotNetHostPath="%HELIX_CORRELATION_PAYLOAD%\dotnet.exe" dotnet test $HELIX_WORKITEM_FRIENDLYNAME.dll --settings .runsettings - $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD/dotnet" $(HelixCommand) --runtime $(TargetRuntimeIdentifier) + + $(HelixCommand) -- RunConfiguration.DotNetHostPath="%HELIX_CORRELATION_PAYLOAD%\dotnet.exe" + $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD/dotnet" ./RunTests.sh $HELIX_WORKITEM_FRIENDLYNAME From ee23a221a9ace782738d800b72539248b1ffbe37 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Wed, 30 Sep 2020 15:42:45 +0200 Subject: [PATCH 33/67] Remove targetplatform from .runsettings file as well --- eng/testing/.runsettings | 2 -- 1 file changed, 2 deletions(-) diff --git a/eng/testing/.runsettings b/eng/testing/.runsettings index 99d2734563c23..fe3bc0d9fc082 100644 --- a/eng/testing/.runsettings +++ b/eng/testing/.runsettings @@ -9,8 +9,6 @@ .\ $$MAXCPUCOUNT$$ - - $$TARGETPLATFORM$$ $$DISABLEPARALLELIZATION$$ From 24ff601097fd76e88025377d2b3e18ee69600bf9 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Wed, 30 Sep 2020 19:12:44 +0200 Subject: [PATCH 34/67] set platform --- src/libraries/sendtohelixhelp.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 0aaef45fb3062..2bdc2e37d8c31 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -89,7 +89,7 @@ dotnet test %HELIX_WORKITEM_FRIENDLYNAME%.dll --settings .runsettings dotnet test $HELIX_WORKITEM_FRIENDLYNAME.dll --settings .runsettings - $(HelixCommand) --runtime $(TargetRuntimeIdentifier) + $(HelixCommand) --platform $(TargetArchitecture) $(HelixCommand) -- RunConfiguration.DotNetHostPath="%HELIX_CORRELATION_PAYLOAD%\dotnet.exe" $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD/dotnet" From cc322938126b20e51260196b35a26bc426c81398 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Wed, 30 Sep 2020 21:12:22 +0200 Subject: [PATCH 35/67] Remove TestSessionTimeout --- eng/testing/.runsettings | 2 -- 1 file changed, 2 deletions(-) diff --git a/eng/testing/.runsettings b/eng/testing/.runsettings index fe3bc0d9fc082..48e57cfd6e7e7 100644 --- a/eng/testing/.runsettings +++ b/eng/testing/.runsettings @@ -1,8 +1,6 @@ - - 910000 .\TestResults\ From 689af354a6311ed8ea780111759f7e449a2900a1 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Thu, 1 Oct 2020 16:25:33 +0200 Subject: [PATCH 36/67] Update RemoteExecutor --- eng/Version.Details.xml | 2 +- eng/Versions.props | 2 +- eng/testing/runtimeConfiguration.targets | 2 -- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 4d23b71198833..f57dd0777a409 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -50,7 +50,7 @@ https://github.com/dotnet/arcade 61cde6e8fb9d5c9790867b279deb41783a780cd8 - + https://github.com/dotnet/arcade 61cde6e8fb9d5c9790867b279deb41783a780cd8 diff --git a/eng/Versions.props b/eng/Versions.props index aecdf61a84a3b..699572dcc5367 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -59,7 +59,7 @@ 5.0.0-beta.20474.4 2.5.1-beta.20474.4 5.0.0-beta.20474.4 - 5.0.0-beta.20474.4 + 5.0.0-beta.20501.1 5.0.0-beta.20474.4 5.0.0-preview.4.20202.18 diff --git a/eng/testing/runtimeConfiguration.targets b/eng/testing/runtimeConfiguration.targets index d69182992c7b3..6fa323bad8d4c 100644 --- a/eng/testing/runtimeConfiguration.targets +++ b/eng/testing/runtimeConfiguration.targets @@ -9,8 +9,6 @@ true $(MSBuildThisFileDirectory)netfx.exe.config - - $(TargetPath).config From 7e1b03097a59e0675412dc06418aa2b0fed19ab9 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Thu, 1 Oct 2020 16:26:03 +0200 Subject: [PATCH 37/67] System.Console extra logging --- eng/testing/.runsettings | 2 +- .../System.Console/tests/ReadAndWrite.cs | 18 +++++++++-- src/libraries/System.Console/tests/ReadKey.cs | 31 ++++++++++++++++++- .../tests/System.Console.Tests.csproj | 6 ++++ 4 files changed, 53 insertions(+), 4 deletions(-) diff --git a/eng/testing/.runsettings b/eng/testing/.runsettings index 48e57cfd6e7e7..5817a15c7da70 100644 --- a/eng/testing/.runsettings +++ b/eng/testing/.runsettings @@ -24,7 +24,7 @@ - Minimal + Detailed diff --git a/src/libraries/System.Console/tests/ReadAndWrite.cs b/src/libraries/System.Console/tests/ReadAndWrite.cs index 7076c46edd954..9eee852324f81 100644 --- a/src/libraries/System.Console/tests/ReadAndWrite.cs +++ b/src/libraries/System.Console/tests/ReadAndWrite.cs @@ -6,9 +6,17 @@ using System.Text; using System.Threading.Tasks; using Xunit; +using Xunit.Abstractions; public class ReadAndWrite { + private readonly ITestOutputHelper _output; + + public ReadAndWrite(ITestOutputHelper output) + { + _output = output; + } + [Fact] public static void WriteOverloads() { @@ -259,7 +267,7 @@ private static unsafe void ValidateConsoleEncoding(Encoding encoding) [Fact] [PlatformSpecific(~TestPlatforms.Browser)] - public static unsafe void OutputEncodingPreamble() + public unsafe void OutputEncodingPreamble() { Encoding curEncoding = Console.OutputEncoding; @@ -273,16 +281,19 @@ public static unsafe void OutputEncodingPreamble() Console.OutputEncoding = Encoding.Unicode; // The primary purpose of ConsoleEncoding is to return an empty preamble. Assert.Equal(Array.Empty(), Console.Out.Encoding.GetPreamble()); + + _output.WriteLine("L285: success"); } finally { + _output.WriteLine("L289: " + curEncoding.EncodingName); Console.OutputEncoding = curEncoding; } } [Fact] [PlatformSpecific(~TestPlatforms.Browser)] - public static unsafe void OutputEncoding() + public unsafe void OutputEncoding() { Encoding curEncoding = Console.OutputEncoding; @@ -299,9 +310,12 @@ public static unsafe void OutputEncoding() Console.OutputEncoding = Encoding.Unicode; Assert.Equal(Console.OutputEncoding.CodePage, Encoding.Unicode.CodePage); ValidateConsoleEncoding(Console.Out.Encoding); + + _output.WriteLine("L314: success"); } finally { + _output.WriteLine("L318: " + curEncoding.EncodingName); Console.OutputEncoding = curEncoding; } } diff --git a/src/libraries/System.Console/tests/ReadKey.cs b/src/libraries/System.Console/tests/ReadKey.cs index 42481f367a6a3..6e7524bea1ed0 100644 --- a/src/libraries/System.Console/tests/ReadKey.cs +++ b/src/libraries/System.Console/tests/ReadKey.cs @@ -5,12 +5,41 @@ using System.Diagnostics; using Microsoft.DotNet.RemoteExecutor; using Xunit; +using Xunit.Abstractions; public class ReadKey { + private readonly ITestOutputHelper _output; + + public ReadKey(ITestOutputHelper output) + { + _output = output; + } + + private bool IsHandleRedirected(IntPtr handle, string desc) + { + // If handle is not to a character device, we must be redirected: + uint fileType = Interop.Kernel32.GetFileType(handle); + if ((fileType & Interop.Kernel32.FileTypes.FILE_TYPE_CHAR) != Interop.Kernel32.FileTypes.FILE_TYPE_CHAR) + return true; + + _output.WriteLine($"fileTypeOutput '{desc}': {fileType}"); + + // We are on a char device if GetConsoleMode succeeds and so we are not redirected. + return (!Interop.Kernel32.IsGetConsoleModeCallSuccessful(handle)); + } + [Fact] - public static void KeyAvailable() + public void KeyAvailable() { + if (PlatformDetection.IsWindows) + { + IntPtr inputHandle = Interop.Kernel32.GetStdHandle(Interop.Kernel32.HandleTypes.STD_INPUT_HANDLE); + _output.WriteLine("IsInputHandleRedirected: " + IsHandleRedirected(inputHandle, "input")); + IntPtr OutputHandle = Interop.Kernel32.GetStdHandle(Interop.Kernel32.HandleTypes.STD_OUTPUT_HANDLE); + _output.WriteLine("IsOutputHandleRedirected: " + IsHandleRedirected(OutputHandle, "output")); + } + if (Console.IsInputRedirected) { Assert.Throws(() => Console.KeyAvailable); diff --git a/src/libraries/System.Console/tests/System.Console.Tests.csproj b/src/libraries/System.Console/tests/System.Console.Tests.csproj index d8ea79330084f..8847938061e1a 100644 --- a/src/libraries/System.Console/tests/System.Console.Tests.csproj +++ b/src/libraries/System.Console/tests/System.Console.Tests.csproj @@ -36,6 +36,12 @@ + + + + + + From 7a3473b96ef6b5202bf7c6b9df25d5e19fafe59b Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Thu, 1 Oct 2020 17:06:09 +0200 Subject: [PATCH 38/67] interop everywhere --- .../tests/System.Console.Tests.csproj | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/libraries/System.Console/tests/System.Console.Tests.csproj b/src/libraries/System.Console/tests/System.Console.Tests.csproj index 8847938061e1a..bbd915d052bd5 100644 --- a/src/libraries/System.Console/tests/System.Console.Tests.csproj +++ b/src/libraries/System.Console/tests/System.Console.Tests.csproj @@ -36,12 +36,6 @@ - - - - - - @@ -51,4 +45,12 @@ + + + + + + + + From 69ea02d395940d164a50922fe3fd3da419125974 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Thu, 1 Oct 2020 17:45:42 +0200 Subject: [PATCH 39/67] Grr fix --- src/libraries/System.Console/tests/ReadKey.cs | 31 +------------- .../System.Console/tests/ReadKey2.cs | 42 +++++++++++++++++++ .../tests/System.Console.Tests.csproj | 15 ++++--- 3 files changed, 50 insertions(+), 38 deletions(-) create mode 100644 src/libraries/System.Console/tests/ReadKey2.cs diff --git a/src/libraries/System.Console/tests/ReadKey.cs b/src/libraries/System.Console/tests/ReadKey.cs index 6e7524bea1ed0..02d54801fe302 100644 --- a/src/libraries/System.Console/tests/ReadKey.cs +++ b/src/libraries/System.Console/tests/ReadKey.cs @@ -5,41 +5,12 @@ using System.Diagnostics; using Microsoft.DotNet.RemoteExecutor; using Xunit; -using Xunit.Abstractions; -public class ReadKey +public partial class ReadKey { - private readonly ITestOutputHelper _output; - - public ReadKey(ITestOutputHelper output) - { - _output = output; - } - - private bool IsHandleRedirected(IntPtr handle, string desc) - { - // If handle is not to a character device, we must be redirected: - uint fileType = Interop.Kernel32.GetFileType(handle); - if ((fileType & Interop.Kernel32.FileTypes.FILE_TYPE_CHAR) != Interop.Kernel32.FileTypes.FILE_TYPE_CHAR) - return true; - - _output.WriteLine($"fileTypeOutput '{desc}': {fileType}"); - - // We are on a char device if GetConsoleMode succeeds and so we are not redirected. - return (!Interop.Kernel32.IsGetConsoleModeCallSuccessful(handle)); - } - [Fact] public void KeyAvailable() { - if (PlatformDetection.IsWindows) - { - IntPtr inputHandle = Interop.Kernel32.GetStdHandle(Interop.Kernel32.HandleTypes.STD_INPUT_HANDLE); - _output.WriteLine("IsInputHandleRedirected: " + IsHandleRedirected(inputHandle, "input")); - IntPtr OutputHandle = Interop.Kernel32.GetStdHandle(Interop.Kernel32.HandleTypes.STD_OUTPUT_HANDLE); - _output.WriteLine("IsOutputHandleRedirected: " + IsHandleRedirected(OutputHandle, "output")); - } - if (Console.IsInputRedirected) { Assert.Throws(() => Console.KeyAvailable); diff --git a/src/libraries/System.Console/tests/ReadKey2.cs b/src/libraries/System.Console/tests/ReadKey2.cs new file mode 100644 index 0000000000000..062c376188434 --- /dev/null +++ b/src/libraries/System.Console/tests/ReadKey2.cs @@ -0,0 +1,42 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.Diagnostics; +using Xunit; +using Xunit.Abstractions; + +public partial class ReadKey +{ + private readonly ITestOutputHelper _output; + + public ReadKey(ITestOutputHelper output) + { + _output = output; + } + + private bool IsHandleRedirected(IntPtr handle, string desc) + { + // If handle is not to a character device, we must be redirected: + uint fileType = Interop.Kernel32.GetFileType(handle); + if ((fileType & Interop.Kernel32.FileTypes.FILE_TYPE_CHAR) != Interop.Kernel32.FileTypes.FILE_TYPE_CHAR) + return true; + + _output.WriteLine($"fileTypeOutput '{desc}': {fileType}"); + + // We are on a char device if GetConsoleMode succeeds and so we are not redirected. + return (!Interop.Kernel32.IsGetConsoleModeCallSuccessful(handle)); + } + + [Fact] + public void LogKeyAvailable() + { + if (PlatformDetection.IsWindows) + { + IntPtr inputHandle = Interop.Kernel32.GetStdHandle(Interop.Kernel32.HandleTypes.STD_INPUT_HANDLE); + _output.WriteLine("IsInputHandleRedirected: " + IsHandleRedirected(inputHandle, "input")); + IntPtr OutputHandle = Interop.Kernel32.GetStdHandle(Interop.Kernel32.HandleTypes.STD_OUTPUT_HANDLE); + _output.WriteLine("IsOutputHandleRedirected: " + IsHandleRedirected(OutputHandle, "output")); + } + } +} diff --git a/src/libraries/System.Console/tests/System.Console.Tests.csproj b/src/libraries/System.Console/tests/System.Console.Tests.csproj index bbd915d052bd5..bb8e7168ff8d3 100644 --- a/src/libraries/System.Console/tests/System.Console.Tests.csproj +++ b/src/libraries/System.Console/tests/System.Console.Tests.csproj @@ -23,6 +23,7 @@ + + + + + + + @@ -45,12 +52,4 @@ - - - - - - - - From 511a9a31737a627c535fb6674ee510ca79e52dd4 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Thu, 1 Oct 2020 20:18:41 +0200 Subject: [PATCH 40/67] Disable OutputEncodingPreamble test on nano --- src/libraries/System.Console/tests/ReadAndWrite.cs | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/libraries/System.Console/tests/ReadAndWrite.cs b/src/libraries/System.Console/tests/ReadAndWrite.cs index 9eee852324f81..701b947e0be32 100644 --- a/src/libraries/System.Console/tests/ReadAndWrite.cs +++ b/src/libraries/System.Console/tests/ReadAndWrite.cs @@ -265,7 +265,7 @@ private static unsafe void ValidateConsoleEncoding(Encoding encoding) } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotWindowsNanoServer), nameof(PlatformDetection.IsNotWindowsServerCore), nameof(PlatformDetection.IsNotWindowsIoTCore))] [PlatformSpecific(~TestPlatforms.Browser)] public unsafe void OutputEncodingPreamble() { @@ -281,12 +281,9 @@ public unsafe void OutputEncodingPreamble() Console.OutputEncoding = Encoding.Unicode; // The primary purpose of ConsoleEncoding is to return an empty preamble. Assert.Equal(Array.Empty(), Console.Out.Encoding.GetPreamble()); - - _output.WriteLine("L285: success"); } finally { - _output.WriteLine("L289: " + curEncoding.EncodingName); Console.OutputEncoding = curEncoding; } } @@ -310,12 +307,9 @@ public unsafe void OutputEncoding() Console.OutputEncoding = Encoding.Unicode; Assert.Equal(Console.OutputEncoding.CodePage, Encoding.Unicode.CodePage); ValidateConsoleEncoding(Console.Out.Encoding); - - _output.WriteLine("L314: success"); } finally { - _output.WriteLine("L318: " + curEncoding.EncodingName); Console.OutputEncoding = curEncoding; } } From cc171f07b04e28cd36ebc1a8d32f1664249fac8f Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Thu, 1 Oct 2020 20:19:11 +0200 Subject: [PATCH 41/67] more logging --- src/libraries/System.Console/tests/ReadAndWrite.cs | 9 +-------- src/libraries/System.Console/tests/ReadKey2.cs | 5 +++-- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/libraries/System.Console/tests/ReadAndWrite.cs b/src/libraries/System.Console/tests/ReadAndWrite.cs index 701b947e0be32..97dd1c8c87ef7 100644 --- a/src/libraries/System.Console/tests/ReadAndWrite.cs +++ b/src/libraries/System.Console/tests/ReadAndWrite.cs @@ -6,17 +6,9 @@ using System.Text; using System.Threading.Tasks; using Xunit; -using Xunit.Abstractions; public class ReadAndWrite { - private readonly ITestOutputHelper _output; - - public ReadAndWrite(ITestOutputHelper output) - { - _output = output; - } - [Fact] public static void WriteOverloads() { @@ -269,6 +261,7 @@ private static unsafe void ValidateConsoleEncoding(Encoding encoding) [PlatformSpecific(~TestPlatforms.Browser)] public unsafe void OutputEncodingPreamble() { + // On Windows Nano Server this returns "Codepage - 0" which defaults to nothing. Therefore disabling th Encoding curEncoding = Console.OutputEncoding; try diff --git a/src/libraries/System.Console/tests/ReadKey2.cs b/src/libraries/System.Console/tests/ReadKey2.cs index 062c376188434..fa198b9f9ac9c 100644 --- a/src/libraries/System.Console/tests/ReadKey2.cs +++ b/src/libraries/System.Console/tests/ReadKey2.cs @@ -19,11 +19,12 @@ private bool IsHandleRedirected(IntPtr handle, string desc) { // If handle is not to a character device, we must be redirected: uint fileType = Interop.Kernel32.GetFileType(handle); + _output.WriteLine($"fileTypeOutput '{desc}': {fileType}"); + + if ((fileType & Interop.Kernel32.FileTypes.FILE_TYPE_CHAR) != Interop.Kernel32.FileTypes.FILE_TYPE_CHAR) return true; - _output.WriteLine($"fileTypeOutput '{desc}': {fileType}"); - // We are on a char device if GetConsoleMode succeeds and so we are not redirected. return (!Interop.Kernel32.IsGetConsoleModeCallSuccessful(handle)); } From a1c45cb5b0a69133d0bb4a74a805ecd551f9893b Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Thu, 1 Oct 2020 22:13:24 +0200 Subject: [PATCH 42/67] Avoid sdk dependency --- eng/Version.Details.xml | 6 +++++- eng/Versions.props | 4 +++- src/libraries/externals.csproj | 15 +++++++++++++++ src/libraries/sendtohelixhelp.proj | 9 +++++---- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f57dd0777a409..c2f135c3425f6 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -86,7 +86,11 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-optimization f69d7fc09c4fdb9e9427741b9a176e867dab577f - + + https://github.com/microsoft/vstest + 2418d9ec492e93245e1ce8699d6ae9cd7b86649b + + https://github.com/microsoft/vstest 2418d9ec492e93245e1ce8699d6ae9cd7b86649b diff --git a/eng/Versions.props b/eng/Versions.props index 699572dcc5367..6984f7ae3c31b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -100,6 +100,9 @@ 1.1.1 4.3.0 5.0.0-alpha.1.19563.3 + + 16.9.0-preview-20200929-01 + 16.9.0-preview-20200929-01 5.0.0-beta.20476.1 5.0.0-beta.20476.1 @@ -133,7 +136,6 @@ 4.9.4 4.9.4 - 16.8.0-release-20200924-01 1.0.0-prerelease.20476.2 1.0.0-prerelease.20476.2 2.4.1 diff --git a/src/libraries/externals.csproj b/src/libraries/externals.csproj index 108982c4332bb..62cbc5bf2d5a3 100644 --- a/src/libraries/externals.csproj +++ b/src/libraries/externals.csproj @@ -22,6 +22,10 @@ Version="$(MicrosoftNETCoreDotNetHostVersion)" /> + @@ -56,6 +60,17 @@ UseHardlinksIfPossible="$(UseHardlink)" /> + + + + + + + $(WaitForWorkItemCompletion) - + true sdk @@ -86,10 +86,11 @@ - dotnet test %HELIX_WORKITEM_FRIENDLYNAME%.dll --settings .runsettings - dotnet test $HELIX_WORKITEM_FRIENDLYNAME.dll --settings .runsettings + exec --rollforward LatestMajor + %HELIX_CORRELATION_PAYLOAD%\dotnet.exe $(RollforwardExecArgument) %HELIX_CORRELATION_PAYLOAD%\sdk\$(ProductVersion)\vstest.console.dll %HELIX_WORKITEM_FRIENDLYNAME%.dll --Settings:.runsettings + $HELIX_CORRELATION_PAYLOAD/dotnet $(RollforwardExecArgument) $HELIX_CORRELATION_PAYLOAD/sdk/$(ProductVersion)/vstest.console.dll $HELIX_WORKITEM_FRIENDLYNAME.dll --Settings:.runsettings - $(HelixCommand) --platform $(TargetArchitecture) + $(HelixCommand) --Platform:$(TargetArchitecture) $(HelixCommand) -- RunConfiguration.DotNetHostPath="%HELIX_CORRELATION_PAYLOAD%\dotnet.exe" $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD/dotnet" From 9c1dafe2c259315dd7b78f48ffcf4ec91994f016 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Thu, 1 Oct 2020 22:57:10 +0200 Subject: [PATCH 43/67] rollforward fix --- src/libraries/sendtohelixhelp.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index dfa1eff8d7f50..048c5215f4fdc 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -86,7 +86,7 @@ - exec --rollforward LatestMajor + exec --roll-forward LatestMajor %HELIX_CORRELATION_PAYLOAD%\dotnet.exe $(RollforwardExecArgument) %HELIX_CORRELATION_PAYLOAD%\sdk\$(ProductVersion)\vstest.console.dll %HELIX_WORKITEM_FRIENDLYNAME%.dll --Settings:.runsettings $HELIX_CORRELATION_PAYLOAD/dotnet $(RollforwardExecArgument) $HELIX_CORRELATION_PAYLOAD/sdk/$(ProductVersion)/vstest.console.dll $HELIX_WORKITEM_FRIENDLYNAME.dll --Settings:.runsettings From c5b3a4c82c20f8ffb6c78830f792587d6a37f632 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Thu, 1 Oct 2020 23:55:22 +0200 Subject: [PATCH 44/67] Fix binplacing --- src/libraries/externals.csproj | 4 +++- src/libraries/sendtohelixhelp.proj | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libraries/externals.csproj b/src/libraries/externals.csproj index 62cbc5bf2d5a3..8d8abd3517c19 100644 --- a/src/libraries/externals.csproj +++ b/src/libraries/externals.csproj @@ -25,6 +25,8 @@ @@ -67,7 +69,7 @@ diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 048c5215f4fdc..31da2b0692a9f 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -86,7 +86,7 @@ - exec --roll-forward LatestMajor + exec --fx-version $(ProductVersion) %HELIX_CORRELATION_PAYLOAD%\dotnet.exe $(RollforwardExecArgument) %HELIX_CORRELATION_PAYLOAD%\sdk\$(ProductVersion)\vstest.console.dll %HELIX_WORKITEM_FRIENDLYNAME%.dll --Settings:.runsettings $HELIX_CORRELATION_PAYLOAD/dotnet $(RollforwardExecArgument) $HELIX_CORRELATION_PAYLOAD/sdk/$(ProductVersion)/vstest.console.dll $HELIX_WORKITEM_FRIENDLYNAME.dll --Settings:.runsettings From 93c392f3fe1ae780abe30d0233fbc7f5eeb69120 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Fri, 2 Oct 2020 01:36:56 +0200 Subject: [PATCH 45/67] vstest fixes --- src/libraries/externals.csproj | 3 +- src/libraries/sendtohelixhelp.proj | 52 +++++++++++++++++------------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/src/libraries/externals.csproj b/src/libraries/externals.csproj index 8d8abd3517c19..a823e3ea28ef6 100644 --- a/src/libraries/externals.csproj +++ b/src/libraries/externals.csproj @@ -27,7 +27,8 @@ GeneratePathProperty="true" ExcludeAssets="all" PrivateAssets="all" - Condition="'$(ContinuousIntegrationBuild)' == 'true'" /> + Condition="'$(ContinuousIntegrationBuild)' == 'true' and + !$(BuildTargetFramework.StartsWith('net4'))" /> diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 31da2b0692a9f..412d101ee29b6 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -57,7 +57,7 @@ $(WaitForWorkItemCompletion) - + true sdk @@ -84,38 +84,46 @@ - - - exec --fx-version $(ProductVersion) - %HELIX_CORRELATION_PAYLOAD%\dotnet.exe $(RollforwardExecArgument) %HELIX_CORRELATION_PAYLOAD%\sdk\$(ProductVersion)\vstest.console.dll %HELIX_WORKITEM_FRIENDLYNAME%.dll --Settings:.runsettings - $HELIX_CORRELATION_PAYLOAD/dotnet $(RollforwardExecArgument) $HELIX_CORRELATION_PAYLOAD/sdk/$(ProductVersion)/vstest.console.dll $HELIX_WORKITEM_FRIENDLYNAME.dll --Settings:.runsettings - - $(HelixCommand) --Platform:$(TargetArchitecture) - - $(HelixCommand) -- RunConfiguration.DotNetHostPath="%HELIX_CORRELATION_PAYLOAD%\dotnet.exe" - $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD/dotnet" + + + dotnet msbuild %HELIX_CORRELATION_PAYLOAD%\test.msbuild + $(HelixCommand) /warnaserror + $(HelixCommand) /p:PackageTestProjectsDir=%HELIX_WORKITEM_PAYLOAD% + $(HelixCommand) /p:RestorePackagesPath=%HELIX_WORKITEM_PAYLOAD%\packages + $(HelixCommand) /p:LocalPackagesPath="%HELIX_CORRELATION_PAYLOAD%\packages\" - + + + ./RunTests.sh $HELIX_WORKITEM_FRIENDLYNAME $(HelixCommand) $(TargetArchitecture) - - - - - + + + + dotnet test $HELIX_WORKITEM_FRIENDLYNAME.dll --settings .runsettings --platform $(TargetArchitecture) + - dotnet msbuild %HELIX_CORRELATION_PAYLOAD%\test.msbuild - $(HelixCommand) /warnaserror - $(HelixCommand) /p:PackageTestProjectsDir=%HELIX_WORKITEM_PAYLOAD% - $(HelixCommand) /p:RestorePackagesPath=%HELIX_WORKITEM_PAYLOAD%\packages - $(HelixCommand) /p:LocalPackagesPath="%HELIX_CORRELATION_PAYLOAD%\packages\" + exec --roll-forward LatestMajor + %HELIX_CORRELATION_PAYLOAD%\dotnet.exe $(RollforwardExecArgument) %HELIX_CORRELATION_PAYLOAD%\sdk\$(ProductVersion)\vstest.console.dll %HELIX_WORKITEM_FRIENDLYNAME%.dll --Settings:.runsettings + $HELIX_CORRELATION_PAYLOAD/dotnet $(RollforwardExecArgument) $HELIX_CORRELATION_PAYLOAD/sdk/$(ProductVersion)/vstest.console.dll $HELIX_WORKITEM_FRIENDLYNAME.dll --Settings:.runsettings + + $(HelixCommand) --Platform:$(TargetArchitecture) + + $(HelixCommand) -- RunConfiguration.DotNetHostPath="%HELIX_CORRELATION_PAYLOAD%\dotnet.exe" + $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD/dotnet" + + + + + + From e7bb83190ce0f64467d10c6590e4aa190c1e6e9d Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Fri, 2 Oct 2020 11:36:18 +0200 Subject: [PATCH 46/67] Patch VSTest's runtimeconfig files --- src/libraries/externals.csproj | 9 +++++++++ src/libraries/sendtohelixhelp.proj | 5 ++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/libraries/externals.csproj b/src/libraries/externals.csproj index a823e3ea28ef6..91ee7dc69dba4 100644 --- a/src/libraries/externals.csproj +++ b/src/libraries/externals.csproj @@ -67,6 +67,7 @@ + + + + - exec --roll-forward LatestMajor - %HELIX_CORRELATION_PAYLOAD%\dotnet.exe $(RollforwardExecArgument) %HELIX_CORRELATION_PAYLOAD%\sdk\$(ProductVersion)\vstest.console.dll %HELIX_WORKITEM_FRIENDLYNAME%.dll --Settings:.runsettings - $HELIX_CORRELATION_PAYLOAD/dotnet $(RollforwardExecArgument) $HELIX_CORRELATION_PAYLOAD/sdk/$(ProductVersion)/vstest.console.dll $HELIX_WORKITEM_FRIENDLYNAME.dll --Settings:.runsettings + %HELIX_CORRELATION_PAYLOAD%\dotnet.exe %HELIX_CORRELATION_PAYLOAD%\sdk\$(ProductVersion)\vstest.console.dll %HELIX_WORKITEM_FRIENDLYNAME%.dll --Settings:.runsettings + $HELIX_CORRELATION_PAYLOAD/dotnet $HELIX_CORRELATION_PAYLOAD/sdk/$(ProductVersion)/vstest.console.dll $HELIX_WORKITEM_FRIENDLYNAME.dll --Settings:.runsettings $(HelixCommand) --Platform:$(TargetArchitecture) From 8c905013d0ad848cfe74948050de27238108a405 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Fri, 2 Oct 2020 12:03:37 +0200 Subject: [PATCH 47/67] Fix .NETFramework invocation --- src/libraries/sendtohelixhelp.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 24bb8352ac7a1..83b85e6c594e3 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -101,7 +101,7 @@ - dotnet test $HELIX_WORKITEM_FRIENDLYNAME.dll --settings .runsettings --platform $(TargetArchitecture) + dotnet test %HELIX_WORKITEM_FRIENDLYNAME%.dll --settings .runsettings --platform $(TargetArchitecture) From 01fd323c2379167599572a18e0c68c641697539a Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Fri, 2 Oct 2020 14:17:09 +0200 Subject: [PATCH 48/67] NetFramework fixes --- ...guration.ConfigurationManager.Tests.csproj | 2 -- .../System/Configuration/UrlPathTests.cs | 7 +++-- .../tests/BinaryFormatterTestData.cs | 27 ++++++++++++------- ...tem.Security.Cryptography.Xml.Tests.csproj | 4 +-- 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/libraries/System.Configuration.ConfigurationManager/tests/System.Configuration.ConfigurationManager.Tests.csproj b/src/libraries/System.Configuration.ConfigurationManager/tests/System.Configuration.ConfigurationManager.Tests.csproj index 555d37eb2cb37..c8b5c7404b7a4 100644 --- a/src/libraries/System.Configuration.ConfigurationManager/tests/System.Configuration.ConfigurationManager.Tests.csproj +++ b/src/libraries/System.Configuration.ConfigurationManager/tests/System.Configuration.ConfigurationManager.Tests.csproj @@ -1,7 +1,5 @@ - - true true true $(NetCoreAppCurrent)-Windows_NT;net461 diff --git a/src/libraries/System.Configuration.ConfigurationManager/tests/System/Configuration/UrlPathTests.cs b/src/libraries/System.Configuration.ConfigurationManager/tests/System/Configuration/UrlPathTests.cs index 4619bec0f4302..b3d52bab6a286 100644 --- a/src/libraries/System.Configuration.ConfigurationManager/tests/System/Configuration/UrlPathTests.cs +++ b/src/libraries/System.Configuration.ConfigurationManager/tests/System/Configuration/UrlPathTests.cs @@ -31,10 +31,9 @@ public void GetDirectoryOrRootName_GettingDirectoryFromAFilePath() // Remove the trailing slash. Different OS's use a different slash. // This is to make the test pass without worrying about adding a slash // and which kind of slash. - string exePathWithoutTrailingSlash = exePath.Substring(0, exePath.Length - 1); - string pathToNonexistentFile = exePath + "TestFileForUrlPathTests.txt"; - - string test = UrlPath.GetDirectoryOrRootName(pathToNonexistentFile); + string exePathWithoutTrailingSlash = exePath.TrimEnd('/', '\\'); + string pathToNonexistentFile = Path.Combine(exePath, "TestFileForUrlPathTests.txt"); + string test = UrlPath.GetDirectoryOrRootName(pathToNonexistentFile).TrimEnd('/', '\\'); Assert.Equal(exePathWithoutTrailingSlash, test); } diff --git a/src/libraries/System.Runtime.Serialization.Formatters/tests/BinaryFormatterTestData.cs b/src/libraries/System.Runtime.Serialization.Formatters/tests/BinaryFormatterTestData.cs index 54af864c8c4e1..8f8dcec31e879 100644 --- a/src/libraries/System.Runtime.Serialization.Formatters/tests/BinaryFormatterTestData.cs +++ b/src/libraries/System.Runtime.Serialization.Formatters/tests/BinaryFormatterTestData.cs @@ -1081,13 +1081,16 @@ public static IEnumerable SerializableObjects() yield return new object[] { new LinkedList>>(), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAADqA1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpbmtlZExpc3RgMVtbU3lzdGVtLlR1cGxlYDJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLkdyYXBoYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0sIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cywgVmVyc2lvbj00LjAuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTlkNzdjYzdhZDM5YjY4ZWJdXSwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0CAAAAB1ZlcnNpb24FQ291bnQAAAgIAgAAAAAAAAAAAAAACw==", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAADqA1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpbmtlZExpc3RgMVtbU3lzdGVtLlR1cGxlYDJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLkdyYXBoYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0sIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cywgVmVyc2lvbj00LjAuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTlkNzdjYzdhZDM5YjY4ZWJdXSwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0CAAAAB1ZlcnNpb24FQ291bnQAAAgIAgAAAAAAAAAAAAAACw==", TargetFrameworkMoniker.netfx461) } }; yield return new object[] { new LinkedList>>(new Tuple>[] { Tuple.Create(1, new Graph()), Tuple.Create(5, new Graph()) }), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAADqA1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpbmtlZExpc3RgMVtbU3lzdGVtLlR1cGxlYDJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLkdyYXBoYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0sIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cywgVmVyc2lvbj00LjAuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTlkNzdjYzdhZDM5YjY4ZWJdXSwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0DAAAAB1ZlcnNpb24FQ291bnQERGF0YQAAAwgI9AJTeXN0ZW0uVHVwbGVgMltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuR3JhcGhgMVtbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXSwgU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLCBWZXJzaW9uPTQuMC4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49OWQ3N2NjN2FkMzliNjhlYl1dW10CAAAAAgAAAAIAAAAJAwAAAAcDAAAAAAEAAAACAAAAA/ICU3lzdGVtLlR1cGxlYDJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLkdyYXBoYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0sIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cywgVmVyc2lvbj00LjAuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTlkNzdjYzdhZDM5YjY4ZWJdXQkEAAAACQUAAAAMBgAAAHBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViBAQAAADyAlN5c3RlbS5UdXBsZWAyW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5HcmFwaGAxW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dLCBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViXV0CAAAAB21fSXRlbTEHbV9JdGVtMgAECJIBU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLkdyYXBoYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0GAAAAAQAAAAkHAAAAAQUAAAAEAAAABQAAAAkIAAAABQcAAACSAVN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5HcmFwaGAxW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAVWYWx1ZQVMaW5rcwAECJQBU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLkdyYXBoYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1bXQYAAAAGAAAAAAAAAAoBCAAAAAcAAAAAAAAACgs=", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAADqA1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpbmtlZExpc3RgMVtbU3lzdGVtLlR1cGxlYDJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLkdyYXBoYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0sIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cywgVmVyc2lvbj00LjAuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTlkNzdjYzdhZDM5YjY4ZWJdXSwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0DAAAAB1ZlcnNpb24FQ291bnQERGF0YQAAAwgI9AJTeXN0ZW0uVHVwbGVgMltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuR3JhcGhgMVtbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXSwgU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLCBWZXJzaW9uPTQuMC4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49OWQ3N2NjN2FkMzliNjhlYl1dW10CAAAAAgAAAAIAAAAJAwAAAAcDAAAAAAEAAAACAAAAA/ICU3lzdGVtLlR1cGxlYDJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLkdyYXBoYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0sIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cywgVmVyc2lvbj00LjAuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTlkNzdjYzdhZDM5YjY4ZWJdXQkEAAAACQUAAAAMBgAAAHBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViBAQAAADyAlN5c3RlbS5UdXBsZWAyW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5HcmFwaGAxW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dLCBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViXV0CAAAAB21fSXRlbTEHbV9JdGVtMgAECJIBU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLkdyYXBoYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0GAAAAAQAAAAkHAAAAAQUAAAAEAAAABQAAAAkIAAAABQcAAACSAVN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5HcmFwaGAxW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAVWYWx1ZQVMaW5rcwAECJQBU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLkdyYXBoYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1bXQYAAAAGAAAAAAAAAAoBCAAAAAcAAAAAAAAACgs=", TargetFrameworkMoniker.netfx461) } }; - yield return new object[] { new Queue(), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAAAAADIAAAAAAAAABACAAAAIAAAAA0gCw==", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAAAAADIAAAAAAAAABACAAAAIAAAAA0gCw==", TargetFrameworkMoniker.netfx461) } }; - yield return new object[] { new Queue(5), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAAAAADIAAAAAAAAABACAAAABQAAAA0FCw==", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAAAAADIAAAAAAAAABACAAAABQAAAA0FCw==", TargetFrameworkMoniker.netfx461) } }; - yield return new object[] { new Queue(7, 2.2f), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAAAAADcAAAAAAAAABACAAAABwAAAA0HCw==", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAAAAADcAAAAAAAAABACAAAABwAAAA0HCw==", TargetFrameworkMoniker.netfx461) } }; - yield return new object[] { new Queue(Enumerable.Range(0, 123).ToArray()), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAHsAAADIAAAAewAAABACAAAAewAAAAgIAAAAAAgIAQAAAAgIAgAAAAgIAwAAAAgIBAAAAAgIBQAAAAgIBgAAAAgIBwAAAAgICAAAAAgICQAAAAgICgAAAAgICwAAAAgIDAAAAAgIDQAAAAgIDgAAAAgIDwAAAAgIEAAAAAgIEQAAAAgIEgAAAAgIEwAAAAgIFAAAAAgIFQAAAAgIFgAAAAgIFwAAAAgIGAAAAAgIGQAAAAgIGgAAAAgIGwAAAAgIHAAAAAgIHQAAAAgIHgAAAAgIHwAAAAgIIAAAAAgIIQAAAAgIIgAAAAgIIwAAAAgIJAAAAAgIJQAAAAgIJgAAAAgIJwAAAAgIKAAAAAgIKQAAAAgIKgAAAAgIKwAAAAgILAAAAAgILQAAAAgILgAAAAgILwAAAAgIMAAAAAgIMQAAAAgIMgAAAAgIMwAAAAgINAAAAAgINQAAAAgINgAAAAgINwAAAAgIOAAAAAgIOQAAAAgIOgAAAAgIOwAAAAgIPAAAAAgIPQAAAAgIPgAAAAgIPwAAAAgIQAAAAAgIQQAAAAgIQgAAAAgIQwAAAAgIRAAAAAgIRQAAAAgIRgAAAAgIRwAAAAgISAAAAAgISQAAAAgISgAAAAgISwAAAAgITAAAAAgITQAAAAgITgAAAAgITwAAAAgIUAAAAAgIUQAAAAgIUgAAAAgIUwAAAAgIVAAAAAgIVQAAAAgIVgAAAAgIVwAAAAgIWAAAAAgIWQAAAAgIWgAAAAgIWwAAAAgIXAAAAAgIXQAAAAgIXgAAAAgIXwAAAAgIYAAAAAgIYQAAAAgIYgAAAAgIYwAAAAgIZAAAAAgIZQAAAAgIZgAAAAgIZwAAAAgIaAAAAAgIaQAAAAgIagAAAAgIawAAAAgIbAAAAAgIbQAAAAgIbgAAAAgIbwAAAAgIcAAAAAgIcQAAAAgIcgAAAAgIcwAAAAgIdAAAAAgIdQAAAAgIdgAAAAgIdwAAAAgIeAAAAAgIeQAAAAgIegAAAAs=", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAHsAAADIAAAAewAAABACAAAAewAAAAgIAAAAAAgIAQAAAAgIAgAAAAgIAwAAAAgIBAAAAAgIBQAAAAgIBgAAAAgIBwAAAAgICAAAAAgICQAAAAgICgAAAAgICwAAAAgIDAAAAAgIDQAAAAgIDgAAAAgIDwAAAAgIEAAAAAgIEQAAAAgIEgAAAAgIEwAAAAgIFAAAAAgIFQAAAAgIFgAAAAgIFwAAAAgIGAAAAAgIGQAAAAgIGgAAAAgIGwAAAAgIHAAAAAgIHQAAAAgIHgAAAAgIHwAAAAgIIAAAAAgIIQAAAAgIIgAAAAgIIwAAAAgIJAAAAAgIJQAAAAgIJgAAAAgIJwAAAAgIKAAAAAgIKQAAAAgIKgAAAAgIKwAAAAgILAAAAAgILQAAAAgILgAAAAgILwAAAAgIMAAAAAgIMQAAAAgIMgAAAAgIMwAAAAgINAAAAAgINQAAAAgINgAAAAgINwAAAAgIOAAAAAgIOQAAAAgIOgAAAAgIOwAAAAgIPAAAAAgIPQAAAAgIPgAAAAgIPwAAAAgIQAAAAAgIQQAAAAgIQgAAAAgIQwAAAAgIRAAAAAgIRQAAAAgIRgAAAAgIRwAAAAgISAAAAAgISQAAAAgISgAAAAgISwAAAAgITAAAAAgITQAAAAgITgAAAAgITwAAAAgIUAAAAAgIUQAAAAgIUgAAAAgIUwAAAAgIVAAAAAgIVQAAAAgIVgAAAAgIVwAAAAgIWAAAAAgIWQAAAAgIWgAAAAgIWwAAAAgIXAAAAAgIXQAAAAgIXgAAAAgIXwAAAAgIYAAAAAgIYQAAAAgIYgAAAAgIYwAAAAgIZAAAAAgIZQAAAAgIZgAAAAgIZwAAAAgIaAAAAAgIaQAAAAgIagAAAAgIawAAAAgIbAAAAAgIbQAAAAgIbgAAAAgIbwAAAAgIcAAAAAgIcQAAAAgIcgAAAAgIcwAAAAgIdAAAAAgIdQAAAAgIdgAAAAgIdwAAAAgIeAAAAAgIeQAAAAgIegAAAAs=", TargetFrameworkMoniker.netfx461) } }; - yield return new object[] { new Queue(new int[] { 5, 7, 9 }), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAMAAADIAAAAAwAAABACAAAAAwAAAAgIBQAAAAgIBwAAAAgICQAAAAs=", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAMAAADIAAAAAwAAABACAAAAAwAAAAgIBQAAAAgIBwAAAAgICQAAAAs=", TargetFrameworkMoniker.netfx461) } }; - yield return new object[] { new Queue(new Point[] { new Point(1, 2), new Point(4, 3) }), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAIAAADIAAAAAgAAABACAAAAAgAAAAkDAAAACQQAAAAMBQAAAHBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViBQMAAAAzU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50AgAAAAFYAVkAAAgIBQAAAAEAAAACAAAAAQQAAAADAAAABAAAAAMAAAAL", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAIAAADIAAAAAgAAABACAAAAAgAAAAkDAAAACQQAAAAMBQAAAHBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViBQMAAAAzU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50AgAAAAFYAVkAAAgIBQAAAAEAAAACAAAAAQQAAAADAAAABAAAAAMAAAAL", TargetFrameworkMoniker.netfx461) } }; - yield return new object[] { new Queue(new Tuple>[] { Tuple.Create(1, new Graph()), Tuple.Create(5, new Graph()) }), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAIAAADIAAAAAgAAABACAAAAAgAAAAkDAAAACQQAAAAMBQAAAHBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViBAMAAADyAlN5c3RlbS5UdXBsZWAyW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5HcmFwaGAxW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dLCBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViXV0CAAAAB21fSXRlbTEHbV9JdGVtMgAECJIBU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLkdyYXBoYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0FAAAAAQAAAAkGAAAAAQQAAAADAAAABQAAAAkHAAAABQYAAACSAVN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5HcmFwaGAxW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAVWYWx1ZQVMaW5rcwAECJQBU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLkdyYXBoYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1bXQUAAAAFAAAAAAAAAAoBBwAAAAYAAAAAAAAACgs=", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAIAAADIAAAAAgAAABACAAAAAgAAAAkDAAAACQQAAAAMBQAAAHBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViBAMAAADyAlN5c3RlbS5UdXBsZWAyW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5HcmFwaGAxW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dLCBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViXV0CAAAAB21fSXRlbTEHbV9JdGVtMgAECJIBU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLkdyYXBoYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0FAAAAAQAAAAkGAAAAAQQAAAADAAAABQAAAAkHAAAABQYAAACSAVN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5HcmFwaGAxW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAVWYWx1ZQVMaW5rcwAECJQBU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLkdyYXBoYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1bXQUAAAAFAAAAAAAAAAoBBwAAAAYAAAAAAAAACgs=", TargetFrameworkMoniker.netfx461) } }; + if (!PlatformDetection.IsNetFramework) + { + yield return new object[] { new Queue(), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAAAAADIAAAAAAAAABACAAAAIAAAAA0gCw==", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAAAAADIAAAAAAAAABACAAAAIAAAAA0gCw==", TargetFrameworkMoniker.netfx461) } }; + yield return new object[] { new Queue(5), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAAAAADIAAAAAAAAABACAAAABQAAAA0FCw==", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAAAAADIAAAAAAAAABACAAAABQAAAA0FCw==", TargetFrameworkMoniker.netfx461) } }; + yield return new object[] { new Queue(7, 2.2f), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAAAAADcAAAAAAAAABACAAAABwAAAA0HCw==", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAAAAADcAAAAAAAAABACAAAABwAAAA0HCw==", TargetFrameworkMoniker.netfx461) } }; + yield return new object[] { new Queue(Enumerable.Range(0, 123).ToArray()), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAHsAAADIAAAAewAAABACAAAAewAAAAgIAAAAAAgIAQAAAAgIAgAAAAgIAwAAAAgIBAAAAAgIBQAAAAgIBgAAAAgIBwAAAAgICAAAAAgICQAAAAgICgAAAAgICwAAAAgIDAAAAAgIDQAAAAgIDgAAAAgIDwAAAAgIEAAAAAgIEQAAAAgIEgAAAAgIEwAAAAgIFAAAAAgIFQAAAAgIFgAAAAgIFwAAAAgIGAAAAAgIGQAAAAgIGgAAAAgIGwAAAAgIHAAAAAgIHQAAAAgIHgAAAAgIHwAAAAgIIAAAAAgIIQAAAAgIIgAAAAgIIwAAAAgIJAAAAAgIJQAAAAgIJgAAAAgIJwAAAAgIKAAAAAgIKQAAAAgIKgAAAAgIKwAAAAgILAAAAAgILQAAAAgILgAAAAgILwAAAAgIMAAAAAgIMQAAAAgIMgAAAAgIMwAAAAgINAAAAAgINQAAAAgINgAAAAgINwAAAAgIOAAAAAgIOQAAAAgIOgAAAAgIOwAAAAgIPAAAAAgIPQAAAAgIPgAAAAgIPwAAAAgIQAAAAAgIQQAAAAgIQgAAAAgIQwAAAAgIRAAAAAgIRQAAAAgIRgAAAAgIRwAAAAgISAAAAAgISQAAAAgISgAAAAgISwAAAAgITAAAAAgITQAAAAgITgAAAAgITwAAAAgIUAAAAAgIUQAAAAgIUgAAAAgIUwAAAAgIVAAAAAgIVQAAAAgIVgAAAAgIVwAAAAgIWAAAAAgIWQAAAAgIWgAAAAgIWwAAAAgIXAAAAAgIXQAAAAgIXgAAAAgIXwAAAAgIYAAAAAgIYQAAAAgIYgAAAAgIYwAAAAgIZAAAAAgIZQAAAAgIZgAAAAgIZwAAAAgIaAAAAAgIaQAAAAgIagAAAAgIawAAAAgIbAAAAAgIbQAAAAgIbgAAAAgIbwAAAAgIcAAAAAgIcQAAAAgIcgAAAAgIcwAAAAgIdAAAAAgIdQAAAAgIdgAAAAgIdwAAAAgIeAAAAAgIeQAAAAgIegAAAAs=", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAHsAAADIAAAAewAAABACAAAAewAAAAgIAAAAAAgIAQAAAAgIAgAAAAgIAwAAAAgIBAAAAAgIBQAAAAgIBgAAAAgIBwAAAAgICAAAAAgICQAAAAgICgAAAAgICwAAAAgIDAAAAAgIDQAAAAgIDgAAAAgIDwAAAAgIEAAAAAgIEQAAAAgIEgAAAAgIEwAAAAgIFAAAAAgIFQAAAAgIFgAAAAgIFwAAAAgIGAAAAAgIGQAAAAgIGgAAAAgIGwAAAAgIHAAAAAgIHQAAAAgIHgAAAAgIHwAAAAgIIAAAAAgIIQAAAAgIIgAAAAgIIwAAAAgIJAAAAAgIJQAAAAgIJgAAAAgIJwAAAAgIKAAAAAgIKQAAAAgIKgAAAAgIKwAAAAgILAAAAAgILQAAAAgILgAAAAgILwAAAAgIMAAAAAgIMQAAAAgIMgAAAAgIMwAAAAgINAAAAAgINQAAAAgINgAAAAgINwAAAAgIOAAAAAgIOQAAAAgIOgAAAAgIOwAAAAgIPAAAAAgIPQAAAAgIPgAAAAgIPwAAAAgIQAAAAAgIQQAAAAgIQgAAAAgIQwAAAAgIRAAAAAgIRQAAAAgIRgAAAAgIRwAAAAgISAAAAAgISQAAAAgISgAAAAgISwAAAAgITAAAAAgITQAAAAgITgAAAAgITwAAAAgIUAAAAAgIUQAAAAgIUgAAAAgIUwAAAAgIVAAAAAgIVQAAAAgIVgAAAAgIVwAAAAgIWAAAAAgIWQAAAAgIWgAAAAgIWwAAAAgIXAAAAAgIXQAAAAgIXgAAAAgIXwAAAAgIYAAAAAgIYQAAAAgIYgAAAAgIYwAAAAgIZAAAAAgIZQAAAAgIZgAAAAgIZwAAAAgIaAAAAAgIaQAAAAgIagAAAAgIawAAAAgIbAAAAAgIbQAAAAgIbgAAAAgIbwAAAAgIcAAAAAgIcQAAAAgIcgAAAAgIcwAAAAgIdAAAAAgIdQAAAAgIdgAAAAgIdwAAAAgIeAAAAAgIeQAAAAgIegAAAAs=", TargetFrameworkMoniker.netfx461) } }; + yield return new object[] { new Queue(new int[] { 5, 7, 9 }), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAMAAADIAAAAAwAAABACAAAAAwAAAAgIBQAAAAgIBwAAAAgICQAAAAs=", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAMAAADIAAAAAwAAABACAAAAAwAAAAgIBQAAAAgIBwAAAAgICQAAAAs=", TargetFrameworkMoniker.netfx461) } }; + yield return new object[] { new Queue(new Point[] { new Point(1, 2), new Point(4, 3) }), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAIAAADIAAAAAgAAABACAAAAAgAAAAkDAAAACQQAAAAMBQAAAHBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViBQMAAAAzU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50AgAAAAFYAVkAAAgIBQAAAAEAAAACAAAAAQQAAAADAAAABAAAAAMAAAAL", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAIAAADIAAAAAgAAABACAAAAAgAAAAkDAAAACQQAAAAMBQAAAHBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViBQMAAAAzU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50AgAAAAFYAVkAAAgIBQAAAAEAAAACAAAAAQQAAAADAAAABAAAAAMAAAAL", TargetFrameworkMoniker.netfx461) } }; + yield return new object[] { new Queue(new Tuple>[] { Tuple.Create(1, new Graph()), Tuple.Create(5, new Graph()) }), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAIAAADIAAAAAgAAABACAAAAAgAAAAkDAAAACQQAAAAMBQAAAHBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViBAMAAADyAlN5c3RlbS5UdXBsZWAyW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5HcmFwaGAxW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dLCBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViXV0CAAAAB21fSXRlbTEHbV9JdGVtMgAECJIBU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLkdyYXBoYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0FAAAAAQAAAAkGAAAAAQQAAAADAAAABQAAAAkHAAAABQYAAACSAVN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5HcmFwaGAxW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAVWYWx1ZQVMaW5rcwAECJQBU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLkdyYXBoYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1bXQUAAAAFAAAAAAAAAAoBBwAAAAYAAAAAAAAACgs=", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAIAAADIAAAAAgAAABACAAAAAgAAAAkDAAAACQQAAAAMBQAAAHBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViBAMAAADyAlN5c3RlbS5UdXBsZWAyW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5HcmFwaGAxW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dLCBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViXV0CAAAAB21fSXRlbTEHbV9JdGVtMgAECJIBU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLkdyYXBoYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0FAAAAAQAAAAkGAAAAAQQAAAADAAAABQAAAAkHAAAABQYAAACSAVN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5HcmFwaGAxW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAVWYWx1ZQVMaW5rcwAECJQBU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLkdyYXBoYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1bXQUAAAAFAAAAAAAAAAoBBwAAAAYAAAAAAAAACgs=", TargetFrameworkMoniker.netfx461) } }; + } yield return new object[] { new SortedDictionary(), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAADmAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLlNvcnRlZERpY3Rpb25hcnlgMltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAQAAAARfc2V0BNcCU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuVHJlZVNldGAxW1tTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5LZXlWYWx1ZVBhaXJgMltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAACAAAACQMAAAAMBAAAAFVTeXN0ZW0uQ29sbGVjdGlvbnMsIFZlcnNpb249NC4xLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQMAAADXAlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLlRyZWVTZXRgMVtbU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuS2V5VmFsdWVQYWlyYDJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXSwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0DAAAABUNvdW50CENvbXBhcmVyB1ZlcnNpb24ABAAI+wFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5Tb3J0ZWREaWN0aW9uYXJ5YDIrS2V5VmFsdWVQYWlyQ29tcGFyZXJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQQAAAAIAgAAAAAAAAAJBQAAAAAAAAAFBQAAAPsBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuU29ydGVkRGljdGlvbmFyeWAyK0tleVZhbHVlUGFpckNvbXBhcmVyW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0BAAAAC2tleUNvbXBhcmVyA4kBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuR2VuZXJpY0NvbXBhcmVyYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0EAAAACQYAAAAEBgAAAIkBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuR2VuZXJpY0NvbXBhcmVyYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0AAAAACw==", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAADmAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLlNvcnRlZERpY3Rpb25hcnlgMltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAQAAAARfc2V0BNcCU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuVHJlZVNldGAxW1tTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5LZXlWYWx1ZVBhaXJgMltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAACAAAACQMAAAAFAwAAANcCU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuVHJlZVNldGAxW1tTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5LZXlWYWx1ZVBhaXJgMltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQMAAAAFQ291bnQIQ29tcGFyZXIHVmVyc2lvbgAEAAj7AVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLlNvcnRlZERpY3Rpb25hcnlgMitLZXlWYWx1ZVBhaXJDb21wYXJlcltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAgCAAAAAAAAAAkEAAAAAAAAAAUEAAAA+wFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5Tb3J0ZWREaWN0aW9uYXJ5YDIrS2V5VmFsdWVQYWlyQ29tcGFyZXJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQEAAAALa2V5Q29tcGFyZXIDiQFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5HZW5lcmljQ29tcGFyZXJgMVtbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAAJBQAAAAQFAAAAiQFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5HZW5lcmljQ29tcGFyZXJgMVtbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQAAAAAL", TargetFrameworkMoniker.netfx461) } }; yield return new object[] { new SortedDictionary(Comparer.Default), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAADmAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLlNvcnRlZERpY3Rpb25hcnlgMltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAQAAAARfc2V0BNcCU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuVHJlZVNldGAxW1tTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5LZXlWYWx1ZVBhaXJgMltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAACAAAACQMAAAAMBAAAAFVTeXN0ZW0uQ29sbGVjdGlvbnMsIFZlcnNpb249NC4xLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQMAAADXAlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLlRyZWVTZXRgMVtbU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuS2V5VmFsdWVQYWlyYDJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXSwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0DAAAABUNvdW50CENvbXBhcmVyB1ZlcnNpb24ABAAI+wFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5Tb3J0ZWREaWN0aW9uYXJ5YDIrS2V5VmFsdWVQYWlyQ29tcGFyZXJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQQAAAAIAgAAAAAAAAAJBQAAAAAAAAAFBQAAAPsBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuU29ydGVkRGljdGlvbmFyeWAyK0tleVZhbHVlUGFpckNvbXBhcmVyW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0BAAAAC2tleUNvbXBhcmVyA4kBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuR2VuZXJpY0NvbXBhcmVyYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0EAAAACQYAAAAEBgAAAIkBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuR2VuZXJpY0NvbXBhcmVyYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0AAAAACw==", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAADmAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLlNvcnRlZERpY3Rpb25hcnlgMltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAQAAAARfc2V0BNcCU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuVHJlZVNldGAxW1tTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5LZXlWYWx1ZVBhaXJgMltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAACAAAACQMAAAAFAwAAANcCU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuVHJlZVNldGAxW1tTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5LZXlWYWx1ZVBhaXJgMltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQMAAAAFQ291bnQIQ29tcGFyZXIHVmVyc2lvbgAEAAj7AVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLlNvcnRlZERpY3Rpb25hcnlgMitLZXlWYWx1ZVBhaXJDb21wYXJlcltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAgCAAAAAAAAAAkEAAAAAAAAAAUEAAAA+wFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5Tb3J0ZWREaWN0aW9uYXJ5YDIrS2V5VmFsdWVQYWlyQ29tcGFyZXJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQEAAAALa2V5Q29tcGFyZXIDiQFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5HZW5lcmljQ29tcGFyZXJgMVtbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAAJBQAAAAQFAAAAiQFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5HZW5lcmljQ29tcGFyZXJgMVtbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQAAAAAL", TargetFrameworkMoniker.netfx461) } }; @@ -1273,8 +1276,14 @@ public static IEnumerable SerializableObjects() yield return new object[] { new HashSet(new[] { point }, new PointEqualityComparer()), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAE5TeXN0ZW0uQ29yZSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAHBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViBQEAAADNAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkhhc2hTZXRgMVtbU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50LCBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViXV0EAAAAB1ZlcnNpb24IQ29tcGFyZXIIQ2FwYWNpdHkIRWxlbWVudHMABAAECENTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnRFcXVhbGl0eUNvbXBhcmVyAwAAAAg1U3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50W10DAAAAAgAAAAEAAAAJBAAAAAMAAAAJBQAAAAUEAAAAQ1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5Qb2ludEVxdWFsaXR5Q29tcGFyZXIAAAAAAwAAAAcFAAAAAAEAAAABAAAABDNTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQDAAAACQYAAAAFBgAAADNTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQCAAAAAVgBWQAACAgDAAAAAQAAAAIAAAAL", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAE5TeXN0ZW0uQ29yZSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAHBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViBQEAAADNAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkhhc2hTZXRgMVtbU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50LCBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViXV0EAAAAB1ZlcnNpb24IQ29tcGFyZXIIQ2FwYWNpdHkIRWxlbWVudHMABAAECENTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnRFcXVhbGl0eUNvbXBhcmVyAwAAAAg1U3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50W10DAAAAAgAAAAEAAAAJBAAAAAMAAAAJBQAAAAUEAAAAQ1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5Qb2ludEVxdWFsaXR5Q29tcGFyZXIAAAAAAwAAAAcFAAAAAAEAAAABAAAABDNTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQDAAAACQYAAAAFBgAAADNTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQCAAAAAVgBWQAACAgDAAAAAQAAAAIAAAAL", TargetFrameworkMoniker.netfx461) } }; yield return new object[] { new KeyValuePair(5, "five"), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAAOMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuS2V5VmFsdWVQYWlyYDJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0CAAAAA2tleQV2YWx1ZQABCAUAAAAGAgAAAARmaXZlCw==", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAAOMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuS2V5VmFsdWVQYWlyYDJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0CAAAAA2tleQV2YWx1ZQABCAUAAAAGAgAAAARmaXZlCw==", TargetFrameworkMoniker.netfx461) } }; yield return new object[] { new LinkedList(new[] { point }), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5DAMAAABwU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLCBWZXJzaW9uPTQuMC4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49OWQ3N2NjN2FkMzliNjhlYgUBAAAA0AFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaW5rZWRMaXN0YDFbW1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5Qb2ludCwgU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLCBWZXJzaW9uPTQuMC4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49OWQ3N2NjN2FkMzliNjhlYl1dAwAAAAdWZXJzaW9uBUNvdW50BERhdGEAAAQICDVTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnRbXQMAAAACAAAAAQAAAAEAAAAJBAAAAAcEAAAAAAEAAAABAAAABDNTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQDAAAACQUAAAAFBQAAADNTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQCAAAAAVgBWQAACAgDAAAAAQAAAAIAAAAL", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5DAMAAABwU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLCBWZXJzaW9uPTQuMC4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49OWQ3N2NjN2FkMzliNjhlYgUBAAAA0AFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaW5rZWRMaXN0YDFbW1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5Qb2ludCwgU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLCBWZXJzaW9uPTQuMC4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49OWQ3N2NjN2FkMzliNjhlYl1dAwAAAAdWZXJzaW9uBUNvdW50BERhdGEAAAQICDVTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnRbXQMAAAACAAAAAQAAAAEAAAAJBAAAAAcEAAAAAAEAAAABAAAABDNTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQDAAAACQUAAAAFBQAAADNTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQCAAAAAVgBWQAACAgDAAAAAQAAAAIAAAAL", TargetFrameworkMoniker.netfx461) } }; - yield return new object[] { new Queue(Enumerable.Range(1, 25)), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAB/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuUXVldWVgMVtbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQUAAAAGX2FycmF5BV9oZWFkBV90YWlsBV9zaXplCF92ZXJzaW9uBwAAAAAICAgICAIAAAAJAwAAAAAAAAAZAAAAGQAAAAAAAAAPAwAAACAAAAAIAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAB/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuUXVldWVgMVtbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQUAAAAGX2FycmF5BV9oZWFkBV90YWlsBV9zaXplCF92ZXJzaW9uBwAAAAAICAgICAIAAAAJAwAAAAAAAAAZAAAAGQAAABwAAAAPAwAAACAAAAAIAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL", TargetFrameworkMoniker.netfx461) } }; - yield return new object[] { new Collections.Queue(50, 5.6f), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAAAAAAwAgAAAAAAABACAAAAMgAAAA0yCw==", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAAAAAAwAgAAAAAAABACAAAAMgAAAA0yCw==", TargetFrameworkMoniker.netfx461) } }; + + if (!PlatformDetection.IsNetFramework) + { + yield return new object[] { new Queue(Enumerable.Range(1, 25)), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAB/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuUXVldWVgMVtbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQUAAAAGX2FycmF5BV9oZWFkBV90YWlsBV9zaXplCF92ZXJzaW9uBwAAAAAICAgICAIAAAAJAwAAAAAAAAAZAAAAGQAAAAAAAAAPAwAAACAAAAAIAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAB/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuUXVldWVgMVtbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQUAAAAGX2FycmF5BV9oZWFkBV90YWlsBV9zaXplCF92ZXJzaW9uBwAAAAAICAgICAIAAAAJAwAAAAAAAAAZAAAAGQAAABwAAAAPAwAAACAAAAAIAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL", TargetFrameworkMoniker.netfx461) } }; + + yield return new object[] { new Collections.Queue(50, 5.6f), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAAAAAAwAgAAAAAAABACAAAAMgAAAA0yCw==", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uQ29sbGVjdGlvbnMuUXVldWUGAAAABl9hcnJheQVfaGVhZAVfdGFpbAVfc2l6ZQtfZ3Jvd0ZhY3RvcghfdmVyc2lvbgUAAAAAAAgICAgICQIAAAAAAAAAAAAAAAAAAAAwAgAAAAAAABACAAAAMgAAAA0yCw==", TargetFrameworkMoniker.netfx461) } }; + } + yield return new object[] { new SortedDictionary(pointDictionary, Comparer.Default), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAACyAlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLlNvcnRlZERpY3Rpb25hcnlgMltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQsIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cywgVmVyc2lvbj00LjAuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTlkNzdjYzdhZDM5YjY4ZWJdXQEAAAAEX3NldASjA1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLlRyZWVTZXRgMVtbU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuS2V5VmFsdWVQYWlyYDJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50LCBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViXV0sIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAIAAAAJAwAAAAwEAAAAVVN5c3RlbS5Db2xsZWN0aW9ucywgVmVyc2lvbj00LjEuMS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAwAAAKMDU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuVHJlZVNldGAxW1tTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5LZXlWYWx1ZVBhaXJgMltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQsIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cywgVmVyc2lvbj00LjAuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTlkNzdjYzdhZDM5YjY4ZWJdXSwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0EAAAABUNvdW50CENvbXBhcmVyB1ZlcnNpb24FSXRlbXMABAADCMcCU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuU29ydGVkRGljdGlvbmFyeWAyK0tleVZhbHVlUGFpckNvbXBhcmVyW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5Qb2ludCwgU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLCBWZXJzaW9uPTQuMC4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49OWQ3N2NjN2FkMzliNjhlYl1dBAAAAAiwAlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLktleVZhbHVlUGFpcmAyW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5Qb2ludCwgU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLCBWZXJzaW9uPTQuMC4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49OWQ3N2NjN2FkMzliNjhlYl1dW10CAAAAAgAAAAkFAAAAAgAAAAkGAAAABQUAAADHAlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLlNvcnRlZERpY3Rpb25hcnlgMitLZXlWYWx1ZVBhaXJDb21wYXJlcltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQsIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cywgVmVyc2lvbj00LjAuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTlkNzdjYzdhZDM5YjY4ZWJdXQEAAAALa2V5Q29tcGFyZXIDiQFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5HZW5lcmljQ29tcGFyZXJgMVtbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQQAAAAJBwAAAAcGAAAAAAEAAAACAAAAA64CU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuS2V5VmFsdWVQYWlyYDJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50LCBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViXV0MCQAAAHBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViBPj///+uAlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLktleVZhbHVlUGFpcmAyW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5Qb2ludCwgU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLCBWZXJzaW9uPTQuMC4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49OWQ3N2NjN2FkMzliNjhlYl1dAgAAAANrZXkFdmFsdWUABAgzU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50CQAAAAEAAAAJCgAAAAH1////+P///wIAAAAJDAAAAAQHAAAAiQFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5HZW5lcmljQ29tcGFyZXJgMVtbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQAAAAAFCgAAADNTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQCAAAAAVgBWQAACAgJAAAAAQAAAAEAAAABDAAAAAoAAAACAAAAAgAAAAs=", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAACyAlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLlNvcnRlZERpY3Rpb25hcnlgMltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQsIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cywgVmVyc2lvbj00LjAuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTlkNzdjYzdhZDM5YjY4ZWJdXQEAAAAEX3NldASjA1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLlRyZWVTZXRgMVtbU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuS2V5VmFsdWVQYWlyYDJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50LCBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViXV0sIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAIAAAAJAwAAAAUDAAAAowNTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5UcmVlU2V0YDFbW1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLktleVZhbHVlUGFpcmAyW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5Qb2ludCwgU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLCBWZXJzaW9uPTQuMC4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49OWQ3N2NjN2FkMzliNjhlYl1dLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQQAAAAFQ291bnQIQ29tcGFyZXIHVmVyc2lvbgVJdGVtcwAEAAMIxwJTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5Tb3J0ZWREaWN0aW9uYXJ5YDIrS2V5VmFsdWVQYWlyQ29tcGFyZXJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50LCBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViXV0CAAAACLACU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuS2V5VmFsdWVQYWlyYDJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50LCBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViXV1bXQIAAAACAAAACQQAAAACAAAACQUAAAAFBAAAAMcCU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuU29ydGVkRGljdGlvbmFyeWAyK0tleVZhbHVlUGFpckNvbXBhcmVyW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5Qb2ludCwgU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLCBWZXJzaW9uPTQuMC4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49OWQ3N2NjN2FkMzliNjhlYl1dAQAAAAtrZXlDb21wYXJlcgOJAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkdlbmVyaWNDb21wYXJlcmAxW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAkGAAAABwUAAAAAAQAAAAIAAAADrgJTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5LZXlWYWx1ZVBhaXJgMltbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQsIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cywgVmVyc2lvbj00LjAuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTlkNzdjYzdhZDM5YjY4ZWJdXQwIAAAAcFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cywgVmVyc2lvbj00LjAuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTlkNzdjYzdhZDM5YjY4ZWIE+f///64CU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuS2V5VmFsdWVQYWlyYDJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50LCBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViXV0CAAAAA2tleQV2YWx1ZQAECDNTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQIAAAAAQAAAAkJAAAAAfb////5////AgAAAAkLAAAABAYAAACJAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkdlbmVyaWNDb21wYXJlcmAxW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAAAAAAUJAAAAM1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5Qb2ludAIAAAABWAFZAAAICAgAAAABAAAAAQAAAAELAAAACQAAAAIAAAACAAAACw==", TargetFrameworkMoniker.netfx461) } }; yield return new object[] { new SortedList(pointDictionary, Comparer.Default), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5DAMAAABwU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLCBWZXJzaW9uPTQuMC4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49OWQ3N2NjN2FkMzliNjhlYgwEAAAAVVN5c3RlbS5Db2xsZWN0aW9ucywgVmVyc2lvbj00LjEuMS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAAKwCU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuU29ydGVkTGlzdGAyW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5Qb2ludCwgU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLCBWZXJzaW9uPTQuMC4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49OWQ3N2NjN2FkMzliNjhlYl1dBwAAAARrZXlzBnZhbHVlcwVfc2l6ZQd2ZXJzaW9uCGNvbXBhcmVyB2tleUxpc3QJdmFsdWVMaXN0BwQAAAMEBAg1U3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50W10DAAAACAiJAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkdlbmVyaWNDb21wYXJlcmAxW1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dtAJTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5Tb3J0ZWRMaXN0YDIrS2V5TGlzdFtbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQsIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cywgVmVyc2lvbj00LjAuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTlkNzdjYzdhZDM5YjY4ZWJdXQQAAAC2AlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLlNvcnRlZExpc3RgMitWYWx1ZUxpc3RbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50LCBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViXV0EAAAAAgAAAAkFAAAACQYAAAACAAAAAAAAAAkHAAAACgoPBQAAAAIAAAAIAQAAAAIAAAAHBgAAAAABAAAAAgAAAAQzU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50AwAAAAkIAAAACQkAAAAEBwAAAIkBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuR2VuZXJpY0NvbXBhcmVyYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0AAAAABQgAAAAzU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50AgAAAAFYAVkAAAgIAwAAAAEAAAABAAAAAQkAAAAIAAAAAgAAAAIAAAAL", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5DAMAAABwU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLCBWZXJzaW9uPTQuMC4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49OWQ3N2NjN2FkMzliNjhlYgUBAAAArAJTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5Tb3J0ZWRMaXN0YDJbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50LCBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViXV0HAAAABGtleXMGdmFsdWVzBV9zaXplB3ZlcnNpb24IY29tcGFyZXIHa2V5TGlzdAl2YWx1ZUxpc3QHBAAAAwQECDVTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnRbXQMAAAAICIkBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuR2VuZXJpY0NvbXBhcmVyYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV20AlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLlNvcnRlZExpc3RgMitLZXlMaXN0W1tTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5Qb2ludCwgU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLCBWZXJzaW9uPTQuMC4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49OWQ3N2NjN2FkMzliNjhlYl1dAgAAALYCU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuU29ydGVkTGlzdGAyK1ZhbHVlTGlzdFtbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQsIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cywgVmVyc2lvbj00LjAuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTlkNzdjYzdhZDM5YjY4ZWJdXQIAAAACAAAACQQAAAAJBQAAAAIAAAAAAAAACQYAAAAKCg8EAAAAAgAAAAgBAAAAAgAAAAcFAAAAAAEAAAACAAAABDNTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQDAAAACQcAAAAJCAAAAAQGAAAAiQFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5HZW5lcmljQ29tcGFyZXJgMVtbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQAAAAAFBwAAADNTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQCAAAAAVgBWQAACAgDAAAAAQAAAAEAAAABCAAAAAcAAAACAAAAAgAAAAs=", TargetFrameworkMoniker.netfx461) } }; yield return new object[] { new Collections.SortedList(pointDictionary, Comparer.Default), new TypeSerializableValue[] { new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAAB1TeXN0ZW0uQ29sbGVjdGlvbnMuU29ydGVkTGlzdAcAAAAEa2V5cwZ2YWx1ZXMFX3NpemUHdmVyc2lvbghjb21wYXJlcgdrZXlMaXN0CXZhbHVlTGlzdAUFAAADAwMICIkBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuR2VuZXJpY0NvbXBhcmVyYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0lU3lzdGVtLkNvbGxlY3Rpb25zLlNvcnRlZExpc3QrS2V5TGlzdCdTeXN0ZW0uQ29sbGVjdGlvbnMuU29ydGVkTGlzdCtWYWx1ZUxpc3QJAgAAAAkDAAAAAgAAAAAAAAAJBAAAAAoKEAIAAAACAAAACAgBAAAACAgCAAAAEAMAAAACAAAACQUAAAAJBgAAAAQEAAAAiQFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5HZW5lcmljQ29tcGFyZXJgMVtbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQAAAAAMBwAAAHBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViBQUAAAAzU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50AgAAAAFYAVkAAAgIBwAAAAEAAAABAAAAAQYAAAAFAAAAAgAAAAIAAAAL", TargetFrameworkMoniker.netcoreapp20), new TypeSerializableValue("AAEAAAD/////AQAAAAAAAAAEAQAAAB1TeXN0ZW0uQ29sbGVjdGlvbnMuU29ydGVkTGlzdAcAAAAEa2V5cwZ2YWx1ZXMFX3NpemUHdmVyc2lvbghjb21wYXJlcgdrZXlMaXN0CXZhbHVlTGlzdAUFAAADAwMICIkBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuR2VuZXJpY0NvbXBhcmVyYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0lU3lzdGVtLkNvbGxlY3Rpb25zLlNvcnRlZExpc3QrS2V5TGlzdCdTeXN0ZW0uQ29sbGVjdGlvbnMuU29ydGVkTGlzdCtWYWx1ZUxpc3QJAgAAAAkDAAAAAgAAAAAAAAAJBAAAAAoKEAIAAAACAAAACAgBAAAACAgCAAAAEAMAAAACAAAACQUAAAAJBgAAAAQEAAAAiQFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5HZW5lcmljQ29tcGFyZXJgMVtbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQAAAAAMBwAAAHBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViBQUAAAAzU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50AgAAAAFYAVkAAAgIBwAAAAEAAAABAAAAAQYAAAAFAAAAAgAAAAIAAAAL", TargetFrameworkMoniker.netfx461) } }; diff --git a/src/libraries/System.Security.Cryptography.Xml/tests/System.Security.Cryptography.Xml.Tests.csproj b/src/libraries/System.Security.Cryptography.Xml/tests/System.Security.Cryptography.Xml.Tests.csproj index 2bfad93e7780f..3c09606bbbe0a 100644 --- a/src/libraries/System.Security.Cryptography.Xml/tests/System.Security.Cryptography.Xml.Tests.csproj +++ b/src/libraries/System.Security.Cryptography.Xml/tests/System.Security.Cryptography.Xml.Tests.csproj @@ -1,6 +1,6 @@ - $(NetCoreAppCurrent);net461 + $(NetCoreAppCurrent);net48 @@ -68,7 +68,7 @@ - + \ No newline at end of file From c62a99ec6373bd0b446f3206793972c4619fb599 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Tue, 6 Oct 2020 00:26:19 +0200 Subject: [PATCH 49/67] Test fixes and wasm fixes --- eng/testing/.runsettings | 2 +- eng/testing/WasmRunnerTemplate.sh | 28 ------------ eng/testing/mobile/WasmRunnerTemplate.sh | 2 +- eng/testing/xunit/xunit.props | 2 +- .../System.Console/tests/ReadAndWrite.cs | 2 +- src/libraries/System.Console/tests/ReadKey.cs | 4 +- .../System.Console/tests/ReadKey2.cs | 43 ------------------- .../tests/System.Console.Tests.csproj | 7 --- .../tests/WindowAndCursorProps.cs | 34 +++------------ .../tests/ProcessStandardConsoleTests.cs | 1 + .../KeyTransRecipientInfoTests.cs | 2 + 11 files changed, 15 insertions(+), 112 deletions(-) delete mode 100644 eng/testing/WasmRunnerTemplate.sh delete mode 100644 src/libraries/System.Console/tests/ReadKey2.cs diff --git a/eng/testing/.runsettings b/eng/testing/.runsettings index 5817a15c7da70..48e57cfd6e7e7 100644 --- a/eng/testing/.runsettings +++ b/eng/testing/.runsettings @@ -24,7 +24,7 @@ - Detailed + Minimal diff --git a/eng/testing/WasmRunnerTemplate.sh b/eng/testing/WasmRunnerTemplate.sh deleted file mode 100644 index e2e3996cab58c..0000000000000 --- a/eng/testing/WasmRunnerTemplate.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env bash - -EXECUTION_DIR=$(dirname $0) - -cd $EXECUTION_DIR - -XHARNESS_OUT="$EXECUTION_DIR/xharness-output" - -if [ ! -z "$XHARNESS_CLI_PATH" ]; then - # When running in CI, we only have the .NET runtime available - # We need to call the XHarness CLI DLL directly via dotnet exec - HARNESS_RUNNER="dotnet exec $XHARNESS_CLI_PATH" -else - HARNESS_RUNNER="dotnet xharness" -fi - -if [ -z "$XHARNESS_COMMAND" ]; then - XHARNESS_COMMAND="test" -fi - -# RunCommands defined in tests.mobile.targets -[[RunCommands]] - -_exitCode=$? - -echo "XHarness artifacts: $XHARNESS_OUT" - -exit $_exitCode diff --git a/eng/testing/mobile/WasmRunnerTemplate.sh b/eng/testing/mobile/WasmRunnerTemplate.sh index b5419103ccdf3..96b4eac277c3a 100755 --- a/eng/testing/mobile/WasmRunnerTemplate.sh +++ b/eng/testing/mobile/WasmRunnerTemplate.sh @@ -31,7 +31,7 @@ if [ -z "$XHARNESS_COMMAND" ]; then XHARNESS_COMMAND="test" fi -$HARNESS_RUNNER wasm ${XHARNESS_COMMAND} --app=. --engine=${JS_ENGINE} ${JS_ENGINE_ARGS} --js-file=runtime.js -v --output-directory=$XHARNESS_OUT -- ${RUN_TESTS_JS_ARGUMENTS} --run WasmTestRunner.dll ${TEST_NAME}.dll +$HARNESS_RUNNER wasm ${XHARNESS_COMMAND} --app=. --engine=${JS_ENGINE} ${JS_ENGINE_ARGS} --js-file=runtime.js -v --output-directory=$XHARNESS_OUT -- ${RUN_TESTS_JS_ARGUMENTS} --run WasmTestRunner.dll ${TEST_NAME}.dll -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing _exitCode=$? diff --git a/eng/testing/xunit/xunit.props b/eng/testing/xunit/xunit.props index eec4cec2516bf..911dfda29c7e7 100644 --- a/eng/testing/xunit/xunit.props +++ b/eng/testing/xunit/xunit.props @@ -3,7 +3,7 @@ - + diff --git a/src/libraries/System.Console/tests/ReadAndWrite.cs b/src/libraries/System.Console/tests/ReadAndWrite.cs index 97dd1c8c87ef7..3222c1040e6a6 100644 --- a/src/libraries/System.Console/tests/ReadAndWrite.cs +++ b/src/libraries/System.Console/tests/ReadAndWrite.cs @@ -281,7 +281,7 @@ public unsafe void OutputEncodingPreamble() } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotWindowsNanoServer), nameof(PlatformDetection.IsNotWindowsServerCore), nameof(PlatformDetection.IsNotWindowsIoTCore))] [PlatformSpecific(~TestPlatforms.Browser)] public unsafe void OutputEncoding() { diff --git a/src/libraries/System.Console/tests/ReadKey.cs b/src/libraries/System.Console/tests/ReadKey.cs index 02d54801fe302..da1befd643410 100644 --- a/src/libraries/System.Console/tests/ReadKey.cs +++ b/src/libraries/System.Console/tests/ReadKey.cs @@ -6,9 +6,9 @@ using Microsoft.DotNet.RemoteExecutor; using Xunit; -public partial class ReadKey +public class ReadKey { - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotWindows7))] // https://github.com/dotnet/runtime/issues/43015 public void KeyAvailable() { if (Console.IsInputRedirected) diff --git a/src/libraries/System.Console/tests/ReadKey2.cs b/src/libraries/System.Console/tests/ReadKey2.cs deleted file mode 100644 index fa198b9f9ac9c..0000000000000 --- a/src/libraries/System.Console/tests/ReadKey2.cs +++ /dev/null @@ -1,43 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Diagnostics; -using Xunit; -using Xunit.Abstractions; - -public partial class ReadKey -{ - private readonly ITestOutputHelper _output; - - public ReadKey(ITestOutputHelper output) - { - _output = output; - } - - private bool IsHandleRedirected(IntPtr handle, string desc) - { - // If handle is not to a character device, we must be redirected: - uint fileType = Interop.Kernel32.GetFileType(handle); - _output.WriteLine($"fileTypeOutput '{desc}': {fileType}"); - - - if ((fileType & Interop.Kernel32.FileTypes.FILE_TYPE_CHAR) != Interop.Kernel32.FileTypes.FILE_TYPE_CHAR) - return true; - - // We are on a char device if GetConsoleMode succeeds and so we are not redirected. - return (!Interop.Kernel32.IsGetConsoleModeCallSuccessful(handle)); - } - - [Fact] - public void LogKeyAvailable() - { - if (PlatformDetection.IsWindows) - { - IntPtr inputHandle = Interop.Kernel32.GetStdHandle(Interop.Kernel32.HandleTypes.STD_INPUT_HANDLE); - _output.WriteLine("IsInputHandleRedirected: " + IsHandleRedirected(inputHandle, "input")); - IntPtr OutputHandle = Interop.Kernel32.GetStdHandle(Interop.Kernel32.HandleTypes.STD_OUTPUT_HANDLE); - _output.WriteLine("IsOutputHandleRedirected: " + IsHandleRedirected(OutputHandle, "output")); - } - } -} diff --git a/src/libraries/System.Console/tests/System.Console.Tests.csproj b/src/libraries/System.Console/tests/System.Console.Tests.csproj index bb8e7168ff8d3..d8ea79330084f 100644 --- a/src/libraries/System.Console/tests/System.Console.Tests.csproj +++ b/src/libraries/System.Console/tests/System.Console.Tests.csproj @@ -23,7 +23,6 @@ - - - - - - - diff --git a/src/libraries/System.Console/tests/WindowAndCursorProps.cs b/src/libraries/System.Console/tests/WindowAndCursorProps.cs index aed9ef0289164..b74aeaab5b9df 100644 --- a/src/libraries/System.Console/tests/WindowAndCursorProps.cs +++ b/src/libraries/System.Console/tests/WindowAndCursorProps.cs @@ -51,7 +51,7 @@ public static void SetBufferSize_Unix_ThrowsPlatformNotSupportedException() [InlineData(-1)] public static void WindowWidth_SetInvalid_ThrowsArgumentOutOfRangeException(int value) { - if (Console.IsOutputRedirected) + if (Console.IsOutputRedirected && value >= 0) { Assert.Throws(() => Console.WindowWidth = value); } @@ -83,7 +83,7 @@ public static void WindowWidth_SetUnix_ThrowsPlatformNotSupportedException() [InlineData(-1)] public static void WindowHeight_SetInvalid_ThrowsArgumentOutOfRangeException(int value) { - if (Console.IsOutputRedirected) + if (Console.IsOutputRedirected && value >= 0) { Assert.Throws(() => Console.WindowHeight = value); } @@ -171,16 +171,8 @@ public static void WindowTop_SetUnix_ThrowsPlatformNotSupportedException() [PlatformSpecific(TestPlatforms.Windows)] // Expected behavior specific to Windows public static void WindowLeftTop_Windows() { - if (Console.IsOutputRedirected) - { - Assert.Throws(() => Console.WindowLeft); - Assert.Throws(() => Console.WindowTop); - } - else - { - Console.WriteLine(Console.WindowLeft); - Console.WriteLine(Console.WindowTop); - } + Console.WriteLine(Console.WindowLeft); + Console.WriteLine(Console.WindowTop); } [Fact] @@ -416,14 +408,7 @@ public void CursorLeft_Set_GetReturnsExpected() [PlatformSpecific(~TestPlatforms.Browser)] public void CursorLeft_SetInvalid_ThrowsArgumentOutOfRangeException(int value) { - if (PlatformDetection.IsWindows && Console.IsOutputRedirected) - { - Assert.Throws(() => Console.CursorLeft = value); - } - else - { - AssertExtensions.Throws("left", () => Console.CursorLeft = value); - } + AssertExtensions.Throws("left", () => Console.CursorLeft = value); } [Fact] @@ -459,14 +444,7 @@ public void CursorTop_Set_GetReturnsExpected() [PlatformSpecific(~TestPlatforms.Browser)] public void CursorTop_SetInvalid_ThrowsArgumentOutOfRangeException(int value) { - if (PlatformDetection.IsWindows & Console.IsOutputRedirected) - { - Assert.Throws(() => Console.CursorTop = value); - } - else - { - AssertExtensions.Throws("top", () => Console.CursorTop = value); - } + AssertExtensions.Throws("top", () => Console.CursorTop = value); } [Fact] diff --git a/src/libraries/System.Diagnostics.Process/tests/ProcessStandardConsoleTests.cs b/src/libraries/System.Diagnostics.Process/tests/ProcessStandardConsoleTests.cs index f5cdccdfba992..6a3a1e7840b2f 100644 --- a/src/libraries/System.Diagnostics.Process/tests/ProcessStandardConsoleTests.cs +++ b/src/libraries/System.Diagnostics.Process/tests/ProcessStandardConsoleTests.cs @@ -13,6 +13,7 @@ public class ProcessStandardConsoleTests : ProcessTestBase private const int s_ConsoleEncoding = 437; [ConditionalFact(typeof(RemoteExecutor), nameof(RemoteExecutor.IsSupported))] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotWindowsNanoServer), nameof(PlatformDetection.IsNotWindowsServerCore), nameof(PlatformDetection.IsNotWindowsIoTCore))] public void TestChangesInConsoleEncoding() { Action run = expectedCodePage => diff --git a/src/libraries/System.Security.Cryptography.Pkcs/tests/EnvelopedCms/KeyTransRecipientInfoTests.cs b/src/libraries/System.Security.Cryptography.Pkcs/tests/EnvelopedCms/KeyTransRecipientInfoTests.cs index 5e503b10584ba..bd49b06ade3f6 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/tests/EnvelopedCms/KeyTransRecipientInfoTests.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/tests/EnvelopedCms/KeyTransRecipientInfoTests.cs @@ -198,6 +198,8 @@ private static KeyTransRecipientInfo EncodeKeyTransl(SubjectIdentifierType type { ContentInfo contentInfo = new ContentInfo(new byte[] { 1, 2, 3 }); EnvelopedCms ecms = new EnvelopedCms(contentInfo); + // force useCms=true on netframework + ecms.UnprotectedAttributes.Add(new Pkcs9DocumentName("a")); using (X509Certificate2 cert = Certificates.RSAKeyTransfer1.GetCertificate()) { CmsRecipient cmsRecipient = new CmsRecipient(type, cert); From 9a0a1fa76ed54001a71e36f0ca8bf3b8ce4bedfd Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Tue, 6 Oct 2020 09:51:41 +0200 Subject: [PATCH 50/67] Fix test code --- .../tests/ProcessStandardConsoleTests.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libraries/System.Diagnostics.Process/tests/ProcessStandardConsoleTests.cs b/src/libraries/System.Diagnostics.Process/tests/ProcessStandardConsoleTests.cs index ae7b3876b5474..4b1dd285665d0 100644 --- a/src/libraries/System.Diagnostics.Process/tests/ProcessStandardConsoleTests.cs +++ b/src/libraries/System.Diagnostics.Process/tests/ProcessStandardConsoleTests.cs @@ -11,9 +11,14 @@ namespace System.Diagnostics.Tests public class ProcessStandardConsoleTests : ProcessTestBase { [ConditionalFact(typeof(RemoteExecutor), nameof(RemoteExecutor.IsSupported))] - [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotWindowsNanoServer), nameof(PlatformDetection.IsNotWindowsServerCore), nameof(PlatformDetection.IsNotWindowsIoTCore))] public void TestChangesInConsoleEncoding() { + // These OS variants don't work with setting a default Encoding. + if (PlatformDetection.IsNotWindowsNanoServer || PlatformDetection.IsNotWindowsServerCore || PlatformDetection.IsNotWindowsIoTCore) + { + return; + } + const int ConsoleEncoding = 437; void RunWithExpectedCodePage(int expectedCodePage) From 0e1799da7b7abb862d79c5c745f7489033a9a799 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Tue, 6 Oct 2020 11:32:48 +0200 Subject: [PATCH 51/67] Pass traits to wasm run invocation --- eng/testing/mobile/WasmRunnerTemplate.sh | 7 ++++++- eng/testing/mobile/tests.targets | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/eng/testing/mobile/WasmRunnerTemplate.sh b/eng/testing/mobile/WasmRunnerTemplate.sh index 68c1b7b1e2f7c..48250eb566058 100755 --- a/eng/testing/mobile/WasmRunnerTemplate.sh +++ b/eng/testing/mobile/WasmRunnerTemplate.sh @@ -4,12 +4,17 @@ EXECUTION_DIR=$(dirname $0) TEST_NAME=$1 JS_ENGINE=$2 JS_ENGINE_ARGS=$3 +TEST_FILTER=$4 XHARNESS_OUT="$EXECUTION_DIR/xharness-output" if [ -z ${2+x} ]; then JS_ENGINE=V8 fi +if [ -z ${4+x} ]; then + TEST_FILTER="-notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing" +fi + # Find a better way to express this if [ "$TEST_NAME" == "System.IO.FileSystem.Tests" ]; then RUN_TESTS_JS_ARGUMENTS="--working-dir=/test-dir" @@ -31,7 +36,7 @@ if [ -z "$XHARNESS_COMMAND" ]; then XHARNESS_COMMAND="test" fi -$HARNESS_RUNNER wasm ${XHARNESS_COMMAND} --app=. --engine=${JS_ENGINE} ${JS_ENGINE_ARGS} --js-file=runtime.js --output-directory=$XHARNESS_OUT -- ${RUN_TESTS_JS_ARGUMENTS} --run WasmTestRunner.dll ${TEST_NAME}.dll -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing +$HARNESS_RUNNER wasm ${XHARNESS_COMMAND} --app=. --engine=${JS_ENGINE} ${JS_ENGINE_ARGS} --js-file=runtime.js --output-directory=$XHARNESS_OUT -- ${RUN_TESTS_JS_ARGUMENTS} --run WasmTestRunner.dll ${TEST_NAME}.dll ${TEST_FILTER} _exitCode=$? diff --git a/eng/testing/mobile/tests.targets b/eng/testing/mobile/tests.targets index 32e89895cd516..9d923192a9ba5 100644 --- a/eng/testing/mobile/tests.targets +++ b/eng/testing/mobile/tests.targets @@ -208,7 +208,7 @@ "$(RunScriptOutputPath)" $(RunTestsCommand) $(AssemblyName) $(TargetArchitecture) - $(RunTestsCommand) $(AssemblyName) "$(JSEngine)" "$(JSEngineArgs)" + $(RunTestsCommand) $(AssemblyName) "$(JSEngine)" "$(JSEngineArgs)" "$(_withCategories.Replace(';', ' -trait category='))$(_withoutCategories.Replace(';', ' -notrait category='))" $(RunTestsEnvironmentVariables);MONO_ENV_OPTIONS=$(MonoEnvOptions) From a953524e9d5fd0cb2827493370e336444bfcfdce Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Tue, 6 Oct 2020 17:02:20 +0200 Subject: [PATCH 52/67] REvert WindowAndCursorProps changes --- .../tests/WindowAndCursorProps.cs | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/src/libraries/System.Console/tests/WindowAndCursorProps.cs b/src/libraries/System.Console/tests/WindowAndCursorProps.cs index 8d6400f17fe74..07309799a7549 100644 --- a/src/libraries/System.Console/tests/WindowAndCursorProps.cs +++ b/src/libraries/System.Console/tests/WindowAndCursorProps.cs @@ -51,7 +51,7 @@ public static void SetBufferSize_Unix_ThrowsPlatformNotSupportedException() [InlineData(-1)] public static void WindowWidth_SetInvalid_ThrowsArgumentOutOfRangeException(int value) { - if (Console.IsOutputRedirected && value >= 0) + if (Console.IsOutputRedirected) { Assert.Throws(() => Console.WindowWidth = value); } @@ -83,7 +83,7 @@ public static void WindowWidth_SetUnix_ThrowsPlatformNotSupportedException() [InlineData(-1)] public static void WindowHeight_SetInvalid_ThrowsArgumentOutOfRangeException(int value) { - if (Console.IsOutputRedirected && value >= 0) + if (Console.IsOutputRedirected) { Assert.Throws(() => Console.WindowHeight = value); } @@ -171,8 +171,16 @@ public static void WindowTop_SetUnix_ThrowsPlatformNotSupportedException() [PlatformSpecific(TestPlatforms.Windows)] // Expected behavior specific to Windows public static void WindowLeftTop_Windows() { - Console.WriteLine(Console.WindowLeft); - Console.WriteLine(Console.WindowTop); + if (Console.IsOutputRedirected) + { + Assert.Throws(() => Console.WindowLeft); + Assert.Throws(() => Console.WindowTop); + } + else + { + Console.WriteLine(Console.WindowLeft); + Console.WriteLine(Console.WindowTop); + } } [Fact] @@ -408,7 +416,14 @@ public void CursorLeft_Set_GetReturnsExpected() [PlatformSpecific(~TestPlatforms.Browser)] public void CursorLeft_SetInvalid_ThrowsArgumentOutOfRangeException(int value) { - AssertExtensions.Throws("left", () => Console.CursorLeft = value); + if (PlatformDetection.IsWindows && Console.IsOutputRedirected) + { + Assert.Throws(() => Console.CursorLeft = value); + } + else + { + AssertExtensions.Throws("left", () => Console.CursorLeft = value); + } } [Fact] @@ -444,7 +459,14 @@ public void CursorTop_Set_GetReturnsExpected() [PlatformSpecific(~TestPlatforms.Browser)] public void CursorTop_SetInvalid_ThrowsArgumentOutOfRangeException(int value) { - AssertExtensions.Throws("top", () => Console.CursorTop = value); + if (PlatformDetection.IsWindows & Console.IsOutputRedirected) + { + Assert.Throws(() => Console.CursorTop = value); + } + else + { + AssertExtensions.Throws("top", () => Console.CursorTop = value); + } } [Fact] From 3f46d7284d66ce5380e1f0da05cc21efd553bd5e Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Tue, 6 Oct 2020 19:43:53 +0200 Subject: [PATCH 53/67] Remove unnecessary test condition --- .../tests/ProcessStandardConsoleTests.cs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/libraries/System.Diagnostics.Process/tests/ProcessStandardConsoleTests.cs b/src/libraries/System.Diagnostics.Process/tests/ProcessStandardConsoleTests.cs index 4b1dd285665d0..e302761750140 100644 --- a/src/libraries/System.Diagnostics.Process/tests/ProcessStandardConsoleTests.cs +++ b/src/libraries/System.Diagnostics.Process/tests/ProcessStandardConsoleTests.cs @@ -13,12 +13,6 @@ public class ProcessStandardConsoleTests : ProcessTestBase [ConditionalFact(typeof(RemoteExecutor), nameof(RemoteExecutor.IsSupported))] public void TestChangesInConsoleEncoding() { - // These OS variants don't work with setting a default Encoding. - if (PlatformDetection.IsNotWindowsNanoServer || PlatformDetection.IsNotWindowsServerCore || PlatformDetection.IsNotWindowsIoTCore) - { - return; - } - const int ConsoleEncoding = 437; void RunWithExpectedCodePage(int expectedCodePage) From e1022845ff7b7a2d2cd0685fd3e69cd71fead755 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Tue, 6 Oct 2020 20:38:37 +0200 Subject: [PATCH 54/67] Update eng/testing/mobile/WasmRunnerTemplate.sh Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com> --- eng/testing/mobile/WasmRunnerTemplate.sh | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/eng/testing/mobile/WasmRunnerTemplate.sh b/eng/testing/mobile/WasmRunnerTemplate.sh index 48250eb566058..4288dd0a848de 100755 --- a/eng/testing/mobile/WasmRunnerTemplate.sh +++ b/eng/testing/mobile/WasmRunnerTemplate.sh @@ -1,20 +1,12 @@ #!/usr/bin/env bash -EXECUTION_DIR=$(dirname $0) -TEST_NAME=$1 -JS_ENGINE=$2 -JS_ENGINE_ARGS=$3 -TEST_FILTER=$4 +EXECUTION_DIR="$(dirname "$0")" +TEST_NAME="$1" +JS_ENGINE="${2:-V8}" +JS_ENGINE_ARGS="$3" +TEST_FILTER="${4:--notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing}" XHARNESS_OUT="$EXECUTION_DIR/xharness-output" -if [ -z ${2+x} ]; then - JS_ENGINE=V8 -fi - -if [ -z ${4+x} ]; then - TEST_FILTER="-notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing" -fi - # Find a better way to express this if [ "$TEST_NAME" == "System.IO.FileSystem.Tests" ]; then RUN_TESTS_JS_ARGUMENTS="--working-dir=/test-dir" From 95f2738dce7c3df3b7137e6174ff4a61d5529dca Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Wed, 7 Oct 2020 13:08:12 +0200 Subject: [PATCH 55/67] Handle behavior difference for Win7x86 Console tests --- .../System.Console/tests/WindowAndCursorProps.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/libraries/System.Console/tests/WindowAndCursorProps.cs b/src/libraries/System.Console/tests/WindowAndCursorProps.cs index 07309799a7549..632b5777e47f7 100644 --- a/src/libraries/System.Console/tests/WindowAndCursorProps.cs +++ b/src/libraries/System.Console/tests/WindowAndCursorProps.cs @@ -51,7 +51,8 @@ public static void SetBufferSize_Unix_ThrowsPlatformNotSupportedException() [InlineData(-1)] public static void WindowWidth_SetInvalid_ThrowsArgumentOutOfRangeException(int value) { - if (Console.IsOutputRedirected) + // Windows7 x86 doesn't throw an IOException when input/output is redirected: https://github.com/dotnet/runtime/issues/43138. + if (Console.IsOutputRedirected && (PlatformDetection.IsNotWindows7 || !PlatformDetection.Is32BitProcess)) { Assert.Throws(() => Console.WindowWidth = value); } @@ -83,7 +84,8 @@ public static void WindowWidth_SetUnix_ThrowsPlatformNotSupportedException() [InlineData(-1)] public static void WindowHeight_SetInvalid_ThrowsArgumentOutOfRangeException(int value) { - if (Console.IsOutputRedirected) + // Windows7 x86 doesn't throw an IOException when input/output is redirected: https://github.com/dotnet/runtime/issues/43138. + if (Console.IsOutputRedirected && (PlatformDetection.IsNotWindows7 || !PlatformDetection.Is32BitProcess)) { Assert.Throws(() => Console.WindowHeight = value); } @@ -171,7 +173,8 @@ public static void WindowTop_SetUnix_ThrowsPlatformNotSupportedException() [PlatformSpecific(TestPlatforms.Windows)] // Expected behavior specific to Windows public static void WindowLeftTop_Windows() { - if (Console.IsOutputRedirected) + // Windows7 x86 doesn't throw an IOException when input/output is redirected: https://github.com/dotnet/runtime/issues/43138. + if (Console.IsOutputRedirected && (PlatformDetection.IsNotWindows7 || !PlatformDetection.Is32BitProcess)) { Assert.Throws(() => Console.WindowLeft); Assert.Throws(() => Console.WindowTop); @@ -416,7 +419,8 @@ public void CursorLeft_Set_GetReturnsExpected() [PlatformSpecific(~TestPlatforms.Browser)] public void CursorLeft_SetInvalid_ThrowsArgumentOutOfRangeException(int value) { - if (PlatformDetection.IsWindows && Console.IsOutputRedirected) + // Windows7 x86 doesn't throw an IOException when input/output is redirected: https://github.com/dotnet/runtime/issues/43138. + if (PlatformDetection.IsWindows && Console.IsOutputRedirected && (PlatformDetection.IsNotWindows7 || !PlatformDetection.Is32BitProcess)) { Assert.Throws(() => Console.CursorLeft = value); } @@ -459,7 +463,8 @@ public void CursorTop_Set_GetReturnsExpected() [PlatformSpecific(~TestPlatforms.Browser)] public void CursorTop_SetInvalid_ThrowsArgumentOutOfRangeException(int value) { - if (PlatformDetection.IsWindows & Console.IsOutputRedirected) + // Windows7 x86 doesn't throw an IOException when input/output is redirected: https://github.com/dotnet/runtime/issues/43138. + if (PlatformDetection.IsWindows && Console.IsOutputRedirected && (PlatformDetection.IsNotWindows7 || !PlatformDetection.Is32BitProcess)) { Assert.Throws(() => Console.CursorTop = value); } From 9e0126554f2b94defd42e08b70f15862b9ddc265 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Sat, 10 Oct 2020 18:07:02 +0200 Subject: [PATCH 56/67] Disable Mono Windows test invocation --- eng/pipelines/runtime.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 6767f31fbbf6b..380a3efb49f75 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -876,7 +876,8 @@ jobs: runtimeFlavor: mono buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} platforms: - - Windows_NT_x64 + # Reenable when https://github.com/dotnet/runtime/issues/34582 is fixed. + # - Windows_NT_x64 - OSX_x64 - Linux_arm64 - Linux_x64 From 7999fb92682eb42594fc5c85da1e2967ee006db0 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Sat, 10 Oct 2020 22:25:13 +0200 Subject: [PATCH 57/67] Disable test on nano --- .../tests/ProcessStandardConsoleTests.cs | 6 ++++++ src/libraries/sendtohelixhelp.proj | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/libraries/System.Diagnostics.Process/tests/ProcessStandardConsoleTests.cs b/src/libraries/System.Diagnostics.Process/tests/ProcessStandardConsoleTests.cs index e302761750140..1b638419ff89b 100644 --- a/src/libraries/System.Diagnostics.Process/tests/ProcessStandardConsoleTests.cs +++ b/src/libraries/System.Diagnostics.Process/tests/ProcessStandardConsoleTests.cs @@ -13,6 +13,12 @@ public class ProcessStandardConsoleTests : ProcessTestBase [ConditionalFact(typeof(RemoteExecutor), nameof(RemoteExecutor.IsSupported))] public void TestChangesInConsoleEncoding() { + // Returns a non existent encoding "Codepage - 0": https://github.com/dotnet/runtime/issues/42959 + if (PlatformDetection.IsWindowsNanoServer) + { + return; + } + const int ConsoleEncoding = 437; void RunWithExpectedCodePage(int expectedCodePage) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 945e457c48ace..daf90cc752c58 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -25,7 +25,7 @@ '$(Scenario)' == 'gcstress0xc_jitstress1' or '$(Scenario)' == 'gcstress0xc_jitstress2' or '$(Scenario)' == 'gcstress0xc_jitminopts_heapverify1'">01:30:00 - <_workItemTimeout Condition="'$(_workItemTimeout)' == '' and ('$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'tvOS')">00:30:00 + <_workItemTimeout Condition="'$(_workItemTimeout)' == '' and ('$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'tvOS' or '$(MonoEnableInterpreter)' == 'true')">00:30:00 <_workItemTimeout Condition="'$(Scenario)' == '' and '$(_workItemTimeout)' == '' and ('$(TargetArchitecture)' == 'arm64' or '$(TargetArchitecture)' == 'arm')">00:45:00 <_workItemTimeout Condition="'$(Scenario)' != '' and '$(_workItemTimeout)' == '' and ('$(TargetArchitecture)' == 'arm64' or '$(TargetArchitecture)' == 'arm')">01:00:00 <_workItemTimeout Condition="'$(Scenario)' == '' and '$(_workItemTimeout)' == ''">00:15:00 From 68d0ae51e56436ed39f489286fb73fdb088a598a Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Sun, 11 Oct 2020 12:46:06 +0200 Subject: [PATCH 58/67] Set the hang dump timeout in the test submission --- src/libraries/sendtohelixhelp.proj | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index daf90cc752c58..7a809a6f908cb 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -99,17 +99,23 @@ $(HelixCommand) $(TargetArchitecture) - - - dotnet test %HELIX_WORKITEM_FRIENDLYNAME%.dll --settings .runsettings --platform $(TargetArchitecture) - - + + <_workItemTimeoutInSeconds>$([System.TimeSpan]::Parse($(_workItemTimeout)).TotalSeconds) + <_vstestBlameOption>CollectDump;CollectAlways=true;DumpType=Full;CollectHangDump;HangDumpType=Full;TestTimeout=$(_workItemTimeoutInSeconds)s + + <_workItemTimeout>$([MSBuild]::Add($(_workItemTimeoutInSeconds), 600)) + + + dotnet test %HELIX_WORKITEM_FRIENDLYNAME%.dll --settings .runsettings --platform $(TargetArchitecture) --blame "$(_vstestBlameOption)" + + %HELIX_CORRELATION_PAYLOAD%\dotnet.exe %HELIX_CORRELATION_PAYLOAD%\sdk\$(ProductVersion)\vstest.console.dll %HELIX_WORKITEM_FRIENDLYNAME%.dll --Settings:.runsettings $HELIX_CORRELATION_PAYLOAD/dotnet $HELIX_CORRELATION_PAYLOAD/sdk/$(ProductVersion)/vstest.console.dll $HELIX_WORKITEM_FRIENDLYNAME.dll --Settings:.runsettings $(HelixCommand) --Platform:$(TargetArchitecture) + $(HelixCommand) --Blame:"$(_vstestBlameOption)" $(HelixCommand) -- RunConfiguration.DotNetHostPath="%HELIX_CORRELATION_PAYLOAD%\dotnet.exe" $(HelixCommand) -- RunConfiguration.DotNetHostPath="$HELIX_CORRELATION_PAYLOAD/dotnet" From 45e9b592a45eaa8bc573d48e4d460f2d41631241 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Mon, 12 Oct 2020 17:36:21 +0200 Subject: [PATCH 59/67] Format work item timeout correctly --- src/libraries/sendtohelixhelp.proj | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj index 7a809a6f908cb..388bd781c9842 100644 --- a/src/libraries/sendtohelixhelp.proj +++ b/src/libraries/sendtohelixhelp.proj @@ -105,7 +105,8 @@ <_workItemTimeoutInSeconds>$([System.TimeSpan]::Parse($(_workItemTimeout)).TotalSeconds) <_vstestBlameOption>CollectDump;CollectAlways=true;DumpType=Full;CollectHangDump;HangDumpType=Full;TestTimeout=$(_workItemTimeoutInSeconds)s - <_workItemTimeout>$([MSBuild]::Add($(_workItemTimeoutInSeconds), 600)) + <_newWorkItemTimeoutInSeconds>$([MSBuild]::Add($(_workItemTimeoutInSeconds), 600)) + <_workItemTimeout>$([System.TimeSpan]::FromSeconds($(_newWorkItemTimeoutInSeconds)).ToString('hh\:mm\:ss')) dotnet test %HELIX_WORKITEM_FRIENDLYNAME%.dll --settings .runsettings --platform $(TargetArchitecture) --blame "$(_vstestBlameOption)" From b2bf36046c73409af3893efb76d7659ef348fa07 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Tue, 13 Oct 2020 11:07:28 +0200 Subject: [PATCH 60/67] Add xunit.console back until VSTest lightweight Add minimal infrastructure for xunit.console back to run tests locally. This is temporary until VSTest offers a lightweight mode with less dependencies. --- eng/testing/.runsettings | 2 -- eng/testing/mobile/outerBuild.targets | 8 ----- eng/testing/mobile/tests.targets | 7 ++--- eng/testing/outerBuild.targets | 4 +++ eng/testing/runsettings.targets | 1 - eng/testing/xunit/xunit.console.targets | 42 +++++++++++++++++++++++++ eng/testing/xunit/xunit.props | 2 ++ eng/testing/xunit/xunit.targets | 7 +++++ src/mono/netcore/Makefile | 2 +- 9 files changed, 58 insertions(+), 17 deletions(-) delete mode 100644 eng/testing/mobile/outerBuild.targets create mode 100644 eng/testing/xunit/xunit.console.targets diff --git a/eng/testing/.runsettings b/eng/testing/.runsettings index 48e57cfd6e7e7..b83809b03567d 100644 --- a/eng/testing/.runsettings +++ b/eng/testing/.runsettings @@ -9,8 +9,6 @@ $$MAXCPUCOUNT$$ $$DISABLEPARALLELIZATION$$ - - $$DISABLEAPPDOMAIN$$ $$TESTCASEFILTER$$ $$DOTNETHOSTPATH$$ diff --git a/eng/testing/mobile/outerBuild.targets b/eng/testing/mobile/outerBuild.targets deleted file mode 100644 index 5b54061410550..0000000000000 --- a/eng/testing/mobile/outerBuild.targets +++ /dev/null @@ -1,8 +0,0 @@ - - - - - \ No newline at end of file diff --git a/eng/testing/mobile/tests.targets b/eng/testing/mobile/tests.targets index 9d923192a9ba5..3b78898c48636 100644 --- a/eng/testing/mobile/tests.targets +++ b/eng/testing/mobile/tests.targets @@ -231,9 +231,6 @@ - - - - - + + diff --git a/eng/testing/outerBuild.targets b/eng/testing/outerBuild.targets index e99524b4db479..53a16d407c9da 100644 --- a/eng/testing/outerBuild.targets +++ b/eng/testing/outerBuild.targets @@ -5,4 +5,8 @@ Targets="VSTest" BuildInParallel="$(BuildAllProjects)" /> + + + \ No newline at end of file diff --git a/eng/testing/runsettings.targets b/eng/testing/runsettings.targets index c31bf0abbe498..d0b9a9393154e 100644 --- a/eng/testing/runsettings.targets +++ b/eng/testing/runsettings.targets @@ -34,7 +34,6 @@ .Replace('$$COVERAGE_EXCLUDEBYFILE$$', '$(CoverageExcludeByFileFilter)') .Replace('$$COVERAGE_INCLUDEDIRECTORY$$', '$(CoverageIncludeDirectoryFilter)') .Replace('$$DISABLEPARALLELIZATION$$', '$([MSBuild]::ValueOrDefault('$(TestDisableParallelization)', 'false'))') - .Replace('$$DISABLEAPPDOMAIN$$', '$([MSBuild]::ValueOrDefault('$(TestDisableAppDomain)', 'false'))') .Replace('$$TESTCASEFILTER$$', '$(_testFilter)') .Replace('$$DOTNETHOSTPATH$$', '$(TestHostRootPath)$([System.IO.Path]::GetFileName('$(DotNetTool)'))')) diff --git a/eng/testing/xunit/xunit.console.targets b/eng/testing/xunit/xunit.console.targets new file mode 100644 index 0000000000000..27aeb184f6ff5 --- /dev/null +++ b/eng/testing/xunit/xunit.console.targets @@ -0,0 +1,42 @@ + + + + + + Build + + + + + <_depsFileArgument Condition="'$(GenerateDependencyFile)' == 'true'">--depsfile "$(TargetDir)$(TargetName).deps.json" + <_xunitConsoleAppPath>$(NuGetPackageRoot)microsoft.dotnet.xunitconsolerunner\$(MicrosoftDotNetXUnitConsoleRunnerVersion)\tools\netcoreapp2.1\xunit.console.dll + + <_runCommand>"$(TestHostRootPath)$([System.IO.Path]::GetFileName('$(DotNetTool)'))" exec --runtimeconfig "$(TargetDir)$(AssemblyName).runtimeconfig.json" $(_depsFileArgument) $(_xunitConsoleAppPath) + <_runCommand>$(_runCommand) "$(TargetPath)" + <_runCommand>$(_runCommand) -xml $(TargetDir)testResults.xml + <_runCommand Condition="'$(TestDisableParallelization)' == 'true'">$(_runCommand) -maxthreads 1 + <_runCommand Condition="'$(XUnitShowProgress)' == 'true'">$(_runCommand) -verbose + + + <_runCommand Condition="'$(XUnitMethodName)' != ''">$(_runCommand) -method $(XUnitMethodName) + <_runCommand Condition="'$(XUnitClassName)' != ''">$(_runCommand) -class $(XUnitClassName) + + + <_runCommand>$(_runCommand)$(_withCategories.Replace(';', ' -trait category=')) + <_runCommand>$(_runCommand)$(_withoutCategories.Replace(';', ' -notrait category=')) + + + <_runCommand Condition="'$(XUnitOptions)' != ''">$(_runCommand) $(XUnitOptions) + + + + + + + + \ No newline at end of file diff --git a/eng/testing/xunit/xunit.props b/eng/testing/xunit/xunit.props index 911dfda29c7e7..fcad010f5e3c3 100644 --- a/eng/testing/xunit/xunit.props +++ b/eng/testing/xunit/xunit.props @@ -4,6 +4,8 @@ + + diff --git a/eng/testing/xunit/xunit.targets b/eng/testing/xunit/xunit.targets index 41dee9fb06ec3..7e387204c4de8 100644 --- a/eng/testing/xunit/xunit.targets +++ b/eng/testing/xunit/xunit.targets @@ -5,4 +5,11 @@ Version="$(NetStandardLibrary20Version)" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'" /> + + + diff --git a/src/mono/netcore/Makefile b/src/mono/netcore/Makefile index 13029f39f19fb..e5715ec2b1431 100644 --- a/src/mono/netcore/Makefile +++ b/src/mono/netcore/Makefile @@ -58,5 +58,5 @@ run-tests-coreclr-all: # make run-tests-corefx-System.Runtime # for `System.Runtime.Tests` (the rule builds both the lib and the test if needed) run-tests-corefx-%: - $(DOTNET) build ../../../src/libraries/$*/tests -c $(LIBRARIES_TESTS_CONFIG) /p:RuntimeFlavor=mono /t:Test + $(DOTNET) test ../../../src/libraries/$*/tests -c $(LIBRARIES_TESTS_CONFIG) /p:RuntimeFlavor=mono /p:BuildTargetFramework=net6.0 From 5944644ed78b48dcc4ade86d6e10b263ed60a6ef Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Tue, 13 Oct 2020 14:32:43 +0200 Subject: [PATCH 61/67] Add docs for alternative test runner --- docs/workflow/testing/libraries/testing.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/workflow/testing/libraries/testing.md b/docs/workflow/testing/libraries/testing.md index c043a15370e02..b90548b670b35 100644 --- a/docs/workflow/testing/libraries/testing.md +++ b/docs/workflow/testing/libraries/testing.md @@ -58,9 +58,12 @@ To run all tests, including "outer loop" tests (which are typically slower and i dotnet test /p:Outerloop=true ``` -#### Running tests on a different target framework +#### Running tests on a single target framework -Each test project can potentially have multiple target frameworks. There are some tests that might be OS-specific, or might be testing an API that is available only on some target frameworks, so the `TargetFrameworks` property specifies the valid target frameworks. By default we will build and run only the default build target framework which is `net5.0`. The rest of the `TargetFrameworks` will need to be built and ran by specifying the `BuildTargetFramework` option, e.g.: +Each test project can potentially have multiple target frameworks. There are some tests that might be OS-specific, or might be testing an API that is available only on some target frameworks, so the `TargetFrameworks` property specifies the valid target frameworks. To run against a single target framework you can specify the `TargetFramework` via the framework `-f` switch: ```cmd dotnet test -f net48 src\libraries\System.Text.RegularExpressions\tests ``` + +#### Using an alternative test runner (advanced) +For non mobile configurations, the default test runner is VSTest (locally and in CI). By passing in `/p:TestRunner=xunit` when invoking `dotnet test`, an alternative test runner `xunit.console` is used. Even though that test runner is out-of-support and deprecated, it is still useful when debugging runtime issues or when adding support for new operating systems or devices. Our plan is to eventually get rid of `xunit.console` by adding a lightweight mode to the VSTest runner. From 46fd0134c093c61da9d0584b2e845f87306072b7 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Tue, 13 Oct 2020 23:14:07 +0200 Subject: [PATCH 62/67] Protect xunit test runner in CI --- .../common/templates/innerloop-steps.yml | 15 +++++++++++++++ eng/pipelines/global-build.yml | 4 ++++ 2 files changed, 19 insertions(+) create mode 100644 eng/pipelines/common/templates/innerloop-steps.yml diff --git a/eng/pipelines/common/templates/innerloop-steps.yml b/eng/pipelines/common/templates/innerloop-steps.yml new file mode 100644 index 0000000000000..b9f5e872e3fb0 --- /dev/null +++ b/eng/pipelines/common/templates/innerloop-steps.yml @@ -0,0 +1,15 @@ +parameters: + buildConfig: '' + testLibrary: '' + testRunner: '' + condition: always() + +steps: + # Build and test leaf solution + - ${{ if ne(parameters.testLibrary, '') }}: + - script: dotnet test + $(Build.SourcesDirectory)/src/libraries/{{ parameters.library }}/ + -c {{ parameters.buildConfig }} + /p:TestRunner={{ parameters.testRunner }} + /bl:$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/innerloop-steps-test.binlog + displayName: Build and test leaf solution diff --git a/eng/pipelines/global-build.yml b/eng/pipelines/global-build.yml index 9721eb4b9f479..de320d95b6fe3 100644 --- a/eng/pipelines/global-build.yml +++ b/eng/pipelines/global-build.yml @@ -48,6 +48,10 @@ jobs: testGroup: innerloop nameSuffix: Runtime_Debug buildArgs: -c release -runtimeConfiguration debug + extraStepsTemplate: /eng/pipelines/common/templates/innerloop-steps.yml + extraStepsParameters: + testLibrary: System.AppContext + testRunner: xunit # # Build with Debug config and Release runtimeConfiguration From 3dc00a5df5d8ac20339fdbc8d60100ded154403d Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Tue, 13 Oct 2020 23:39:42 +0200 Subject: [PATCH 63/67] Fix yml indentation --- eng/pipelines/global-build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/eng/pipelines/global-build.yml b/eng/pipelines/global-build.yml index de320d95b6fe3..5804afb230b06 100644 --- a/eng/pipelines/global-build.yml +++ b/eng/pipelines/global-build.yml @@ -48,10 +48,10 @@ jobs: testGroup: innerloop nameSuffix: Runtime_Debug buildArgs: -c release -runtimeConfiguration debug - extraStepsTemplate: /eng/pipelines/common/templates/innerloop-steps.yml - extraStepsParameters: - testLibrary: System.AppContext - testRunner: xunit + extraStepsTemplate: /eng/pipelines/common/templates/innerloop-steps.yml + extraStepsParameters: + testLibrary: System.AppContext + testRunner: xunit # # Build with Debug config and Release runtimeConfiguration From 442f14ed61cc8247a0fd8026027ad2a8ed557590 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Wed, 14 Oct 2020 00:19:30 +0200 Subject: [PATCH 64/67] Fix yml again --- eng/pipelines/common/templates/innerloop-steps.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/pipelines/common/templates/innerloop-steps.yml b/eng/pipelines/common/templates/innerloop-steps.yml index b9f5e872e3fb0..f9c713cc93af3 100644 --- a/eng/pipelines/common/templates/innerloop-steps.yml +++ b/eng/pipelines/common/templates/innerloop-steps.yml @@ -8,8 +8,8 @@ steps: # Build and test leaf solution - ${{ if ne(parameters.testLibrary, '') }}: - script: dotnet test - $(Build.SourcesDirectory)/src/libraries/{{ parameters.library }}/ - -c {{ parameters.buildConfig }} - /p:TestRunner={{ parameters.testRunner }} + $(Build.SourcesDirectory)/src/libraries/${{ parameters.library }}/ + -c ${{ parameters.buildConfig }} + /p:TestRunner=${{ parameters.testRunner }} /bl:$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/innerloop-steps-test.binlog displayName: Build and test leaf solution From 1918ec5cb1cd525a36d1ffea23d76430df73b370 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Wed, 14 Oct 2020 00:20:35 +0200 Subject: [PATCH 65/67] Yml again --- eng/pipelines/common/templates/innerloop-steps.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/pipelines/common/templates/innerloop-steps.yml b/eng/pipelines/common/templates/innerloop-steps.yml index f9c713cc93af3..c8b64a7fd0c53 100644 --- a/eng/pipelines/common/templates/innerloop-steps.yml +++ b/eng/pipelines/common/templates/innerloop-steps.yml @@ -8,7 +8,7 @@ steps: # Build and test leaf solution - ${{ if ne(parameters.testLibrary, '') }}: - script: dotnet test - $(Build.SourcesDirectory)/src/libraries/${{ parameters.library }}/ + $(Build.SourcesDirectory)/src/libraries/${{ parameters.testLibrary }}/ -c ${{ parameters.buildConfig }} /p:TestRunner=${{ parameters.testRunner }} /bl:$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/innerloop-steps-test.binlog From da533206d50ee669d6a56179b4591db94fb8d84f Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Wed, 14 Oct 2020 07:45:39 +0200 Subject: [PATCH 66/67] Fix yml and dump timeout --- eng/pipelines/common/templates/innerloop-steps.yml | 2 ++ eng/testing/.runsettings | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/eng/pipelines/common/templates/innerloop-steps.yml b/eng/pipelines/common/templates/innerloop-steps.yml index c8b64a7fd0c53..88e8ef59be90e 100644 --- a/eng/pipelines/common/templates/innerloop-steps.yml +++ b/eng/pipelines/common/templates/innerloop-steps.yml @@ -1,5 +1,6 @@ parameters: buildConfig: '' + archType: '' testLibrary: '' testRunner: '' condition: always() @@ -10,6 +11,7 @@ steps: - script: dotnet test $(Build.SourcesDirectory)/src/libraries/${{ parameters.testLibrary }}/ -c ${{ parameters.buildConfig }} + /p:TargetArchitecture=${{ parameters.archType }} /p:TestRunner=${{ parameters.testRunner }} /bl:$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/innerloop-steps-test.binlog displayName: Build and test leaf solution diff --git a/eng/testing/.runsettings b/eng/testing/.runsettings index b83809b03567d..993317b88ac26 100644 --- a/eng/testing/.runsettings +++ b/eng/testing/.runsettings @@ -43,7 +43,8 @@ - + From 639ed55f06168d8900553a7f432579406d68bb41 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Wed, 14 Oct 2020 09:50:10 +0200 Subject: [PATCH 67/67] Increase timeout for extra testing job --- eng/pipelines/global-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/eng/pipelines/global-build.yml b/eng/pipelines/global-build.yml index 5804afb230b06..d745811ef31fe 100644 --- a/eng/pipelines/global-build.yml +++ b/eng/pipelines/global-build.yml @@ -41,6 +41,7 @@ jobs: parameters: jobTemplate: /eng/pipelines/common/global-build-job.yml buildConfig: release + timeoutInMinutes: 90 platforms: - Windows_NT_x86 - OSX_x64