From 3689e3494e33b4b5b7f76ef0a2cebc5b0df71c4f Mon Sep 17 00:00:00 2001 From: wtgodbe Date: Tue, 17 Jan 2017 14:47:51 -0800 Subject: [PATCH] Add support for running CoreCLR Tests in Helix Commit migrated from https://github.com/dotnet/coreclr/commit/eb610f615bc4076ad950c98157e83bc34649064f --- src/coreclr/build-test.cmd | 67 +- src/coreclr/config.json | 6 + src/coreclr/dir.props | 4 +- src/coreclr/tests/dir.props | 8 + src/coreclr/tests/helixprep.proj | 152 +++ src/coreclr/tests/helixpublish.proj | 63 + src/coreclr/tests/issues.targets | 1331 ++++++++++++++++++++ src/coreclr/tests/publishdependency.targets | 11 +- src/coreclr/tests/runtest.cmd | 42 +- src/coreclr/tests/runtest.proj | 30 +- .../Coreclr.TestWrapper/CoreclrTestWrapperLib.cs | 17 +- src/coreclr/tests/src/dir.common.props | 2 +- src/coreclr/tests/src/dir.props | 11 +- src/coreclr/tests/src/dirs.proj | 6 +- 14 files changed, 1675 insertions(+), 75 deletions(-) create mode 100644 src/coreclr/tests/helixprep.proj create mode 100644 src/coreclr/tests/helixpublish.proj diff --git a/src/coreclr/build-test.cmd b/src/coreclr/build-test.cmd index a2ff717..8f19d7b 100644 --- a/src/coreclr/build-test.cmd +++ b/src/coreclr/build-test.cmd @@ -23,6 +23,9 @@ set "__PackagesDir=%__ProjectDir%\packages" set "__RootBinDir=%__ProjectDir%\bin" set "__LogsDir=%__RootBinDir%\Logs" +:: Default __Exclude to issues.targets +set __Exclude=%__TestDir%\issues.targets + REM __unprocessedBuildArgs are args that we pass to msbuild (e.g. /p:__BuildArch=x64) set "__args= %*" set processedArgs= @@ -53,6 +56,7 @@ if /i "%1" == "updateinvalidpackages" (set __UpdateInvalidPackagesArg=1&set proc if /i "%1" == "toolset_dir" (set __ToolsetDir=%2&set __PassThroughArgs=%__PassThroughArgs% %2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop) if /i "%1" == "buildagainstpackages" (set __BuildAgainstPackages=1&set __BuildAgainstPackagesArg=-BuildTestsAgainstPackages&shift&goto Arg_Loop) if /i "%1" == "runtimeid" (set __RuntimeId=%2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop) +if /i "%1" == "Exclude" (set __Exclude=%2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop) if [!processedArgs!]==[] ( call set __UnprocessedBuildArgs=!__args! @@ -199,7 +203,7 @@ REM ============================================================================ set "__TestWorkingDir=%__RootBinDir%\tests\%__BuildOS%.%__BuildArch%.%__BuildType%" if not defined XunitTestBinBase set XunitTestBinBase=%__TestWorkingDir% set "CORE_ROOT=%XunitTestBinBase%\Tests\Core_Root" -set "CORE_OVERLAY=%XunitTestBinBase%\Tests\coreoverlay" +set "CORE_OVERLAY=%XunitTestBinBase%\Tests\Core_Root_%__RuntimeId%" call "%__ProjectDir%\run.cmd" build -Project=%__ProjectDir%\tests\build.proj -UpdateDependencies -BatchRestorePackages -MsBuildLog=!__msbuildLog! -MsBuildWrn=!__msbuildWrn! -MsBuildErr=!__msbuildErr! %__RunArgs% %__BuildAgainstPackagesArg% %__unprocessedBuildArgs% @@ -225,7 +229,7 @@ if defined __RuntimeId ( echo %__MsgPrefix% Created the runtime layout for %__RuntimeId% in %CORE_OVERLAY% ) -echo %__MsgPrefix% Created the runtime layout with all dependencies in %CORE_ROOT% +echo %__MsgPrefix% Restored CoreCLR product from packages :SkipRestoreProduct @@ -265,7 +269,38 @@ if errorlevel 1 ( exit /b 1 ) +REM Prepare the Test Drop +REM Cleans any NI from the last run +powershell "Get-ChildItem -path %__TestWorkingDir% -Include '*.ni.*' -Recurse -Force | Remove-Item -force" +REM Cleans up any lock folder used for synchronization from last run +powershell "Get-ChildItem -path %__TestWorkingDir% -Include 'lock' -Recurse -Force | where {$_.Attributes -eq 'Directory'}| Remove-Item -force -Recurse" + set CORE_ROOT=%__TestBinDir%\Tests\Core_Root +if exist "%CORE_ROOT%" rd /s /q "%CORE_ROOT%" +md "%CORE_ROOT%" +xcopy /s "%__BinDir%" "%CORE_ROOT%" + +echo %__MsgPrefix%Creating test wrappers... + +set RuntimeIdArg= + +if defined __RuntimeId ( + set RuntimeIdArg=-RuntimeID="%__RuntimeId%" +) + +set __BuildLogRootName=Tests_XunitWrapper +set __BuildLog=%__LogsDir%\%__BuildLogRootName%_%__BuildOS%__%__BuildArch%__%__BuildType%.log +set __BuildWrn=%__LogsDir%\%__BuildLogRootName%_%__BuildOS%__%__BuildArch%__%__BuildType%.wrn +set __BuildErr=%__LogsDir%\%__BuildLogRootName%_%__BuildOS%__%__BuildArch%__%__BuildType%.err +set __msbuildLog=/flp:Verbosity=diag;LogFile="%__BuildLog%" +set __msbuildWrn=/flp1:WarningsOnly;LogFile="%__BuildWrn%" +set __msbuildErr=/flp2:ErrorsOnly;LogFile="%__BuildErr%" + +call %__ProjectDir%\run.cmd build -Project=%__ProjectDir%\tests\runtest.proj -BuildWrappers -MsBuildEventLogging=" " -MsBuildLog=!__msbuildLog! -MsBuildWrn=!__msbuildWrn! -MsBuildErr=!__msbuildErr! %__RunArgs% %__BuildAgainstPackagesArg% %__unprocessedBuildArgs% %RuntimeIdArg% +if errorlevel 1 ( + echo Xunit Wrapper build failed + exit /b 1 +) echo %__MsgPrefix%Creating test overlay... @@ -277,7 +312,7 @@ set __msbuildLog=/flp:Verbosity=normal;LogFile="%__BuildLog%" set __msbuildWrn=/flp1:WarningsOnly;LogFile="%__BuildWrn%" set __msbuildErr=/flp2:ErrorsOnly;LogFile="%__BuildErr%" -call "%__ProjectDir%\run.cmd" build -Project=%__ProjectDir%\tests\runtest.proj -testOverlay -MsBuildLog=!__msbuildLog! -MsBuildWrn=!__msbuildWrn! -MsBuildErr=!__msbuildErr! %__RunArgs% %__unprocessedBuildArgs% +call %__ProjectDir%\run.cmd build -Project=%__ProjectDir%\tests\runtest.proj -testOverlay -MsBuildLog=!__msbuildLog! -MsBuildWrn=!__msbuildWrn! -MsBuildErr=!__msbuildErr! %__RunArgs% %__unprocessedBuildArgs% if errorlevel 1 ( echo %__MsgPrefix%Error: build failed. Refer to the build log files for details: echo %__BuildLog% @@ -286,6 +321,28 @@ if errorlevel 1 ( exit /b 1 ) +if not defined __BuildAgainstPackages goto SkipPrepForPublish + +set __BuildLogRootName=Helix_Prep +set __BuildLog=%__LogsDir%\%__BuildLogRootName%_%__BuildOS%__%__BuildArch%__%__BuildType%.log +set __BuildWrn=%__LogsDir%\%__BuildLogRootName%_%__BuildOS%__%__BuildArch%__%__BuildType%.wrn +set __BuildErr=%__LogsDir%\%__BuildLogRootName%_%__BuildOS%__%__BuildArch%__%__BuildType%.err +set __msbuildLog=/flp:Verbosity=normal;LogFile="%__BuildLog%" +set __msbuildWrn=/flp1:WarningsOnly;LogFile="%__BuildWrn%" +set __msbuildErr=/flp2:ErrorsOnly;LogFile="%__BuildErr%" + +REM ========================================================================================= +REM === +REM === Prep test binaries for Helix publishing +REM === +REM ========================================================================================= + +call %__ProjectDir%\run.cmd build -Project=%__ProjectDir%\tests\helixprep.proj -MsBuildLog=!__msbuildLog! -MsBuildWrn=!__msbuildWrn! -MsBuildErr=!__msbuildErr! %__RunArgs% %__BuildAgainstPackagesArg% %__unprocessedBuildArgs% %RuntimeIdArg% + +echo %__MsgPrefix% Prepped test binaries for publishing + +:SkipPrepForPublish + REM ========================================================================================= REM === REM === All builds complete! @@ -308,8 +365,10 @@ echo Build type: -buildType: one of Debug, Checked, Release ^(default: Debug^). echo updateinvalidpackageversions: Runs the target to update package versions. echo buildagainstpackages: builds tests against restored packages, instead of against a built product. echo runtimeid ^: Builds a test overlay for the specified OS (Only supported when building against packages). Supported IDs are: +echo alpine.3.4.3-x64: Builds overlay for Alpine 3.4.3 echo debian.8-x64: Builds overlay for Debian 8 echo fedora.23-x64: Builds overlay for Fedora 23 +echo fedora.24-x64: Builds overlay for Fedora 23 echo opensuse.13.2-x64: Builds overlay for OpenSUSE 13.2 echo opensuse.42.1-x64: Builds overlay for OpenSUSE 42.1 echo osx.10.10-x64: Builds overlay for OSX 10.10 @@ -317,6 +376,8 @@ echo rhel.7-x64: Builds overlay for RHEL 7 or CentOS echo ubuntu.14.04-x64: Builds overlay for Ubuntu 14.04 echo ubuntu.16.04-x64: Builds overlay for Ubuntu 16.04 echo ubuntu.16.10-x64: Builds overlay for Ubuntu 16.10 +echo Exclude- Optional parameter - specify location of default exclusion file (defaults to tests\issues.targets if not specified) +echo Set to "" to disable default exclusion file. echo -- ... : all arguments following this tag will be passed directly to msbuild. echo -priority=^ : specify a set of test that will be built and run, with priority N. echo 0: Build only priority 0 cases as essential testcases (default) diff --git a/src/coreclr/config.json b/src/coreclr/config.json index 1849272..8e5c06e 100644 --- a/src/coreclr/config.json +++ b/src/coreclr/config.json @@ -294,6 +294,12 @@ "values": [ true, false ], "defaultValue": true }, + "BuildWrappers": { + "description": "Builds test Xunit wrappers", + "valueType": "property", + "values": [ true, false ], + "defaultValue": true + }, "RuntimeId": { "description": "Specifies the OS to build Core_Root for", "valueType": "property", diff --git a/src/coreclr/dir.props b/src/coreclr/dir.props index f58caa9..ebe7b37 100644 --- a/src/coreclr/dir.props +++ b/src/coreclr/dir.props @@ -83,8 +83,8 @@ $(RootBinDir)obj\ - $(BaseIntermediateOutputPath)\$(BuildOS).$(BuildArch).$(BuildType) - $(BaseIntermediateOutputPath)\$(BuildOS).$(BuildArch).$(BuildType) + $(BaseIntermediateOutputPath)$(BuildOS).$(BuildArch).$(BuildType)\ + $(BaseIntermediateOutputPath)$(BuildOS).$(BuildArch).$(BuildType) $(BinDir) diff --git a/src/coreclr/tests/dir.props b/src/coreclr/tests/dir.props index dcaee88..0c45096 100644 --- a/src/coreclr/tests/dir.props +++ b/src/coreclr/tests/dir.props @@ -39,6 +39,14 @@ $(ProjectDir)bin\ + + + + netcoreapp1.0 + $(DefaultTestTFM) + $(DefaultTestTFM) + + $(RootBinDir)obj\ diff --git a/src/coreclr/tests/helixprep.proj b/src/coreclr/tests/helixprep.proj new file mode 100644 index 0000000..a583f34 --- /dev/null +++ b/src/coreclr/tests/helixprep.proj @@ -0,0 +1,152 @@ + + + + + + + + + $(TestWorkingDir) + $(CORE_ROOT) + $(CORE_OVERLAY) + Core_Root_Windows_NT-$(__BuildArch) + Core_Root_$(RuntimeID) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(TestWorkingDir)\archive\dummy + $(TestWorkingDir)\archive\packages + + + + + + + + + + + + + + + + + + + + + + + + + + #!/bin/sh%0a + $(WrapperShContents)%0a + $(WrapperShContents)export CORE_ROOT="$HELIX_CORRELATION_PAYLOAD"%0a + $(WrapperShContents)%0a + $(WrapperShContents)for scriptFilePath in %24(find . -type f -iname '%2A.sh' ! -iname "runtests.sh" | sort)%0a + $(WrapperShContents)do%0a + $(WrapperShContents) perl -pi -e 's/\r\n|\n|\r/\n/g' "%24scriptFilePath"%0a + $(WrapperShContents)done%0a + $(WrapperShContents)%0a + $(WrapperShContents)echo BEGIN EXECUTION%0a + $(WrapperShContents)echo "%24{HELIX_CORRELATION_PAYLOAD}/corerun" %24HELIX_WORKITEM_PAYLOAD/xunit.console.netcore.exe %24HELIX_WORKITEM_PAYLOAD/$(ProjectName) -noshadow -xml testResults.xml -notrait category=outerloop -notrait category=failing%0a + $(WrapperShContents)"%24{HELIX_CORRELATION_PAYLOAD}/corerun" %24HELIX_WORKITEM_PAYLOAD/xunit.console.netcore.exe %24HELIX_WORKITEM_PAYLOAD/$(ProjectName) -noshadow -xml testResults.xml -notrait category=outerloop -notrait category=failing%0a + $(WrapperShContents)ErrorLevel=%24%3F%0a + $(WrapperShContents)%0a + $(WrapperShContents)echo Finished running tests. Exit code = %24ErrorLevel%0a + $(WrapperShContents)exit %24ErrorLevel%0a + + + + + + + + + + + + $(MSBuildProjectName) + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/coreclr/tests/helixpublish.proj b/src/coreclr/tests/helixpublish.proj new file mode 100644 index 0000000..754459d --- /dev/null +++ b/src/coreclr/tests/helixpublish.proj @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + $(Platform)$(ConfigurationGroup)/Packages.zip + + + + + + Tests.$(ConfigurationGroup).json + $(TestWorkingDir)$(PayloadTestListFilename) + true + + + + + + + $(DropUri)$(Platform)$(ConfigurationGroup)/Tests/$([System.String]::Copy('%(RecursiveDir)').Replace('\', '/'))%(CoreRootUri.Filename)%(CoreRootUri.Extension)$(DropUriReadOnlyToken) + $(CorrelationPayloadUris);$(CoreRootUris) + + + + + $(HelixPythonPath) $(RunnerScript) --script %HELIX_WORKITEM_PAYLOAD%\runtests.cmd + chmod +x $HELIX_WORKITEM_PAYLOAD/runtests.sh && $(HelixPythonPath) $(RunnerScript) --script $HELIX_WORKITEM_PAYLOAD/runtests.sh + [$(CorrelationPayloadProperty)] + $(DropUri)$(Platform)$(ConfigurationGroup)/Tests/$([System.String]::Copy('%(RecursiveDir)').Replace('\', '/'))%(Filename)%(Extension)$(DropUriReadOnlyToken) + %(Filename) + $(TimeoutInSeconds) + + + + + + + $(PayloadTestListFilename) + + + + + + $(TestWorkingDir)$(OSPlatformConfig)/FuncBuildComplete.json + $(TestWorkingDir)$(OSPlatformConfig)/FuncOfficialBuild.json + $(TestWorkingDir)$(OSPlatformConfig)/helixjobuploadcomplete.sem + + + + + + + \ No newline at end of file diff --git a/src/coreclr/tests/issues.targets b/src/coreclr/tests/issues.targets index 632105c..fa7aa3f 100644 --- a/src/coreclr/tests/issues.targets +++ b/src/coreclr/tests/issues.targets @@ -392,4 +392,1335 @@ needs triage + + + + + + needs triage + + + + + + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + needs triage + + + diff --git a/src/coreclr/tests/publishdependency.targets b/src/coreclr/tests/publishdependency.targets index 9e286fc..f9b1321 100644 --- a/src/coreclr/tests/publishdependency.targets +++ b/src/coreclr/tests/publishdependency.targets @@ -42,7 +42,6 @@ $(ProjectDir)\..\bin\Product\$(BuildOS).$(BuildArch).$(BuildType) $(ProductDestination)\ref - $(CORE_ROOT)\..\coreoverlay + Outputs="$(CORE_OVERLAY)\*.*"> @@ -114,7 +113,7 @@ - + @@ -127,7 +126,7 @@ + Outputs="$(ProductDestination)\crossgen.exe;$(CORE_OVERLAY)\crossgen.exe"> - - False - True + True @@ -77,8 +75,8 @@ $(_XunitEpilog) 2.0 {95DFC527-4DC1-495E-97D7-E94EE1F7140D} Library - .NETFramework - v4.5 + .NETFramework + v4.5 true true Properties @@ -88,8 +86,8 @@ $(_XunitEpilog) 7a9bfb7d BuildOnly true - %24(TestWrappersPackagesConfigFileDirectory)project.json - %24(TestWrappersPackagesConfigFileDirectory)project.lock.json + %24(TestWrappersPackagesConfigFileDirectory)project.json + %24(TestWrappersPackagesConfigFileDirectory)project.lock.json @@ -103,7 +101,11 @@ $(_XunitEpilog) - + + {8ffe99c0-22f8-4462-b839-970eac1b3472} + coreclr + + {8ffe99c0-22f8-4462-b839-970eac1b3472} coreclr @@ -114,10 +116,6 @@ $(_XunitEpilog) - - %24(TestWrappersPackagesConfigFileDirectory)project.json - %24(TestWrappersPackagesConfigFileDirectory)project.lock.json - $(XunitTestBinBase)\$(Category)\ @@ -195,7 +193,8 @@ namespace $([System.String]::Copy($(Category)).Replace(".","_").Replace("\",""). throw new ArgumentException("Environment variable CORE_ROOT is not set")%3B } - runningInWindows = System.Environment.GetEnvironmentVariable("OS").StartsWith("Windows")%3B + string operatingSystem = System.Environment.GetEnvironmentVariable("OS")%3B + runningInWindows = (operatingSystem != null && operatingSystem.StartsWith("Windows"))%3B } } @@ -214,6 +213,10 @@ namespace $([System.String]::Copy($(Category)).Replace(".","_").Replace("\",""). + + testExecutable = testExecutable.Replace("\\", "/")%3B + + @@ -244,6 +247,7 @@ namespace $([System.String]::Copy($(Category)).Replace(".","_").Replace("\",""). outputFile = System.IO.Path.GetFullPath(_Global.reportBase + testSubfolder + @"%(AllCMDs.FileName).output.txt")%3B errorFile = System.IO.Path.GetFullPath(_Global.reportBase + testSubfolder + @"%(AllCMDs.FileName).error.txt")%3B testExecutable = System.IO.Path.GetFullPath(_Global.testBinaryBase + @"$([System.String]::Copy('%(AllCMDs.FullPath)').Replace("$(_CMDDIR)",''))")%3B + $(TestExecutableReplacement) if (!_Global.runningInWindows) { testExecutable = testExecutable.Replace(".cmd", ".sh")%3B diff --git a/src/coreclr/tests/src/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/coreclr/tests/src/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index dbdfc0e..ddb9050 100644 --- a/src/coreclr/tests/src/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/coreclr/tests/src/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -35,6 +35,10 @@ namespace CoreclrTestLib string gcstressVar = Environment.GetEnvironmentVariable(GC_STRESS_LEVEL); + // Check if we are running in Windows + string operatingSystem = System.Environment.GetEnvironmentVariable("OS"); + bool runningInWindows = (operatingSystem != null && operatingSystem.StartsWith("Windows")); + var outputStream = new FileStream(outputFile, FileMode.Create); var errorStream = new FileStream(errorFile, FileMode.Create); @@ -49,7 +53,18 @@ namespace CoreclrTestLib process.StartInfo.EnvironmentVariables["COMPlus_GCStress"] = gcstressVar; } - process.StartInfo.FileName = executable; + // Windows can run the executable implicitly + if (runningInWindows) + { + process.StartInfo.FileName = executable; + } + // Non-windows needs to be told explicitly to run through /bin/bash shell + else + { + process.StartInfo.FileName = "/bin/bash"; + process.StartInfo.Arguments = executable; + } + process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; diff --git a/src/coreclr/tests/src/dir.common.props b/src/coreclr/tests/src/dir.common.props index d5de579..5a7ee2e 100644 --- a/src/coreclr/tests/src/dir.common.props +++ b/src/coreclr/tests/src/dir.common.props @@ -45,7 +45,7 @@ <__NativeTestIntermediatesDir Condition="'$(__NativeTestIntermediatesDir)' == ''">$([System.IO.Path]::GetFullPath($(BaseOutputPathWithConfig)..\obj\$(BuildOS).$(Platform).$(Configuration)\Native\)) $(MSBuildProjectName)\ $([System.String]::Copy('$(MSBuildProjectDirectory)').Replace($(SourceDir),''))\$(MSBuildProjectName) - $(BaseIntermediateOutputPath)$(BuildProjectRelativeDir) + $(BaseIntermediateOutputPath)$(BuildProjectRelativeDir)\ $(BaseOutputPathWithConfig)$(BuildProjectRelativeDir)\ $(BaseOutputPath)\testStagingDir\ $(TestWorkingDir)$(OSPlatformConfig)\$(MSBuildProjectName)/ diff --git a/src/coreclr/tests/src/dir.props b/src/coreclr/tests/src/dir.props index e8cdfd4..2fb2e19 100644 --- a/src/coreclr/tests/src/dir.props +++ b/src/coreclr/tests/src/dir.props @@ -34,7 +34,6 @@ true win7-x64 - net45 @@ -67,14 +66,8 @@ true - - - - - - netcoreapp1.0 - $(DefaultTestTFM) - $(DefaultTestTFM) + C# + IL diff --git a/src/coreclr/tests/src/dirs.proj b/src/coreclr/tests/src/dirs.proj index 99a50a4..5314c27 100644 --- a/src/coreclr/tests/src/dirs.proj +++ b/src/coreclr/tests/src/dirs.proj @@ -16,10 +16,14 @@ - + + + + + -- 2.7.4