name: ${{ coalesce(parameters.name, parameters.platform) }}
runtimeFlavor: ${{ parameters.runtimeFlavor }}
runtimeVariant: ${{ parameters.runtimeVariant }}
- skipTests: $(SkipTests)
+ skipTests: ${{ variables.SkipTests }}
isOfficialBuild: ${{ eq(parameters.isOfficialBuild, true) }}
pgoType: ${{ parameters.pgoType }}
- task: PublishTestResults@2
displayName: Publish Test Results
inputs:
- testResultsFormat: 'xUnit'
- testResultsFiles: '*.xml'
+ testResultsFormat: 'VSTest'
+ testResultsFiles: '*.trx'
searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
mergeTestResults: true
testRunTitle: Installer-${{ parameters.runtimeFlavor }}-${{ parameters.name }}-$(_BuildConfig)
continueOnError: true
condition: eq(variables.SkipTests, false)
+# Upload binaries and symbols on failure to allow debugging issues
+- ${{ if eq(parameters.skipTests, false) }}:
+ - task: CopyFiles@2
+ displayName: Prepare binaries to publish
+ inputs:
+ SourceFolder: '$(Build.SourcesDirectory)/artifacts/bin'
+ Contents: |
+ */corehost/**
+ */corehost_test/**
+ TargetFolder: '$(Build.StagingDirectory)/Binaries'
+ continueOnError: true
+ condition: failed()
+
+ - task: ArchiveFiles@2
+ displayName: Zip binaries
+ inputs:
+ rootFolderOrFile: '$(Build.StagingDirectory)/Binaries'
+ archiveFile: '$(Build.StagingDirectory)/corehost-bin-${{ parameters.name }}-$(_BuildConfig)$(archiveExtension)'
+ archiveType: $(archiveType)
+ tarCompression: $(tarCompression)
+ includeRootFolder: false
+ continueOnError: true
+ condition: failed()
+
+ - task: PublishBuildArtifacts@1
+ displayName: Publish binaries
+ inputs:
+ pathtoPublish: '$(Build.StagingDirectory)/corehost-bin-${{ parameters.name }}-$(_BuildConfig)$(archiveExtension)'
+ artifactName: Installer-Binaries-${{parameters.pgoType }}${{ parameters.runtimeFlavor }}-${{ parameters.runtimeVariant }}-${{ parameters.name }}-$(_BuildConfig)
+ continueOnError: true
+ condition: failed()
+
- task: CopyFiles@2
displayName: Prepare BuildLogs staging directory
inputs:
<InternalNupkgCacheDir>$(ArtifactsObjDir)ExtraNupkgsForTestRestore\</InternalNupkgCacheDir>
<TestArchitectures>$(TargetArchitecture)</TestArchitectures>
<TestInfraTargetFramework>$(NetCoreAppToolCurrent)</TestInfraTargetFramework>
- <TestRunnerAdditionalArguments>-notrait category=failing -verbose</TestRunnerAdditionalArguments>
+ <TestRunnerAdditionalArguments>--filter category!=failing -v detailed</TestRunnerAdditionalArguments>
+ <!-- Enable crash and hang dumps -->
+ <TestRunnerAdditionalArguments>$(TestRunnerAdditionalArguments) --blame-crash-dump-type full</TestRunnerAdditionalArguments>
+ <TestRunnerAdditionalArguments>$(TestRunnerAdditionalArguments) --blame-hang-timeout 5m --blame-hang-dump-type full</TestRunnerAdditionalArguments>
+ <UseVSTestRunner>true</UseVSTestRunner>
<RunAnalyzers>false</RunAnalyzers>
</PropertyGroup>
};
sharedState.CreateNativeHostCommand(args, sharedState.DotNetRoot)
- .Execute()
+ .Execute(fExpectedToFail: true)
.Should().Fail()
.And.InitializeContextForApp(project.AppDll)
.And.ExecuteApplicationWithException(sharedState.NativeHostPath, project.AppDll);
};
sharedState.CreateNativeHostCommand(args, sharedState.DotNetRoot)
- .Execute()
+ .Execute(fExpectedToFail: true)
.Should().Fail()
.And.InitializeContextForApp(appProject.AppDll)
.And.ExecuteFunctionPointerWithException(entryPoint, 1);
};
sharedState.CreateNativeHostCommand(args, sharedState.DotNetRoot)
- .Execute()
+ .Execute(fExpectedToFail: true)
.Should().Fail()
.And.InitializeContextForConfig(componentProject.RuntimeConfigJson)
.And.ExecuteComponentEntryPointWithException(entryPoint, 1);
public CommandResult Execute(bool fExpectedToFail)
{
+ // Clear out any enabling of dump creation if failure is expected
+ if (fExpectedToFail)
+ {
+ EnvironmentVariable("COMPlus_DbgEnableMiniDump", null);
+ EnvironmentVariable("DOTNET_DbgEnableMiniDump", null);
+ }
+
Start();
return WaitForExit(fExpectedToFail);
}