Merge branch 'master' into johluo/migrating-extensions
This commit is contained in:
commit
825ef65da8
|
|
@ -38,7 +38,12 @@ variables:
|
|||
value: ''
|
||||
- name: _SignType
|
||||
value: ''
|
||||
- name: _UseHelixOpenQueues
|
||||
value: 'true'
|
||||
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
- group: DotNet-HelixApi-Access
|
||||
- name: _UseHelixOpenQueues
|
||||
value: 'false'
|
||||
- ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
|
||||
# DotNet-Blob-Feed provides: dotnetfeed-storage-access-key-1
|
||||
# Publish-Build-Assets provides: MaestroAccessToken, BotAccount-dotnet-maestro-bot-PAT
|
||||
|
|
@ -582,6 +587,7 @@ stages:
|
|||
- script: .\build.cmd -ci -NoRestore -test -projects eng\helix\helix.proj /p:IsRequiredCheck=true /p:IsHelixJob=true /p:BuildAllProjects=true /p:BuildNative=true /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log -bl
|
||||
displayName: Run build.cmd helix target
|
||||
env:
|
||||
HelixApiAccessToken: $(HelixApiAccessToken) # Needed for internal queues
|
||||
SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops
|
||||
artifacts:
|
||||
- name: Helix_logs
|
||||
|
|
@ -591,6 +597,7 @@ stages:
|
|||
|
||||
- template: jobs/default-build.yml
|
||||
parameters:
|
||||
condition: ne(variables['Build.Reason'], 'PullRequest')
|
||||
jobName: Helix_x64_daily
|
||||
jobDisplayName: 'Tests: Helix x64 Daily'
|
||||
agentOs: Windows
|
||||
|
|
@ -601,6 +608,7 @@ stages:
|
|||
- script: .\build.cmd -ci -NoRestore -test -projects eng\helix\helix.proj /p:IsHelixJob=true /p:IsHelixDaily=true /p:BuildAllProjects=true /p:BuildNative=true /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log -bl
|
||||
displayName: Run build.cmd helix target
|
||||
env:
|
||||
HelixApiAccessToken: $(HelixApiAccessToken) # Needed for internal queues
|
||||
SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops
|
||||
artifacts:
|
||||
- name: Helix_logs
|
||||
|
|
@ -622,6 +630,7 @@ stages:
|
|||
- script: ./build.sh -ci --arch arm64 -test --no-build-nodejs -projects $(Build.SourcesDirectory)/eng/helix/helix.proj /p:IsHelixJob=true /p:IsHelixDaily=true /p:BuildAllProjects=true /p:BuildNative=true /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log -bl
|
||||
displayName: Run build.sh helix arm64 target
|
||||
env:
|
||||
HelixApiAccessToken: $(HelixApiAccessToken) # Needed for internal queues
|
||||
SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops
|
||||
installNodeJs: false
|
||||
artifacts:
|
||||
|
|
|
|||
|
|
@ -11,6 +11,14 @@ pr:
|
|||
include:
|
||||
- '*'
|
||||
|
||||
variables:
|
||||
- ${{ if ne(variables['System.TeamProject'], 'internal') }}:
|
||||
- name: _UseHelixOpenQueues
|
||||
value: 'true'
|
||||
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
- name: _UseHelixOpenQueues
|
||||
value: 'false'
|
||||
|
||||
jobs:
|
||||
- template: jobs/default-build.yml
|
||||
parameters:
|
||||
|
|
|
|||
|
|
@ -233,7 +233,7 @@ jobs:
|
|||
condition: always()
|
||||
inputs:
|
||||
testRunner: junit
|
||||
testResultsFiles: '**/TEST-com.microsoft.signalr*.xml'
|
||||
testResultsFiles: '**/TEST-junit-jupiter.xml'
|
||||
buildConfiguration: $(BuildConfiguration)
|
||||
buildPlatform: $(AgentOsName)
|
||||
mergeTestResults: true
|
||||
|
|
|
|||
|
|
@ -8,6 +8,11 @@
|
|||
###############################################################################
|
||||
*.sh eol=lf
|
||||
|
||||
###############################################################################
|
||||
# Make gradlew always have LF as line endings
|
||||
###############################################################################
|
||||
gradlew eol=lf
|
||||
|
||||
###############################################################################
|
||||
# Set default behavior for command prompt diff.
|
||||
#
|
||||
|
|
|
|||
|
|
@ -187,5 +187,6 @@
|
|||
<Import Project="eng\targets\CSharp.Common.props" Condition="'$(MSBuildProjectExtension)' == '.csproj'" />
|
||||
<Import Project="eng\targets\Wix.Common.props" Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
|
||||
<Import Project="eng\targets\Npm.Common.props" Condition="'$(MSBuildProjectExtension)' == '.npmproj'" />
|
||||
<Import Project="eng\targets\Helix.props" Condition="'$(IsTestProject)' == 'true'" />
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -163,5 +163,6 @@
|
|||
<Import Project="eng\targets\Wix.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
|
||||
<Import Project="eng\targets\Npm.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.npmproj'" />
|
||||
<Import Project="eng\targets\ReferenceAssembly.targets" Condition=" '$(HasReferenceAssembly)' == 'true' " />
|
||||
<Import Project="eng\targets\Helix.targets" Condition="'$(IsTestProject)' == 'true'" />
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -221,10 +221,6 @@
|
|||
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||
<Sha>396aff55e0b4628a7a44375e4b72e5d19a6e37ab</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.CSharp" Version="5.0.0-alpha.1.19563.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>5cee7c97d602f294e27c582d4dab81ec388f1d7b</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Win32.Registry" Version="5.0.0-preview.1.20113.7" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>0f3f8e1930c28b67f29990126bc2e8527e959a2e</Sha>
|
||||
|
|
|
|||
|
|
@ -63,14 +63,12 @@
|
|||
<MicrosoftDotNetGenAPIPackageVersion>5.0.0-beta.20113.3</MicrosoftDotNetGenAPIPackageVersion>
|
||||
<!-- Packages from dotnet/roslyn -->
|
||||
<MicrosoftNetCompilersToolsetPackageVersion>3.5.0-beta3-20114-02</MicrosoftNetCompilersToolsetPackageVersion>
|
||||
<!-- Packages from dotnet/core-setup -->
|
||||
<!-- Packages from dotnet/runtime -->
|
||||
<MicrosoftExtensionsDependencyModelPackageVersion>5.0.0-preview.1.20113.7</MicrosoftExtensionsDependencyModelPackageVersion>
|
||||
<MicrosoftNETCoreAppInternalPackageVersion>5.0.0-preview.1.20113.7</MicrosoftNETCoreAppInternalPackageVersion>
|
||||
<MicrosoftNETCoreAppRefPackageVersion>5.0.0-preview.1.20113.7</MicrosoftNETCoreAppRefPackageVersion>
|
||||
<MicrosoftNETCoreAppRuntimewinx64PackageVersion>5.0.0-preview.1.20113.7</MicrosoftNETCoreAppRuntimewinx64PackageVersion>
|
||||
<NETStandardLibraryRefPackageVersion>2.1.0-preview.1.20113.7</NETStandardLibraryRefPackageVersion>
|
||||
<!-- Packages from dotnet/corefx -->
|
||||
<MicrosoftCSharpPackageVersion>5.0.0-alpha.1.19563.6</MicrosoftCSharpPackageVersion>
|
||||
<MicrosoftWin32RegistryPackageVersion>5.0.0-preview.1.20113.7</MicrosoftWin32RegistryPackageVersion>
|
||||
<MicrosoftWin32SystemEventsPackageVersion>5.0.0-preview.1.20113.7</MicrosoftWin32SystemEventsPackageVersion>
|
||||
<SystemComponentModelAnnotationsPackageVersion>5.0.0-preview.1.20113.7</SystemComponentModelAnnotationsPackageVersion>
|
||||
|
|
@ -174,6 +172,7 @@
|
|||
<MicrosoftSymbolUploaderBuildTaskPackageVersion>1.0.0-beta-64023-03</MicrosoftSymbolUploaderBuildTaskPackageVersion>
|
||||
<MicrosoftVSSDKBuildToolsVersion>15.9.3032</MicrosoftVSSDKBuildToolsVersion>
|
||||
<!-- Stable dotnet/corefx packages no longer updated for .NET Core 3 -->
|
||||
<MicrosoftCSharpPackageVersion>4.7.0</MicrosoftCSharpPackageVersion>
|
||||
<SystemBuffersPackageVersion>4.5.0</SystemBuffersPackageVersion>
|
||||
<SystemCodeDomPackageVersion>4.4.0</SystemCodeDomPackageVersion>
|
||||
<SystemCommandlineExperimentalPackageVersion>0.3.0-alpha.19317.1</SystemCommandlineExperimentalPackageVersion>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,62 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Installs JDK into a folder in this repo.
|
||||
.DESCRIPTION
|
||||
This script downloads an extracts the JDK.
|
||||
.PARAMETER JdkVersion
|
||||
The version of the JDK to install. If not set, the default value is read from global.json
|
||||
.PARAMETER Force
|
||||
Overwrite the existing installation
|
||||
#>
|
||||
param(
|
||||
[string]$JdkVersion,
|
||||
[Parameter(Mandatory = $false)]
|
||||
$InstallDir
|
||||
)
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$ProgressPreference = 'SilentlyContinue' # Workaround PowerShell/PowerShell#2138
|
||||
|
||||
Set-StrictMode -Version 1
|
||||
|
||||
if ($InstallDir) {
|
||||
$installDir = $InstallDir;
|
||||
}
|
||||
else {
|
||||
$repoRoot = Resolve-Path "$PSScriptRoot\..\.."
|
||||
$installDir = "$repoRoot\.tools\jdk\win-x64\"
|
||||
}
|
||||
$tempDir = "$installDir\obj"
|
||||
if (-not $JdkVersion) {
|
||||
$globalJson = Get-Content "$repoRoot\global.json" | ConvertFrom-Json
|
||||
$JdkVersion = $globalJson.tools.jdk
|
||||
}
|
||||
|
||||
if (Test-Path $installDir) {
|
||||
if ($Force) {
|
||||
Remove-Item -Force -Recurse $installDir
|
||||
}
|
||||
else {
|
||||
Write-Host "The JDK already installed to $installDir. Exiting without action. Call this script again with -Force to overwrite."
|
||||
exit 0
|
||||
}
|
||||
}
|
||||
|
||||
Remove-Item -Force -Recurse $tempDir -ErrorAction Ignore | out-null
|
||||
mkdir $tempDir -ea Ignore | out-null
|
||||
mkdir $installDir -ea Ignore | out-null
|
||||
Write-Host "Starting download of JDK ${JdkVersion}"
|
||||
Invoke-WebRequest -UseBasicParsing -Uri "https://netcorenativeassets.blob.core.windows.net/resource-packages/external/windows/java/jdk-${JdkVersion}_windows-x64_bin.zip" -OutFile "$tempDir/jdk.zip"
|
||||
Write-Host "Done downloading JDK ${JdkVersion}"
|
||||
|
||||
Add-Type -assembly "System.IO.Compression.FileSystem"
|
||||
[System.IO.Compression.ZipFile]::ExtractToDirectory("$tempDir/jdk.zip", "$tempDir/jdk/")
|
||||
|
||||
Write-Host "Expanded JDK to $tempDir"
|
||||
Write-Host "Installing JDK to $installDir"
|
||||
Move-Item "$tempDir/jdk/jdk-${JdkVersion}/*" $installDir
|
||||
Write-Host "Done installing JDK to $installDir"
|
||||
Remove-Item -Force -Recurse $tempDir -ErrorAction Ignore | out-null
|
||||
|
||||
if ($env:TF_BUILD) {
|
||||
Write-Host "##vso[task.prependpath]$installDir\bin"
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Cause the script to fail if any subcommand fails
|
||||
set -e
|
||||
|
||||
pushd .
|
||||
|
||||
if [ "$JAVA_HOME" != "" ]; then
|
||||
echo "JAVA_HOME is set"
|
||||
exit
|
||||
fi
|
||||
|
||||
java_version=$1
|
||||
arch=$2
|
||||
osname=`uname -s`
|
||||
if [ "$osname" = "Darwin" ]; then
|
||||
echo "macOS not supported, relying on the machine providing java itself"
|
||||
exit 1
|
||||
else
|
||||
platformarch="linux-$arch"
|
||||
fi
|
||||
echo "PlatformArch: $platformarch"
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
output_dir="$DIR/java"
|
||||
url="https://netcorenativeassets.blob.core.windows.net/resource-packages/external/linux/java/jdk-${java_version}_${platformarch}_bin.tar.gz"
|
||||
echo "Downloading from: $url"
|
||||
tmp="$(mktemp -d -t install-jdk.XXXXXX)"
|
||||
|
||||
cleanup() {
|
||||
exitcode=$?
|
||||
if [ $exitcode -ne 0 ]; then
|
||||
echo "Failed to install java with exit code: $exitcode"
|
||||
fi
|
||||
rm -rf "$tmp"
|
||||
exit $exitcode
|
||||
}
|
||||
|
||||
trap "cleanup" EXIT
|
||||
cd "$tmp"
|
||||
curl -Lsfo $(basename $url) "$url"
|
||||
echo "Installing java from $(basename $url) $url"
|
||||
mkdir $output_dir
|
||||
echo "Unpacking to $output_dir"
|
||||
tar --strip-components 1 -xzf "jdk-${java_version}_${platformarch}_bin.tar.gz" --no-same-owner --directory "$output_dir"
|
||||
|
||||
popd
|
||||
|
|
@ -22,7 +22,17 @@ output_dir="$DIR/node"
|
|||
url="http://nodejs.org/dist/v$node_version/node-v$node_version-$platformarch.tar.gz"
|
||||
echo "Downloading from: $url"
|
||||
tmp="$(mktemp -d -t install-node.XXXXXX)"
|
||||
trap "rm -rf $tmp" EXIT
|
||||
|
||||
cleanup() {
|
||||
exitcode=$?
|
||||
if [ $exitcode -ne 0 ]; then
|
||||
echo "Failed to install node with exit code: $exitcode"
|
||||
fi
|
||||
rm -rf "$tmp"
|
||||
exit $exitcode
|
||||
}
|
||||
|
||||
trap "cleanup" EXIT
|
||||
cd "$tmp"
|
||||
curl -Lsfo $(basename $url) "$url"
|
||||
echo "Installing node from $(basename $url) $url"
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@
|
|||
<Import Project="..\Build.props" />
|
||||
|
||||
<ItemGroup>
|
||||
<HelixTargetQueue Include="@(HelixAvailableTargetQueue)" />
|
||||
<HelixTargetQueue Condition="'$(_UseHelixOpenQueues)' == 'true'" Include="@(HelixAvailableTargetQueue)" />
|
||||
<HelixTargetQueue Condition="'$(_UseHelixOpenQueues)' != 'true'" Include="@(HelixAvailableTargetQueue->'%(Identity)'->Replace('.Open',''))" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
|
|
@ -21,11 +22,13 @@
|
|||
<IsExternal>true</IsExternal>
|
||||
<SkipInvalidConfigurations>true</SkipInvalidConfigurations>
|
||||
<MaxRetryCount Condition="'$(MaxRetryCount)' == ''">2</MaxRetryCount>
|
||||
<HelixAccessToken Condition="'$(_UseHelixOpenQueues)' != 'true'">$(HelixApiAccessToken)</HelixAccessToken>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(ContinuousIntegrationBuild)' == 'true' ">
|
||||
<HelixType>ci</HelixType>
|
||||
<Creator>aspnetcore</Creator>
|
||||
<!-- Creator is not valid for internal queues -->
|
||||
<Creator Condition="'$(_UseHelixOpenQueues)' == 'true'">aspnetcore</Creator>
|
||||
<HelixBuild>$(BUILD_BUILDNUMBER).$(TargetArchitecture).$(SYSTEM_JOBATTEMPT)</HelixBuild>
|
||||
<WaitForWorkItemCompletion>true</WaitForWorkItemCompletion>
|
||||
<EnableAzurePipelinesReporter>true</EnableAzurePipelinesReporter>
|
||||
|
|
@ -34,8 +37,9 @@
|
|||
|
||||
<PropertyGroup Condition=" '$(ContinuousIntegrationBuild)' != 'true' ">
|
||||
<HelixType>dev</HelixType>
|
||||
<Creator>$(USERNAME)</Creator>
|
||||
<Creator Condition="'$(USERNAME)' == ''">$(USER)</Creator>
|
||||
<!-- Creator is not valid for internal queues -->
|
||||
<Creator Condition="'$(_UseHelixOpenQueues)' == 'true'">$(USERNAME)</Creator>
|
||||
<Creator Condition="'$(USERNAME)' == '' AND '$(_UseHelixOpenQueues)' == 'true'">$(USER)</Creator>
|
||||
<HelixBuild>$([System.DateTime]::Now.ToString('yyyyMMddHHmm'))</HelixBuild>
|
||||
</PropertyGroup>
|
||||
|
||||
|
|
|
|||
|
|
@ -38,4 +38,4 @@ $env:BUILD_REPOSITORY_NAME="aspnetcore"
|
|||
$env:SYSTEM_TEAMPROJECT="aspnetcore"
|
||||
|
||||
$HelixQueues = $HelixQueues -replace ";", "%3B"
|
||||
dotnet msbuild $Project /t:Helix /p:IsRequiredCheck=true /p:IsHelixDaily=true /p:HelixTargetQueues=$HelixQueues /p:RunQuarantinedTests=$RunQuarantinedTests
|
||||
dotnet msbuild $Project /t:Helix /p:IsRequiredCheck=true /p:IsHelixDaily=true /p:HelixTargetQueues=$HelixQueues /p:RunQuarantinedTests=$RunQuarantinedTests /p:_UseHelixOpenQueues=true
|
||||
|
|
@ -35,6 +35,5 @@
|
|||
</ItemDefinitionGroup>
|
||||
|
||||
<Import Project="CSharp.ReferenceAssembly.props" Condition="'$(IsReferenceAssemblyProject)' == 'true'" />
|
||||
<Import Project="Helix.props" Condition="'$(IsTestProject)' == 'true'" />
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -30,5 +30,5 @@
|
|||
|
||||
<Import Project="Packaging.targets" />
|
||||
<Import Project="ResolveReferences.targets" />
|
||||
<Import Project="Helix.targets" Condition="'$(IsTestProject)' == 'true'" />
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@
|
|||
<RunQuarantinedTests>false</RunQuarantinedTests>
|
||||
<IsWindowsHelixQueue>false</IsWindowsHelixQueue>
|
||||
<IsWindowsHelixQueue Condition="$(HelixTargetQueue.Contains('Windows')) or $(HelixTargetQueue.Contains('windows'))">true</IsWindowsHelixQueue>
|
||||
<IsMacHelixQueue>false</IsMacHelixQueue>
|
||||
<IsMacHelixQueue Condition="$(HelixTargetQueue.Contains('OSX')) or $(HelixTargetQueue.Contains('macOs'))">true</IsMacHelixQueue>
|
||||
<HelixTestName>$(MSBuildProjectName)--$(TargetFramework)</HelixTestName>
|
||||
<HelixUseArchive>false</HelixUseArchive>
|
||||
<LoggingTestingDisableFileLogging Condition="'$(IsHelixJob)' == 'true'">false</LoggingTestingDisableFileLogging>
|
||||
|
|
@ -33,16 +35,4 @@
|
|||
<HelixContent Include="$(RepoRoot)eng\helix\content\**\*" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TestDependsOnMssql)' == 'true' AND '$(IsWindowsHelixQueue)' == 'true'">
|
||||
<HelixPreCommand Include="call RunPowershell.cmd mssql\InstallSqlServerLocalDB.ps1 || exit /b 1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TestDependsOnNode)' == 'true' AND '$(IsWindowsHelixQueue)' == 'false'">
|
||||
<HelixPreCommand Include="./installnode.sh $(NodeVersion) $(TargetArchitecture)" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TestDependsOnNode)' == 'true' AND '$(IsWindowsHelixQueue)' == 'true'">
|
||||
<HelixPreCommand Include="call RunPowershell.cmd InstallNode.ps1 $(NodeVersion) %25HELIX_CORRELATION_PAYLOAD%25\node\bin || exit /b 1" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,26 @@
|
|||
<Project>
|
||||
<ItemGroup Condition="'$(TestDependsOnJava)' == 'true'">
|
||||
<HelixPreCommand Condition="'$(IsWindowsHelixQueue)' == 'true'" Include="call RunPowershell.cmd InstallJdk.ps1 11.0.3 %25HELIX_CORRELATION_PAYLOAD%25\jdk && set %22JAVA_HOME=%25HELIX_CORRELATION_PAYLOAD%25\jdk%22" />
|
||||
<HelixPreCommand Condition="'$(IsWindowsHelixQueue)' != 'true' AND '$(IsMacHelixQueue)' != 'true'" Include="./installjdk.sh 10.0.2 x64 && if [ "%24JAVA_HOME" = "" ]%3B then export JAVA_HOME=%24PWD/java%3B fi" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TestDependsOnMssql)' == 'true' AND '$(IsWindowsHelixQueue)' == 'true'">
|
||||
<HelixPreCommand Include="call RunPowershell.cmd mssql\InstallSqlServerLocalDB.ps1 || exit /b 1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TestDependsOnNode)' == 'true' AND '$(IsWindowsHelixQueue)' == 'false'">
|
||||
<HelixPreCommand Include="./installnode.sh $(NodeVersion) $(TargetArchitecture)" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TestDependsOnNode)' == 'true' AND '$(IsWindowsHelixQueue)' == 'true'">
|
||||
<HelixPreCommand Include="call RunPowershell.cmd InstallNode.ps1 $(NodeVersion) %25HELIX_CORRELATION_PAYLOAD%25\node\bin || exit /b 1" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Item group has to be defined here becasue Helix.props is evaluated before xunit.runner.console.props -->
|
||||
<ItemGroup Condition="$(BuildHelixPayload)">
|
||||
<Content Include="@(HelixContent)" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
<!--
|
||||
|
||||
This target is meant to be used when invoking helix tests on one project at a time.
|
||||
|
|
@ -40,6 +56,12 @@ Usage: dotnet msbuild /t:Helix src/MyTestProject.csproj
|
|||
<_SelectedPlatforms>@(HelixProjectPlatform)</_SelectedPlatforms>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup Condition="'$(_UseHelixOpenQueues)' != 'true'">
|
||||
<_Temp Include="@(HelixAvailableTargetQueue)" />
|
||||
<HelixAvailableTargetQueue Remove="@(HelixAvailableTargetQueue)" />
|
||||
<HelixAvailableTargetQueue Include="@(_Temp->'%(Identity)'->Replace('.Open',''))" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Include default queues based on platform -->
|
||||
<_HelixProjectTargetQueue Include="%(HelixAvailableTargetQueue.Identity)" Condition="'%(HelixAvailableTargetQueue.Identity)' != '' AND '$(_SelectedPlatforms.Contains(%(Platform)))' == 'true'" />
|
||||
|
|
@ -71,6 +93,7 @@ Usage: dotnet msbuild /t:Helix src/MyTestProject.csproj
|
|||
<_HelixFriendlyNameTargetQueue Condition="$(HelixTargetQueue.Contains('@'))">$(HelixTargetQueue.Substring(1, $([MSBuild]::Subtract($(HelixTargetQueue.LastIndexOf(')')), 1))))</_HelixFriendlyNameTargetQueue>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Important: If HelixTargetQueue is not removed here, then Publish will occur for every single queue type. And since Publish shouldn't depend on the queue we can just publish once -->
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_PublishHelixArchive" RemoveProperties="HelixTargetQueue;TestRunId" />
|
||||
|
||||
<ConvertToAbsolutePath Paths="$(PublishDir)">
|
||||
|
|
@ -85,6 +108,7 @@ Usage: dotnet msbuild /t:Helix src/MyTestProject.csproj
|
|||
<PostCommands>@(HelixPostCommand)</PostCommands>
|
||||
<Command Condition="$(IsWindowsHelixQueue)">call runtests.cmd $(TargetFileName) $(TargetFrameworkIdentifier) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppRuntimeVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests)</Command>
|
||||
<Command Condition="!$(IsWindowsHelixQueue)">./runtests.sh $(TargetFileName) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppRuntimeVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests)</Command>
|
||||
<Command Condition="$(HelixCommand) != ''">$(HelixCommand)</Command>
|
||||
<Timeout>$(HelixTimeout)</Timeout>
|
||||
</HelixWorkItem>
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@
|
|||
<Move SourceFiles="$(_BackupPackageJson)" DestinationFiles="$(PackageJson)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="Test" Condition="'$(IsTestProject)' == 'true'">
|
||||
<Target Name="Test" Condition="'$(IsTestProject)' == 'true' AND '$(SkipTests)' != 'true'">
|
||||
<Telemetry EventName="NETCORE_ENGINEERING_TELEMETRY" EventData="Category=Test" />
|
||||
<Message Importance="High" Text="Running npm tests for $(MSBuildProjectName)" />
|
||||
<Yarn Command="$(NpmTestArgs)" StandardOutputImportance="High" StandardErrorImportance="High" />
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ namespace Microsoft.AspNetCore.Components.Server.Circuits
|
|||
{
|
||||
throw new InvalidOperationException(
|
||||
"JavaScript interop calls cannot be issued at this time. This is because the component is being " +
|
||||
$"statically rendererd. When prerendering is enabled, JavaScript interop calls can only be performed " +
|
||||
$"statically rendered. When prerendering is enabled, JavaScript interop calls can only be performed " +
|
||||
$"during the OnAfterRenderAsync lifecycle method.");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Web;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
|
|
@ -272,7 +273,7 @@ namespace Microsoft.AspNetCore.Hosting
|
|||
{
|
||||
if (NameValueHeaderValue.TryParse(item, out var baggageItem))
|
||||
{
|
||||
activity.AddBaggage(baggageItem.Name.ToString(), baggageItem.Value.ToString());
|
||||
activity.AddBaggage(baggageItem.Name.ToString(), HttpUtility.UrlDecode(baggageItem.Value.ToString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -345,6 +345,35 @@ namespace Microsoft.AspNetCore.Hosting.Tests
|
|||
Assert.Contains(Activity.Current.Baggage, pair => pair.Key == "Key2" && pair.Value == "value2");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ActivityBaggageValuesAreUrlDecodedFromHeaders()
|
||||
{
|
||||
var diagnosticListener = new DiagnosticListener("DummySource");
|
||||
var hostingApplication = CreateApplication(out var features, diagnosticListener: diagnosticListener);
|
||||
|
||||
diagnosticListener.Subscribe(new CallbackDiagnosticListener(pair => { }),
|
||||
s =>
|
||||
{
|
||||
if (s.StartsWith("Microsoft.AspNetCore.Hosting.HttpRequestIn"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
features.Set<IHttpRequestFeature>(new HttpRequestFeature()
|
||||
{
|
||||
Headers = new HeaderDictionary()
|
||||
{
|
||||
{"Request-Id", "ParentId1"},
|
||||
{"Correlation-Context", "Key1=value1%2F1"}
|
||||
}
|
||||
});
|
||||
hostingApplication.CreateContext(features);
|
||||
Assert.Equal("Microsoft.AspNetCore.Hosting.HttpRequestIn", Activity.Current.OperationName);
|
||||
Assert.Contains(Activity.Current.Baggage, pair => pair.Key == "Key1" && pair.Value == "value1/1");
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public void ActivityTraceParentAndTraceStateFromHeaders()
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ namespace Microsoft.AspNetCore.Http
|
|||
GetParts(_value, out var host, out var port);
|
||||
|
||||
if (!StringSegment.IsNullOrEmpty(port)
|
||||
&& int.TryParse(port.ToString(), NumberStyles.None, CultureInfo.InvariantCulture, out var p))
|
||||
&& int.TryParse(port.AsSpan(), NumberStyles.None, CultureInfo.InvariantCulture, out var p))
|
||||
{
|
||||
return p;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ namespace Microsoft.AspNetCore.Identity
|
|||
public partial class ClaimsIdentityOptions
|
||||
{
|
||||
public ClaimsIdentityOptions() { }
|
||||
public string EmailClaimType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } }
|
||||
public string RoleClaimType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } }
|
||||
public string SecurityStampClaimType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } }
|
||||
public string UserIdClaimType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } }
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ namespace Microsoft.AspNetCore.Identity
|
|||
public partial class ClaimsIdentityOptions
|
||||
{
|
||||
public ClaimsIdentityOptions() { }
|
||||
public string EmailClaimType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } }
|
||||
public string RoleClaimType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } }
|
||||
public string SecurityStampClaimType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } }
|
||||
public string UserIdClaimType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } }
|
||||
|
|
|
|||
|
|
@ -25,9 +25,14 @@ namespace Microsoft.AspNetCore.Identity
|
|||
/// </summary>
|
||||
public string UserIdClaimType { get; set; } = ClaimTypes.NameIdentifier;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the ClaimType used for the user email claim. Defaults to <see cref="ClaimTypes.Email"/>.
|
||||
/// </summary>
|
||||
public string EmailClaimType { get; set; } = ClaimTypes.Email;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the ClaimType used for the security stamp claim. Defaults to "AspNet.Identity.SecurityStamp".
|
||||
/// </summary>
|
||||
public string SecurityStampClaimType { get; set; } = "AspNet.Identity.SecurityStamp";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -81,6 +81,14 @@ namespace Microsoft.AspNetCore.Identity
|
|||
Options.ClaimsIdentity.RoleClaimType);
|
||||
id.AddClaim(new Claim(Options.ClaimsIdentity.UserIdClaimType, userId));
|
||||
id.AddClaim(new Claim(Options.ClaimsIdentity.UserNameClaimType, userName));
|
||||
if (UserManager.SupportsUserEmail)
|
||||
{
|
||||
var email = await UserManager.GetEmailAsync(user);
|
||||
if (!string.IsNullOrEmpty(email))
|
||||
{
|
||||
id.AddClaim(new Claim(Options.ClaimsIdentity.EmailClaimType, email));
|
||||
}
|
||||
}
|
||||
if (UserManager.SupportsUserSecurityStamp)
|
||||
{
|
||||
id.AddClaim(new Claim(Options.ClaimsIdentity.SecurityStampClaimType,
|
||||
|
|
@ -154,4 +162,4 @@ namespace Microsoft.AspNetCore.Identity
|
|||
return id;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,22 +30,33 @@ namespace Microsoft.AspNetCore.Identity.Test
|
|||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(false, false, false)]
|
||||
[InlineData(false, true, false)]
|
||||
[InlineData(true, false, false)]
|
||||
[InlineData(true, true, false)]
|
||||
[InlineData(true, false, true)]
|
||||
[InlineData(true, true, true)]
|
||||
public async Task EnsureClaimsIdentityHasExpectedClaims(bool supportRoles, bool supportClaims, bool supportRoleClaims)
|
||||
[InlineData(true, false, false, false)]
|
||||
[InlineData(true, true, false, false)]
|
||||
[InlineData(true, false, true, false)]
|
||||
[InlineData(true, true, true, false)]
|
||||
[InlineData(false, false, false, true)]
|
||||
[InlineData(false, true, false, true)]
|
||||
[InlineData(false, false, false, false)]
|
||||
[InlineData(false, true, false, false)]
|
||||
[InlineData(true, false, false, true)]
|
||||
[InlineData(true, true, false, true)]
|
||||
[InlineData(true, false, true, true)]
|
||||
[InlineData(true, true, true, true)]
|
||||
public async Task EnsureClaimsIdentityHasExpectedClaims(bool supportRoles, bool supportClaims, bool supportRoleClaims, bool supportsUserEmail)
|
||||
{
|
||||
// Setup
|
||||
var userManager = MockHelpers.MockUserManager<PocoUser>();
|
||||
var roleManager = MockHelpers.MockRoleManager<PocoRole>();
|
||||
var user = new PocoUser { UserName = "Foo" };
|
||||
var user = new PocoUser { UserName = "Foo", Email = "foo@bar.com" };
|
||||
userManager.Setup(m => m.SupportsUserClaim).Returns(supportClaims);
|
||||
userManager.Setup(m => m.SupportsUserRole).Returns(supportRoles);
|
||||
userManager.Setup(m => m.SupportsUserEmail).Returns(supportsUserEmail);
|
||||
userManager.Setup(m => m.GetUserIdAsync(user)).ReturnsAsync(user.Id);
|
||||
userManager.Setup(m => m.GetUserNameAsync(user)).ReturnsAsync(user.UserName);
|
||||
if (supportsUserEmail)
|
||||
{
|
||||
userManager.Setup(m => m.GetEmailAsync(user)).ReturnsAsync(user.Email);
|
||||
}
|
||||
var roleClaims = new[] { "Admin", "Local" };
|
||||
if (supportRoles)
|
||||
{
|
||||
|
|
@ -90,6 +101,7 @@ namespace Microsoft.AspNetCore.Identity.Test
|
|||
Assert.Contains(
|
||||
claims, c => c.Type == manager.Options.ClaimsIdentity.UserNameClaimType && c.Value == user.UserName);
|
||||
Assert.Contains(claims, c => c.Type == manager.Options.ClaimsIdentity.UserIdClaimType && c.Value == user.Id);
|
||||
Assert.Equal(supportsUserEmail, claims.Any(c => c.Type == manager.Options.ClaimsIdentity.EmailClaimType && c.Value == user.Email));
|
||||
Assert.Equal(supportRoles, claims.Any(c => c.Type == manager.Options.ClaimsIdentity.RoleClaimType && c.Value == "Admin"));
|
||||
Assert.Equal(supportRoles, claims.Any(c => c.Type == manager.Options.ClaimsIdentity.RoleClaimType && c.Value == "Local"));
|
||||
foreach (var cl in userClaims)
|
||||
|
|
|
|||
|
|
@ -6,8 +6,15 @@ using Microsoft.AspNetCore.ResponseCaching;
|
|||
|
||||
namespace Microsoft.AspNetCore.Builder
|
||||
{
|
||||
/// <summary>
|
||||
/// Extension methods for adding the <see cref="ResponseCachingMiddleware"/> to an application.
|
||||
/// </summary>
|
||||
public static class ResponseCachingExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Adds the <see cref="ResponseCachingMiddleware"/> for caching HTTP responses.
|
||||
/// </summary>
|
||||
/// <param name="app">The <see cref="IApplicationBuilder"/>.</param>
|
||||
public static IApplicationBuilder UseResponseCaching(this IApplicationBuilder app)
|
||||
{
|
||||
if (app == null)
|
||||
|
|
|
|||
|
|
@ -14,6 +14,9 @@ using Microsoft.Net.Http.Headers;
|
|||
|
||||
namespace Microsoft.AspNetCore.ResponseCaching
|
||||
{
|
||||
/// <summary>
|
||||
/// Enable HTTP response caching.
|
||||
/// </summary>
|
||||
public class ResponseCachingMiddleware
|
||||
{
|
||||
private static readonly TimeSpan DefaultExpirationTimeSpan = TimeSpan.FromSeconds(10);
|
||||
|
|
@ -29,6 +32,13 @@ namespace Microsoft.AspNetCore.ResponseCaching
|
|||
private readonly IResponseCache _cache;
|
||||
private readonly IResponseCachingKeyProvider _keyProvider;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new <see cref="ResponseCachingMiddleware"/>.
|
||||
/// </summary>
|
||||
/// <param name="next">The <see cref="RequestDelegate"/> representing the next middleware in the pipeline.</param>
|
||||
/// <param name="options">The options for this middleware.</param>
|
||||
/// <param name="loggerFactory">The <see cref="ILoggerFactory"/> used for logging.</param>
|
||||
/// <param name="poolProvider">The <see cref="ObjectPoolProvider"/> used for creating <see cref="ObjectPool"/> instances.</param>
|
||||
public ResponseCachingMiddleware(
|
||||
RequestDelegate next,
|
||||
IOptions<ResponseCachingOptions> options,
|
||||
|
|
@ -88,6 +98,11 @@ namespace Microsoft.AspNetCore.ResponseCaching
|
|||
_keyProvider = keyProvider;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invokes the logic of the middleware.
|
||||
/// </summary>
|
||||
/// <param name="httpContext">The <see cref="HttpContext"/>.</param>
|
||||
/// <returns>A <see cref="Task"/> that completes when the middleware has completed processing.</returns>
|
||||
public async Task Invoke(HttpContext httpContext)
|
||||
{
|
||||
var context = new ResponseCachingContext(httpContext, _logger);
|
||||
|
|
|
|||
|
|
@ -6,15 +6,15 @@ using System.Threading.Tasks;
|
|||
namespace Microsoft.AspNetCore.Connections
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents an end point that multiple connections connect to. For HTTP, endpoints are URLs, for non HTTP it can be a TCP listener (or similar)
|
||||
/// Represents an endpoint that multiple connections connect to. For HTTP, endpoints are URLs, for non-HTTP it can be a TCP listener (or similar).
|
||||
/// </summary>
|
||||
public abstract class ConnectionHandler
|
||||
{
|
||||
/// <summary>
|
||||
/// Called when a new connection is accepted to the endpoint
|
||||
/// Called when a new connection is accepted to the endpoint.
|
||||
/// </summary>
|
||||
/// <param name="connection">The new <see cref="ConnectionContext"/></param>
|
||||
/// <returns>A <see cref="Task"/> that represents the connection lifetime. When the task completes, the connection is complete.</returns>
|
||||
public abstract Task OnConnectedAsync(ConnectionContext connection);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<BuildHelixPayload>false</BuildHelixPayload>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests.Http2
|
|||
|
||||
[ConditionalFact]
|
||||
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "Missing SslStream ALPN support: https://github.com/dotnet/corefx/issues/30492")]
|
||||
[SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/10428", Queues = "Debian.8.Amd64.Open")] // Debian 8 uses OpenSSL 1.0.1 which does not support HTTP/2
|
||||
[SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/10428", Queues = "Debian.8.Amd64;Debian.8.Amd64.Open")] // Debian 8 uses OpenSSL 1.0.1 which does not support HTTP/2
|
||||
[MinimumOSVersion(OperatingSystems.Windows, WindowsVersions.Win81)]
|
||||
public async Task TlsAlpnHandshakeSelectsHttp2From1and2()
|
||||
{
|
||||
|
|
@ -111,7 +111,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests.Http2
|
|||
|
||||
[ConditionalFact]
|
||||
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "Missing SslStream ALPN support: https://github.com/dotnet/corefx/issues/30492")]
|
||||
[SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/10428", Queues = "Debian.8.Amd64.Open")] // Debian 8 uses OpenSSL 1.0.1 which does not support HTTP/2
|
||||
[SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/10428", Queues = "Debian.8.Amd64;Debian.8.Amd64.Open")] // Debian 8 uses OpenSSL 1.0.1 which does not support HTTP/2
|
||||
[MinimumOSVersion(OperatingSystems.Windows, WindowsVersions.Win81)]
|
||||
public async Task TlsAlpnHandshakeSelectsHttp2()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests.Http2
|
|||
{
|
||||
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "Missing SslStream ALPN support: https://github.com/dotnet/corefx/issues/30492")]
|
||||
[MinimumOSVersion(OperatingSystems.Windows, WindowsVersions.Win10)]
|
||||
[SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/10428", Queues = "Debian.8.Amd64.Open")] // Debian 8 uses OpenSSL 1.0.1 which does not support HTTP/2
|
||||
[SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/10428", Queues = "Debian.8.Amd64;Debian.8.Amd64.Open")] // Debian 8 uses OpenSSL 1.0.1 which does not support HTTP/2
|
||||
public class ShutdownTests : TestApplicationErrorLoggerLoggedTest
|
||||
{
|
||||
private static X509Certificate2 _x509Certificate2 = TestResources.GetTestCertificate();
|
||||
|
|
@ -44,7 +44,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests.Http2
|
|||
|
||||
[CollectDump]
|
||||
[ConditionalFact]
|
||||
[SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/9985", Queues = "Fedora.28.Amd64.Open")]
|
||||
[SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/9985", Queues = "Fedora.28.Amd64;Fedora.28.Amd64.Open")]
|
||||
[Flaky("https://github.com/dotnet/aspnetcore/issues/9985", FlakyOn.All)]
|
||||
public async Task GracefulShutdownWaitsForRequestsToFinish()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -595,7 +595,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
|||
[InlineData(HttpProtocols.Http2)]
|
||||
[InlineData(HttpProtocols.Http1AndHttp2)]
|
||||
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "Missing SslStream ALPN support: https://github.com/dotnet/corefx/issues/30492")]
|
||||
[SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/10428", Queues = "Debian.8.Amd64.Open")] // Debian 8 uses OpenSSL 1.0.1 which does not support HTTP/2
|
||||
[SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/10428", Queues = "Debian.8.Amd64;Debian.8.Amd64.Open")] // Debian 8 uses OpenSSL 1.0.1 which does not support HTTP/2
|
||||
[MinimumOSVersion(OperatingSystems.Windows, WindowsVersions.Win81)]
|
||||
public async Task ListenOptionsProtolsCanBeSetAfterUseHttps(HttpProtocols httpProtocols)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ namespace Interop.FunctionalTests
|
|||
// "Missing SslStream ALPN support: https://github.com/dotnet/corefx/issues/30492"
|
||||
&& new OSSkipConditionAttribute(OperatingSystems.MacOSX).IsMet
|
||||
// Debian 8 uses OpenSSL 1.0.1 which does not support ALPN
|
||||
&& new SkipOnHelixAttribute("https://github.com/dotnet/aspnetcore/issues/10428") { Queues = "Debian.8.Amd64.Open" }.IsMet;
|
||||
&& new SkipOnHelixAttribute("https://github.com/dotnet/aspnetcore/issues/10428") { Queues = "Debian.8.Amd64;Debian.8.Amd64.Open" }.IsMet;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
.gradletasknamecache
|
||||
.gradle/
|
||||
build/
|
||||
/test-results
|
||||
.settings/
|
||||
out/
|
||||
*.class
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ buildscript {
|
|||
}
|
||||
dependencies {
|
||||
classpath "com.diffplug.spotless:spotless-plugin-gradle:3.14.0"
|
||||
classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.0'
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -16,6 +17,7 @@ plugins {
|
|||
|
||||
apply plugin: "java-library"
|
||||
apply plugin: "com.diffplug.gradle.spotless"
|
||||
apply plugin: 'org.junit.platform.gradle.plugin'
|
||||
|
||||
group 'com.microsoft.signalr'
|
||||
|
||||
|
|
@ -64,8 +66,8 @@ spotless {
|
|||
}
|
||||
}
|
||||
|
||||
test {
|
||||
useJUnitPlatform()
|
||||
junitPlatform {
|
||||
reportsDir file('test-results')
|
||||
}
|
||||
|
||||
task sourceJar(type: Jar) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<Project DefaultTargets="Build">
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />
|
||||
<Project>
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
|
||||
|
|
@ -15,6 +15,9 @@
|
|||
|
||||
<!-- Disable gradle daemon on CI since the CI seems to try to wait for the daemon to shut down, which it doesn't do :) -->
|
||||
<GradleOptions Condition="'$(ContinuousIntegrationBuild)' == 'true'">$(GradleOptions) -Dorg.gradle.daemon=false</GradleOptions>
|
||||
<PublishDir>$(OutputPath)</PublishDir>
|
||||
<TestDependsOnJava>true</TestDependsOnJava>
|
||||
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
@ -51,15 +54,37 @@
|
|||
<Exec Command="./gradlew $(GradleOptions) compileJava" />
|
||||
</Target>
|
||||
|
||||
<Target Name="Test">
|
||||
<Target Name="Test" Condition="'$(SkipTests)' != 'true'">
|
||||
<Telemetry EventName="NETCORE_ENGINEERING_TELEMETRY" EventData="Category=Test" />
|
||||
<Message Text="Running Java client tests" Importance="high" />
|
||||
<Message Text="> gradlew $(GradleOptions) test" Importance="high" />
|
||||
<Exec Command="./gradlew $(GradleOptions) test" IgnoreStandardErrorWarningFormat="true" />
|
||||
</Target>
|
||||
|
||||
<Target Name="Publish">
|
||||
<ItemGroup>
|
||||
<Files Include="**/*.java" />
|
||||
<Files Include="**/gradle-wrapper.jar" />
|
||||
<Files Include="**/gradle-wrapper.properties" />
|
||||
<Files Include="gradlew" />
|
||||
<Files Include="build.gradle" />
|
||||
<Files Include="gradlew.bat" />
|
||||
<Files Include="settings.gradle" />
|
||||
<Files Include="@(Content)" />
|
||||
</ItemGroup>
|
||||
<Copy DestinationFiles="@(Files->'$(PublishDir)\%(RecursiveDir)%(FileName)%(Extension)')" SourceFiles="@(Files)" />
|
||||
</Target>
|
||||
|
||||
<PropertyGroup>
|
||||
<!-- Pass the Java Package Version down to Gradle -->
|
||||
<GradleOptions Condition="'$(ContinuousIntegrationBuild)' == 'true'">$(GradleOptions) -PpackageVersion="$(PackageVersion)"</GradleOptions>
|
||||
<HelixCommand>chmod +x ./gradlew && ./gradlew $(GradleOptions) test</HelixCommand>
|
||||
<HelixCommand Condition="'$(IsWindowsHelixQueue)' == 'true'">call gradlew $(GradleOptions) test</HelixCommand>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<HelixPostCommand Condition="'$(IsWindowsHelixQueue)' != 'true'" Include="cp %24{HELIX_WORKITEM_ROOT}/test-results/TEST-junit-jupiter.xml %24{HELIX_WORKITEM_ROOT}/junit-results.xml" />
|
||||
<HelixPostCommand Condition="'$(IsWindowsHelixQueue)' == 'true'" Include="copy %25HELIX_WORKITEM_ROOT%25\test-results\TEST-junit-jupiter.xml %25HELIX_WORKITEM_ROOT%25\junit-results.xml" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -9,6 +9,7 @@
|
|||
<_TestSauceArgs Condition="'$(BrowserTestHostName)' != ''">$(_TestSauceArgs) --use-hostname "$(BrowserTestHostName)"</_TestSauceArgs>
|
||||
<NpmTestArgs Condition="'$(DailyTests)' != 'true'">run test:inner --no-color --configuration $(Configuration)</NpmTestArgs>
|
||||
<NpmBuildArgs>run build:inner</NpmBuildArgs>
|
||||
<BuildHelixPayload>false</BuildHelixPayload>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
@ -18,7 +19,7 @@
|
|||
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" />
|
||||
|
||||
<Target Name="Test" Condition="'$(IsTestProject)' == 'true'">
|
||||
<Target Name="Test" Condition="'$(IsTestProject)' == 'true' AND '$(SkipTests)' != 'true'">
|
||||
<Telemetry EventName="NETCORE_ENGINEERING_TELEMETRY" EventData="Category=Test" />
|
||||
<Message Importance="High" Text="Running tests for $(MSBuildProjectName)" />
|
||||
<Yarn Condition="'$(DailyTests)' != 'true'" Command="$(NpmTestArgs)" />
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Flaky("<No longer needed; tracked in Kusto>", FlakyOn.All)]
|
||||
public void OpenApi_NoProjectExists()
|
||||
{
|
||||
var app = GetApplication();
|
||||
|
|
@ -40,7 +39,6 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Flaky("<No longer needed; tracked in Kusto>", FlakyOn.All)]
|
||||
public void OpenApi_ExplicitProject_Missing()
|
||||
{
|
||||
var app = GetApplication();
|
||||
|
|
@ -75,7 +73,6 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Flaky("<No longer needed; tracked in Kusto>", FlakyOn.All)]
|
||||
public async Task OpenApi_Add_ReuseItemGroup()
|
||||
{
|
||||
var project = CreateBasicProject(withOpenApi: true);
|
||||
|
|
@ -105,7 +102,6 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Flaky("<No longer needed; tracked in Kusto>", FlakyOn.All)]
|
||||
public void OpenApi_Add_File_EquivilentPaths()
|
||||
{
|
||||
var project = CreateBasicProject(withOpenApi: true);
|
||||
|
|
@ -131,7 +127,6 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Flaky("<No longer needed; tracked in Kusto>", FlakyOn.All)]
|
||||
public async Task OpenApi_Add_NSwagTypeScript()
|
||||
{
|
||||
var project = CreateBasicProject(withOpenApi: true);
|
||||
|
|
@ -152,7 +147,6 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Flaky("<No longer needed; tracked in Kusto>", FlakyOn.All)]
|
||||
public async Task OpenApi_Add_FromJson()
|
||||
{
|
||||
var project = CreateBasicProject(withOpenApi: true);
|
||||
|
|
@ -173,7 +167,6 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Flaky("<No longer needed; tracked in Kusto>", FlakyOn.All)]
|
||||
public async Task OpenApi_Add_File_UseProjectOption()
|
||||
{
|
||||
var project = CreateBasicProject(withOpenApi: true);
|
||||
|
|
@ -194,7 +187,6 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Flaky("<No longer needed; tracked in Kusto>", FlakyOn.All)]
|
||||
public async Task OpenApi_Add_MultipleTimes_OnlyOneReference()
|
||||
{
|
||||
var project = CreateBasicProject(withOpenApi: true);
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ namespace Microsoft.DotNet.OpenApi.Remove.Tests
|
|||
public OpenApiRemoveTests(ITestOutputHelper output) : base(output) { }
|
||||
|
||||
[Fact]
|
||||
[Flaky("<No longer needed; tracked in Kusto>", FlakyOn.All)]
|
||||
public async Task OpenApi_Remove_File()
|
||||
{
|
||||
var nswagJsonFile = "openapi.json";
|
||||
|
|
@ -62,7 +61,6 @@ namespace Microsoft.DotNet.OpenApi.Remove.Tests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Flaky("<No longer needed; tracked in Kusto>", FlakyOn.All)]
|
||||
public async Task OpenApi_Remove_ViaUrl()
|
||||
{
|
||||
_tempDir
|
||||
|
|
@ -151,7 +149,6 @@ namespace Microsoft.DotNet.OpenApi.Remove.Tests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Flaky("<No longer needed; tracked in Kusto>", FlakyOn.All)]
|
||||
public async Task OpenApi_Remove_Multiple()
|
||||
{
|
||||
var nswagJsonFile = "openapi.json";
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ namespace Microsoft.Extensions.SecretManager.Tools
|
|||
|
||||
public static CommandLineOptions Parse(string[] args, IConsole console)
|
||||
{
|
||||
var app = new CommandLineApplication()
|
||||
var app = new CommandLineApplication(treatUnmatchedOptionsAsArguments: true)
|
||||
{
|
||||
Out = console.Out,
|
||||
Error = console.Error,
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Xml;
|
||||
using System.Xml.Linq;
|
||||
using System.Xml.XPath;
|
||||
using Microsoft.Extensions.CommandLineUtils;
|
||||
|
|
@ -122,7 +123,16 @@ namespace Microsoft.Extensions.SecretManager.Tools.Internal
|
|||
propertyGroup.Add(new XElement("UserSecretsId", newSecretsId));
|
||||
}
|
||||
|
||||
projectDocument.Save(projectPath);
|
||||
var settings = new XmlWriterSettings
|
||||
{
|
||||
Indent = true,
|
||||
OmitXmlDeclaration = true,
|
||||
};
|
||||
|
||||
using (var xw = XmlWriter.Create(projectPath, settings))
|
||||
{
|
||||
projectDocument.Save(xw);
|
||||
}
|
||||
|
||||
context.Reporter.Output(Resources.FormatMessage_SetUserSecretsIdForProject(newSecretsId, projectPath));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Xml.Linq;
|
||||
using Microsoft.AspNetCore.Testing;
|
||||
using Microsoft.Extensions.Configuration.UserSecrets.Tests;
|
||||
using Microsoft.Extensions.SecretManager.Tools.Internal;
|
||||
|
|
@ -90,6 +91,18 @@ namespace Microsoft.Extensions.SecretManager.Tools.Tests
|
|||
Assert.Equal(SecretId, idResolver.Resolve(null, null));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DoesNotAddXmlDeclarationToProject()
|
||||
{
|
||||
var projectDir = _fixture.CreateProject(null);
|
||||
var projectFile = Path.Combine(projectDir, "TestProject.csproj");
|
||||
|
||||
new InitCommand(null, null).Execute(MakeCommandContext(), projectDir);
|
||||
|
||||
var projectDocument = XDocument.Load(projectFile);
|
||||
Assert.Null(projectDocument.Declaration);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void OverridesIdForProjectWithSecretId()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -93,7 +93,9 @@ namespace Microsoft.Extensions.SecretManager.Tools.Tests
|
|||
new KeyValuePair<string, string>("key1", Guid.NewGuid().ToString()),
|
||||
new KeyValuePair<string, string>("Facebook:AppId", Guid.NewGuid().ToString()),
|
||||
new KeyValuePair<string, string>(@"key-@\/.~123!#$%^&*())-+==", @"key-@\/.~123!#$%^&*())-+=="),
|
||||
new KeyValuePair<string, string>("key2", string.Empty)
|
||||
new KeyValuePair<string, string>("key2", string.Empty),
|
||||
new KeyValuePair<string, string>("-oneDashedKey", "-oneDashedValue"),
|
||||
new KeyValuePair<string, string>("--twoDashedKey", "--twoDashedValue")
|
||||
};
|
||||
|
||||
var projectPath = _fixture.GetTempSecretProject();
|
||||
|
|
|
|||
Loading…
Reference in New Issue