Compare commits
1 commit
master
...
updateGHRc
Author | SHA1 | Date | |
---|---|---|---|
|
5fda16975d |
11
.github/prquantifier.yaml
vendored
11
.github/prquantifier.yaml
vendored
|
@ -1,11 +0,0 @@
|
|||
# https://github.com/microsoft/PullRequestQuantifier/blob/main/docs/prquantifier-yaml.md
|
||||
Excluded:
|
||||
# defaults
|
||||
- '*.csproj'
|
||||
- prquantifier.yaml
|
||||
- package-lock.json
|
||||
- '*.md'
|
||||
- '*.sln'
|
||||
# autogenerated files
|
||||
- cgmanifest.json
|
||||
- assets/wix/files.wxs
|
|
@ -1,27 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
function Set-GWVariable {
|
||||
param(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$Name,
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$Value
|
||||
)
|
||||
|
||||
Write-Verbose "Setting CI variable $Name to $Value" -Verbose
|
||||
|
||||
if ($env:GITHUB_ENV) {
|
||||
"$Name=$Value" | Out-File $env:GITHUB_ENV -Append
|
||||
}
|
||||
}
|
||||
|
||||
function Get-GWTempPath {
|
||||
$temp = [System.IO.Path]::GetTempPath()
|
||||
if ($env:RUNNER_TEMP) {
|
||||
$temp = $env:RUNNER_TEMP
|
||||
}
|
||||
|
||||
Write-Verbose "Get CI Temp path: $temp" -Verbose
|
||||
return $temp
|
||||
}
|
52
.github/workflows/daily.yml
vendored
52
.github/workflows/daily.yml
vendored
|
@ -30,16 +30,18 @@ jobs:
|
|||
git fetch --prune --unshallow --tags
|
||||
- name: Execute Update .NET script
|
||||
run: |
|
||||
Import-Module ./.github/workflows/GHWorkflowHelper
|
||||
$currentVersion = (Get-Content .\global.json | ConvertFrom-Json).sdk.version
|
||||
Set-GWVariable -Name OLD_VERSION -Value $currentVersion
|
||||
Write-Verbose "OLD_VERSION=$currentVersion" -Verbose
|
||||
"OLD_VERSION=$currentVersion" | Out-File $env:GITHUB_ENV -Append
|
||||
|
||||
./tools/UpdateDotnetRuntime.ps1 -UpdateMSIPackaging -UseInternalFeed
|
||||
$newVersion = (Get-Content .\global.json | ConvertFrom-Json).sdk.version
|
||||
Set-GWVariable -Name NEW_VERSION -Value $newVersion
|
||||
Write-Verbose "NEW_VERSION=$newVersion" -Verbose
|
||||
"NEW_VERSION=$newVersion" | Out-File $env:GITHUB_ENV -Append
|
||||
|
||||
if ($currentVersion -ne $newVersion) {
|
||||
Set-GWVariable -Name CREATE_PR -Value 'true'
|
||||
Write-Verbose "CREATE_PR=true" -Verbose
|
||||
"CREATE_PR=true" | Out-File $env:GITHUB_ENV -Append
|
||||
}
|
||||
- name: Microsoft Teams Notifier
|
||||
uses: skitionek/notify-microsoft-teams@master
|
||||
|
@ -56,43 +58,5 @@ jobs:
|
|||
title: "Update .NET SDK version from `${{ env.OLD_VERSION }}` to `${{ env.NEW_VERSION }}`"
|
||||
base: master
|
||||
branch: dotnet_update
|
||||
update-tpn:
|
||||
name: Update Notices File
|
||||
timeout-minutes: 15
|
||||
runs-on: windows-latest
|
||||
if: github.repository == 'PowerShell/PowerShell'
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: Update Notices file
|
||||
run: |
|
||||
Invoke-WebRequest -Uri https://aka.ms/pwsh-daily-tpn -OutFile ./ThirdPartyNotices.txt
|
||||
- name: Capture Git Status
|
||||
run: |
|
||||
git status --short
|
||||
- name: Check if we need to create a PR
|
||||
run: |
|
||||
$ErrorActionPreference = 'continue'
|
||||
git diff --quiet ThirdPartyNotices.txt
|
||||
$exitCode = $LASTEXITCODE
|
||||
Write-Verbose -Message "Exit code: $exitCode" -Verbose
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Import-Module ./.github/workflows/GHWorkflowHelper
|
||||
Set-GWVariable -Name CREATE_PR -Value 'true'
|
||||
} else {
|
||||
Write-Verbose "No difference found. Not creating a PR." -Verbose
|
||||
}
|
||||
exit 0
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v3
|
||||
id: cprtpn
|
||||
if: env.CREATE_PR == 'true'
|
||||
with:
|
||||
commit-message: "Update to the latest notice file"
|
||||
committer: GitHub <noreply@github.com>
|
||||
author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
|
||||
title: "Update to the latest notice file"
|
||||
reviewers: travisez13
|
||||
base: master
|
||||
draft: false
|
||||
branch: update-cgmanifest
|
||||
|
||||
|
||||
|
|
57
.github/workflows/update-cgmanifest.yml
vendored
57
.github/workflows/update-cgmanifest.yml
vendored
|
@ -1,57 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation.
|
||||
# Licensed under the MIT license.
|
||||
|
||||
name: Update cgmanifest
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
|
||||
env:
|
||||
DOTNET_CLI_TELEMETRY_OPTOUT: 1
|
||||
POWERSHELL_TELEMETRY_OPTOUT: 1
|
||||
CGMANIFEST_PATH: ''
|
||||
NUGET_PACKAGES: ${{ github.workspace }}\.nuget\packages
|
||||
|
||||
jobs:
|
||||
update-cgmanifest:
|
||||
name: Update cgmanifest
|
||||
timeout-minutes: 15
|
||||
runs-on: windows-latest
|
||||
if: github.repository == 'PowerShell/PowerShell'
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: Cache DotNet
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: |
|
||||
~\AppData\Local\Microsoft\dotnet
|
||||
${{ github.workspace }}\.nuget\packages
|
||||
key: ${{ runner.os }}-${{ hashFiles('**\DotnetRuntimeMetadata.json') }}-${{ hashFiles('**\nuget.config') }}
|
||||
- name: Sync tags
|
||||
run: |
|
||||
git fetch --prune --unshallow --tags
|
||||
- name: Install Ships provider to deal with project.assets.json
|
||||
run: |
|
||||
Install-Module -Name dotnet.project.assets -force
|
||||
- name: Bootstrap
|
||||
run: |
|
||||
Import-Module ./build.psm1
|
||||
Start-PSBootStrap
|
||||
- name: Verify cgmanifest is up to date
|
||||
run: |
|
||||
Import-Module ./build.psm1
|
||||
Find-Dotnet
|
||||
./tools/findMissingNotices.ps1
|
||||
- name: Upload cgmanifest
|
||||
uses: actions/upload-artifact@v2
|
||||
if: always() && env.CGMANIFEST_PATH != ''
|
||||
with:
|
||||
name: cgmanifest
|
||||
path: ${{ env.CGMANIFEST_PATH }}
|
23
.spelling
23
.spelling
|
@ -15,7 +15,6 @@
|
|||
about_
|
||||
about_debuggers
|
||||
about_jobs
|
||||
about_Telemetry
|
||||
acl
|
||||
adamdriscoll
|
||||
add-localgroupmember
|
||||
|
@ -1270,7 +1269,7 @@ package.json
|
|||
jcotton42
|
||||
RPMs
|
||||
PSDesiredStateConfiguration
|
||||
- CHANGELOG/7.2.md
|
||||
- CHANGELOG/preview.md
|
||||
Gimly
|
||||
jborean93
|
||||
mkswd
|
||||
|
@ -1384,32 +1383,12 @@ lselden
|
|||
SethFalco
|
||||
CodeQL
|
||||
slowy07
|
||||
rc.2.21505.57
|
||||
ThirdPartyNotices.txt
|
||||
cgmanifest.json
|
||||
buildinfo
|
||||
tar.gz
|
||||
psoptions.json
|
||||
manifest.spdx.json
|
||||
vPack
|
||||
kondratyev-nv
|
||||
v7.2.0
|
||||
cgmanifest.json
|
||||
pwsh.exe
|
||||
6.0.100-rtm.21527.11
|
||||
6.0.100-rc.2.21505.57
|
||||
ThirdPartyNotices.txt
|
||||
rtm.21527.11
|
||||
- CHANGELOG/7.0.md
|
||||
codesign
|
||||
release-BuildJson
|
||||
yml
|
||||
centos-7
|
||||
PSDesiredStateConfiguration
|
||||
NoLanguage
|
||||
createdump
|
||||
vPack
|
||||
PkgES
|
||||
- test/perf/benchmarks/README.md
|
||||
benchmarked
|
||||
BenchmarkDotNet
|
||||
|
|
|
@ -11,9 +11,9 @@ trigger:
|
|||
include:
|
||||
- '*'
|
||||
exclude:
|
||||
- .vsts-ci/misc-analysis.yml
|
||||
- .github/ISSUE_TEMPLATE/*
|
||||
- .dependabot/config.yml
|
||||
- /.vsts-ci/misc-analysis.yml
|
||||
- /.github/ISSUE_TEMPLATE/*
|
||||
- /.dependabot/config.yml
|
||||
- test/perf/*
|
||||
pr:
|
||||
branches:
|
||||
|
@ -30,14 +30,10 @@ pr:
|
|||
- .vsts-ci/misc-analysis.yml
|
||||
- .vsts-ci/windows.yml
|
||||
- .vsts-ci/windows/*
|
||||
- cgmanifest.json
|
||||
- LICENSE.txt
|
||||
- test/common/markdown/*
|
||||
- test/perf/*
|
||||
- tools/releaseBuild/*
|
||||
- tools/releaseBuild/azureDevOps/templates/*
|
||||
- README.md
|
||||
- .spelling
|
||||
|
||||
variables:
|
||||
DOTNET_CLI_TELEMETRY_OPTOUT: 1
|
||||
|
|
|
@ -11,10 +11,10 @@ trigger:
|
|||
include:
|
||||
- '*'
|
||||
exclude:
|
||||
- tools/releaseBuild/**/*
|
||||
- .vsts-ci/misc-analysis.yml
|
||||
- .github/ISSUE_TEMPLATE/*
|
||||
- .dependabot/config.yml
|
||||
- /tools/releaseBuild/**/*
|
||||
- /.vsts-ci/misc-analysis.yml
|
||||
- /.github/ISSUE_TEMPLATE/*
|
||||
- /.dependabot/config.yml
|
||||
- test/perf/*
|
||||
pr:
|
||||
branches:
|
||||
|
@ -29,17 +29,13 @@ pr:
|
|||
- .dependabot/config.yml
|
||||
- .github/ISSUE_TEMPLATE/*
|
||||
- .vsts-ci/misc-analysis.yml
|
||||
- .vsts-ci/windows.yml
|
||||
- .vsts-ci/windows/*
|
||||
- cgmanifest.json
|
||||
- LICENSE.txt
|
||||
- /.vsts-ci/windows.yml
|
||||
- /.vsts-ci/windows/*
|
||||
- test/common/markdown/*
|
||||
- test/perf/*
|
||||
- tools/packaging/*
|
||||
- tools/releaseBuild/*
|
||||
- tools/releaseBuild/azureDevOps/templates/*
|
||||
- README.md
|
||||
- .spelling
|
||||
|
||||
variables:
|
||||
DOTNET_CLI_TELEMETRY_OPTOUT: 1
|
||||
|
@ -101,6 +97,10 @@ stages:
|
|||
vmImage: macOS-latest
|
||||
steps:
|
||||
- pwsh: |
|
||||
# Remove old .NET SDKs
|
||||
if (Test-Path -Path $HOME/.dotnet) {
|
||||
Remove-Item $HOME/.dotnet -Recurse -Force
|
||||
}
|
||||
Import-Module .\tools\ci.psm1
|
||||
New-CodeCoverageAndTestPackage
|
||||
displayName: CodeCoverage and Test Package
|
||||
|
|
|
@ -27,41 +27,83 @@ variables:
|
|||
- name: repoFolder
|
||||
value: PowerShell
|
||||
|
||||
stages:
|
||||
- stage: Compliance
|
||||
jobs:
|
||||
- job: CI_Compliance
|
||||
displayName: CI Compliance
|
||||
jobs:
|
||||
- job: CI_Compliance
|
||||
displayName: CI Compliance
|
||||
|
||||
pool:
|
||||
vmImage: windows-latest
|
||||
pool:
|
||||
vmImage: windows-latest
|
||||
|
||||
variables:
|
||||
- name: repoPath
|
||||
value: $(Agent.BuildDirectory)\$(repoFolder)
|
||||
variables:
|
||||
- name: repoPath
|
||||
value: $(Agent.BuildDirectory)\$(repoFolder)
|
||||
|
||||
steps:
|
||||
- checkout: self
|
||||
clean: true
|
||||
path: $(repoFolder)
|
||||
steps:
|
||||
- checkout: self
|
||||
clean: true
|
||||
path: $(repoFolder)
|
||||
|
||||
- checkout: ComplianceRepo
|
||||
- checkout: ComplianceRepo
|
||||
|
||||
- template: ci-compliance.yml@ComplianceRepo
|
||||
- stage: markdown_spelling_lint
|
||||
displayName: Markdown Spelling and Lint
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: ./misc-analysis/mdSpell.yml
|
||||
- stage: markdown_link
|
||||
displayName: Markdown Link
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: ./misc-analysis/generateMarkdownMatrix.yml
|
||||
- template: ci-compliance.yml@ComplianceRepo
|
||||
|
||||
- job: Linux_CI
|
||||
displayName: Markdown and Common Tests
|
||||
|
||||
pool:
|
||||
vmImage: ubuntu-20.04
|
||||
|
||||
variables:
|
||||
- name: repoPath
|
||||
value: $(Agent.BuildDirectory)/$(repoFolder)
|
||||
|
||||
steps:
|
||||
- checkout: self
|
||||
clean: true
|
||||
path: $(repoFolder)
|
||||
|
||||
- checkout: ComplianceRepo
|
||||
|
||||
- powershell: |
|
||||
Get-ChildItem -Path env:
|
||||
displayName: Capture Environment
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- powershell: |
|
||||
Install-module Pester -Scope CurrentUser -Force -MaximumVersion 4.99
|
||||
displayName: Install Pester
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- bash: |
|
||||
curl -o- --progress-bar -L https://yarnpkg.com/install.sh | bash
|
||||
displayName: Bootstrap Yarn
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- bash: |
|
||||
sudo yarn global add markdown-spellcheck@0.11.0
|
||||
displayName: Install mdspell
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- bash: |
|
||||
mdspell '**/*.md' '!**/Pester/**/*.md' '!**/dotnet-tools/**/*.md' --ignore-numbers --ignore-acronyms --report --en-us;
|
||||
displayName: Test Spelling in Markdown
|
||||
condition: succeededOrFailed()
|
||||
workingDirectory: '$(repoPath)'
|
||||
|
||||
- ${{ if not(contains(variables['SYSTEM.COLLECTIONURI'],'mscodehub')) }}:
|
||||
- pwsh: |
|
||||
Import-module ./build.psm1
|
||||
$path = Join-Path -Path $pwd -ChildPath './commonTestResults.xml'
|
||||
$results = invoke-pester -Script ./test/common -OutputFile $path -OutputFormat NUnitXml -PassThru
|
||||
Write-Host "##vso[results.publish type=NUnit;mergeResults=true;runTitle=Common Tests;publishRunAttachments=true;resultFiles=$path;]"
|
||||
if($results.TotalCount -eq 0 -or $results.FailedCount -gt 0)
|
||||
{
|
||||
throw "Markdown tests failed"
|
||||
}
|
||||
displayName: Run Common Tests
|
||||
condition: succeededOrFailed()
|
||||
workingDirectory: '$(repoPath)'
|
||||
|
||||
- template: dailyBuildCompliance.yml@ComplianceRepo
|
||||
parameters:
|
||||
jobName: generateMatrix
|
||||
taskName: matrixTask
|
||||
- template: ./misc-analysis/markdown.yml
|
||||
parameters:
|
||||
matrix: $[ dependencies.generateMatrix.outputs['matrixTask.matrix'] ]
|
||||
dependsOn: generateMatrix
|
||||
sourceScanPath: '$(repoPath)'
|
||||
|
|
|
@ -1,46 +0,0 @@
|
|||
parameters:
|
||||
- name: jobName
|
||||
- name: taskName
|
||||
|
||||
jobs:
|
||||
- job: ${{ parameters.jobName }}
|
||||
displayName: Generate Markdown Matrix
|
||||
|
||||
pool:
|
||||
vmImage: ubuntu-20.04
|
||||
|
||||
variables:
|
||||
- name: repoPath
|
||||
value: $(Agent.BuildDirectory)/$(repoFolder)
|
||||
|
||||
steps:
|
||||
- checkout: self
|
||||
clean: true
|
||||
path: $(repoFolder)
|
||||
|
||||
- powershell: |
|
||||
$matrix = @{}
|
||||
$matrix += @{
|
||||
'root' = @{
|
||||
markdown_folder = "$(repoPath)"
|
||||
markdown_recurse = $false
|
||||
}
|
||||
}
|
||||
Get-ChildItem -path '$(repoPath)' -Directory | Foreach-Object {
|
||||
$folder = $_
|
||||
$matrix += @{
|
||||
$_.Name = @{
|
||||
markdown_folder = $_.fullName
|
||||
markdown_recurse = $true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$matrixJson = $matrix | ConvertTo-Json -Compress
|
||||
$variableName = "matrix"
|
||||
$command = "vso[task.setvariable variable=$variableName;isoutput=true]$($matrixJson)"
|
||||
Write-Verbose "sending command: '$command'"
|
||||
Write-Host "##$command"
|
||||
displayName: Create Matrix
|
||||
condition: succeededOrFailed()
|
||||
name: ${{ parameters.taskName }}
|
|
@ -1,63 +0,0 @@
|
|||
parameters:
|
||||
- name: matrix
|
||||
- name: dependsOn
|
||||
|
||||
jobs:
|
||||
- job: markdown
|
||||
strategy:
|
||||
matrix: ${{ parameters.matrix }}
|
||||
maxParallel: 5
|
||||
|
||||
displayName: Markdown Link Verification
|
||||
|
||||
dependsOn: ${{ parameters.dependsOn }}
|
||||
|
||||
pool:
|
||||
vmImage: ubuntu-20.04
|
||||
|
||||
variables:
|
||||
- name: repoPath
|
||||
value: $(Agent.BuildDirectory)/$(repoFolder)
|
||||
- name: YARN_CACHE_FOLDER
|
||||
value: $(Pipeline.Workspace)/.yarn
|
||||
- name: YARN_GLOBAL_CACHE_FOLDER
|
||||
value: $(Pipeline.Workspace)/.yarn-global
|
||||
|
||||
steps:
|
||||
- checkout: self
|
||||
clean: true
|
||||
path: $(repoFolder)
|
||||
|
||||
- checkout: ComplianceRepo
|
||||
|
||||
- task: Cache@2
|
||||
inputs:
|
||||
key: '"markdown-link-check" | "$(Agent.OS)" | $(repoPath)/test/common/markdown-link/markdown-link.tests.ps1'
|
||||
path: $(YARN_GLOBAL_CACHE_FOLDER)
|
||||
displayName: Cache Yarn packages
|
||||
|
||||
- powershell: |
|
||||
Install-module Pester -Scope CurrentUser -Force -MaximumVersion 4.99
|
||||
displayName: Install Pester
|
||||
|
||||
- bash: |
|
||||
curl -o- --progress-bar -L https://yarnpkg.com/install.sh | bash
|
||||
displayName: Bootstrap Yarn
|
||||
|
||||
- bash: |
|
||||
yarn config set global-folder "$(YARN_GLOBAL_CACHE_FOLDER)"
|
||||
displayName: Set Yarn global cache folder
|
||||
|
||||
- ${{ if not(contains(variables['SYSTEM.COLLECTIONURI'],'mscodehub')) }}:
|
||||
- pwsh: |
|
||||
Import-module ./build.psm1
|
||||
$path = Join-Path -Path $pwd -ChildPath './commonTestResults.xml'
|
||||
$results = invoke-pester -Script ./test/common/markdown-link -OutputFile $path -OutputFormat NUnitXml -PassThru
|
||||
Write-Host "##vso[results.publish type=NUnit;mergeResults=true;runTitle=Markdown Link;publishRunAttachments=true;resultFiles=$path;]"
|
||||
if($results.TotalCount -eq 0 -or $results.FailedCount -gt 0)
|
||||
{
|
||||
throw "Markdown tests failed"
|
||||
}
|
||||
displayName: Run Markdown Link Tests
|
||||
condition: succeededOrFailed()
|
||||
workingDirectory: '$(repoPath)'
|
|
@ -1,56 +0,0 @@
|
|||
jobs:
|
||||
- job: markdown
|
||||
displayName: Markdown Spelling
|
||||
|
||||
pool:
|
||||
vmImage: ubuntu-20.04
|
||||
|
||||
variables:
|
||||
- name: repoPath
|
||||
value: $(Agent.BuildDirectory)/$(repoFolder)
|
||||
|
||||
steps:
|
||||
- checkout: self
|
||||
clean: true
|
||||
path: $(repoFolder)
|
||||
|
||||
- checkout: ComplianceRepo
|
||||
|
||||
- powershell: |
|
||||
Get-ChildItem -Path env:
|
||||
displayName: Capture Environment
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- bash: |
|
||||
curl -o- --progress-bar -L https://yarnpkg.com/install.sh | bash
|
||||
displayName: Bootstrap Yarn
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- bash: |
|
||||
sudo yarn global add markdown-spellcheck@0.11.0
|
||||
displayName: Install mdspell
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- bash: |
|
||||
mdspell '**/*.md' '!**/Pester/**/*.md' '!**/dotnet-tools/**/*.md' --ignore-numbers --ignore-acronyms --report --en-us;
|
||||
displayName: Test Spelling in Markdown
|
||||
condition: succeededOrFailed()
|
||||
workingDirectory: '$(repoPath)'
|
||||
|
||||
- ${{ if not(contains(variables['SYSTEM.COLLECTIONURI'],'mscodehub')) }}:
|
||||
- pwsh: |
|
||||
Import-module ./build.psm1
|
||||
$path = Join-Path -Path $pwd -ChildPath './commonTestResults.xml'
|
||||
$results = invoke-pester -Script ./test/common/markdown-lint -OutputFile $path -OutputFormat NUnitXml -PassThru
|
||||
Write-Host "##vso[results.publish type=NUnit;mergeResults=true;runTitle=Markdown Lint;publishRunAttachments=true;resultFiles=$path;]"
|
||||
if($results.TotalCount -eq 0 -or $results.FailedCount -gt 0)
|
||||
{
|
||||
throw "Markdown tests failed"
|
||||
}
|
||||
displayName: Run Markdown Lint Tests
|
||||
condition: succeededOrFailed()
|
||||
workingDirectory: '$(repoPath)'
|
||||
|
||||
- template: dailyBuildCompliance.yml@ComplianceRepo
|
||||
parameters:
|
||||
sourceScanPath: '$(repoPath)'
|
|
@ -11,31 +11,38 @@ jobs:
|
|||
displayName: ${{ parameters.displayName }}
|
||||
|
||||
steps:
|
||||
- pwsh: |
|
||||
- powershell: |
|
||||
Get-ChildItem -Path env:
|
||||
displayName: Capture Environment
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- pwsh: Write-Host "##vso[build.updatebuildnumber]$env:BUILD_SOURCEBRANCHNAME-$env:BUILD_SOURCEVERSION-$((get-date).ToString("yyyyMMddhhmmss"))"
|
||||
- powershell: Write-Host "##vso[build.updatebuildnumber]$env:BUILD_SOURCEBRANCHNAME-$env:BUILD_SOURCEVERSION-$((get-date).ToString("yyyyMMddhhmmss"))"
|
||||
displayName: Set Build Name for Non-PR
|
||||
condition: ne(variables['Build.Reason'], 'PullRequest')
|
||||
|
||||
- ${{ if ne(variables['AzDevOpsFeed'], '') }}:
|
||||
- template: /tools/releaseBuild/azureDevOps/templates/insert-nuget-config-azfeed.yml
|
||||
|
||||
- pwsh: |
|
||||
if (Test-Path -Path $HOME/.dotnet) {
|
||||
Remove-Item $HOME/.dotnet -Recurse -Force
|
||||
}
|
||||
displayName: Remove Old .NET SDKs
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- pwsh: |
|
||||
Import-Module .\tools\ci.psm1
|
||||
Invoke-CIInstall -SkipUser
|
||||
displayName: Bootstrap
|
||||
condition: succeeded()
|
||||
|
||||
- pwsh: |
|
||||
- powershell: |
|
||||
Import-Module .\tools\ci.psm1
|
||||
Invoke-CIBuild
|
||||
displayName: Build
|
||||
condition: succeeded()
|
||||
|
||||
- pwsh: |
|
||||
- powershell: |
|
||||
Import-Module .\tools\ci.psm1
|
||||
Restore-PSOptions
|
||||
Invoke-CIxUnit -SkipFailing
|
||||
|
|
|
@ -33,6 +33,13 @@ jobs:
|
|||
displayName: 'Capture Artifacts Directory'
|
||||
continueOnError: true
|
||||
|
||||
- pwsh: |
|
||||
if (Test-Path -Path $HOME/.dotnet) {
|
||||
Remove-Item $HOME/.dotnet -Recurse -Force
|
||||
}
|
||||
displayName: Remove Old .NET SDKs
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- pwsh: |
|
||||
Import-Module .\tools\ci.psm1
|
||||
Invoke-CIInstall -SkipUser
|
||||
|
|
|
@ -11,9 +11,9 @@ trigger:
|
|||
include:
|
||||
- '*'
|
||||
exclude:
|
||||
- .vsts-ci/misc-analysis.yml
|
||||
- .github/ISSUE_TEMPLATE/*
|
||||
- .dependabot/config.yml
|
||||
- /.vsts-ci/misc-analysis.yml
|
||||
- /.github/ISSUE_TEMPLATE/*
|
||||
- /.dependabot/config.yml
|
||||
- test/perf/*
|
||||
pr:
|
||||
branches:
|
||||
|
@ -28,15 +28,11 @@ pr:
|
|||
- .dependabot/config.yml
|
||||
- .github/ISSUE_TEMPLATE/*
|
||||
- .vsts-ci/misc-analysis.yml
|
||||
- cgmanifest.json
|
||||
- LICENSE.txt
|
||||
- test/common/markdown/*
|
||||
- test/perf/*
|
||||
- tools/packaging/*
|
||||
- tools/releaseBuild/*
|
||||
- tools/releaseBuild/azureDevOps/templates/*
|
||||
- README.md
|
||||
- .spelling
|
||||
|
||||
variables:
|
||||
GIT_CONFIG_PARAMETERS: "'core.autocrlf=false'"
|
||||
|
|
|
@ -1,53 +1,25 @@
|
|||
parameters:
|
||||
- name: pool
|
||||
default: 'Hosted VS2017'
|
||||
- name: jobName
|
||||
default: 'win_packaging'
|
||||
- name: runtimePrefix
|
||||
default: 'win7'
|
||||
- name: architecture
|
||||
default: 'x64'
|
||||
- name: channel
|
||||
default: 'preview'
|
||||
pool: 'Hosted VS2017'
|
||||
jobName: 'win_packaging'
|
||||
architecture: 'x64'
|
||||
channel: 'preview'
|
||||
parentJobs: []
|
||||
|
||||
jobs:
|
||||
- job: ${{ parameters.jobName }}_${{ parameters.channel }}_${{ parameters.architecture }}
|
||||
|
||||
variables:
|
||||
- name: repoFolder
|
||||
value: PowerShell
|
||||
- name: repoPath
|
||||
value: $(Agent.BuildDirectory)\$(repoFolder)
|
||||
- name: complianceRepoFolder
|
||||
value: compliance
|
||||
- name: complianceRepoPath
|
||||
value: $(Agent.BuildDirectory)\$(complianceRepoFolder)
|
||||
|
||||
dependsOn:
|
||||
${{ parameters.parentJobs }}
|
||||
pool:
|
||||
name: ${{ parameters.pool }}
|
||||
|
||||
displayName: Windows Packaging - ${{ parameters.architecture }} - ${{ parameters.channel }}
|
||||
|
||||
steps:
|
||||
- checkout: self
|
||||
clean: true
|
||||
path: $(repoFolder)
|
||||
|
||||
- checkout: ComplianceRepo
|
||||
clean: true
|
||||
path: $(complianceRepoFolder)
|
||||
|
||||
- powershell: |
|
||||
Get-ChildItem -Path env:
|
||||
displayName: Capture environment
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- pwsh: |
|
||||
$PSVersionTable
|
||||
displayName: Capture PowerShell Version Table
|
||||
condition: succeededOrFailed()
|
||||
|
||||
|
||||
- template: /tools/releaseBuild/azureDevOps/templates/insert-nuget-config-azfeed.yml
|
||||
|
||||
- pwsh: |
|
||||
|
@ -55,24 +27,9 @@ jobs:
|
|||
Invoke-CIInstall -SkipUser
|
||||
displayName: Bootstrap
|
||||
condition: succeeded()
|
||||
workingDirectory: $(repoPath)
|
||||
|
||||
- pwsh: |
|
||||
Import-Module .\tools\ci.psm1
|
||||
New-CodeCoverageAndTestPackage
|
||||
Invoke-CIFinish -Runtime ${{ parameters.runtimePrefix }}-${{ parameters.architecture }} -channel ${{ parameters.channel }} -Stage Build
|
||||
displayName: Build
|
||||
workingDirectory: $(repoPath)
|
||||
|
||||
- template: Sbom.yml@ComplianceRepo
|
||||
parameters:
|
||||
BuildDropPath: '$(System.ArtifactsDirectory)/mainBuild'
|
||||
Build_Repository_Uri: $(build.repository.uri)
|
||||
displayName: SBOM
|
||||
|
||||
- pwsh: |
|
||||
Import-Module .\tools\ci.psm1
|
||||
New-CodeCoverageAndTestPackage
|
||||
Invoke-CIFinish -Runtime ${{ parameters.runtimePrefix }}-${{ parameters.architecture }} -channel ${{ parameters.channel }} -Stage Package
|
||||
displayName: Package and Test
|
||||
workingDirectory: $(repoPath)
|
||||
Invoke-CIFinish -Runtime win7-${{ parameters.architecture }} -channel ${{ parameters.channel }}
|
||||
displayName: Build and Test Package
|
||||
|
|
|
@ -67,17 +67,10 @@ variables:
|
|||
- name: __SuppressAnsiEscapeSequences
|
||||
value: 1
|
||||
- group: fakeNugetKey
|
||||
- name: SBOMGenerator_Formats
|
||||
value: spdx:2.2
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
- repository: ComplianceRepo
|
||||
type: github
|
||||
endpoint: PowerShell
|
||||
name: PowerShell/compliance
|
||||
ref: master
|
||||
|
||||
- repo: self
|
||||
clean: true
|
||||
stages:
|
||||
- stage: PackagingWin
|
||||
displayName: Packaging for Windows
|
||||
|
@ -93,13 +86,3 @@ stages:
|
|||
parameters:
|
||||
channel: preview
|
||||
architecture: x86
|
||||
- template: templates/windows-packaging.yml
|
||||
parameters:
|
||||
channel: preview
|
||||
architecture: arm
|
||||
runtimePrefix: win
|
||||
- template: templates/windows-packaging.yml
|
||||
parameters:
|
||||
channel: preview
|
||||
architecture: arm64
|
||||
runtimePrefix: win
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<Project>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="DotNetAnalyzers.DocumentationAnalyzers" Version="1.0.0-beta.59" PrivateAssets="all" />
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="6.0.0" PrivateAssets="all" />
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="6.0.0-rtm.21504.2" PrivateAssets="all" />
|
||||
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.354" PrivateAssets="all" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
@ -1,45 +1,5 @@
|
|||
# 7.0 Changelog
|
||||
|
||||
## [7.0.8] - 2021-10-14
|
||||
|
||||
### Engine Updates and Fixes
|
||||
|
||||
- Handle error from unauthorized access when removing `AppLocker` test files (#15881)
|
||||
- Handle error when the telemetry mutex cannot be created (#15574) (Thanks @gukoff!)
|
||||
- Configure `ApplicationInsights` to not send cloud role name (Internal 17099)
|
||||
- Disallow `Add-Type` in NoLanguage mode on a locked down machine (Internal 17521)
|
||||
|
||||
### Tools
|
||||
|
||||
- Add `.stylecop` to `filetypexml` and format it (#16025)
|
||||
|
||||
### Build and Packaging Improvements
|
||||
|
||||
<details>
|
||||
|
||||
<summary>
|
||||
<p>Bump .NET SDK to 3.1.414</p>
|
||||
</summary>
|
||||
|
||||
<ul>
|
||||
<li>Update the nuget.config file used for building NuGet packages (Internal 17547)</li>
|
||||
<li>Sign the .NET <code>createdump</code> executable (#16229)</li>
|
||||
<li>Upgrade <code>set-value</code> package for markdown test (#16196)</li>
|
||||
<li>Move vPack build to 1ES Pool (#16169)</li>
|
||||
<li>Update to .NET SDK 3.1.414 (Internal 17532)</li>
|
||||
<li>Fix the macOS build by updating the pool image name (#16010)</li>
|
||||
<li>Move from PkgES hosted agents to 1ES hosted agents (#16023)</li>
|
||||
<li>Use Alpine 3.12 for building PowerShell for Alpine Linux (#16008)</li>
|
||||
</ul>
|
||||
|
||||
</details>
|
||||
|
||||
### Documentation and Help Content
|
||||
|
||||
- Fix example nuget.config (#14349)
|
||||
|
||||
[7.0.8]: https://github.com/PowerShell/PowerShell/compare/v7.0.7...v7.0.8
|
||||
|
||||
## [7.0.7] - 2021-08-12
|
||||
|
||||
### Build and Packaging Improvements
|
||||
|
|
|
@ -1,45 +1,5 @@
|
|||
# 7.1 Changelog
|
||||
|
||||
## [7.1.5] - 2021-10-14
|
||||
|
||||
### Engine Updates and Fixes
|
||||
|
||||
- Handle error from unauthorized access when removing `AppLocker` test files (#15881)
|
||||
- Test more thoroughly whether a command is `Out-Default` for transcription scenarios (#15653)
|
||||
- Handle error when the telemetry mutex cannot be created (#15574) (Thanks @gukoff!)
|
||||
- Configure `ApplicationInsights` to not send cloud role name (Internal 17100)
|
||||
- Disallow `Add-Type` in NoLanguage mode on a locked down machine (Internal 17522)
|
||||
|
||||
### Tools
|
||||
|
||||
- Add `.stylecop` to `filetypexml` and format it (#16025)
|
||||
|
||||
### Build and Packaging Improvements
|
||||
|
||||
<details>
|
||||
|
||||
<summary>
|
||||
<p>Bump .NET SDK to 5.0.402</p>
|
||||
</summary>
|
||||
|
||||
<ul>
|
||||
<li>Upgrade <code>set-value</code> package for markdown test (#16196)</li>
|
||||
<li>Sign the .NET <code>createdump</code> executable (#16229)</li>
|
||||
<li>Move vPack build to 1ES Pool (#16169)</li>
|
||||
<li>Update to .NET SDK 5.0.402 (Internal 17537)</li>
|
||||
<li>Move from PkgES hosted agents to 1ES hosted agents (#16023)</li>
|
||||
<li>Fix the macOS build by updating the pool image name (#16010)</li>
|
||||
<li>Use Alpine 3.12 for building PowerShell for Alpine Linux (#16008)</li>
|
||||
</ul>
|
||||
|
||||
</details>
|
||||
|
||||
### Documentation and Help Content
|
||||
|
||||
- Fix example nuget.config (#14349)
|
||||
|
||||
[7.1.5]: https://github.com/PowerShell/PowerShell/compare/v7.1.4...v7.1.5
|
||||
|
||||
## [7.1.4] - 2021-08-12
|
||||
|
||||
### Build and Packaging Improvements
|
||||
|
|
1122
CHANGELOG/7.2.md
1122
CHANGELOG/7.2.md
File diff suppressed because it is too large
Load diff
1033
CHANGELOG/preview.md
1033
CHANGELOG/preview.md
File diff suppressed because it is too large
Load diff
|
@ -1,15 +1,12 @@
|
|||
{
|
||||
"sdk": {
|
||||
"channel": "6.0.1xx",
|
||||
"channel": "6.0.1xx-rc2",
|
||||
"quality": "signed",
|
||||
"qualityFallback": "daily",
|
||||
"packageVersionPattern": "6.0.0",
|
||||
"packageVersionPattern": "6.0.0-rc.2",
|
||||
"sdkImageVersion": "6.0.100",
|
||||
"nextChannel": "6.0.1xx",
|
||||
"azureFeed": "",
|
||||
"sdkImageOverride": ""
|
||||
"nextChannel": "6.0.1xx-rc2"
|
||||
},
|
||||
"internalfeed" : {
|
||||
"url": ""
|
||||
}
|
||||
}
|
||||
|
|
|
@ -138,7 +138,6 @@
|
|||
<TargetFramework>net6.0</TargetFramework>
|
||||
<LangVersion>10.0</LangVersion>
|
||||
<PublishReadyToRun Condition=" '$(Configuration)' != 'Debug' ">true</PublishReadyToRun>
|
||||
<PublishReadyToRunEmitSymbols>true</PublishReadyToRunEmitSymbols>
|
||||
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
|
|
112
README.md
112
README.md
|
@ -30,19 +30,19 @@ You can download and install a PowerShell package for any of the following platf
|
|||
| -------------------------------------------| ------------------------| ------------------------| ----------------------| ------------------------------|
|
||||
| [Windows (x64)][corefx-win] | [.msi][lts-windows-64] | [.msi][rl-windows-64] | [.msi][pv-windows-64] | [Instructions][in-windows] |
|
||||
| [Windows (x86)][corefx-win] | [.msi][lts-windows-86] | [.msi][rl-windows-86] | [.msi][pv-windows-86] | [Instructions][in-windows] |
|
||||
| [Ubuntu 20.04][corefx-linux] | [.deb][lts-deb] | [.deb][rl-ubuntu20] | [.deb][pv-deb] | [Instructions][in-ubuntu20] |
|
||||
| [Ubuntu 18.04][corefx-linux] | [.deb][lts-deb] | [.deb][rl-ubuntu18] | [.deb][pv-deb] | [Instructions][in-ubuntu18] |
|
||||
| [Ubuntu 16.04][corefx-linux] | [.deb][lts-deb] | [.deb][rl-ubuntu16] | [.deb][pv-deb] | [Instructions][in-ubuntu16] |
|
||||
| [Debian 9][corefx-linux] | [.deb][lts-deb] | [.deb][rl-debian9] | [.deb][pv-deb] | [Instructions][in-deb9] |
|
||||
| [Debian 10][corefx-linux] | [.deb][lts-deb] | [.deb][rl-debian10] | [.deb][pv-deb] | [Instructions][in-deb9] |
|
||||
| [Debian 11][corefx-linux] | [.deb][lts-deb] | [.deb][rl-debian11] | [.deb][pv-deb] | |
|
||||
| [CentOS 7][corefx-linux] | [.rpm][lts-rh] | [.rpm][rl-centos] | [.rpm][pv-rpm] | [Instructions][in-centos] |
|
||||
| [CentOS 8][corefx-linux] | [.rpm][lts-rh] | [.rpm][rl-centos8] | [.rpm][pv-rpm] | |
|
||||
| [Red Hat Enterprise Linux 7][corefx-linux] | [.rpm][lts-rh] | [.rpm][rl-centos] | [.rpm][pv-rpm] | [Instructions][in-rhel7] |
|
||||
| [openSUSE 42.3][corefx-linux] | [.rpm][lts-rh] | [.rpm][rl-centos] | [.rpm][pv-rpm] | [Instructions][in-opensuse] |
|
||||
| [Fedora 30][corefx-linux] | [.rpm][lts-rh] | [.rpm][rl-centos] | [.rpm][pv-rpm] | [Instructions][in-fedora] |
|
||||
| [Ubuntu 20.04][corefx-linux] | | [.deb][rl-ubuntu20] | [.deb][pv-deb] | [Instructions][in-ubuntu20] |
|
||||
| [Ubuntu 18.04][corefx-linux] | [.deb][lts-ubuntu18] | [.deb][rl-ubuntu18] | [.deb][pv-deb] | [Instructions][in-ubuntu18] |
|
||||
| [Ubuntu 16.04][corefx-linux] | [.deb][lts-ubuntu16] | [.deb][rl-ubuntu16] | [.deb][pv-deb] | [Instructions][in-ubuntu16] |
|
||||
| [Debian 9][corefx-linux] | [.deb][lts-debian9] | [.deb][rl-debian9] | [.deb][pv-deb] | [Instructions][in-deb9] |
|
||||
| [Debian 10][corefx-linux] | [.deb][lts-debian10] | [.deb][rl-debian10] | [.deb][pv-deb] | [Instructions][in-deb9] |
|
||||
| [Debian 11][corefx-linux] | | [.deb][rl-debian11] | [.deb][pv-deb] | |
|
||||
| [CentOS 7][corefx-linux] | [.rpm][lts-centos] | [.rpm][rl-centos] | [.rpm][pv-rpm] | [Instructions][in-centos] |
|
||||
| [CentOS 8][corefx-linux] | [.rpm][lts-centos8] | [.rpm][rl-centos8] | [.rpm][pv-rpm] | |
|
||||
| [Red Hat Enterprise Linux 7][corefx-linux] | [.rpm][lts-centos] | [.rpm][rl-centos] | [.rpm][pv-rpm] | [Instructions][in-rhel7] |
|
||||
| [openSUSE 42.3][corefx-linux] | [.rpm][lts-centos] | [.rpm][rl-centos] | [.rpm][pv-rpm] | [Instructions][in-opensuse] |
|
||||
| [Fedora 30][corefx-linux] | [.rpm][lts-centos] | [.rpm][rl-centos] | [.rpm][pv-rpm] | [Instructions][in-fedora] |
|
||||
| [macOS 10.13+ (x64)][corefx-macos] | [.pkg][lts-macos] | [.pkg][rl-macos] | [.pkg][pv-macos] | [Instructions][in-macos] |
|
||||
| [macOS 10.13+ (arm64)][corefx-macos] | [.pkg][lts-macos-arm64] | [.pkg][rl-macos-arm64] | [.pkg][pv-macos-arm64]| [Instructions][in-macos] |
|
||||
| [macOS 10.13+ (arm64)][corefx-macos] | | | [.pkg][pv-macos-arm64]| [Instructions][in-macos] |
|
||||
| Docker | | | | [Instructions][in-docker] |
|
||||
|
||||
You can download and install a PowerShell package for any of the following platforms, **which are supported by the community.**
|
||||
|
@ -59,54 +59,55 @@ You can also download the PowerShell binary archives for Windows, macOS and Linu
|
|||
| ---------------| --------------------------------------------------- | ------------------------------------------------| -----------------------------------------------|
|
||||
| Windows | [32-bit][rl-winx86-zip]/[64-bit][rl-winx64-zip] | [32-bit][pv-winx86-zip]/[64-bit][pv-winx64-zip] | [Instructions][in-windows-zip] |
|
||||
| macOS (x64) | [64-bit][rl-macos-tar] | [64-bit][pv-macos-tar] | [Instructions][in-tar-macos] |
|
||||
| macOS (arm64) | [64-bit][rl-macos-tar-arm64] | [64-bit][pv-macos-tar-arm64] | [Instructions][in-tar-macos] |
|
||||
| macOS (arm64) | | [64-bit][pv-macos-tar-arm64] | [Instructions][in-tar-macos] |
|
||||
| Linux | [64-bit][rl-linux-tar] | [64-bit][pv-linux-tar] | [Instructions][in-tar-linux] |
|
||||
| Windows (Arm) | [64-bit][rl-winarm64] (preview) | [64-bit][pv-winarm64] | [Instructions][in-arm] |
|
||||
| Raspbian (Arm) | [32-bit][rl-arm32]/[64-bit][rl-arm64] | [32-bit][pv-arm32]/[64-bit][pv-arm64] | [Instructions][in-raspbian] |
|
||||
|
||||
[lts-windows-86]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/PowerShell-7.2.0-win-x86.msi
|
||||
[lts-windows-64]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/PowerShell-7.2.0-win-x64.msi
|
||||
[lts-deb]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell-lts_7.2.0-1.deb_amd64.deb
|
||||
[lts-rh]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell-lts-7.2.0-1.rh.x86_64.rpm
|
||||
[lts-macos]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell-lts-7.2.0-osx-x64.pkg
|
||||
[lts-macos-arm64]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell-lts-7.2.0-osx-arm64.pkg
|
||||
[lts-windows-86]: https://github.com/PowerShell/PowerShell/releases/download/v7.0.7/PowerShell-7.0.7-win-x86.msi
|
||||
[lts-windows-64]: https://github.com/PowerShell/PowerShell/releases/download/v7.0.7/PowerShell-7.0.7-win-x64.msi
|
||||
[lts-ubuntu18]: https://github.com/PowerShell/PowerShell/releases/download/v7.0.7/powershell-lts_7.0.7-1.ubuntu.18.04_amd64.deb
|
||||
[lts-ubuntu16]: https://github.com/PowerShell/PowerShell/releases/download/v7.0.7/powershell-lts_7.0.7-1.ubuntu.16.04_amd64.deb
|
||||
[lts-debian9]: https://github.com/PowerShell/PowerShell/releases/download/v7.0.7/powershell-lts_7.0.7-1.debian.9_amd64.deb
|
||||
[lts-debian10]: https://github.com/PowerShell/PowerShell/releases/download/v7.0.7/powershell-lts_7.0.7-1.debian.10_amd64.deb
|
||||
[lts-centos]: https://github.com/PowerShell/PowerShell/releases/download/v7.0.7/powershell-lts-7.0.7-1.rhel.7.x86_64.rpm
|
||||
[lts-centos8]: https://github.com/PowerShell/PowerShell/releases/download/v7.0.7/powershell-lts-7.0.7-1.centos.8.x86_64.rpm
|
||||
[lts-macos]: https://github.com/PowerShell/PowerShell/releases/download/v7.0.7/powershell-lts-7.0.7-osx-x64.pkg
|
||||
|
||||
[rl-windows-64]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/PowerShell-7.2.0-win-x64.msi
|
||||
[rl-windows-86]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/PowerShell-7.2.0-win-x86.msi
|
||||
[rl-ubuntu20]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell_7.2.0-1.deb_amd64.deb
|
||||
[rl-ubuntu18]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell_7.2.0-1.deb_amd64.deb
|
||||
[rl-ubuntu16]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell_7.2.0-1.deb_amd64.deb
|
||||
[rl-debian9]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell_7.2.0-1.deb_amd64.deb
|
||||
[rl-debian10]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell_7.2.0-1.deb_amd64.deb
|
||||
[rl-debian11]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell_7.2.0-1.deb_amd64.deb
|
||||
[rl-centos]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell-7.2.0-1.rh.x86_64.rpm
|
||||
[rl-centos8]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell-7.2.0-1.rh.x86_64.rpm
|
||||
[rl-macos]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell-7.2.0-osx-x64.pkg
|
||||
[rl-macos-arm64]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell-7.2.0-osx-arm64.pkg
|
||||
[rl-winarm64]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/PowerShell-7.2.0-win-arm64.zip
|
||||
[rl-winx86-zip]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/PowerShell-7.2.0-win-x86.zip
|
||||
[rl-winx64-zip]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/PowerShell-7.2.0-win-x64.zip
|
||||
[rl-macos-tar]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell-7.2.0-osx-x64.tar.gz
|
||||
[rl-macos-tar-arm64]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell-7.2.0-osx-arm64.tar.gz
|
||||
[rl-linux-tar]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell-7.2.0-linux-x64.tar.gz
|
||||
[rl-arm32]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell-7.2.0-linux-arm32.tar.gz
|
||||
[rl-arm64]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0/powershell-7.2.0-linux-arm64.tar.gz
|
||||
[rl-windows-64]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.4/PowerShell-7.1.4-win-x64.msi
|
||||
[rl-windows-86]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.4/PowerShell-7.1.4-win-x86.msi
|
||||
[rl-ubuntu20]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.4/powershell_7.1.4-1.ubuntu.20.04_amd64.deb
|
||||
[rl-ubuntu18]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.4/powershell_7.1.4-1.ubuntu.18.04_amd64.deb
|
||||
[rl-ubuntu16]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.4/powershell_7.1.4-1.ubuntu.16.04_amd64.deb
|
||||
[rl-debian9]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.4/powershell_7.1.4-1.debian.9_amd64.deb
|
||||
[rl-debian10]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.4/powershell_7.1.4-1.debian.10_amd64.deb
|
||||
[rl-debian11]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.4/powershell_7.1.4-1.debian.11_amd64.deb
|
||||
[rl-centos]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.4/powershell-7.1.4-1.rhel.7.x86_64.rpm
|
||||
[rl-centos8]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.4/powershell-7.1.4-1.centos.8.x86_64.rpm
|
||||
[rl-macos]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.4/powershell-7.1.4-osx-x64.pkg
|
||||
[rl-winarm64]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.4/PowerShell-7.1.4-win-arm64.zip
|
||||
[rl-winx86-zip]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.4/PowerShell-7.1.4-win-x86.zip
|
||||
[rl-winx64-zip]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.4/PowerShell-7.1.4-win-x64.zip
|
||||
[rl-macos-tar]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.4/powershell-7.1.4-osx-x64.tar.gz
|
||||
[rl-linux-tar]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.4/powershell-7.1.4-linux-x64.tar.gz
|
||||
[rl-arm32]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.4/powershell-7.1.4-linux-arm32.tar.gz
|
||||
[rl-arm64]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.4/powershell-7.1.4-linux-arm64.tar.gz
|
||||
[rl-snap]: https://snapcraft.io/powershell
|
||||
|
||||
[pv-windows-64]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-rc.1/PowerShell-7.2.0-rc.1-win-x64.msi
|
||||
[pv-windows-86]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-rc.1/PowerShell-7.2.0-rc.1-win-x86.msi
|
||||
[pv-deb]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-rc.1/powershell-preview_7.2.0-rc.1-1.deb_amd64.deb
|
||||
[pv-rpm]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-rc.1/powershell-preview-7.2.0_rc.1-1.rh.x86_64.rpm
|
||||
[pv-macos]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-rc.1/powershell-7.2.0-rc.1-osx-x64.pkg
|
||||
[pv-macos-arm64]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-rc.1/powershell-7.2.0-rc.1-osx-arm64.pkg
|
||||
[pv-winarm64]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-rc.1/PowerShell-7.2.0-rc.1-win-arm64.zip
|
||||
[pv-winx86-zip]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-rc.1/PowerShell-7.2.0-rc.1-win-x86.zip
|
||||
[pv-winx64-zip]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-rc.1/PowerShell-7.2.0-rc.1-win-x64.zip
|
||||
[pv-macos-tar]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-rc.1/powershell-7.2.0-rc.1-osx-x64.tar.gz
|
||||
[pv-macos-tar-arm64]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-rc.1/powershell-7.2.0-rc.1-osx-arm64.tar.gz
|
||||
[pv-linux-tar]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-rc.1/powershell-7.2.0-rc.1-linux-x64.tar.gz
|
||||
[pv-arm32]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-rc.1/powershell-7.2.0-rc.1-linux-arm32.tar.gz
|
||||
[pv-arm64]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-rc.1/powershell-7.2.0-rc.1-linux-arm64.tar.gz
|
||||
[pv-windows-64]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-preview.10/PowerShell-7.2.0-preview.10-win-x64.msi
|
||||
[pv-windows-86]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-preview.10/PowerShell-7.2.0-preview.10-win-x86.msi
|
||||
[pv-deb]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-preview.10/powershell-preview_7.2.0-preview.10-1.deb_amd64.deb
|
||||
[pv-rpm]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-preview.10/powershell-preview-7.2.0_preview.10-1.rh.x86_64.rpm
|
||||
[pv-macos]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-preview.10/powershell-7.2.0-preview.10-osx-x64.pkg
|
||||
[pv-macos-arm64]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-preview.10/powershell-7.2.0-preview.10-osx-arm64.pkg
|
||||
[pv-winarm64]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-preview.10/PowerShell-7.2.0-preview.10-win-arm64.zip
|
||||
[pv-winx86-zip]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-preview.10/PowerShell-7.2.0-preview.10-win-x86.zip
|
||||
[pv-winx64-zip]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-preview.10/PowerShell-7.2.0-preview.10-win-x64.zip
|
||||
[pv-macos-tar]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-preview.10/powershell-7.2.0-preview.10-osx-x64.tar.gz
|
||||
[pv-macos-tar-arm64]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-preview.10/powershell-7.2.0-preview.10-osx-arm64.tar.gz
|
||||
[pv-linux-tar]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-preview.10/powershell-7.2.0-preview.10-linux-x64.tar.gz
|
||||
[pv-arm32]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-preview.10/powershell-7.2.0-preview.10-linux-arm32.tar.gz
|
||||
[pv-arm64]: https://github.com/PowerShell/PowerShell/releases/download/v7.2.0-preview.10/powershell-7.2.0-preview.10-linux-arm64.tar.gz
|
||||
[pv-snap]: https://snapcraft.io/powershell-preview
|
||||
|
||||
[in-windows]: https://docs.microsoft.com/powershell/scripting/install/installing-powershell-core-on-windows
|
||||
|
@ -239,8 +240,9 @@ License: By requesting and using the Container OS Image for Windows containers,
|
|||
|
||||
### Telemetry
|
||||
|
||||
Please visit our [about_Telemetry](https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_telemetry)
|
||||
topic to read details about telemetry gathered by PowerShell.
|
||||
By default, PowerShell collects the OS description and the version of PowerShell (equivalent to `$PSVersionTable.OS` and `$PSVersionTable.GitCommitId`) using [Application Insights](https://azure.microsoft.com/services/application-insights/).
|
||||
To opt-out of sending telemetry, create an environment variable called `POWERSHELL_TELEMETRY_OPTOUT` set to a value of `1` before starting PowerShell from the installed location.
|
||||
The telemetry we collect falls under the [Microsoft Privacy Statement](https://privacy.microsoft.com/privacystatement/).
|
||||
|
||||
## Governance
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,42 +1,46 @@
|
|||
## Used to generate a new TPN
|
||||
## Copy this into the additional attributions fields
|
||||
## Copy everything below here, but do not include this line
|
||||
|
||||
-------------------------------------------------------------------
|
||||
---------------------------------------------
|
||||
File: PSReadLine
|
||||
---------------------------------------------
|
||||
|
||||
-------------------------------------------------------------------
|
||||
https://github.com/lzybkr/PSReadLine
|
||||
|
||||
Additional -
|
||||
Copyright (c) 2013, Jason Shirk
|
||||
|
||||
-------------------------------------------------
|
||||
Microsoft.PowerShell.Archive
|
||||
-------------------------------------------------
|
||||
All rights reserved.
|
||||
|
||||
Copyright (c) 2016 Microsoft Corporation.
|
||||
BSD License
|
||||
|
||||
The MIT License (MIT)
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
----------------------------------------------
|
||||
File: Hashtables from ConvertFrom-json
|
||||
----------------------------------------------
|
||||
|
||||
-------------------------------------------------
|
||||
Microsoft.Management.Infrastructure.Runtime.Unix
|
||||
Microsoft.Management.Infrastructure
|
||||
-------------------------------------------------
|
||||
https://stackoverflow.com/questions/22002748/hashtables-from-convertfrom-json-have-different-type-from-powershells-built-in-h
|
||||
|
||||
Copyright (c) Microsoft Corporation
|
||||
Copyright (c) 2015 Dave Wyatt. All rights reserved.
|
||||
|
||||
All rights reserved.
|
||||
|
||||
|
@ -48,6 +52,33 @@ The above copyright notice and this permission notice shall be included in all c
|
|||
|
||||
THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
-------------------------------------------------
|
||||
PackageManagement
|
||||
-------------------------------------------------
|
||||
|
||||
Copyright (c) Microsoft Corporation
|
||||
All rights reserved.
|
||||
|
||||
MIT License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the Software), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
--------------------------------------------------------
|
||||
• NuGet.Common
|
||||
• NuGet.Configuration
|
||||
|
@ -77,116 +108,3 @@ Unless required by applicable law or agreed to in writing, software distributed
|
|||
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||
CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations under the License.
|
||||
|
||||
-------------------------------------------------
|
||||
PackageManagement
|
||||
-------------------------------------------------
|
||||
|
||||
Copyright (c) Microsoft Corporation
|
||||
All rights reserved.
|
||||
|
||||
MIT License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the Software), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
-------------------------------------------------
|
||||
PowerShellGet
|
||||
-------------------------------------------------
|
||||
|
||||
Copyright (c) Microsoft Corporation
|
||||
|
||||
All rights reserved.
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
---------------------------------------------
|
||||
File: PSReadLine
|
||||
---------------------------------------------
|
||||
|
||||
https://github.com/PowerShell/PSReadLine
|
||||
|
||||
Copyright (c) 2013, Jason Shirk
|
||||
|
||||
All rights reserved.
|
||||
|
||||
BSD License
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
-------------------------------------------------
|
||||
ThreadJob
|
||||
-------------------------------------------------
|
||||
|
||||
Copyright (c) 2018 Paul Higinbotham
|
||||
|
||||
MIT License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
|
|
@ -361,7 +361,7 @@
|
|||
<Text><![CDATA[<a href="https://aka.ms/PowerShell-Microsoft-Update-FAQ">See the Microsoft Update FAQ</a>]]></Text>
|
||||
</Control>
|
||||
<Control Id="PrivacyLink" Type="Hyperlink" X="20" Y="210" Width="290" Height="17">
|
||||
<Text><![CDATA[<a href="https://aka.ms/PowerShell-Microsoft-Update-Privacy-Statement">Read the Microsoft Update Privacy Statement</a>]]></Text>
|
||||
<Text><![CDATA[<a href="https://aka.ms/PowerShell-Microsoft-Update-Privacy-Statement">Read the Microsoft Update Priacy Statement</a>]]></Text>
|
||||
</Control>
|
||||
<!-- divider and bottom buttons -->
|
||||
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" TabSkip="yes"/>
|
||||
|
|
|
@ -1987,12 +1987,6 @@
|
|||
<Component Id="cmp57D197B18F1F4A6AAB704B28CF61B535">
|
||||
<File Id="fil71B3802CB88348AC888B9902212CADA2" KeyPath="yes" Source="$(var.ProductSourcePath)\cs\Microsoft.VisualBasic.Forms.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmp690BAC3241424F59B5D30DE0E846D03E">
|
||||
<File Id="filDBDCB9BFFF9F425B8CF7F7A5F05D42B1" KeyPath="yes" Source="$(var.ProductSourcePath)\cs\System.Private.ServiceModel.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmp5B67AE2852E04C26970FD2016CA76E07">
|
||||
<File Id="fil42D10EBCB41B426BAFBF26BB053A9E84" KeyPath="yes" Source="$(var.ProductSourcePath)\cs\System.Web.Services.Description.resources.dll" />
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="dirEA0127D6607E68B508B9DB9CE315A2CE" Name="de">
|
||||
<Component Id="cmpF2941A91B17EEA22CD6DAB34693D9AC0">
|
||||
|
@ -2052,12 +2046,6 @@
|
|||
<Component Id="cmpB40EE0CC916B4928987F62F5909AE709">
|
||||
<File Id="filA21E2DDEAEAE4E0D94346C5671D9D29F" KeyPath="yes" Source="$(var.ProductSourcePath)\de\System.Windows.Forms.Primitives.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpB43ED7BA30C844E2B5C38F7B747EEFDC">
|
||||
<File Id="filE106C77258F047E8A384E1E75B7EF6B8" KeyPath="yes" Source="$(var.ProductSourcePath)\de\System.Private.ServiceModel.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmp777DF202EF2542F2ACFCCF0481E8D6EE">
|
||||
<File Id="filFCCE95BFDDD540E1AA243049872EF5D0" KeyPath="yes" Source="$(var.ProductSourcePath)\de\System.Web.Services.Description.resources.dll" />
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="dir5B65D7353FBDCD17AB60A674B3FDF93B" Name="es">
|
||||
<Component Id="cmpBEB5F3CF75675537751F0D0B32125BF1">
|
||||
|
@ -2117,12 +2105,6 @@
|
|||
<Component Id="cmpB944176DE7924A268269903DC0B5D510">
|
||||
<File Id="filBA47C41DFB3849228624C99949FB61FC" KeyPath="yes" Source="$(var.ProductSourcePath)\es\System.Windows.Forms.Primitives.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpCC4A42AA70EE4418926986F5A4B8D3FA">
|
||||
<File Id="fil186134FCB6984F1484A8308DF4F2B917" KeyPath="yes" Source="$(var.ProductSourcePath)\es\System.Private.ServiceModel.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpF96C036EAE3B436DB096888697193FAF">
|
||||
<File Id="fil761ECB84FAFA4674AB5712669532C569" KeyPath="yes" Source="$(var.ProductSourcePath)\es\System.Web.Services.Description.resources.dll" />
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="dir23063512FA8C884E1B4F08FDF0A44516" Name="fr">
|
||||
<Component Id="cmp1DEB513A065956086898BCDACC5887B6">
|
||||
|
@ -2182,12 +2164,6 @@
|
|||
<Component Id="cmp7B5948A1A366409F99B871F0E772B945">
|
||||
<File Id="filCCA6A5EE7ED9459C93A8C05B0A93880F" KeyPath="yes" Source="$(var.ProductSourcePath)\fr\System.Windows.Forms.Primitives.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpE7BE9D8F63E04798870E57BA1EABB9A5">
|
||||
<File Id="fil93C038D9EED945F5A984CF3C98EDB72B" KeyPath="yes" Source="$(var.ProductSourcePath)\fr\System.Private.ServiceModel.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmp789F545EA2CB4AC5A2688CF730A5F6B4">
|
||||
<File Id="fil70A83BE26FCF4905B220521A6B75198D" KeyPath="yes" Source="$(var.ProductSourcePath)\fr\System.Web.Services.Description.resources.dll" />
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="dir42B03840AE19D1498CC524F2B6C0389D" Name="it">
|
||||
<Component Id="cmp3EC91B8BF4282E77113321E5D1ED27B2">
|
||||
|
@ -2247,12 +2223,6 @@
|
|||
<Component Id="cmp28349C4ACD6D42D3967853E0A1D7DC4E">
|
||||
<File Id="filDF0828378FCA4CAC8F7DA90DC4F802CC" KeyPath="yes" Source="$(var.ProductSourcePath)\it\Microsoft.VisualBasic.Forms.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmp166B17F72C954B0087DF991E560B399A">
|
||||
<File Id="fil528F0FBF10C246568FCE1F5B10E541D1" KeyPath="yes" Source="$(var.ProductSourcePath)\it\System.Private.ServiceModel.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmp0173AE0CBFA44C269D93361F6C98F99B">
|
||||
<File Id="fil3767F5D3C1264EC596A9F335355521C6" KeyPath="yes" Source="$(var.ProductSourcePath)\it\System.Web.Services.Description.resources.dll" />
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="dir086D21BE309BE4C7081FC60E3524890F" Name="ja">
|
||||
<Component Id="cmp867E4E51FE7BC09AAD5D59FD76716FBC">
|
||||
|
@ -2312,12 +2282,6 @@
|
|||
<Component Id="cmp26335B5D1FE94E87A6B6EBD56A22C2B9">
|
||||
<File Id="filD585A7E89ACF4E4CB9DB8EAD4ACB7092" KeyPath="yes" Source="$(var.ProductSourcePath)\ja\System.Windows.Forms.Primitives.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmp529A2B5343FD466884FAF627E37C648D">
|
||||
<File Id="fil265B2A6A67EF4C6E8C17BDC3AAD8F729" KeyPath="yes" Source="$(var.ProductSourcePath)\ja\System.Private.ServiceModel.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmp5492F78ACB1A4391BBED371FDFC06B9E">
|
||||
<File Id="fil54F7909E28E54B0687222DFD1D95009D" KeyPath="yes" Source="$(var.ProductSourcePath)\ja\System.Web.Services.Description.resources.dll" />
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="dir43D6CAD5F3ED1060009918D06D84FB18" Name="ko">
|
||||
<Component Id="cmpAA026CCA623F0E8FB5BAE9F201C5B89D">
|
||||
|
@ -2377,12 +2341,6 @@
|
|||
<Component Id="cmpF4093A1E8AB94B43AB0F852EB647CE7F">
|
||||
<File Id="filCE28F42A54C24F5DA508904E60E23BBD" KeyPath="yes" Source="$(var.ProductSourcePath)\ko\System.Windows.Forms.Primitives.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmp4EE1633EE4864CE5B9015BF76BD31D14">
|
||||
<File Id="fil688FE14A80204086A48DE1BDC6591EB0" KeyPath="yes" Source="$(var.ProductSourcePath)\ko\System.Private.ServiceModel.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmp3B07F4E4B6034F3284288C18F4638CA7">
|
||||
<File Id="filA52AFEA335CA41D98DB28358CE344EB5" KeyPath="yes" Source="$(var.ProductSourcePath)\ko\System.Web.Services.Description.resources.dll" />
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="dirE8201C74A7184D11233BAD63C6DB37BD" Name="pl">
|
||||
<Component Id="cmpA656A18FE14D3C8EB02C31AE474054E3">
|
||||
|
@ -2442,12 +2400,6 @@
|
|||
<Component Id="cmp705598FEC8EA43D7A9B239787BA5DB09">
|
||||
<File Id="filD8ECB20D015F4477ABD58505B48D02D1" KeyPath="yes" Source="$(var.ProductSourcePath)\pl\System.Windows.Forms.Primitives.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpC8C68DB0DEE44CF49D98532D2C26395E">
|
||||
<File Id="fil1959B05E9F214DCFA6670F1892EE2E7D" KeyPath="yes" Source="$(var.ProductSourcePath)\pl\System.Private.ServiceModel.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpA8A66545C44F428BB552B55EEE353BB0">
|
||||
<File Id="filC0107BEFC31E4F9AB5037537B82D92EF" KeyPath="yes" Source="$(var.ProductSourcePath)\pl\System.Web.Services.Description.resources.dll" />
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="dir47ED939BFA870848E0764E862CD6B4D7" Name="pt-BR">
|
||||
<Component Id="cmp3D20E940BDBF41630242C63011A80CE5">
|
||||
|
@ -2507,12 +2459,6 @@
|
|||
<Component Id="cmpFAA0CCBA17FE4E8FAE5FE4B5F679DF52">
|
||||
<File Id="fil6A42B845F64A4B2490AFFA079E0FB086" KeyPath="yes" Source="$(var.ProductSourcePath)\pt-BR\System.Windows.Forms.Primitives.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpF3C18F07C6A148638CBC858EB02E3A6D">
|
||||
<File Id="filE6672552F1EE45D3AC3021E02DB093CB" KeyPath="yes" Source="$(var.ProductSourcePath)\pt-BR\System.Private.ServiceModel.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmp0C4751F9D5C14419A45F234152D21DA9">
|
||||
<File Id="filF6E3EF23DEEF4D3BB3CA9C9D084FB607" KeyPath="yes" Source="$(var.ProductSourcePath)\pt-BR\System.Web.Services.Description.resources.dll" />
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="dir37B8DFAE26D5F8E9948851F7D19F9E20" Name="ru">
|
||||
<Component Id="cmpFDCD51BD80926ABECCE27D0D66A47C8F">
|
||||
|
@ -2572,12 +2518,6 @@
|
|||
<Component Id="cmpA6FA5B27C61E482D8BBC5F1806D3B223">
|
||||
<File Id="filD4732A3ABFD342B890F75CCB5DE1CAE8" KeyPath="yes" Source="$(var.ProductSourcePath)\ru\System.Windows.Forms.Primitives.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpBD958F4B8F9146499DE2CA6321C65F96">
|
||||
<File Id="fil6A1EB9311FE546F69F28948794DC43BF" KeyPath="yes" Source="$(var.ProductSourcePath)\ru\System.Private.ServiceModel.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmp6ADB50DF9F2D4BCA9E682AA6D1C7C03B">
|
||||
<File Id="fil7FECA5AED84D4C84968358F2C065BBEC" KeyPath="yes" Source="$(var.ProductSourcePath)\ru\System.Web.Services.Description.resources.dll" />
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="dirA7E9CC01273A7FED89FC8D3A368E00CC" Name="tr">
|
||||
<Component Id="cmp286FCD0B19BF06446A7274672A2491CA">
|
||||
|
@ -2637,12 +2577,6 @@
|
|||
<Component Id="cmp10773057C33543FA93222022DEC0847D">
|
||||
<File Id="filD2D3E621E5C54C5EBF044078C9073C2B" KeyPath="yes" Source="$(var.ProductSourcePath)\tr\Microsoft.VisualBasic.Forms.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmp2B8239B905B146A69CD5D55A353AC131">
|
||||
<File Id="fil618AA430D1794A45A1D2BAA2451BECB2" KeyPath="yes" Source="$(var.ProductSourcePath)\tr\System.Private.ServiceModel.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmp9FCFAEB797D9475C873E21B4B5A89E28">
|
||||
<File Id="filC4BDA69F669843EAAD7B6D8714CB1420" KeyPath="yes" Source="$(var.ProductSourcePath)\tr\System.Web.Services.Description.resources.dll" />
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="dir47E993970F74AA9F393D23500827D12C" Name="zh-Hans">
|
||||
<Component Id="cmp34C4A21743AC68583599BF2B139F39F2">
|
||||
|
@ -2702,12 +2636,6 @@
|
|||
<Component Id="cmp33364765C98D4BE09BD26DC1E6B95B86">
|
||||
<File Id="filB57C4C58936D4A7587CEA358B1AF57C2" KeyPath="yes" Source="$(var.ProductSourcePath)\zh-Hans\Microsoft.VisualBasic.Forms.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmp582595AE8291444E837793472E0A259C">
|
||||
<File Id="fil7044506B31FA4130B2E375147032298D" KeyPath="yes" Source="$(var.ProductSourcePath)\zh-Hans\System.Private.ServiceModel.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpF24D3B9F29F84B4D9C47577B7926FC2E">
|
||||
<File Id="fil0AF0C0F933404EABBC94B10ED8740042" KeyPath="yes" Source="$(var.ProductSourcePath)\zh-Hans\System.Web.Services.Description.resources.dll" />
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="dirB1FFB91EED6FD71EA866548CEA3A5298" Name="zh-Hant">
|
||||
<Component Id="cmpBC28FE8B65954B00AECA9C534639596D">
|
||||
|
@ -2767,12 +2695,6 @@
|
|||
<Component Id="cmpB9B22A80E70F414B8778B852E29D6492">
|
||||
<File Id="fil46C0F341CAB64BD390BEA73E1FE0F552" KeyPath="yes" Source="$(var.ProductSourcePath)\zh-Hant\Microsoft.VisualBasic.Forms.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmp91C27D1766E84B8BB0F0C70888F03C2E">
|
||||
<File Id="filC888727CE05A4A9FA0DB66EE0F15097C" KeyPath="yes" Source="$(var.ProductSourcePath)\zh-Hant\System.Private.ServiceModel.resources.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpD55F08F6CF51498E9E8551067BA57040">
|
||||
<File Id="fil46C47F01171F45A898A7AD6A14ACE432" KeyPath="yes" Source="$(var.ProductSourcePath)\zh-Hant\System.Web.Services.Description.resources.dll" />
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Name="Schemas" Id="dir1DB5B24CC3494785974A51F28F128069">
|
||||
<Directory Name="PSMaml" Id="dirAC38B2C7629B42DC836E01F976A10EC9">
|
||||
|
@ -3132,27 +3054,8 @@
|
|||
<Component Id="cmp957498053E01454DA1E21E6D7317DCD6">
|
||||
<File Id="fil2AA6F0D8A51D4BB89F33F2B73AB12391" KeyPath="yes" Source="$(var.ProductSourcePath)\msquic.dll" />
|
||||
</Component>
|
||||
<Directory Name="_manifest" Id="dir81094D6B916B4BC8B1BA0E1DADB93A02">
|
||||
<Directory Name="spdx_2.2" Id="dirA36413FB3A534FDF8657D62728080E9F">
|
||||
<Component Id="cmp408A3AF905EB47ADA35FBC5A6B1465A0">
|
||||
<File Id="fil2146848B6ACB45FCA8E9C8FEE3BECDD8" KeyPath="yes" Source="$(var.ProductSourcePath)\_manifest\spdx_2.2\manifest.spdx.json" />
|
||||
</Component>
|
||||
</Directory>
|
||||
</Directory>
|
||||
<Component Id="cmpA6276F9EAB41411AAAEC496E67A3DBAE">
|
||||
<File Id="filC840646CDE814D33B16DA3A5BBDDC88D" KeyPath="yes" Source="$(var.ProductSourcePath)\psoptions.json" />
|
||||
</Component>
|
||||
<Component Id="cmp3CF3F69A352F4438B8F2F73EBBD12996">
|
||||
<File Id="filB8F63979F96B4007BA9C0CE6BD3531D0" KeyPath="yes" Source="$(var.ProductSourcePath)\Microsoft.Extensions.ObjectPool.dll" />
|
||||
</Component>
|
||||
<Component Id="cmp09155DA101E1424B98832A789E93E835">
|
||||
<File Id="fil7D748565EBF5423A84CFC6D25D21F43C" KeyPath="yes" Source="$(var.ProductSourcePath)\Microsoft.Bcl.AsyncInterfaces.dll" />
|
||||
</Component>
|
||||
<Component Id="cmp22840874A8C84AA796496634FBEBF09C">
|
||||
<File Id="fil2067B616D1FA4B30932A0240ABE06089" KeyPath="yes" Source="$(var.ProductSourcePath)\System.Web.Services.Description.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpFB17CABA17334B2BBA1ED6CBF757B310">
|
||||
<File Id="fil1621E0132D2C49B89068166196075157" KeyPath="yes" Source="$(var.ProductSourcePath)\mscordaccore_$(var.FileArchitecture)_$(var.FileArchitecture)_6.0.21.52210.dll" />
|
||||
<Component Id="cmp2EB55EB6B44F4CF186F0BAFD6B33BCD6">
|
||||
<File Id="filC629C6EFCF314F9BB78C56E0876C08EB" KeyPath="yes" Source="$(var.ProductSourcePath)\mscordaccore_$(var.FileArchitecture)_$(var.FileArchitecture)_6.0.21.45113.dll" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
</Fragment>
|
||||
|
@ -4138,38 +4041,7 @@
|
|||
<ComponentRef Id="cmp708913639F7A46E784CC0FA862A1A2CE" />
|
||||
<ComponentRef Id="cmpA75DEF5617C54DA1937CB37D5824BF79" />
|
||||
<ComponentRef Id="cmp957498053E01454DA1E21E6D7317DCD6" />
|
||||
<ComponentRef Id="cmp408A3AF905EB47ADA35FBC5A6B1465A0" />
|
||||
<ComponentRef Id="cmpA6276F9EAB41411AAAEC496E67A3DBAE" />
|
||||
<ComponentRef Id="cmp91C27D1766E84B8BB0F0C70888F03C2E" />
|
||||
<ComponentRef Id="cmpCC4A42AA70EE4418926986F5A4B8D3FA" />
|
||||
<ComponentRef Id="cmp690BAC3241424F59B5D30DE0E846D03E" />
|
||||
<ComponentRef Id="cmp3CF3F69A352F4438B8F2F73EBBD12996" />
|
||||
<ComponentRef Id="cmp09155DA101E1424B98832A789E93E835" />
|
||||
<ComponentRef Id="cmpC8C68DB0DEE44CF49D98532D2C26395E" />
|
||||
<ComponentRef Id="cmpB43ED7BA30C844E2B5C38F7B747EEFDC" />
|
||||
<ComponentRef Id="cmpF3C18F07C6A148638CBC858EB02E3A6D" />
|
||||
<ComponentRef Id="cmp582595AE8291444E837793472E0A259C" />
|
||||
<ComponentRef Id="cmp2B8239B905B146A69CD5D55A353AC131" />
|
||||
<ComponentRef Id="cmpBD958F4B8F9146499DE2CA6321C65F96" />
|
||||
<ComponentRef Id="cmp166B17F72C954B0087DF991E560B399A" />
|
||||
<ComponentRef Id="cmp529A2B5343FD466884FAF627E37C648D" />
|
||||
<ComponentRef Id="cmp4EE1633EE4864CE5B9015BF76BD31D14" />
|
||||
<ComponentRef Id="cmpE7BE9D8F63E04798870E57BA1EABB9A5" />
|
||||
<ComponentRef Id="cmp5B67AE2852E04C26970FD2016CA76E07" />
|
||||
<ComponentRef Id="cmp6ADB50DF9F2D4BCA9E682AA6D1C7C03B" />
|
||||
<ComponentRef Id="cmpA8A66545C44F428BB552B55EEE353BB0" />
|
||||
<ComponentRef Id="cmp5492F78ACB1A4391BBED371FDFC06B9E" />
|
||||
<ComponentRef Id="cmp22840874A8C84AA796496634FBEBF09C" />
|
||||
<ComponentRef Id="cmp0173AE0CBFA44C269D93361F6C98F99B" />
|
||||
<ComponentRef Id="cmpFB17CABA17334B2BBA1ED6CBF757B310" />
|
||||
<ComponentRef Id="cmpD55F08F6CF51498E9E8551067BA57040" />
|
||||
<ComponentRef Id="cmp777DF202EF2542F2ACFCCF0481E8D6EE" />
|
||||
<ComponentRef Id="cmpF24D3B9F29F84B4D9C47577B7926FC2E" />
|
||||
<ComponentRef Id="cmp3B07F4E4B6034F3284288C18F4638CA7" />
|
||||
<ComponentRef Id="cmp9FCFAEB797D9475C873E21B4B5A89E28" />
|
||||
<ComponentRef Id="cmp0C4751F9D5C14419A45F234152D21DA9" />
|
||||
<ComponentRef Id="cmpF96C036EAE3B436DB096888697193FAF" />
|
||||
<ComponentRef Id="cmp789F545EA2CB4AC5A2688CF730A5F6B4" />
|
||||
<ComponentRef Id="cmp2EB55EB6B44F4CF186F0BAFD6B33BCD6" />
|
||||
</ComponentGroup>
|
||||
</Fragment>
|
||||
</Wix>
|
||||
|
|
411
build.psm1
411
build.psm1
|
@ -6,8 +6,6 @@ param(
|
|||
[parameter(Mandatory = $false)][switch]$SkipLinuxDistroCheck = $false
|
||||
)
|
||||
|
||||
. "$PSScriptRoot\tools\buildCommon\startNativeExecution.ps1"
|
||||
|
||||
Set-StrictMode -Version 3.0
|
||||
|
||||
# On Unix paths is separated by colon
|
||||
|
@ -18,8 +16,6 @@ $script:Options = $null
|
|||
$dotnetMetadata = Get-Content $PSScriptRoot/DotnetRuntimeMetadata.json | ConvertFrom-Json
|
||||
$dotnetCLIChannel = $dotnetMetadata.Sdk.Channel
|
||||
$dotnetCLIQuality = $dotnetMetadata.Sdk.Quality
|
||||
$dotnetAzureFeed = $dotnetMetadata.Sdk.azureFeed
|
||||
$dotnetSDKVersionOveride = $dotnetMetadata.Sdk.sdkImageOverride
|
||||
$dotnetCLIRequiredVersion = $(Get-Content $PSScriptRoot/global.json | ConvertFrom-Json).Sdk.Version
|
||||
|
||||
# Track if tags have been sync'ed
|
||||
|
@ -318,13 +314,14 @@ function Start-PSBuild {
|
|||
[ValidateSet('Debug', 'Release', 'CodeCoverage', '')] # We might need "Checked" as well
|
||||
[string]$Configuration,
|
||||
|
||||
[switch]$CrossGen,
|
||||
|
||||
[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d{1,2})?)?$")]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$ReleaseTag,
|
||||
[switch]$Detailed,
|
||||
[switch]$InteractiveAuth,
|
||||
[switch]$SkipRoslynAnalyzers,
|
||||
[string]$PSOptionsPath
|
||||
[switch]$SkipRoslynAnalyzers
|
||||
)
|
||||
|
||||
if ($ReleaseTag -and $ReleaseTag -notmatch "^v\d+\.\d+\.\d+(-(preview|rc)(\.\d{1,2})?)?$") {
|
||||
|
@ -345,6 +342,10 @@ function Start-PSBuild {
|
|||
}
|
||||
|
||||
if ($ForMinimalSize) {
|
||||
if ($CrossGen) {
|
||||
throw "Build for the minimal size requires the minimal disk footprint, so `CrossGen` is not allowed"
|
||||
}
|
||||
|
||||
if ($Runtime -and "linux-x64", "win7-x64", "osx-x64" -notcontains $Runtime) {
|
||||
throw "Build for the minimal size is enabled only for following runtimes: 'linux-x64', 'win7-x64', 'osx-x64'"
|
||||
}
|
||||
|
@ -390,8 +391,7 @@ function Start-PSBuild {
|
|||
}
|
||||
|
||||
# Verify if the dotnet in-use is the required version
|
||||
$dotnetCLIInstalledVersion = Get-LatestInstalledSDK
|
||||
|
||||
$dotnetCLIInstalledVersion = Start-NativeExecution -sb { dotnet --version } -IgnoreExitcode
|
||||
If ($dotnetCLIInstalledVersion -ne $dotnetCLIRequiredVersion) {
|
||||
Write-Warning @"
|
||||
The currently installed .NET Command Line Tools is not the required version.
|
||||
|
@ -413,6 +413,7 @@ Fix steps:
|
|||
|
||||
# set output options
|
||||
$OptionsArguments = @{
|
||||
CrossGen=$CrossGen
|
||||
Output=$Output
|
||||
Runtime=$Runtime
|
||||
Configuration=$Configuration
|
||||
|
@ -439,10 +440,6 @@ Fix steps:
|
|||
# Add --self-contained due to "warning NETSDK1179: One of '--self-contained' or '--no-self-contained' options are required when '--runtime' is used."
|
||||
if ($Options.Runtime -like 'fxdependent*') {
|
||||
$Arguments += "--no-self-contained"
|
||||
# The UseAppHost = false property avoids creating ".exe" for the fxdependent packages.
|
||||
# The ".exe" is not a cross-platform executable, but specific to the platform that it was built on.
|
||||
# We do not need to ship that.
|
||||
$Arguments += "/property:UseAppHost=false"
|
||||
}
|
||||
else {
|
||||
$Arguments += "--self-contained"
|
||||
|
@ -527,6 +524,12 @@ Fix steps:
|
|||
Write-Log -message "Run dotnet $Arguments from $PWD"
|
||||
Start-NativeExecution { dotnet $Arguments }
|
||||
Write-Log -message "PowerShell output: $($Options.Output)"
|
||||
|
||||
if ($CrossGen) {
|
||||
# fxdependent package cannot be CrossGen'ed
|
||||
Start-CrossGen -PublishPath $publishPath -Runtime $script:Options.Runtime
|
||||
Write-Log -message "pwsh.exe with ngen binaries is available at: $($Options.Output)"
|
||||
}
|
||||
} else {
|
||||
$globalToolSrcFolder = Resolve-Path (Join-Path $Options.Top "../Microsoft.PowerShell.GlobalTool.Shim") | Select-Object -ExpandProperty Path
|
||||
|
||||
|
@ -665,15 +668,6 @@ Fix steps:
|
|||
if ($CI) {
|
||||
Restore-PSPester -Destination (Join-Path $publishPath "Modules")
|
||||
}
|
||||
|
||||
if ($PSOptionsPath) {
|
||||
$resolvedPSOptionsPath = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($PSOptionsPath)
|
||||
$parent = Split-Path -Path $resolvedPSOptionsPath
|
||||
if (!(Test-Path $parent)) {
|
||||
$null = New-Item -ItemType Directory -Path $parent
|
||||
}
|
||||
Save-PSOptions -PSOptionsPath $PSOptionsPath -Options $Options
|
||||
}
|
||||
}
|
||||
|
||||
function Restore-PSPackage
|
||||
|
@ -829,6 +823,8 @@ function New-PSOptions {
|
|||
"win7-x86")]
|
||||
[string]$Runtime,
|
||||
|
||||
[switch]$CrossGen,
|
||||
|
||||
# Accept a path to the output directory
|
||||
# If not null or empty, name of the executable will be appended to
|
||||
# this path, otherwise, to the default path, and then the full path
|
||||
|
@ -934,6 +930,7 @@ function New-PSOptions {
|
|||
-RootInfo ([PSCustomObject]$RootInfo) `
|
||||
-Top $Top `
|
||||
-Runtime $Runtime `
|
||||
-Crossgen $Crossgen.IsPresent `
|
||||
-Configuration $Configuration `
|
||||
-PSModuleRestore $PSModuleRestore.IsPresent `
|
||||
-Framework $Framework `
|
||||
|
@ -1751,13 +1748,6 @@ function Install-Dotnet {
|
|||
[string]$FeedCredential
|
||||
)
|
||||
|
||||
Write-Verbose -Verbose "In install-dotnet"
|
||||
|
||||
# This is needed workaround for RTM pre-release build as the SDK version is always 6.0.100 after installation for every pre-release
|
||||
if ($dotnetCLIRequiredVersion -like '6.0.100-rtm.*') {
|
||||
$dotnetCLIRequiredVersion = '6.0.100'
|
||||
}
|
||||
|
||||
# This allows sudo install to be optional; needed when running in containers / as root
|
||||
# Note that when it is null, Invoke-Expression (but not &) must be used to interpolate properly
|
||||
$sudo = if (!$NoSudo) { "sudo" }
|
||||
|
@ -1785,12 +1775,10 @@ function Install-Dotnet {
|
|||
Write-Warning "This script only removes prior versions of dotnet for Ubuntu and OS X"
|
||||
}
|
||||
|
||||
Write-Verbose -Verbose "Invoking install script"
|
||||
|
||||
# Install new dotnet 1.1.0 preview packages
|
||||
$installScript = "dotnet-install.sh"
|
||||
|
||||
Write-Verbose -Message "downloading install script from $installObtainUrl/$installScript ..." -Verbose
|
||||
Start-NativeExecution {
|
||||
Write-Verbose -Message "downloading install script from $installObtainUrl/$installScript ..." -Verbose
|
||||
& $wget $installObtainUrl/$installScript
|
||||
|
||||
if ((Get-ChildItem "./$installScript").Length -eq 0) {
|
||||
|
@ -1809,16 +1797,9 @@ function Install-Dotnet {
|
|||
}
|
||||
|
||||
if ($AzureFeed) {
|
||||
$bashArgs += @('-AzureFeed', $AzureFeed)
|
||||
$bashArgs += @('-AzureFeed', $AzureFeed, '-FeedCredential', $FeedCredential)
|
||||
}
|
||||
|
||||
if ($FeedCredential) {
|
||||
$bashArgs += @('-FeedCredential', $FeedCredential)
|
||||
}
|
||||
|
||||
$bashArgs | Out-String | Write-Verbose -Verbose
|
||||
|
||||
Start-NativeExecution {
|
||||
bash @bashArgs
|
||||
}
|
||||
} elseif ($environment.IsWindows) {
|
||||
|
@ -1841,44 +1822,35 @@ function Install-Dotnet {
|
|||
}
|
||||
|
||||
if ($AzureFeed) {
|
||||
$installArgs += @{AzureFeed = $AzureFeed}
|
||||
$installArgs += @{
|
||||
AzureFeed = $AzureFeed
|
||||
$FeedCredential = $FeedCredential
|
||||
}
|
||||
}
|
||||
|
||||
if ($FeedCredential) {
|
||||
$installArgs += @{FeedCredential = $FeedCredential}
|
||||
}
|
||||
|
||||
$installArgs | Out-String | Write-Verbose -Verbose
|
||||
|
||||
& ./$installScript @installArgs
|
||||
}
|
||||
else {
|
||||
# dotnet-install.ps1 uses APIs that are not supported in .NET Core, so we run it with Windows PowerShell
|
||||
$fullPSPath = Join-Path -Path $env:windir -ChildPath "System32\WindowsPowerShell\v1.0\powershell.exe"
|
||||
$fullDotnetInstallPath = Join-Path -Path $PWD.Path -ChildPath $installScript
|
||||
|
||||
if ($Version) {
|
||||
$psArgs = @('-NoLogo', '-NoProfile', '-File', $fullDotnetInstallPath, '-Version', $Version, '-Quality', $Quality)
|
||||
}
|
||||
elseif ($Channel) {
|
||||
$psArgs = @('-NoLogo', '-NoProfile', '-File', $fullDotnetInstallPath, '-Channel', $Channel, '-Quality', $Quality)
|
||||
}
|
||||
|
||||
if ($InstallDir) {
|
||||
$psArgs += @('-InstallDir', $InstallDir)
|
||||
}
|
||||
|
||||
if ($AzureFeed) {
|
||||
$psArgs += @('-AzureFeed', $AzureFeed)
|
||||
}
|
||||
|
||||
if ($FeedCredential) {
|
||||
$psArgs += @('-FeedCredential', $FeedCredential)
|
||||
}
|
||||
|
||||
$psArgs | Out-String | Write-Verbose -Verbose
|
||||
|
||||
Start-NativeExecution {
|
||||
|
||||
if ($Version) {
|
||||
$psArgs = @('-NoLogo', '-NoProfile', '-File', $fullDotnetInstallPath, '-Version', $Version, '-Quality', $Quality)
|
||||
}
|
||||
elseif ($Channel) {
|
||||
$psArgs = @('-NoLogo', '-NoProfile', '-File', $fullDotnetInstallPath, '-Channel', $Channel, '-Quality', $Quality)
|
||||
}
|
||||
|
||||
if ($InstallDir) {
|
||||
$psArgs += @('-InstallDir', $InstallDir)
|
||||
}
|
||||
|
||||
if ($AzureFeed) {
|
||||
$psArgs += @('-AzureFeed', $AzureFeed, '-FeedCredential', $FeedCredential)
|
||||
}
|
||||
|
||||
& $fullPSPath @psArgs
|
||||
}
|
||||
}
|
||||
|
@ -1912,10 +1884,6 @@ function Start-PSBootstrap {
|
|||
|
||||
Push-Location $PSScriptRoot/tools
|
||||
|
||||
if ($dotnetSDKVersionOveride) {
|
||||
$Version = $dotnetSDKVersionOveride
|
||||
}
|
||||
|
||||
try {
|
||||
if ($environment.IsLinux -or $environment.IsMacOS) {
|
||||
# This allows sudo install to be optional; needed when running in containers / as root
|
||||
|
@ -2013,9 +1981,6 @@ function Start-PSBootstrap {
|
|||
# Build tools
|
||||
$Deps += "cmake"
|
||||
|
||||
# wget for downloading dotnet
|
||||
$Deps += "wget"
|
||||
|
||||
# .NET Core required runtime libraries
|
||||
$Deps += "openssl"
|
||||
|
||||
|
@ -2023,7 +1988,7 @@ function Start-PSBootstrap {
|
|||
# ignore exitcode, because they may be already installed
|
||||
Start-NativeExecution ([ScriptBlock]::Create("$PackageManager install $Deps")) -IgnoreExitcode
|
||||
} elseif ($environment.IsLinux -and $environment.IsAlpine) {
|
||||
$Deps += 'libunwind', 'libcurl', 'bash', 'cmake', 'clang', 'build-base', 'git', 'curl', 'wget'
|
||||
$Deps += 'libunwind', 'libcurl', 'bash', 'cmake', 'clang', 'build-base', 'git', 'curl'
|
||||
|
||||
Start-NativeExecution {
|
||||
Invoke-Expression "apk add $Deps"
|
||||
|
@ -2048,18 +2013,14 @@ function Start-PSBootstrap {
|
|||
}
|
||||
}
|
||||
|
||||
Write-Verbose -Verbose "Calling Find-Dotnet from Start-PSBootstrap"
|
||||
|
||||
# Try to locate dotnet-SDK before installing it
|
||||
Find-Dotnet
|
||||
|
||||
Write-Verbose -Verbose "Back from calling Find-Dotnet from Start-PSBootstrap"
|
||||
|
||||
# Install dotnet-SDK
|
||||
$dotNetExists = precheck 'dotnet' $null
|
||||
$dotNetVersion = [string]::Empty
|
||||
if($dotNetExists) {
|
||||
$dotNetVersion = Get-LatestInstalledSDK
|
||||
$dotNetVersion = Start-NativeExecution -sb { dotnet --version } -IgnoreExitcode
|
||||
}
|
||||
|
||||
if(!$dotNetExists -or $dotNetVersion -ne $dotnetCLIRequiredVersion -or $Force.IsPresent) {
|
||||
|
@ -2074,12 +2035,6 @@ function Start-PSBootstrap {
|
|||
}
|
||||
|
||||
$DotnetArguments = @{ Channel=$Channel; Version=$Version; NoSudo=$NoSudo }
|
||||
|
||||
if ($dotnetAzureFeed) {
|
||||
$null = $DotnetArguments.Add("AzureFeed", $dotnetAzureFeed)
|
||||
$null = $DotnetArguments.Add("FeedCredential", $null)
|
||||
}
|
||||
|
||||
Install-Dotnet @DotnetArguments
|
||||
}
|
||||
else {
|
||||
|
@ -2101,12 +2056,6 @@ function Start-PSBootstrap {
|
|||
}
|
||||
}
|
||||
|
||||
function Get-LatestInstalledSDK {
|
||||
Start-NativeExecution -sb {
|
||||
dotnet --list-sdks | Select-String -Pattern '\d*.\d*.\d*(-\w*\.\d*)?' | ForEach-Object { [System.Management.Automation.SemanticVersion]::new($_.matches.value) } | Sort-Object -Descending | Select-Object -First 1
|
||||
} -IgnoreExitcode 2> $null
|
||||
}
|
||||
|
||||
function Start-DevPowerShell {
|
||||
[CmdletBinding(DefaultParameterSetName='ConfigurationParamSet')]
|
||||
param(
|
||||
|
@ -2239,29 +2188,17 @@ function Start-ResGen
|
|||
}
|
||||
|
||||
function Find-Dotnet() {
|
||||
Write-Verbose -Verbose "In Find-DotNet"
|
||||
|
||||
$originalPath = $env:PATH
|
||||
$dotnetPath = if ($environment.IsWindows) { "$env:LocalAppData\Microsoft\dotnet" } else { "$env:HOME/.dotnet" }
|
||||
|
||||
$chosenDotNetVersion = if($dotnetSDKVersionOveride) {
|
||||
$dotnetSDKVersionOveride
|
||||
}
|
||||
else {
|
||||
$dotnetCLIRequiredVersion
|
||||
}
|
||||
|
||||
# If there dotnet is already in the PATH, check to see if that version of dotnet can find the required SDK
|
||||
# This is "typically" the globally installed dotnet
|
||||
if (precheck dotnet) {
|
||||
# Must run from within repo to ensure global.json can specify the required SDK version
|
||||
Push-Location $PSScriptRoot
|
||||
$dotnetCLIInstalledVersion = Get-LatestInstalledSDK
|
||||
$dotnetCLIInstalledVersion = Start-NativeExecution -sb { dotnet --version } -IgnoreExitcode 2> $null
|
||||
Pop-Location
|
||||
|
||||
Write-Verbose -Verbose "dotnetCLIInstalledVersion = $dotnetCLIInstalledVersion`nchosenDotNetVersion = $chosenDotNetVersion"
|
||||
|
||||
if ($dotnetCLIInstalledVersion -ne $chosenDotNetVersion) {
|
||||
if ($dotnetCLIInstalledVersion -ne $dotnetCLIRequiredVersion) {
|
||||
Write-Warning "The 'dotnet' in the current path can't find SDK version ${dotnetCLIRequiredVersion}, prepending $dotnetPath to PATH."
|
||||
# Globally installed dotnet doesn't have the required SDK version, prepend the user local dotnet location
|
||||
$env:PATH = $dotnetPath + [IO.Path]::PathSeparator + $env:PATH
|
||||
|
@ -2359,6 +2296,258 @@ function script:precheck([string]$command, [string]$missedMessage) {
|
|||
}
|
||||
}
|
||||
|
||||
# this function wraps native command Execution
|
||||
# for more information, read https://mnaoumov.wordpress.com/2015/01/11/execution-of-external-commands-in-powershell-done-right/
|
||||
function script:Start-NativeExecution
|
||||
{
|
||||
param(
|
||||
[scriptblock]$sb,
|
||||
[switch]$IgnoreExitcode,
|
||||
[switch]$VerboseOutputOnError
|
||||
)
|
||||
$backupEAP = $ErrorActionPreference
|
||||
$ErrorActionPreference = "Continue"
|
||||
try {
|
||||
if($VerboseOutputOnError.IsPresent)
|
||||
{
|
||||
$output = & $sb 2>&1
|
||||
}
|
||||
else
|
||||
{
|
||||
& $sb
|
||||
}
|
||||
|
||||
# note, if $sb doesn't have a native invocation, $LASTEXITCODE will
|
||||
# point to the obsolete value
|
||||
if ($LASTEXITCODE -ne 0 -and -not $IgnoreExitcode) {
|
||||
if($VerboseOutputOnError.IsPresent -and $output)
|
||||
{
|
||||
$output | Out-String | Write-Verbose -Verbose
|
||||
}
|
||||
|
||||
# Get caller location for easier debugging
|
||||
$caller = Get-PSCallStack -ErrorAction SilentlyContinue
|
||||
if($caller)
|
||||
{
|
||||
$callerLocationParts = $caller[1].Location -split ":\s*line\s*"
|
||||
$callerFile = $callerLocationParts[0]
|
||||
$callerLine = $callerLocationParts[1]
|
||||
|
||||
$errorMessage = "Execution of {$sb} by ${callerFile}: line $callerLine failed with exit code $LASTEXITCODE"
|
||||
throw $errorMessage
|
||||
}
|
||||
throw "Execution of {$sb} failed with exit code $LASTEXITCODE"
|
||||
}
|
||||
} finally {
|
||||
$ErrorActionPreference = $backupEAP
|
||||
}
|
||||
}
|
||||
|
||||
function Start-CrossGen {
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter(Mandatory= $true)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[String]
|
||||
$PublishPath,
|
||||
|
||||
[Parameter(Mandatory=$true)]
|
||||
[ValidateSet("alpine-x64",
|
||||
"linux-arm",
|
||||
"linux-arm64",
|
||||
"linux-x64",
|
||||
"osx-arm64",
|
||||
"osx-x64",
|
||||
"win-arm",
|
||||
"win-arm64",
|
||||
"win7-x64",
|
||||
"win7-x86")]
|
||||
[string]
|
||||
$Runtime
|
||||
)
|
||||
|
||||
function New-CrossGenAssembly {
|
||||
param (
|
||||
[Parameter(Mandatory = $true)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[String[]]
|
||||
$AssemblyPath,
|
||||
|
||||
[Parameter(Mandatory = $true)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[String]
|
||||
$CrossgenPath,
|
||||
|
||||
[Parameter(Mandatory = $true)]
|
||||
[ValidateSet("alpine-x64",
|
||||
"linux-arm",
|
||||
"linux-arm64",
|
||||
"linux-x64",
|
||||
"osx-arm64",
|
||||
"osx-x64",
|
||||
"win-arm",
|
||||
"win-arm64",
|
||||
"win7-x64",
|
||||
"win7-x86")]
|
||||
[string]
|
||||
$Runtime
|
||||
)
|
||||
|
||||
$platformAssembliesPath = Split-Path $AssemblyPath[0] -Parent
|
||||
|
||||
$targetOS, $targetArch = $Runtime -split '-'
|
||||
|
||||
# Special cases where OS / Arch does not conform with runtime names
|
||||
switch ($Runtime) {
|
||||
'alpine-x64' {
|
||||
$targetOS = 'linux'
|
||||
$targetArch = 'x64'
|
||||
}
|
||||
'win-arm' {
|
||||
$targetOS = 'windows'
|
||||
$targetArch = 'arm'
|
||||
}
|
||||
'win-arm64' {
|
||||
$targetOS = 'windows'
|
||||
$targetArch = 'arm64'
|
||||
}
|
||||
'win7-x64' {
|
||||
$targetOS = 'windows'
|
||||
$targetArch = 'x64'
|
||||
}
|
||||
'win7-x86' {
|
||||
$targetOS = 'windows'
|
||||
$targetArch = 'x86'
|
||||
}
|
||||
}
|
||||
|
||||
$generatePdb = $targetos -eq 'windows'
|
||||
|
||||
# The path to folder must end with directory separator
|
||||
$dirSep = [System.IO.Path]::DirectorySeparatorChar
|
||||
$platformAssembliesPath = if (-not $platformAssembliesPath.EndsWith($dirSep)) { $platformAssembliesPath + $dirSep }
|
||||
|
||||
Start-NativeExecution {
|
||||
$crossgen2Params = @(
|
||||
"-r"
|
||||
$platformAssembliesPath
|
||||
"--out-near-input"
|
||||
"--single-file-compilation"
|
||||
"-O"
|
||||
"--targetos"
|
||||
$targetOS
|
||||
"--targetarch"
|
||||
$targetArch
|
||||
)
|
||||
|
||||
if ($generatePdb) {
|
||||
$crossgen2Params += "--pdb"
|
||||
}
|
||||
|
||||
$crossgen2Params += $AssemblyPath
|
||||
|
||||
& $CrossgenPath $crossgen2Params
|
||||
}
|
||||
}
|
||||
|
||||
if (-not (Test-Path $PublishPath)) {
|
||||
throw "Path '$PublishPath' does not exist."
|
||||
}
|
||||
|
||||
# Get the path to crossgen
|
||||
$crossGenExe = if ($environment.IsWindows) { "crossgen2.exe" } else { "crossgen2" }
|
||||
|
||||
# The crossgen tool is only published for these particular runtimes
|
||||
$crossGenRuntime = if ($environment.IsWindows) {
|
||||
# for windows the tool architecture is the host machine architecture, so it is always x64.
|
||||
# we can cross compile for x86, arm and arm64
|
||||
"win-x64"
|
||||
} else {
|
||||
$Runtime
|
||||
}
|
||||
|
||||
if (-not $crossGenRuntime) {
|
||||
throw "crossgen is not available for this platform"
|
||||
}
|
||||
|
||||
$dotnetRuntimeVersion = $script:Options.Framework -replace 'net'
|
||||
|
||||
# Get the CrossGen.exe for the correct runtime with the latest version
|
||||
$crossGenPath = Get-ChildItem $script:Environment.nugetPackagesRoot $crossGenExe -Recurse | `
|
||||
Where-Object { $_.FullName -match $crossGenRuntime } | `
|
||||
Where-Object { $_.FullName -match $dotnetRuntimeVersion } | `
|
||||
Where-Object { (Split-Path $_.FullName -Parent).EndsWith('tools') } | `
|
||||
Sort-Object -Property FullName -Descending | `
|
||||
Select-Object -First 1 | `
|
||||
ForEach-Object { $_.FullName }
|
||||
if (-not $crossGenPath) {
|
||||
throw "Unable to find latest version of crossgen2.exe. 'Please run Start-PSBuild -Clean' first, and then try again."
|
||||
}
|
||||
Write-Verbose "Matched CrossGen2.exe: $crossGenPath" -Verbose
|
||||
|
||||
# Common assemblies used by Add-Type or assemblies with high JIT and no pdbs to crossgen
|
||||
$commonAssembliesForAddType = @(
|
||||
"Microsoft.CodeAnalysis.CSharp.dll"
|
||||
"Microsoft.CodeAnalysis.dll"
|
||||
"System.Linq.Expressions.dll"
|
||||
"Microsoft.CSharp.dll"
|
||||
"System.Runtime.Extensions.dll"
|
||||
"System.Linq.dll"
|
||||
"System.Collections.Concurrent.dll"
|
||||
"System.Collections.dll"
|
||||
"Newtonsoft.Json.dll"
|
||||
"System.IO.FileSystem.dll"
|
||||
"System.Diagnostics.Process.dll"
|
||||
"System.Threading.Tasks.Parallel.dll"
|
||||
"System.Security.AccessControl.dll"
|
||||
"System.Text.Encoding.CodePages.dll"
|
||||
"System.Private.Uri.dll"
|
||||
"System.Threading.dll"
|
||||
"System.Security.Principal.Windows.dll"
|
||||
"System.Console.dll"
|
||||
"Microsoft.Win32.Registry.dll"
|
||||
"System.IO.Pipes.dll"
|
||||
"System.Diagnostics.FileVersionInfo.dll"
|
||||
"System.Collections.Specialized.dll"
|
||||
"Microsoft.ApplicationInsights.dll"
|
||||
)
|
||||
|
||||
$fullAssemblyList = $commonAssembliesForAddType
|
||||
|
||||
$assemblyFullPaths = @()
|
||||
$assemblyFullPaths += foreach ($assemblyName in $fullAssemblyList) {
|
||||
Join-Path $PublishPath $assemblyName
|
||||
}
|
||||
|
||||
New-CrossGenAssembly -CrossgenPath $crossGenPath -AssemblyPath $assemblyFullPaths -Runtime $Runtime
|
||||
|
||||
#
|
||||
# With the latest dotnet.exe, the default load context is only able to load TPAs, and TPA
|
||||
# only contains IL assembly names. In order to make the default load context able to load
|
||||
# the NI PS assemblies, we need to replace the IL PS assemblies with the corresponding NI
|
||||
# PS assemblies, but with the same IL assembly names.
|
||||
#
|
||||
Write-Verbose "PowerShell Ngen assemblies have been generated. Deploying ..." -Verbose
|
||||
foreach ($assemblyName in $fullAssemblyList) {
|
||||
|
||||
# Remove the IL assembly and its symbols.
|
||||
$assemblyPath = Join-Path $PublishPath $assemblyName
|
||||
$symbolsPath = [System.IO.Path]::ChangeExtension($assemblyPath, ".pdb")
|
||||
|
||||
Remove-Item $assemblyPath -Force -ErrorAction Stop
|
||||
|
||||
# Rename the corresponding ni.dll assembly to be the same as the IL assembly
|
||||
$niAssemblyPath = [System.IO.Path]::ChangeExtension($assemblyPath, "ni.dll")
|
||||
Rename-Item $niAssemblyPath $assemblyPath -Force -ErrorAction Stop
|
||||
|
||||
# No symbols are available for Microsoft.CodeAnalysis.CSharp.dll, Microsoft.CodeAnalysis.dll,
|
||||
# Microsoft.CodeAnalysis.VisualBasic.dll, and Microsoft.CSharp.dll.
|
||||
if ($commonAssembliesForAddType -notcontains $assemblyName) {
|
||||
Remove-Item $symbolsPath -Force -ErrorAction Stop
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Cleans the PowerShell repo - everything but the root folder
|
||||
function Clear-PSRepo
|
||||
{
|
||||
|
@ -2881,6 +3070,7 @@ function Restore-PSOptions {
|
|||
-RootInfo $options.RootInfo `
|
||||
-Top $options.Top `
|
||||
-Runtime $options.Runtime `
|
||||
-Crossgen $options.Crossgen `
|
||||
-Configuration $options.Configuration `
|
||||
-PSModuleRestore $options.PSModuleRestore `
|
||||
-Framework $options.Framework `
|
||||
|
@ -2904,6 +3094,10 @@ function New-PSOptionsObject
|
|||
[String]
|
||||
$Runtime,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[Bool]
|
||||
$CrossGen,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[String]
|
||||
$Configuration,
|
||||
|
@ -2932,6 +3126,7 @@ function New-PSOptionsObject
|
|||
Framework = $Framework
|
||||
Runtime = $Runtime
|
||||
Output = $Output
|
||||
CrossGen = $CrossGen
|
||||
PSModuleRestore = $PSModuleRestore
|
||||
ForMinimalSize = $ForMinimalSize
|
||||
}
|
||||
|
|
1424
cgmanifest.json
1424
cgmanifest.json
File diff suppressed because it is too large
Load diff
25
docker/tests/README.md
Normal file
25
docker/tests/README.md
Normal file
|
@ -0,0 +1,25 @@
|
|||
# Docker tests
|
||||
|
||||
## Windows and Linux containers
|
||||
|
||||
The tests must be run separately on the Windows and Linux docker daemons. You can use the Linux docker daemon on Windows, but that will only test Linux containers not Windows Containers.
|
||||
|
||||
## To building and basic behavior of the containers
|
||||
|
||||
```PowerShell
|
||||
Invoke-Pester
|
||||
```
|
||||
|
||||
Note: be sure to do this using both the Windows and Linux docker daemon.
|
||||
|
||||
## To test the productions containers
|
||||
|
||||
```PowerShell
|
||||
Invoke-Pester -Tag Behavior
|
||||
```
|
||||
|
||||
## To test only building the containers
|
||||
|
||||
```PowerShell
|
||||
Invoke-Pester -Tag Build
|
||||
```
|
23
docker/tests/Templates/centos7/Dockerfile
Normal file
23
docker/tests/Templates/centos7/Dockerfile
Normal file
|
@ -0,0 +1,23 @@
|
|||
FROM centos:7
|
||||
|
||||
ARG PACKAGENAME
|
||||
ARG PACKAGELOCATION
|
||||
ARG PREVIEWSUFFIX=
|
||||
ARG TESTLIST=/PowerShell/test/powershell/Modules/PackageManagement/PackageManagement.Tests.ps1,/PowerShell/test/powershell/engine/Module
|
||||
ARG TESTDOWNLOADCOMMAND="git clone --recursive https://github.com/PowerShell/PowerShell.git"
|
||||
|
||||
# Install dependencies
|
||||
RUN yum install -y \
|
||||
curl \
|
||||
glibc-locale-source \
|
||||
git
|
||||
|
||||
# Setup the locale
|
||||
ENV LANG en_US.UTF-8
|
||||
ENV LC_ALL $LANG
|
||||
RUN localedef --charmap=UTF-8 --inputfile=en_US $LANG
|
||||
|
||||
RUN curl -L -o $PACKAGENAME $PACKAGELOCATION/$PACKAGENAME \
|
||||
&& yum install -y $PACKAGENAME
|
||||
RUN $TESTDOWNLOADCOMMAND
|
||||
RUN pwsh$PREVIEWSUFFIX -c "Import-Module /PowerShell/build.psm1;\$dir='/usr/local/share/powershell/Modules';\$null=New-Item -Type Directory -Path \$dir -ErrorAction SilentlyContinue;Restore-PSPester -Destination \$dir;exit (Invoke-Pester $TESTLIST -PassThru).FailedCount"
|
29
docker/tests/Templates/debian.9/Dockerfile
Normal file
29
docker/tests/Templates/debian.9/Dockerfile
Normal file
|
@ -0,0 +1,29 @@
|
|||
FROM debian:stretch
|
||||
|
||||
ARG PACKAGENAME
|
||||
ARG PACKAGELOCATION
|
||||
ARG PREVIEWSUFFIX=
|
||||
ARG TESTLIST=/PowerShell/test/powershell/Modules/PackageManagement/PackageManagement.Tests.ps1,/PowerShell/test/powershell/engine/Module
|
||||
ARG TESTDOWNLOADCOMMAND="git clone --recursive https://github.com/PowerShell/PowerShell.git"
|
||||
|
||||
# Install dependencies
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
apt-utils \
|
||||
ca-certificates \
|
||||
curl \
|
||||
apt-transport-https \
|
||||
locales \
|
||||
git \
|
||||
&& apt-get clean
|
||||
|
||||
# Setup the locale
|
||||
ENV LANG en_US.UTF-8
|
||||
ENV LC_ALL $LANG
|
||||
RUN locale-gen $LANG && update-locale
|
||||
|
||||
RUN curl -L -o $PACKAGENAME $PACKAGELOCATION/$PACKAGENAME
|
||||
RUN dpkg -i $PACKAGENAME || :
|
||||
RUN apt-get install -y -f --no-install-recommends
|
||||
RUN $TESTDOWNLOADCOMMAND
|
||||
RUN pwsh$PREVIEWSUFFIX -c "Import-Module /PowerShell/build.psm1;\$dir='/usr/local/share/powershell/Modules';\$null=New-Item -Type Directory -Path \$dir -ErrorAction SilentlyContinue;Restore-PSPester -Destination \$dir;exit (Invoke-Pester $TESTLIST -PassThru).FailedCount"
|
26
docker/tests/Templates/fedora28/Dockerfile
Normal file
26
docker/tests/Templates/fedora28/Dockerfile
Normal file
|
@ -0,0 +1,26 @@
|
|||
FROM fedora:28
|
||||
|
||||
ARG PACKAGENAME
|
||||
ARG PACKAGELOCATION
|
||||
ARG PREVIEWSUFFIX=
|
||||
ARG TESTLIST=/PowerShell/test/powershell/Modules/PackageManagement/PackageManagement.Tests.ps1,/PowerShell/test/powershell/engine/Module
|
||||
ARG TESTDOWNLOADCOMMAND="git clone --recursive https://github.com/PowerShell/PowerShell.git"
|
||||
|
||||
# Install dependencies
|
||||
RUN dnf install -y \
|
||||
curl \
|
||||
glibc-locale-source \
|
||||
git \
|
||||
compat-openssl10 \
|
||||
&& dnf upgrade-minimal -y --security \
|
||||
&& dnf clean all
|
||||
|
||||
# Setup the locale
|
||||
ENV LANG en_US.UTF-8
|
||||
ENV LC_ALL $LANG
|
||||
RUN localedef --charmap=UTF-8 --inputfile=en_US $LANG
|
||||
|
||||
RUN curl -L -o $PACKAGENAME $PACKAGELOCATION/$PACKAGENAME
|
||||
RUN dnf install -y $PACKAGENAME
|
||||
RUN $TESTDOWNLOADCOMMAND
|
||||
RUN pwsh$PREVIEWSUFFIX -c "Import-Module /PowerShell/build.psm1;\$dir='/usr/local/share/powershell/Modules';\$null=New-Item -Type Directory -Path \$dir -ErrorAction SilentlyContinue;Restore-PSPester -Destination \$dir;exit (Invoke-Pester $TESTLIST -PassThru).FailedCount"
|
31
docker/tests/Templates/fxdependent-centos7/Dockerfile
Normal file
31
docker/tests/Templates/fxdependent-centos7/Dockerfile
Normal file
|
@ -0,0 +1,31 @@
|
|||
FROM centos:7
|
||||
|
||||
ARG PACKAGENAME
|
||||
ARG PACKAGELOCATION
|
||||
ARG PREVIEWSUFFIX=
|
||||
ARG TESTLIST=/PowerShell/test/powershell/Modules/PackageManagement/PackageManagement.Tests.ps1,/PowerShell/test/powershell/engine/Module
|
||||
ARG TESTDOWNLOADCOMMAND="git clone --recursive https://github.com/PowerShell/PowerShell.git"
|
||||
|
||||
# Install dependencies
|
||||
RUN yum install -y \
|
||||
glibc-locale-source \
|
||||
git
|
||||
|
||||
# Install dotnet-runtime
|
||||
RUN rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
|
||||
RUN yum install -y \
|
||||
dotnet-runtime-2.1
|
||||
|
||||
# Setup the locale
|
||||
ENV LANG en_US.UTF-8
|
||||
ENV LC_ALL $LANG
|
||||
RUN localedef --charmap=UTF-8 --inputfile=en_US $LANG
|
||||
|
||||
# Install PowerShell package
|
||||
ADD $PACKAGELOCATION/$PACKAGENAME .
|
||||
RUN mkdir -p /opt/microsoft/powershell
|
||||
RUN tar zxf $PACKAGENAME -C /opt/microsoft/powershell
|
||||
|
||||
# Download and run tests
|
||||
RUN $TESTDOWNLOADCOMMAND
|
||||
RUN dotnet /opt/microsoft/powershell/pwsh.dll -c "Import-Module /PowerShell/build.psm1;\$dir='/usr/local/share/powershell/Modules';\$null=New-Item -Type Directory -Path \$dir -ErrorAction SilentlyContinue;Restore-PSPester -Destination \$dir;exit (Invoke-Pester $TESTLIST -PassThru).FailedCount"
|
31
docker/tests/Templates/fxdependent-debian.9/Dockerfile
Normal file
31
docker/tests/Templates/fxdependent-debian.9/Dockerfile
Normal file
|
@ -0,0 +1,31 @@
|
|||
FROM microsoft/dotnet:2.1.7-runtime-stretch-slim
|
||||
|
||||
ARG PACKAGENAME
|
||||
ARG PACKAGELOCATION
|
||||
ARG PREVIEWSUFFIX=
|
||||
ARG TESTLIST=/PowerShell/test/powershell/Modules/PackageManagement/PackageManagement.Tests.ps1,/PowerShell/test/powershell/engine/Module
|
||||
ARG TESTDOWNLOADCOMMAND="git clone --recursive https://github.com/PowerShell/PowerShell.git"
|
||||
|
||||
# Install dependencies
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
apt-utils \
|
||||
ca-certificates \
|
||||
apt-transport-https \
|
||||
locales \
|
||||
git \
|
||||
&& apt-get clean
|
||||
|
||||
# Setup the locale
|
||||
ENV LANG en_US.UTF-8
|
||||
ENV LC_ALL $LANG
|
||||
RUN locale-gen $LANG && update-locale
|
||||
|
||||
# Install PowerShell package
|
||||
ADD $PACKAGELOCATION/$PACKAGENAME .
|
||||
RUN mkdir -p /opt/microsoft/powershell
|
||||
RUN tar zxf $PACKAGENAME -C /opt/microsoft/powershell
|
||||
|
||||
# Download and run tests
|
||||
RUN $TESTDOWNLOADCOMMAND
|
||||
RUN dotnet /opt/microsoft/powershell/pwsh.dll -c "Import-Module /PowerShell/build.psm1;\$dir='/usr/local/share/powershell/Modules';\$null=New-Item -Type Directory -Path \$dir -ErrorAction SilentlyContinue;Restore-PSPester -Destination \$dir;exit (Invoke-Pester $TESTLIST -PassThru).FailedCount"
|
|
@ -0,0 +1,31 @@
|
|||
FROM microsoft/dotnet:3.0.100-preview-sdk
|
||||
|
||||
ARG PACKAGENAME
|
||||
ARG PACKAGELOCATION
|
||||
ARG PREVIEWSUFFIX=
|
||||
ARG TESTLIST=/PowerShell/test/powershell/Modules/PackageManagement/PackageManagement.Tests.ps1,/PowerShell/test/powershell/engine/Module
|
||||
ARG TESTDOWNLOADCOMMAND="git clone --recursive https://github.com/PowerShell/PowerShell.git"
|
||||
|
||||
# Install dependencies
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
apt-utils \
|
||||
ca-certificates \
|
||||
apt-transport-https \
|
||||
locales \
|
||||
git \
|
||||
&& apt-get clean
|
||||
|
||||
# Setup the locale
|
||||
ENV LANG en_US.UTF-8
|
||||
ENV LC_ALL $LANG
|
||||
RUN locale-gen $LANG && update-locale
|
||||
|
||||
# Install PowerShell package
|
||||
ADD $PACKAGELOCATION/$PACKAGENAME .
|
||||
RUN mkdir -p /opt/microsoft/powershell \
|
||||
&& tar zxf $PACKAGENAME -C /opt/microsoft/powershell
|
||||
|
||||
# Download and run tests
|
||||
RUN $TESTDOWNLOADCOMMAND
|
||||
RUN dotnet /opt/microsoft/powershell/pwsh.dll -c "Import-Module /PowerShell/build.psm1;\$dir='/usr/local/share/powershell/Modules';\$null=New-Item -Type Directory -Path \$dir -ErrorAction SilentlyContinue;Restore-PSPester -Destination \$dir;exit (Invoke-Pester $TESTLIST -PassThru).FailedCount"
|
38
docker/tests/Templates/fxdependent-fedora28/Dockerfile
Normal file
38
docker/tests/Templates/fxdependent-fedora28/Dockerfile
Normal file
|
@ -0,0 +1,38 @@
|
|||
FROM fedora:28
|
||||
|
||||
ARG PACKAGENAME
|
||||
ARG PACKAGELOCATION
|
||||
ARG PREVIEWSUFFIX=
|
||||
ARG TESTLIST=/PowerShell/test/powershell/Modules/PackageManagement/PackageManagement.Tests.ps1,/PowerShell/test/powershell/engine/Module
|
||||
ARG TESTDOWNLOADCOMMAND="git clone --recursive https://github.com/PowerShell/PowerShell.git"
|
||||
|
||||
# Install dependencies
|
||||
RUN dnf install -y \
|
||||
glibc-locale-source \
|
||||
git \
|
||||
compat-openssl10 \
|
||||
&& dnf upgrade-minimal -y --security \
|
||||
&& dnf clean all
|
||||
|
||||
# Install dotnet-runtime
|
||||
RUN rpm --import https://packages.microsoft.com/keys/microsoft.asc
|
||||
ADD https://packages.microsoft.com/config/fedora/27/prod.repo .
|
||||
RUN mv prod.repo /etc/yum.repos.d/microsoft-prod.repo
|
||||
RUN dnf install -y \
|
||||
dotnet-runtime-2.1 \
|
||||
&& dnf upgrade-minimal -y --security \
|
||||
&& dnf clean all
|
||||
|
||||
# Setup the locale
|
||||
ENV LANG en_US.UTF-8
|
||||
ENV LC_ALL $LANG
|
||||
RUN localedef --charmap=UTF-8 --inputfile=en_US $LANG
|
||||
|
||||
# Install PowerShell package
|
||||
ADD $PACKAGELOCATION/$PACKAGENAME .
|
||||
RUN mkdir -p /opt/microsoft/powershell \
|
||||
&& tar zxf $PACKAGENAME -C /opt/microsoft/powershell
|
||||
|
||||
# Download and run tests
|
||||
RUN $TESTDOWNLOADCOMMAND
|
||||
RUN dotnet /opt/microsoft/powershell/pwsh.dll -c "Import-Module /PowerShell/build.psm1;\$dir='/usr/local/share/powershell/Modules';\$null=New-Item -Type Directory -Path \$dir -ErrorAction SilentlyContinue;Restore-PSPester -Destination \$dir;exit (Invoke-Pester $TESTLIST -PassThru).FailedCount"
|
41
docker/tests/Templates/fxdependent-opensuse42.3/Dockerfile
Normal file
41
docker/tests/Templates/fxdependent-opensuse42.3/Dockerfile
Normal file
|
@ -0,0 +1,41 @@
|
|||
FROM opensuse:42.3
|
||||
|
||||
ARG PACKAGENAME
|
||||
ARG PACKAGELOCATION
|
||||
ARG PREVIEWSUFFIX=
|
||||
ARG TESTLIST=/PowerShell/test/powershell/Modules/PackageManagement/PackageManagement.Tests.ps1,/PowerShell/test/powershell/engine/Module
|
||||
ARG TESTDOWNLOADCOMMAND="git clone --recursive https://github.com/PowerShell/PowerShell.git"
|
||||
|
||||
# Install dependencies
|
||||
RUN zypper --non-interactive update --skip-interactive \
|
||||
&& zypper --non-interactive install \
|
||||
glibc-locale \
|
||||
glibc-i18ndata \
|
||||
tar \
|
||||
libunwind \
|
||||
libicu \
|
||||
openssl \
|
||||
git
|
||||
|
||||
# Install dotnet-runtime
|
||||
ADD https://packages.microsoft.com/keys/microsoft.asc .
|
||||
RUN rpmkeys --import microsoft.asc
|
||||
ADD https://packages.microsoft.com/config/opensuse/42.2/prod.repo .
|
||||
RUN mv prod.repo /etc/zypp/repos.d/microsoft-prod.repo
|
||||
RUN zypper --non-interactive update --skip-interactive \
|
||||
&& zypper --non-interactive install \
|
||||
dotnet-runtime-2.1
|
||||
|
||||
# Setup the locale
|
||||
ENV LANG en_US.UTF-8
|
||||
ENV LC_ALL $LANG
|
||||
RUN localedef --charmap=UTF-8 --inputfile=en_US $LANG
|
||||
|
||||
# Install PowerShell package
|
||||
ADD $PACKAGELOCATION/$PACKAGENAME .
|
||||
RUN mkdir -p /opt/microsoft/powershell
|
||||
RUN tar zxf $PACKAGENAME -C /opt/microsoft/powershell
|
||||
|
||||
# Download and run tests
|
||||
RUN $TESTDOWNLOADCOMMAND
|
||||
RUN dotnet /opt/microsoft/powershell/pwsh.dll -c "Import-Module /PowerShell/build.psm1;\$dir='/usr/local/share/powershell/Modules';\$null=New-Item -Type Directory -Path \$dir -ErrorAction SilentlyContinue;Restore-PSPester -Destination \$dir;exit (Invoke-Pester $TESTLIST -PassThru).FailedCount"
|
39
docker/tests/Templates/fxdependent-ubuntu16.04/Dockerfile
Normal file
39
docker/tests/Templates/fxdependent-ubuntu16.04/Dockerfile
Normal file
|
@ -0,0 +1,39 @@
|
|||
FROM ubuntu:xenial
|
||||
|
||||
ARG PACKAGENAME
|
||||
ARG PACKAGELOCATION
|
||||
ARG PREVIEWSUFFIX=
|
||||
ARG TESTLIST=/PowerShell/test/powershell/Modules/PackageManagement/PackageManagement.Tests.ps1,/PowerShell/test/powershell/engine/Module
|
||||
ARG TESTDOWNLOADCOMMAND="git clone --recursive https://github.com/PowerShell/PowerShell.git"
|
||||
|
||||
# Install dependencies
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
apt-utils \
|
||||
ca-certificates \
|
||||
apt-transport-https \
|
||||
locales \
|
||||
git \
|
||||
&& apt-get clean
|
||||
|
||||
# Install dotnet-runtime
|
||||
ADD https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb .
|
||||
RUN dpkg -i packages-microsoft-prod.deb
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
dotnet-runtime-2.1 \
|
||||
&& apt-get clean
|
||||
|
||||
# Setup the locale
|
||||
ENV LANG en_US.UTF-8
|
||||
ENV LC_ALL $LANG
|
||||
RUN locale-gen $LANG && update-locale
|
||||
|
||||
# Install PowerShell package
|
||||
ADD $PACKAGELOCATION/$PACKAGENAME .
|
||||
RUN mkdir -p /opt/microsoft/powershell \
|
||||
&& tar zxf $PACKAGENAME -C /opt/microsoft/powershell
|
||||
|
||||
# Download and run tests
|
||||
RUN $TESTDOWNLOADCOMMAND
|
||||
RUN dotnet /opt/microsoft/powershell/pwsh.dll -c "Import-Module /PowerShell/build.psm1;\$dir='/usr/local/share/powershell/Modules';\$null=New-Item -Type Directory -Path \$dir -ErrorAction SilentlyContinue;Restore-PSPester -Destination \$dir;exit (Invoke-Pester $TESTLIST -PassThru).FailedCount"
|
31
docker/tests/Templates/fxdependent-ubuntu18.04/Dockerfile
Normal file
31
docker/tests/Templates/fxdependent-ubuntu18.04/Dockerfile
Normal file
|
@ -0,0 +1,31 @@
|
|||
FROM microsoft/dotnet:2.1.7-runtime-bionic
|
||||
|
||||
ARG PACKAGENAME
|
||||
ARG PACKAGELOCATION
|
||||
ARG PREVIEWSUFFIX=
|
||||
ARG TESTLIST=/PowerShell/test/powershell/Modules/PackageManagement/PackageManagement.Tests.ps1,/PowerShell/test/powershell/engine/Module
|
||||
ARG TESTDOWNLOADCOMMAND="git clone --recursive https://github.com/PowerShell/PowerShell.git"
|
||||
|
||||
# Install dependencies
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
apt-utils \
|
||||
ca-certificates \
|
||||
apt-transport-https \
|
||||
locales \
|
||||
git \
|
||||
&& apt-get clean
|
||||
|
||||
# Setup the locale
|
||||
ENV LANG en_US.UTF-8
|
||||
ENV LC_ALL $LANG
|
||||
RUN locale-gen $LANG && update-locale
|
||||
|
||||
# Install PowerShell package
|
||||
ADD $PACKAGELOCATION/$PACKAGENAME .
|
||||
RUN mkdir -p /opt/microsoft/powershell \
|
||||
&& tar zxf $PACKAGENAME -C /opt/microsoft/powershell
|
||||
|
||||
# Download and run tests
|
||||
RUN $TESTDOWNLOADCOMMAND
|
||||
RUN dotnet /opt/microsoft/powershell/pwsh.dll -c "Import-Module /PowerShell/build.psm1;\$dir='/usr/local/share/powershell/Modules';\$null=New-Item -Type Directory -Path \$dir -ErrorAction SilentlyContinue;Restore-PSPester -Destination \$dir;exit (Invoke-Pester $TESTLIST -PassThru).FailedCount"
|
39
docker/tests/Templates/opensuse42.3/Dockerfile
Normal file
39
docker/tests/Templates/opensuse42.3/Dockerfile
Normal file
|
@ -0,0 +1,39 @@
|
|||
FROM opensuse:42.3
|
||||
|
||||
ARG PACKAGENAME
|
||||
ARG PACKAGELOCATION
|
||||
ARG PREVIEWSUFFIX=
|
||||
ARG TESTLIST=/PowerShell/test/powershell/Modules/PackageManagement/PackageManagement.Tests.ps1,/PowerShell/test/powershell/engine/Module
|
||||
ARG TESTDOWNLOADCOMMAND="git clone --recursive https://github.com/PowerShell/PowerShell.git"
|
||||
|
||||
ARG POWERSHELL_LINKFILE=/usr/bin/pwsh
|
||||
|
||||
# Install dependencies
|
||||
RUN zypper --non-interactive update --skip-interactive \
|
||||
&& zypper --non-interactive install \
|
||||
glibc-locale \
|
||||
glibc-i18ndata \
|
||||
tar \
|
||||
curl \
|
||||
libunwind \
|
||||
libicu \
|
||||
openssl \
|
||||
git
|
||||
|
||||
# Setup the locale
|
||||
ENV LANG en_US.UTF-8
|
||||
ENV LC_ALL $LANG
|
||||
RUN localedef --charmap=UTF-8 --inputfile=en_US $LANG
|
||||
|
||||
RUN curl -L -o $PACKAGENAME $PACKAGELOCATION/$PACKAGENAME
|
||||
|
||||
# Create the target folder where powershell will be placed
|
||||
RUN mkdir -p /opt/microsoft/powershell
|
||||
# Expand powershell to the target folder
|
||||
RUN tar zxf $PACKAGENAME -C /opt/microsoft/powershell
|
||||
|
||||
# Create the symbolic link that points to powershell
|
||||
RUN ln -s /opt/microsoft/powershell/pwsh $POWERSHELL_LINKFILE
|
||||
|
||||
RUN $TESTDOWNLOADCOMMAND
|
||||
RUN pwsh -c "Import-Module /PowerShell/build.psm1;\$dir='/usr/local/share/powershell/Modules';\$null=New-Item -Type Directory -Path \$dir -ErrorAction SilentlyContinue;Restore-PSPester -Destination \$dir;exit (Invoke-Pester $TESTLIST -PassThru).FailedCount"
|
29
docker/tests/Templates/ubuntu16.04/Dockerfile
Normal file
29
docker/tests/Templates/ubuntu16.04/Dockerfile
Normal file
|
@ -0,0 +1,29 @@
|
|||
FROM ubuntu:xenial
|
||||
|
||||
ARG PACKAGENAME
|
||||
ARG PACKAGELOCATION
|
||||
ARG PREVIEWSUFFIX=
|
||||
ARG TESTLIST=/PowerShell/test/powershell/Modules/PackageManagement/PackageManagement.Tests.ps1,/PowerShell/test/powershell/engine/Module
|
||||
ARG TESTDOWNLOADCOMMAND="git clone --recursive https://github.com/PowerShell/PowerShell.git"
|
||||
|
||||
# Install dependencies
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
apt-utils \
|
||||
ca-certificates \
|
||||
curl \
|
||||
apt-transport-https \
|
||||
locales \
|
||||
git \
|
||||
&& apt-get clean
|
||||
|
||||
# Setup the locale
|
||||
ENV LANG en_US.UTF-8
|
||||
ENV LC_ALL $LANG
|
||||
RUN locale-gen $LANG && update-locale
|
||||
|
||||
RUN curl -L -o $PACKAGENAME $PACKAGELOCATION/$PACKAGENAME
|
||||
RUN dpkg -i $PACKAGENAME || :
|
||||
RUN apt-get install -y -f --no-install-recommends
|
||||
RUN $TESTDOWNLOADCOMMAND
|
||||
RUN pwsh$PREVIEWSUFFIX -c "Import-Module /PowerShell/build.psm1;\$dir='/usr/local/share/powershell/Modules';\$null=New-Item -Type Directory -Path \$dir -ErrorAction SilentlyContinue;Restore-PSPester -Destination \$dir;exit (Invoke-Pester $TESTLIST -PassThru).FailedCount"
|
29
docker/tests/Templates/ubuntu18.04/Dockerfile
Normal file
29
docker/tests/Templates/ubuntu18.04/Dockerfile
Normal file
|
@ -0,0 +1,29 @@
|
|||
FROM ubuntu:bionic
|
||||
|
||||
ARG PACKAGENAME
|
||||
ARG PACKAGELOCATION
|
||||
ARG PREVIEWSUFFIX=
|
||||
ARG TESTLIST=/PowerShell/test/powershell/Modules/PackageManagement/PackageManagement.Tests.ps1,/PowerShell/test/powershell/engine/Module
|
||||
ARG TESTDOWNLOADCOMMAND="git clone --recursive https://github.com/PowerShell/PowerShell.git"
|
||||
|
||||
# Install dependencies
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
apt-utils \
|
||||
ca-certificates \
|
||||
curl \
|
||||
apt-transport-https \
|
||||
locales \
|
||||
git \
|
||||
&& apt-get clean
|
||||
|
||||
# Setup the locale
|
||||
ENV LANG en_US.UTF-8
|
||||
ENV LC_ALL $LANG
|
||||
RUN locale-gen $LANG && update-locale
|
||||
|
||||
RUN curl -L -o $PACKAGENAME $PACKAGELOCATION/$PACKAGENAME
|
||||
RUN dpkg -i $PACKAGENAME || :
|
||||
RUN apt-get install -y -f --no-install-recommends
|
||||
RUN $TESTDOWNLOADCOMMAND
|
||||
RUN pwsh$PREVIEWSUFFIX -c "Import-Module /PowerShell/build.psm1;\$dir='/usr/local/share/powershell/Modules';\$null=New-Item -Type Directory -Path \$dir -ErrorAction SilentlyContinue;Restore-PSPester -Destination \$dir;exit (Invoke-Pester $TESTLIST -PassThru).FailedCount"
|
370
docker/tests/containerTestCommon.psm1
Normal file
370
docker/tests/containerTestCommon.psm1
Normal file
|
@ -0,0 +1,370 @@
|
|||
# Copyright (c) Microsoft Corporation.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
$script:forcePull = $true
|
||||
# Get docker Engine OS
|
||||
function Get-DockerEngineOs
|
||||
{
|
||||
docker info --format '{{ .OperatingSystem }}'
|
||||
}
|
||||
|
||||
# Call Docker with appropriate result checksfunction Invoke-Docker
|
||||
function Invoke-Docker
|
||||
{
|
||||
param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string[]]
|
||||
$Command,
|
||||
[ValidateSet("error","warning",'ignore')]
|
||||
$FailureAction = 'error',
|
||||
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string[]]
|
||||
$Params,
|
||||
|
||||
[switch]
|
||||
$PassThru,
|
||||
[switch]
|
||||
$SuppressHostOutput
|
||||
)
|
||||
|
||||
$ErrorActionPreference = 'Continue'
|
||||
|
||||
# Log how we are running docker for troubleshooting issues
|
||||
Write-Verbose "Running docker $command $params" -Verbose
|
||||
if($SuppressHostOutput.IsPresent)
|
||||
{
|
||||
$result = docker $command $params 2>&1
|
||||
}
|
||||
else
|
||||
{
|
||||
&'docker' $command $params 2>&1 | Tee-Object -Variable result -ErrorAction SilentlyContinue | Out-String -Stream -ErrorAction SilentlyContinue | Write-Host -ErrorAction SilentlyContinue
|
||||
}
|
||||
|
||||
$dockerExitCode = $LASTEXITCODE
|
||||
if($PassThru.IsPresent)
|
||||
{
|
||||
Write-Verbose "passing through docker result$($result.length)..." -Verbose
|
||||
return $result
|
||||
}
|
||||
elseif($dockerExitCode -ne 0 -and $FailureAction -eq 'error')
|
||||
{
|
||||
Write-Error "docker $command failed with: $result" -ErrorAction Stop
|
||||
return $false
|
||||
}
|
||||
elseif($dockerExitCode -ne 0 -and $FailureAction -eq 'warning')
|
||||
{
|
||||
Write-Warning "docker $command failed with: $result"
|
||||
return $false
|
||||
}
|
||||
elseif($dockerExitCode -ne 0)
|
||||
{
|
||||
return $false
|
||||
}
|
||||
|
||||
return $true
|
||||
}
|
||||
|
||||
# Return a list of Linux Container Test Cases
|
||||
function Get-LinuxContainer
|
||||
{
|
||||
foreach($os in 'centos7','ubuntu16.04')
|
||||
{
|
||||
Write-Output @{
|
||||
Name = $os
|
||||
Path = "$PSScriptRoot/../release/$os"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Return a list of Windows Container Test Cases
|
||||
function Get-WindowsContainer
|
||||
{
|
||||
foreach($os in 'windowsservercore','nanoserver')
|
||||
{
|
||||
Write-Output @{
|
||||
Name = $os
|
||||
Path = "$PSScriptRoot/../release/$os"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$script:repoName = 'microsoft/powershell'
|
||||
function Get-RepoName
|
||||
{
|
||||
return $script:repoName
|
||||
}
|
||||
|
||||
function Set-RepoName
|
||||
{
|
||||
param([string]$RepoName)
|
||||
|
||||
$script:repoName = $RepoName
|
||||
$script:forcePull = $false
|
||||
}
|
||||
|
||||
function Test-SkipWindows
|
||||
{
|
||||
[bool] $canRunWindows = (Get-DockerEngineOs) -like 'Windows*'
|
||||
return ($IsLinux -or $IsMacOS -or !$canRunWindows)
|
||||
}
|
||||
|
||||
function Test-SkipLinux
|
||||
{
|
||||
$os = Get-DockerEngineOs
|
||||
|
||||
switch -wildcard ($os)
|
||||
{
|
||||
'*Linux*' {
|
||||
return $false
|
||||
}
|
||||
'*Mac' {
|
||||
return $false
|
||||
}
|
||||
# Docker for Windows means we are running the linux kernel
|
||||
'Docker for Windows' {
|
||||
return $false
|
||||
}
|
||||
'Windows*' {
|
||||
return $true
|
||||
}
|
||||
default {
|
||||
throw "Unknown docker os '$os'"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Get-TestContext
|
||||
{
|
||||
param(
|
||||
[ValidateSet('Linux','Windows','macOS')]
|
||||
[string]$Type
|
||||
)
|
||||
|
||||
$resultFileName = 'results.xml'
|
||||
$logFileName = 'results.log'
|
||||
$containerTestDrive = '/test'
|
||||
|
||||
# Return a windows context if the Context in Windows *AND*
|
||||
# the current system is windows, otherwise Join-path will fail.
|
||||
if($Type -eq 'Windows' -and $IsWindows)
|
||||
{
|
||||
$ContainerTestDrive = 'C:\test'
|
||||
}
|
||||
$resolvedTestDrive = (Resolve-Path "Testdrive:\").providerPath
|
||||
|
||||
return @{
|
||||
ResolvedTestDrive = $resolvedTestDrive
|
||||
ResolvedXmlPath = Join-Path $resolvedTestDrive -ChildPath $resultFileName
|
||||
ResolvedLogPath = Join-Path $resolvedTestDrive -ChildPath $logFileName
|
||||
ContainerTestDrive = $ContainerTestDrive
|
||||
ContainerXmlPath = Join-Path $containerTestDrive -ChildPath $resultFileName
|
||||
ContainerLogPath = Join-Path $containerTestDrive -ChildPath $logFileName
|
||||
Type = $Type
|
||||
ForcePull = $script:forcePull
|
||||
}
|
||||
}
|
||||
|
||||
function Get-ContainerPowerShellVersion
|
||||
{
|
||||
param(
|
||||
[HashTable] $TestContext,
|
||||
[string] $RepoName,
|
||||
[string] $Name
|
||||
)
|
||||
|
||||
$imageTag = "${script:repoName}:${Name}"
|
||||
|
||||
if($TestContext.ForcePull)
|
||||
{
|
||||
$null=Invoke-Docker -Command 'image', 'pull' -Params $imageTag -SuppressHostOutput
|
||||
}
|
||||
|
||||
$runParams = @()
|
||||
$localVolumeName = $testContext.resolvedTestDrive
|
||||
$runParams += '--rm'
|
||||
if($TestContext.Type -ne 'Windows' -and $IsWindows)
|
||||
{
|
||||
# use a container volume on windows because host volumes are not automatic
|
||||
$volumeName = "test-volume-" + (Get-Random -Minimum 100 -Maximum 999)
|
||||
|
||||
# using alpine because it's tiny
|
||||
$null=Invoke-Docker -Command create -Params '-v', '/test', '--name', $volumeName, 'alpine' -SuppressHostOutput
|
||||
$runParams += '--volumes-from'
|
||||
$runParams += $volumeName
|
||||
}
|
||||
else {
|
||||
$runParams += '-v'
|
||||
$runParams += "${localVolumeName}:$($testContext.containerTestDrive)"
|
||||
}
|
||||
|
||||
$runParams += $imageTag
|
||||
$runParams += 'pwsh'
|
||||
$runParams += '-c'
|
||||
$runParams += ('$PSVersionTable.PSVersion.ToString() | out-string | out-file -encoding ascii -FilePath '+$testContext.containerLogPath)
|
||||
|
||||
$null = Invoke-Docker -Command run -Params $runParams -SuppressHostOutput
|
||||
if($TestContext.Type -ne 'Windows' -and $IsWindows)
|
||||
{
|
||||
$null = Invoke-Docker -Command cp -Params "${volumeName}:$($testContext.containerLogPath)", $TestContext.ResolvedLogPath
|
||||
$null = Invoke-Docker -Command container, rm -Params $volumeName, '--force' -SuppressHostOutput
|
||||
}
|
||||
return (Get-Content -Encoding Ascii $testContext.resolvedLogPath)[0]
|
||||
}
|
||||
|
||||
# Function defines a config mapping for testing Preview packages.
|
||||
# The list of supported OS for each release can be found here:
|
||||
# https://github.com/PowerShell/PowerShell-Docs/blob/staging/reference/docs-conceptual/PowerShell-Core-Support.md#supported-platforms
|
||||
function Get-DefaultPreviewConfigForPackageValidation
|
||||
{
|
||||
# format: <DockerfileFolderName>=<PartOfPackageFilename>
|
||||
@{ 'centos7'='rhel.7';
|
||||
'debian.9'='debian.9';
|
||||
'fedora28'='rhel.7';
|
||||
'opensuse42.3'='linux-x64.tar.gz';
|
||||
'ubuntu16.04'='ubuntu.16.04';
|
||||
'ubuntu18.04'='ubuntu.18.04';
|
||||
'fxdependent-centos7'='linux-x64-fxdependent.tar.gz';
|
||||
'fxdependent-debian.9'='linux-x64-fxdependent.tar.gz';
|
||||
'fxdependent-fedora28'='linux-x64-fxdependent.tar.gz';
|
||||
'fxdependent-opensuse42.3'='linux-x64-fxdependent.tar.gz';
|
||||
'fxdependent-ubuntu16.04'='linux-x64-fxdependent.tar.gz';
|
||||
'fxdependent-ubuntu18.04'='linux-x64-fxdependent.tar.gz';
|
||||
'fxdependent-dotnetsdk-latest'='linux-x64-fxd-dotnetsdk.tar.gz'
|
||||
}
|
||||
}
|
||||
|
||||
# Function defines a config mapping for testing Stable packages.
|
||||
# The list of supported OS for each release can be found here:
|
||||
# https://github.com/PowerShell/PowerShell-Docs/blob/staging/reference/docs-conceptual/PowerShell-Core-Support.md#supported-platforms
|
||||
function Get-DefaultStableConfigForPackageValidation
|
||||
{
|
||||
# format: <DockerfileFolderName>=<PartOfPackageFilename>
|
||||
@{ 'centos7'='rhel.7';
|
||||
'debian.9'='debian.9';
|
||||
'opensuse42.3'='linux-x64.tar.gz';
|
||||
'ubuntu16.04'='ubuntu.16.04';
|
||||
'fxdependent-centos7'='linux-x64-fxdependent.tar.gz';
|
||||
'fxdependent-debian.9'='linux-x64-fxdependent.tar.gz';
|
||||
'fxdependent-opensuse42.3'='linux-x64-fxdependent.tar.gz';
|
||||
'fxdependent-ubuntu16.04'='linux-x64-fxdependent.tar.gz'
|
||||
}
|
||||
}
|
||||
|
||||
# Returns a list of files in a specified Azure container.
|
||||
function Get-PackageNamesOnAzureBlob
|
||||
{
|
||||
param(
|
||||
[string]
|
||||
$ContainerUrl,
|
||||
|
||||
# $SAS (shared access signature) param should include beginning '?' and trailing '&'
|
||||
[string]
|
||||
$SAS
|
||||
)
|
||||
|
||||
|
||||
$response = Invoke-RestMethod -Method Get -Uri $($ContainerUrl + $SAS + 'restype=container&comp=list')
|
||||
|
||||
$xmlResponce = [xml]$response.Substring($response.IndexOf('<EnumerationResults')) # remove some bad chars in the beginning that break XML parsing
|
||||
($xmlResponce.EnumerationResults.Blobs.Blob).Name
|
||||
}
|
||||
|
||||
# This function is used for basic validation of PS packages during a release;
|
||||
# During the process Docker files are filled out and executed with Docker build;
|
||||
# During the build PS packages are downloaded onto Docker containers, installed and selected Pester tests from PowerShell Github repo are executed.
|
||||
# This function must be run on a Docker host machine in 'Linux containers' mode, such as Windows 10 server with Hyper-V role installed.
|
||||
function Test-PSPackage
|
||||
{
|
||||
param(
|
||||
[string]
|
||||
[Parameter(Mandatory=$true)]
|
||||
$PSPackageLocation, # e.g. Azure container storage url
|
||||
[string]
|
||||
$SAS,# $SAS (shared access signature) param should include beginning '?' and trailing '&'
|
||||
[Hashtable]
|
||||
$Config, # hashtable that maps packages to dockerfiles; for example see Get-DefaultConfigForPackageValidation
|
||||
[string]
|
||||
$TestList = "/PowerShell/test/powershell/Modules/PackageManagement/PackageManagement.Tests.ps1,/PowerShell/test/powershell/engine/Module",
|
||||
[string]
|
||||
$TestDownloadCommand = "git clone --recursive https://github.com/PowerShell/PowerShell.git",
|
||||
[switch]
|
||||
$Preview = $false
|
||||
)
|
||||
|
||||
$PSPackageLocation = $PSPackageLocation.TrimEnd('/','\') # code below assumes there is no trailing separator in PSPackageLocation url
|
||||
$RootFolder = Join-Path $PSScriptRoot 'Templates'
|
||||
|
||||
|
||||
$packageList = Get-PackageNamesOnAzureBlob -ContainerUrl $PSPackageLocation -SAS $SAS
|
||||
if (!$Config)
|
||||
{
|
||||
if ($Preview)
|
||||
{
|
||||
$Config = Get-DefaultPreviewConfigForPackageValidation
|
||||
}
|
||||
else
|
||||
{
|
||||
$Config = Get-DefaultStableConfigForPackageValidation
|
||||
}
|
||||
}
|
||||
|
||||
# pre-process $Config: verify build directories and packages exist
|
||||
$map = @{}
|
||||
foreach($kp in $Config.GetEnumerator())
|
||||
{
|
||||
$buildDir = Join-Path $RootFolder $kp.Key
|
||||
$packageName = $packageList | Where-Object {$_ -like $('*'+$kp.Value+'*')}
|
||||
|
||||
if (-not (Test-Path $buildDir))
|
||||
{
|
||||
Write-Error "Directory does Not exist - $buildDir; Check `$Config parameter and '$RootFolder' folder"
|
||||
}
|
||||
elseif (-not ($packageName))
|
||||
{
|
||||
Write-Error "Can not find package that matches filter *$($kp.Value)*; Check `$Config parameter and '$PSPackageLocation'"
|
||||
}
|
||||
else
|
||||
{
|
||||
$map.Add($buildDir, $packageName)
|
||||
}
|
||||
}
|
||||
|
||||
Write-Verbose "Using configuration:" -Verbose
|
||||
Write-Verbose ($map | Format-List | Out-String) -Verbose
|
||||
|
||||
$results = @{}
|
||||
$returnValue = $true
|
||||
|
||||
# run builds sequentially, but don't block for errors so that configs after failed one can run
|
||||
foreach($kp in $map.GetEnumerator())
|
||||
{
|
||||
$dockerDirPath = $kp.Key
|
||||
$packageFileName = $kp.Value
|
||||
|
||||
$buildArgs = @()
|
||||
|
||||
$buildArgs += "--build-arg","PACKAGENAME=$packageFileName"
|
||||
$buildArgs += "--build-arg","PACKAGELOCATION=$PSPackageLocation"
|
||||
if ($Preview)
|
||||
{
|
||||
$buildArgs += "--build-arg","PREVIEWSUFFIX=-preview"
|
||||
}
|
||||
$buildArgs += "--build-arg","TESTLIST=$TestList"
|
||||
$buildArgs += "--build-arg","TESTDOWNLOADCOMMAND=$TestDownloadCommand"
|
||||
$buildArgs += "--no-cache"
|
||||
$buildArgs += $dockerDirPath
|
||||
|
||||
$dockerResult = Invoke-Docker -Command 'build' -Params $buildArgs -FailureAction warning
|
||||
|
||||
$confName = Split-Path -Leaf $dockerDirPath
|
||||
$results.Add($confName, $dockerResult)
|
||||
if (-not $dockerResult) {$returnValue = $false}
|
||||
}
|
||||
|
||||
# in the end print results for all configurations
|
||||
Write-Verbose "Package validation results:" -Verbose
|
||||
$results
|
||||
|
||||
return $returnValue
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"sdk": {
|
||||
"version": "6.0.100"
|
||||
"version": "6.0.100-rc.1.21458.32"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<configuration>
|
||||
<packageSources>
|
||||
<clear />
|
||||
<add key="dotnet" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v2" />
|
||||
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
|
||||
</packageSources>
|
||||
<disabledPackageSources>
|
||||
|
@ -9,4 +10,3 @@
|
|||
</disabledPackageSources>
|
||||
</configuration>
|
||||
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<!-- the following package(s) are from https://github.com/dotnet/corefx -->
|
||||
<PackageReference Include="System.ServiceProcess.ServiceController" Version="6.0.0" />
|
||||
<PackageReference Include="System.ServiceProcess.ServiceController" Version="6.0.0-rc.1.21451.13" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\System.Management.Automation\System.Management.Automation.csproj" />
|
||||
<PackageReference Include="Microsoft.PowerShell.MarkdownRender" Version="7.2.0" />
|
||||
<PackageReference Include="Microsoft.PowerShell.MarkdownRender" Version="7.2.0-preview.2" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
|
@ -31,9 +31,9 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.0.0-6.final" />
|
||||
<PackageReference Include="System.Threading.AccessControl" Version="6.0.0" />
|
||||
<PackageReference Include="System.Drawing.Common" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.0.0-4.final" />
|
||||
<PackageReference Include="System.Threading.AccessControl" Version="6.0.0-rc.1.21451.13" />
|
||||
<PackageReference Include="System.Drawing.Common" Version="6.0.0-rc.1.21451.13" />
|
||||
<PackageReference Include="NJsonSchema" Version="10.5.2" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
|
@ -11,7 +11,6 @@ using System.IO;
|
|||
using System.Linq;
|
||||
using System.Management.Automation;
|
||||
using System.Management.Automation.Internal;
|
||||
using System.Management.Automation.Security;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Loader;
|
||||
using System.Security;
|
||||
|
@ -550,10 +549,8 @@ namespace Microsoft.PowerShell.Commands
|
|||
/// </summary>
|
||||
protected override void BeginProcessing()
|
||||
{
|
||||
// Prevent code compilation in ConstrainedLanguage mode, or NoLanguage mode under system lock down.
|
||||
if (SessionState.LanguageMode == PSLanguageMode.ConstrainedLanguage ||
|
||||
(SessionState.LanguageMode == PSLanguageMode.NoLanguage &&
|
||||
SystemPolicy.GetSystemLockdownPolicy() == SystemEnforcementMode.Enforce))
|
||||
// Prevent code compilation in ConstrainedLanguage mode
|
||||
if (SessionState.LanguageMode == PSLanguageMode.ConstrainedLanguage)
|
||||
{
|
||||
ThrowTerminatingError(
|
||||
new ErrorRecord(
|
||||
|
|
|
@ -219,7 +219,7 @@ namespace Microsoft.PowerShell.Commands
|
|||
|
||||
if (s_inputFieldRegex == null)
|
||||
{
|
||||
s_inputFieldRegex = new Regex(@"<input\s+[^>]*(/?>|>.*?</input>)",
|
||||
s_inputFieldRegex = new Regex(@"<input\s+[^>]*(/>|>.*?</input>)",
|
||||
RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,51 +0,0 @@
|
|||
// Copyright (c) Microsoft Corporation.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#nullable enable
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Management.Automation;
|
||||
using System.Net;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Microsoft.PowerShell.Commands
|
||||
{
|
||||
/// <summary>
|
||||
/// A completer for HTTP version names.
|
||||
/// </summary>
|
||||
internal sealed class HttpVersionCompletionsAttribute : ArgumentCompletionsAttribute
|
||||
{
|
||||
public static readonly string[] AllowedVersions;
|
||||
|
||||
static HttpVersionCompletionsAttribute()
|
||||
{
|
||||
FieldInfo[] fields = typeof(HttpVersion).GetFields(BindingFlags.Static | BindingFlags.Public);
|
||||
|
||||
var versions = new List<string>(fields.Length - 1);
|
||||
|
||||
for (int i = 0; i < fields.Length; i++)
|
||||
{
|
||||
// skip field Unknown and not Version type
|
||||
if (fields[i].Name == nameof(HttpVersion.Unknown) || fields[i].FieldType != typeof(Version))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var version = (Version?)fields[i].GetValue(null);
|
||||
|
||||
if (version is not null)
|
||||
{
|
||||
versions.Add(version.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
AllowedVersions = versions.ToArray();
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public HttpVersionCompletionsAttribute() : base(AllowedVersions)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
|
@ -107,18 +107,6 @@ namespace Microsoft.PowerShell.Commands
|
|||
|
||||
#endregion
|
||||
|
||||
#region HTTP Version
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the HTTP Version property.
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
[ArgumentToVersionTransformation]
|
||||
[HttpVersionCompletions]
|
||||
public virtual Version HttpVersion { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Session
|
||||
/// <summary>
|
||||
/// Gets or sets the Session property.
|
||||
|
@ -1093,11 +1081,6 @@ namespace Microsoft.PowerShell.Commands
|
|||
// create the base WebRequest object
|
||||
var request = new HttpRequestMessage(httpMethod, requestUri);
|
||||
|
||||
if (HttpVersion is not null)
|
||||
{
|
||||
request.Version = HttpVersion;
|
||||
}
|
||||
|
||||
// pull in session data
|
||||
if (WebSession.Headers.Count > 0)
|
||||
{
|
||||
|
@ -1430,7 +1413,6 @@ namespace Microsoft.PowerShell.Commands
|
|||
string reqVerboseMsg = string.Format(
|
||||
CultureInfo.CurrentCulture,
|
||||
WebCmdletStrings.WebMethodInvocationVerboseMsg,
|
||||
requestWithoutRange.Version,
|
||||
requestWithoutRange.Method,
|
||||
requestWithoutRange.RequestUri,
|
||||
requestContentLength);
|
||||
|
@ -1523,14 +1505,10 @@ namespace Microsoft.PowerShell.Commands
|
|||
if (request.Content != null)
|
||||
requestContentLength = request.Content.Headers.ContentLength.Value;
|
||||
|
||||
string reqVerboseMsg = string.Format(
|
||||
CultureInfo.CurrentCulture,
|
||||
string reqVerboseMsg = string.Format(CultureInfo.CurrentCulture,
|
||||
WebCmdletStrings.WebMethodInvocationVerboseMsg,
|
||||
request.Version,
|
||||
request.Method,
|
||||
request.RequestUri,
|
||||
requestContentLength);
|
||||
|
||||
WriteVerbose(reqVerboseMsg);
|
||||
|
||||
HttpResponseMessage response = GetResponse(client, request, keepAuthorization);
|
||||
|
|
|
@ -27,13 +27,15 @@ namespace Microsoft.PowerShell.Commands
|
|||
|
||||
private int _depth = 2;
|
||||
|
||||
private const int maxDepthAllowed = 100;
|
||||
|
||||
private readonly CancellationTokenSource _cancellationSource = new();
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the Depth property.
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
[ValidateRange(0, 100)]
|
||||
[ValidateRange(0, int.MaxValue)]
|
||||
public int Depth
|
||||
{
|
||||
get { return _depth; }
|
||||
|
@ -97,7 +99,23 @@ namespace Microsoft.PowerShell.Commands
|
|||
_cancellationSource.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Prerequisite checks.
|
||||
/// </summary>
|
||||
protected override void BeginProcessing()
|
||||
{
|
||||
if (_depth > maxDepthAllowed)
|
||||
{
|
||||
string errorMessage = StringUtil.Format(WebCmdletStrings.ReachedMaximumDepthAllowed, maxDepthAllowed);
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new InvalidOperationException(errorMessage),
|
||||
"ReachedMaximumDepthAllowed",
|
||||
ErrorCategory.InvalidOperation,
|
||||
null));
|
||||
}
|
||||
}
|
||||
|
||||
private readonly List<object> _inputObjects = new();
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -129,7 +129,7 @@
|
|||
<data name="AuthenticationCredentialNotSupplied" xml:space="preserve">
|
||||
<value>The cmdlet cannot run because the following parameter is not specified: Credential. The supplied Authentication type requires a Credential. Specify Credential, then retry.</value>
|
||||
</data>
|
||||
<data name="AuthenticationTokenNotSupplied" xml:space="preserve">
|
||||
<data name="AuthenticationTokenNotSupplied" xml:space="preserve">
|
||||
<value>The cmdlet cannot run because the following parameter is not specified: Token. The supplied Authentication type requires a Token. Specify Token, then retry.</value>
|
||||
</data>
|
||||
<data name="AuthenticationTokenConflict" xml:space="preserve">
|
||||
|
@ -237,6 +237,9 @@
|
|||
<data name="JsonNetModuleFilesRequired" xml:space="preserve">
|
||||
<value>Ensure 'Json.Net.psd1' and 'Newtonsoft.Json.dll' are available in a versioned subdirectory of '{0}'.</value>
|
||||
</data>
|
||||
<data name="ReachedMaximumDepthAllowed" xml:space="preserve">
|
||||
<value>The maximum depth allowed for serialization is {0}.</value>
|
||||
</data>
|
||||
<data name="JsonDeserializationFailed" xml:space="preserve">
|
||||
<value>Conversion from JSON failed with error: {0}</value>
|
||||
</data>
|
||||
|
@ -247,7 +250,7 @@
|
|||
<value>Following rel link {0}</value>
|
||||
</data>
|
||||
<data name="WebMethodInvocationVerboseMsg" xml:space="preserve">
|
||||
<value>HTTP/{0} {1} {2} with {3}-byte payload</value>
|
||||
<value>{0} with {1}-byte payload</value>
|
||||
</data>
|
||||
<data name="WebMethodResumeFailedVerboseMsg" xml:space="preserve">
|
||||
<value>The remote server indicated it could not resume downloading. The local file will be overwritten.</value>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<!-- the following package(s) are from https://github.com/dotnet/corefx -->
|
||||
<PackageReference Include="System.Diagnostics.EventLog" Version="6.0.0" />
|
||||
<PackageReference Include="System.Diagnostics.EventLog" Version="6.0.0-rc.1.21451.13" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
<AssemblyName>Microsoft.PowerShell.GlobalTool.Shim</AssemblyName>
|
||||
<OutputType>EXE</OutputType>
|
||||
<RootNamespace>Microsoft.PowerShell.GlobalTool.Shim</RootNamespace>
|
||||
<UseAppHost>False</UseAppHost>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" Condition="'$(SDKToUse)' == 'Microsoft.NET.Sdk' " />
|
||||
|
|
|
@ -16,21 +16,21 @@
|
|||
|
||||
<ItemGroup>
|
||||
<!-- the following package(s) are from https://github.com/dotnet/fxdac -->
|
||||
<PackageReference Include="System.Data.SqlClient" Version="4.8.3" />
|
||||
<PackageReference Include="System.Data.SqlClient" Version="4.8.2" />
|
||||
<!-- the following package(s) are from https://github.com/dotnet/corefx -->
|
||||
<PackageReference Include="System.IO.Packaging" Version="6.0.0" />
|
||||
<PackageReference Include="System.Net.Http.WinHttpHandler" Version="6.0.0" />
|
||||
<PackageReference Include="System.Text.Encodings.Web" Version="6.0.0" />
|
||||
<PackageReference Include="System.IO.Packaging" Version="6.0.0-rc.1.21451.13" />
|
||||
<PackageReference Include="System.Net.Http.WinHttpHandler" Version="6.0.0-rc.1.21451.13" />
|
||||
<PackageReference Include="System.Text.Encodings.Web" Version="6.0.0-rc.1.21451.13" />
|
||||
<!-- the following package(s) are from https://github.com/dotnet/wcf -->
|
||||
<PackageReference Include="System.ServiceModel.Duplex" Version="4.9.0" />
|
||||
<PackageReference Include="System.ServiceModel.Http" Version="4.9.0" />
|
||||
<PackageReference Include="System.ServiceModel.NetTcp" Version="4.9.0" />
|
||||
<PackageReference Include="System.ServiceModel.Primitives" Version="4.9.0" />
|
||||
<PackageReference Include="System.ServiceModel.Security" Version="4.9.0" />
|
||||
<PackageReference Include="System.Private.ServiceModel" Version="4.9.0" />
|
||||
<PackageReference Include="System.ServiceModel.Duplex" Version="4.9.0-preview1.21220.1" />
|
||||
<PackageReference Include="System.ServiceModel.Http" Version="4.9.0-preview1.21220.1" />
|
||||
<PackageReference Include="System.ServiceModel.NetTcp" Version="4.9.0-preview1.21220.1" />
|
||||
<PackageReference Include="System.ServiceModel.Primitives" Version="4.9.0-preview1.21220.1" />
|
||||
<PackageReference Include="System.ServiceModel.Security" Version="4.9.0-preview1.21220.1" />
|
||||
<PackageReference Include="System.Private.ServiceModel" Version="4.9.0-preview1.21220.1" />
|
||||
<!-- the source could not be found for the following package(s) -->
|
||||
<PackageReference Include="Microsoft.NETCore.Windows.ApiSets" Version="1.0.1" />
|
||||
<PackageReference Include="Microsoft.Windows.Compatibility" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.Windows.Compatibility" Version="6.0.0-rc.1.21451.13" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<ProjectReference Include="..\System.Management.Automation\System.Management.Automation.csproj" />
|
||||
<ProjectReference Include="..\Microsoft.WSMan.Runtime\Microsoft.WSMan.Runtime.csproj" />
|
||||
<!-- the following package(s) are from https://github.com/dotnet/corefx -->
|
||||
<PackageReference Include="System.ServiceProcess.ServiceController" Version="6.0.0" />
|
||||
<PackageReference Include="System.ServiceProcess.ServiceController" Version="6.0.0-rc.1.21451.13" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
|
|
|
@ -184,7 +184,7 @@ namespace System.Management.Automation
|
|||
#endif
|
||||
|
||||
// format files
|
||||
internal static readonly string[] FormatFileNames = new string[]
|
||||
internal static readonly List<string> FormatFileNames = new()
|
||||
{
|
||||
"Certificate.format.ps1xml",
|
||||
"Diagnostics.format.ps1xml",
|
||||
|
@ -1134,6 +1134,10 @@ namespace System.Management.Automation
|
|||
internal static extern int CreateHardLink([MarshalAs(UnmanagedType.LPStr)] string filePath,
|
||||
[MarshalAs(UnmanagedType.LPStr)] string target);
|
||||
|
||||
[DllImport(psLib, CharSet = CharSet.Ansi, SetLastError = true)]
|
||||
[return: MarshalAs(UnmanagedType.LPStr)]
|
||||
internal static extern string FollowSymLink([MarshalAs(UnmanagedType.LPStr)] string filePath);
|
||||
|
||||
[DllImport(psLib, CharSet = CharSet.Ansi, SetLastError = true)]
|
||||
[return: MarshalAs(UnmanagedType.LPStr)]
|
||||
internal static extern string GetUserFromPid(int pid);
|
||||
|
|
|
@ -35,7 +35,7 @@ namespace System.Management.Automation
|
|||
/// <summary>Classic rendering of progress.</summary>
|
||||
Classic = 1,
|
||||
}
|
||||
|
||||
|
||||
#region PSStyle
|
||||
/// <summary>
|
||||
/// Contains configuration for how PowerShell renders text.
|
||||
|
@ -365,7 +365,7 @@ namespace System.Management.Automation
|
|||
get => _error;
|
||||
set => _error = ValidateNoContent(value);
|
||||
}
|
||||
|
||||
|
||||
private string _error = "\x1b[31;1m";
|
||||
|
||||
/// <summary>
|
||||
|
@ -397,7 +397,7 @@ namespace System.Management.Automation
|
|||
{
|
||||
get => _debug;
|
||||
set => _debug = ValidateNoContent(value);
|
||||
}
|
||||
}
|
||||
|
||||
private string _debug = "\x1b[33;1m";
|
||||
}
|
||||
|
@ -467,16 +467,6 @@ namespace System.Management.Automation
|
|||
_extensionDictionary.Add(ValidateExtension(extension), ValidateNoContent(decoration));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add new extension and decoration to dictionary without validation.
|
||||
/// </summary>
|
||||
/// <param name="extension">Extension to add.</param>
|
||||
/// <param name="decoration">ANSI string value to add.</param>
|
||||
internal void AddWithoutValidation(string extension, string decoration)
|
||||
{
|
||||
_extensionDictionary.Add(extension, decoration);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Remove an extension from dictionary.
|
||||
/// </summary>
|
||||
|
@ -553,19 +543,19 @@ namespace System.Management.Automation
|
|||
Extension = new FileExtensionDictionary();
|
||||
|
||||
// archives
|
||||
Extension.AddWithoutValidation(".zip", "\x1b[31;1m");
|
||||
Extension.AddWithoutValidation(".tgz", "\x1b[31;1m");
|
||||
Extension.AddWithoutValidation(".gz", "\x1b[31;1m");
|
||||
Extension.AddWithoutValidation(".tar", "\x1b[31;1m");
|
||||
Extension.AddWithoutValidation(".nupkg", "\x1b[31;1m");
|
||||
Extension.AddWithoutValidation(".cab", "\x1b[31;1m");
|
||||
Extension.AddWithoutValidation(".7z", "\x1b[31;1m");
|
||||
Extension.Add(".zip", "\x1b[31;1m");
|
||||
Extension.Add(".tgz", "\x1b[31;1m");
|
||||
Extension.Add(".gz", "\x1b[31;1m");
|
||||
Extension.Add(".tar", "\x1b[31;1m");
|
||||
Extension.Add(".nupkg", "\x1b[31;1m");
|
||||
Extension.Add(".cab", "\x1b[31;1m");
|
||||
Extension.Add(".7z", "\x1b[31;1m");
|
||||
|
||||
// powershell
|
||||
Extension.AddWithoutValidation(".ps1", "\x1b[33;1m");
|
||||
Extension.AddWithoutValidation(".psd1", "\x1b[33;1m");
|
||||
Extension.AddWithoutValidation(".psm1", "\x1b[33;1m");
|
||||
Extension.AddWithoutValidation(".ps1xml", "\x1b[33;1m");
|
||||
Extension.Add(".ps1", "\x1b[33;1m");
|
||||
Extension.Add(".psd1", "\x1b[33;1m");
|
||||
Extension.Add(".psm1", "\x1b[33;1m");
|
||||
Extension.Add(".ps1xml", "\x1b[33;1m");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -698,7 +688,7 @@ namespace System.Management.Automation
|
|||
|
||||
private static string ValidateNoContent(string text)
|
||||
{
|
||||
var decorartedString = new ValueStringDecorated(text);
|
||||
var decorartedString = new StringDecorated(text);
|
||||
if (decorartedString.ContentLength > 0)
|
||||
{
|
||||
throw new ArgumentException(string.Format(PSStyleStrings.TextContainsContent, decorartedString.ToString(OutputRendering.PlainText)));
|
||||
|
|
|
@ -14,21 +14,21 @@
|
|||
<!-- the following package(s) are from https://github.com/JamesNK/Newtonsoft.Json -->
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
<!-- the Application Insights package -->
|
||||
<PackageReference Include="Microsoft.ApplicationInsights" Version="2.19.0" />
|
||||
<PackageReference Include="Microsoft.ApplicationInsights" Version="2.18.0" />
|
||||
<!-- the following package(s) are from https://github.com/dotnet/corefx -->
|
||||
<PackageReference Include="Microsoft.Win32.Registry.AccessControl" Version="6.0.0" />
|
||||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="6.0.0" />
|
||||
<PackageReference Include="System.DirectoryServices" Version="6.0.0" />
|
||||
<!--PackageReference Include="System.IO.FileSystem.AccessControl" Version="6.0.0-preview.5.21301.5" /-->
|
||||
<PackageReference Include="System.Management" Version="6.0.0" />
|
||||
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
|
||||
<PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
|
||||
<PackageReference Include="System.Security.Cryptography.Pkcs" Version="6.0.0" />
|
||||
<PackageReference Include="System.Security.Permissions" Version="6.0.0" />
|
||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.Win32.Registry.AccessControl" Version="6.0.0-rc.1.21451.13" />
|
||||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="6.0.0-rc.1.21451.13" />
|
||||
<PackageReference Include="System.DirectoryServices" Version="6.0.0-rc.1.21451.13" />
|
||||
<PackageReference Include="System.IO.FileSystem.AccessControl" Version="6.0.0-preview.5.21301.5" />
|
||||
<PackageReference Include="System.Management" Version="6.0.0-rc.1.21451.13" />
|
||||
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0-rc.1.21451.13" />
|
||||
<PackageReference Include="System.Security.AccessControl" Version="6.0.0-preview.5.21301.5" />
|
||||
<PackageReference Include="System.Security.Cryptography.Pkcs" Version="6.0.0-rc.1.21451.13" />
|
||||
<PackageReference Include="System.Security.Permissions" Version="6.0.0-rc.1.21451.13" />
|
||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0-rc.1.21451.13" />
|
||||
<!-- the following package(s) are from the powershell org -->
|
||||
<PackageReference Include="Microsoft.Management.Infrastructure" Version="2.0.0" />
|
||||
<PackageReference Include="Microsoft.PowerShell.Native" Version="7.2.0" />
|
||||
<PackageReference Include="Microsoft.PowerShell.Native" Version="7.2.0-preview.2" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
|
|
|
@ -1,58 +0,0 @@
|
|||
// Copyright (c) Microsoft Corporation.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#nullable enable
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
namespace System.Management.Automation
|
||||
{
|
||||
/// <summary>
|
||||
/// To make it easier to specify a version, we add some conversions that wouldn't happen otherwise:
|
||||
/// * A simple integer, i.e. 2;
|
||||
/// * A string without a dot, i.e. "2".
|
||||
/// </summary>
|
||||
internal class ArgumentToVersionTransformationAttribute : ArgumentTransformationAttribute
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public override object Transform(EngineIntrinsics engineIntrinsics, object inputData)
|
||||
{
|
||||
object version = PSObject.Base(inputData);
|
||||
|
||||
if (version is string versionStr)
|
||||
{
|
||||
if (TryConvertFromString(versionStr, out var convertedVersion))
|
||||
{
|
||||
return convertedVersion;
|
||||
}
|
||||
|
||||
if (versionStr.Contains('.'))
|
||||
{
|
||||
// If the string contains a '.', let the Version constructor handle the conversion.
|
||||
return inputData;
|
||||
}
|
||||
}
|
||||
|
||||
if (version is double)
|
||||
{
|
||||
// The conversion to int below is wrong, but the usual conversions will turn
|
||||
// the double into a string, so just return the original object.
|
||||
return inputData;
|
||||
}
|
||||
|
||||
if (LanguagePrimitives.TryConvertTo<int>(version, out var majorVersion))
|
||||
{
|
||||
return new Version(majorVersion, 0);
|
||||
}
|
||||
|
||||
return inputData;
|
||||
}
|
||||
|
||||
protected virtual bool TryConvertFromString(string versionString, [NotNullWhen(true)] out Version? version)
|
||||
{
|
||||
version = null;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1813,14 +1813,9 @@ namespace System.Management.Automation
|
|||
}
|
||||
}
|
||||
}
|
||||
if (completionContext.TokenAtCursor.TokenFlags == TokenFlags.MemberName)
|
||||
{
|
||||
result = GetResultForAttributeArgument(completionContext, ref replacementIndex, ref replacementLength);
|
||||
if (result is not null)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
result = GetResultForAttributeArgument(completionContext, ref replacementIndex, ref replacementLength);
|
||||
if (result != null) return result;
|
||||
|
||||
if ((tokenAtCursor.TokenFlags & TokenFlags.CommandName) != 0)
|
||||
{
|
||||
|
|
|
@ -23,7 +23,6 @@ namespace System.Management.Automation
|
|||
internal const string EngineSource = "PSEngine";
|
||||
internal const string PSNativeCommandArgumentPassingFeatureName = "PSNativeCommandArgumentPassing";
|
||||
internal const string PSNativeCommandErrorActionPreferenceFeatureName = "PSNativeCommandErrorActionPreference";
|
||||
internal const string PSRemotingSSHTransportErrorHandling = "PSRemotingSSHTransportErrorHandling";
|
||||
internal const string PSCleanBlockFeatureName = "PSCleanBlock";
|
||||
|
||||
#endregion
|
||||
|
@ -128,9 +127,6 @@ namespace System.Management.Automation
|
|||
new ExperimentalFeature(
|
||||
name: PSNativeCommandErrorActionPreferenceFeatureName,
|
||||
description: "Native commands with non-zero exit codes issue errors according to $ErrorActionPreference when $PSNativeCommandUseErrorActionPreference is $true"),
|
||||
new ExperimentalFeature(
|
||||
name: PSRemotingSSHTransportErrorHandling,
|
||||
description: "Removes the SSH remoting transport stdErr stream message handling as terminating errors, and instead just writes error messages to console."),
|
||||
new ExperimentalFeature(
|
||||
name: PSCleanBlockFeatureName,
|
||||
description: "Add support of a 'Clean' block to functions and script cmdlets for easy resource cleanup"),
|
||||
|
|
|
@ -1434,6 +1434,9 @@ namespace System.Management.Automation.Runspaces
|
|||
return iss;
|
||||
}
|
||||
|
||||
// Porting note: moved to Platform so we have one list to maintain
|
||||
private static readonly string[] s_PSCoreFormatFileNames = Platform.FormatFileNames.ToArray();
|
||||
|
||||
private static void IncludePowerShellCoreFormats(InitialSessionState iss)
|
||||
{
|
||||
string psHome = Utils.DefaultPowerShellAppBase;
|
||||
|
@ -1443,7 +1446,7 @@ namespace System.Management.Automation.Runspaces
|
|||
}
|
||||
|
||||
iss.Formats.Clear();
|
||||
foreach (var coreFormat in Platform.FormatFileNames)
|
||||
foreach (var coreFormat in s_PSCoreFormatFileNames)
|
||||
{
|
||||
iss.Formats.Add(new SessionStateFormatEntry(Path.Combine(psHome, coreFormat)));
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ using System.Collections;
|
|||
using System.Collections.Generic;
|
||||
using System.Dynamic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Management.Automation;
|
||||
using System.Management.Automation.Internal;
|
||||
|
@ -14,10 +15,8 @@ using System.Management.Automation.PSTasks;
|
|||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
|
||||
using CommonParamSet = System.Management.Automation.Internal.CommonParameters;
|
||||
using Dbg = System.Management.Automation.Diagnostics;
|
||||
using NotNullWhen = System.Diagnostics.CodeAnalysis.NotNullWhenAttribute;
|
||||
|
||||
namespace Microsoft.PowerShell.Commands
|
||||
{
|
||||
|
@ -2648,19 +2647,46 @@ namespace Microsoft.PowerShell.Commands
|
|||
private SwitchParameter _off;
|
||||
|
||||
/// <summary>
|
||||
/// Handle 'latest', which we interpret to be the current version of PowerShell.
|
||||
/// To make it easier to specify a version, we add some conversions that wouldn't happen otherwise:
|
||||
/// * A simple integer, i.e. 2
|
||||
/// * A string without a dot, i.e. "2"
|
||||
/// * The string 'latest', which we interpret to be the current version of PowerShell.
|
||||
/// </summary>
|
||||
private sealed class ArgumentToPSVersionTransformationAttribute : ArgumentToVersionTransformationAttribute
|
||||
private sealed class ArgumentToVersionTransformationAttribute : ArgumentTransformationAttribute
|
||||
{
|
||||
protected override bool TryConvertFromString(string versionString, [NotNullWhen(true)] out Version version)
|
||||
public override object Transform(EngineIntrinsics engineIntrinsics, object inputData)
|
||||
{
|
||||
if (string.Equals("latest", versionString, StringComparison.OrdinalIgnoreCase))
|
||||
object version = PSObject.Base(inputData);
|
||||
|
||||
string versionStr = version as string;
|
||||
if (versionStr != null)
|
||||
{
|
||||
version = PSVersionInfo.PSVersion;
|
||||
return true;
|
||||
if (versionStr.Equals("latest", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return PSVersionInfo.PSVersion;
|
||||
}
|
||||
|
||||
if (versionStr.Contains('.'))
|
||||
{
|
||||
// If the string contains a '.', let the Version constructor handle the conversion.
|
||||
return inputData;
|
||||
}
|
||||
}
|
||||
|
||||
return base.TryConvertFromString(versionString, out version);
|
||||
if (version is double)
|
||||
{
|
||||
// The conversion to int below is wrong, but the usual conversions will turn
|
||||
// the double into a string, so just return the original object.
|
||||
return inputData;
|
||||
}
|
||||
|
||||
int majorVersion;
|
||||
if (LanguagePrimitives.TryConvertTo<int>(version, out majorVersion))
|
||||
{
|
||||
return new Version(majorVersion, 0);
|
||||
}
|
||||
|
||||
return inputData;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2685,7 +2711,7 @@ namespace Microsoft.PowerShell.Commands
|
|||
/// Gets or sets strict mode in the current scope.
|
||||
/// </summary>
|
||||
[Parameter(ParameterSetName = "Version", Mandatory = true)]
|
||||
[ArgumentToPSVersionTransformation]
|
||||
[ArgumentToVersionTransformation]
|
||||
[ValidateVersion]
|
||||
[Alias("v")]
|
||||
public Version Version
|
||||
|
|
|
@ -884,7 +884,7 @@ namespace System.Management.Automation
|
|||
errorMsg,
|
||||
errorId);
|
||||
|
||||
var errorRecord = new ErrorRecord(exception, errorId, ErrorCategory.NotSpecified, targetObject: Path);
|
||||
var errorRecord = new ErrorRecord(exception, errorId, ErrorCategory.NotSpecified, targetObject: NativeCommandName);
|
||||
this.commandRuntime._WriteErrorSkipAllowCheck(errorRecord);
|
||||
}
|
||||
}
|
||||
|
@ -1106,6 +1106,18 @@ namespace System.Management.Automation
|
|||
return false;
|
||||
}
|
||||
|
||||
// The function 'SHGetFileInfo()' does not understand reparse points and returns 0 ("non exe or error")
|
||||
// for a symbolic link file, so we try to get the immediate link target in that case.
|
||||
// Why not get the final target (use 'returnFinalTarget: true')? Because:
|
||||
// 1. When starting a process on Windows, if the 'FileName' is a symbolic link, the immediate link target will automatically be used,
|
||||
// but the OS does not do recursive resolution when the immediate link target is also a symbolic link.
|
||||
// 2. Keep the same behavior as before adopting the 'LinkTarget' and 'ResolveLinkTarget' APIs in .NET 6.
|
||||
string linkTarget = File.ResolveLinkTarget(fileName, returnFinalTarget: false)?.FullName;
|
||||
if (linkTarget is not null)
|
||||
{
|
||||
fileName = linkTarget;
|
||||
}
|
||||
|
||||
SHFILEINFO shinfo = new SHFILEINFO();
|
||||
IntPtr type = SHGetFileInfo(fileName, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), SHGFI_EXETYPE);
|
||||
|
||||
|
|
|
@ -64,7 +64,6 @@ namespace System.Management.Automation
|
|||
private static readonly SemanticVersion s_psV62Version = new SemanticVersion(6, 2, 0, preReleaseLabel: null, buildLabel: null);
|
||||
private static readonly SemanticVersion s_psV7Version = new SemanticVersion(7, 0, 0, preReleaseLabel: null, buildLabel: null);
|
||||
private static readonly SemanticVersion s_psV71Version = new SemanticVersion(7, 1, 0, preReleaseLabel: null, buildLabel: null);
|
||||
private static readonly SemanticVersion s_psV72Version = new SemanticVersion(7, 2, 0, preReleaseLabel: null, buildLabel: null);
|
||||
private static readonly SemanticVersion s_psSemVersion;
|
||||
private static readonly Version s_psVersion;
|
||||
|
||||
|
@ -111,7 +110,7 @@ namespace System.Management.Automation
|
|||
s_psVersionTable[PSVersionInfo.PSVersionName] = s_psSemVersion;
|
||||
s_psVersionTable[PSVersionInfo.PSEditionName] = PSEditionValue;
|
||||
s_psVersionTable[PSGitCommitIdName] = rawGitCommitId;
|
||||
s_psVersionTable[PSCompatibleVersionsName] = new Version[] { s_psV1Version, s_psV2Version, s_psV3Version, s_psV4Version, s_psV5Version, s_psV51Version, s_psV6Version, s_psV61Version, s_psV62Version, s_psV7Version, s_psV71Version, s_psV72Version, s_psVersion };
|
||||
s_psVersionTable[PSCompatibleVersionsName] = new Version[] { s_psV1Version, s_psV2Version, s_psV3Version, s_psV4Version, s_psV5Version, s_psV51Version, s_psV6Version, s_psV61Version, s_psV62Version, s_psV7Version, s_psV71Version, s_psVersion };
|
||||
s_psVersionTable[PSVersionInfo.SerializationVersionName] = new Version(InternalSerializer.DefaultVersion);
|
||||
s_psVersionTable[PSVersionInfo.PSRemotingProtocolVersionName] = RemotingConstants.ProtocolVersion;
|
||||
s_psVersionTable[PSVersionInfo.WSManStackVersionName] = GetWSManStackVersion();
|
||||
|
|
|
@ -1535,25 +1535,6 @@ namespace System.Management.Automation.Language
|
|||
token = NextToken();
|
||||
} while (token.Kind == TokenKind.Comma);
|
||||
|
||||
// The dimensions for an array must be less than or equal to 32.
|
||||
// Search the doc for 'Type.MakeArrayType(int rank)' for more details.
|
||||
if (dim > 32)
|
||||
{
|
||||
// If the next token is right bracket, we swallow it to make it easier to parse the rest of script.
|
||||
// Otherwise, we unget the token for the subsequent parsing to consume.
|
||||
if (token.Kind != TokenKind.RBracket)
|
||||
{
|
||||
UngetToken(token);
|
||||
}
|
||||
|
||||
ReportError(
|
||||
ExtentOf(firstTokenAfterLBracket, lastComma),
|
||||
nameof(ParserStrings.ArrayHasTooManyDimensions),
|
||||
ParserStrings.ArrayHasTooManyDimensions,
|
||||
arg: dim);
|
||||
break;
|
||||
}
|
||||
|
||||
if (token.Kind != TokenKind.RBracket)
|
||||
{
|
||||
// ErrorRecovery: just pretend we saw a ']'.
|
||||
|
|
|
@ -1762,39 +1762,7 @@ namespace System.Management.Automation.Remoting.Client
|
|||
|
||||
while (true)
|
||||
{
|
||||
string error;
|
||||
|
||||
if (ExperimentalFeature.IsEnabled(ExperimentalFeature.PSRemotingSSHTransportErrorHandling))
|
||||
{
|
||||
// Blocking read from StdError stream
|
||||
error = reader.ReadLine();
|
||||
|
||||
if (error == null)
|
||||
{
|
||||
// Stream is closed unexpectedly.
|
||||
throw new PSInvalidOperationException(RemotingErrorIdStrings.SSHAbruptlyTerminated);
|
||||
}
|
||||
|
||||
if (error.Length == 0)
|
||||
{
|
||||
// Ignore
|
||||
continue;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// Messages in error stream from ssh are unreliable, and may just be warnings or
|
||||
// banner text.
|
||||
// So just report the messages but don't act on them.
|
||||
System.Console.WriteLine(error);
|
||||
}
|
||||
catch (IOException)
|
||||
{ }
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
error = ReadError(reader);
|
||||
string error = ReadError(reader);
|
||||
|
||||
if (error.Length == 0)
|
||||
{
|
||||
|
|
|
@ -5851,15 +5851,6 @@ namespace Microsoft.PowerShell.Commands
|
|||
destination = MakePath(destination, dir.Name);
|
||||
}
|
||||
|
||||
// Don't allow moving a directory into itself
|
||||
if (destination.StartsWith(Path.TrimEndingDirectorySeparator(path) + Path.DirectorySeparatorChar))
|
||||
{
|
||||
string error = StringUtil.Format(FileSystemProviderStrings.TargetCannotBeSubdirectoryOfSource, destination);
|
||||
var e = new IOException(error);
|
||||
WriteError(new ErrorRecord(e, "MoveItemArgumentError", ErrorCategory.InvalidArgument, destination));
|
||||
return;
|
||||
}
|
||||
|
||||
// Get the confirmation text
|
||||
string action = FileSystemProviderStrings.MoveItemActionDirectory;
|
||||
|
||||
|
|
|
@ -345,7 +345,4 @@
|
|||
<data name="AlreadyListedDirectory" xml:space="preserve">
|
||||
<value>Skip already-visited directory {0}.</value>
|
||||
</data>
|
||||
<data name="TargetCannotBeSubdirectoryOfSource" xml:space="preserve">
|
||||
<value>Destination path cannot be a subdirectory of the source: {0}.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
|
@ -296,9 +296,6 @@ Possible matches are</value>
|
|||
<data name="CannotIndexWithByRefLikeReturnType" xml:space="preserve">
|
||||
<value>Unable to index into an object of type "{0}" with the ByRef-like return type "{1}". ByRef-like types are not supported in PowerShell.</value>
|
||||
</data>
|
||||
<data name="ArrayHasTooManyDimensions" xml:space="preserve">
|
||||
<value>The array has too many dimensions: {0}. The number of dimensions for an array must be less than or equal to 32.</value>
|
||||
</data>
|
||||
<data name="ArrayAssignmentFailed" xml:space="preserve">
|
||||
<value>Array assignment to [{0}] failed: {1}.</value>
|
||||
</data>
|
||||
|
|
|
@ -391,14 +391,6 @@ namespace System.Management.Automation.Security
|
|||
/// <returns>True if the COM object is allowed, False otherwise.</returns>
|
||||
internal static bool IsClassInApprovedList(Guid clsid)
|
||||
{
|
||||
// This method is called only if there is an AppLocker and/or WLDP system wide lock down enforcement policy.
|
||||
if (s_cachedWldpSystemPolicy.GetValueOrDefault(SystemEnforcementMode.None) != SystemEnforcementMode.Enforce)
|
||||
{
|
||||
// No WLDP policy implies only AppLocker policy enforcement. Disallow all COM object instantiation.
|
||||
return false;
|
||||
}
|
||||
|
||||
// WLDP policy must be in system wide enforcement, look up COM Id in WLDP approval list.
|
||||
try
|
||||
{
|
||||
WLDP_HOST_INFORMATION hostInformation = new WLDP_HOST_INFORMATION();
|
||||
|
|
|
@ -10,7 +10,6 @@ using System.Threading;
|
|||
|
||||
using Microsoft.ApplicationInsights;
|
||||
using Microsoft.ApplicationInsights.Extensibility;
|
||||
using Microsoft.ApplicationInsights.Extensibility.Implementation;
|
||||
|
||||
namespace Microsoft.PowerShell.Telemetry
|
||||
{
|
||||
|
@ -119,9 +118,6 @@ namespace Microsoft.PowerShell.Telemetry
|
|||
configuration.TelemetryChannel.DeveloperMode = false;
|
||||
|
||||
s_telemetryClient = new TelemetryClient(configuration);
|
||||
// Be sure to obscure any information about the client node.
|
||||
s_telemetryClient.Context.Cloud.RoleInstance = string.Empty;
|
||||
s_telemetryClient.Context.GetInternalContext().NodeName = string.Empty;
|
||||
s_sessionId = Guid.NewGuid().ToString();
|
||||
|
||||
// use a hashset when looking for module names, it should be quicker than a string comparison
|
||||
|
|
|
@ -25,18 +25,7 @@ Describe "Verify Markdown Links" {
|
|||
Get-Job | Remove-Job -Force
|
||||
}
|
||||
|
||||
$gciParams = @{}
|
||||
if ($env:MARKDOWN_FOLDER) {
|
||||
$gciParams["Path"] = (Join-Path -Path $env:MARKDOWN_FOLDER -ChildPath '*.md')
|
||||
} else {
|
||||
$gciParams["Path"] = "$PSScriptRoot\..\..\..\*.md"
|
||||
}
|
||||
|
||||
if ($env:MARKDOWN_RECURSE -ne 'False') {
|
||||
$gciParams["Recurse"] = $true
|
||||
}
|
||||
|
||||
$groups = Get-ChildItem @gciParams | Where-Object {$_.DirectoryName -notlike '*node_modules*'} | Group-Object -Property directory
|
||||
$groups = Get-ChildItem -Path "$PSScriptRoot\..\..\..\*.md" -Recurse | Where-Object {$_.DirectoryName -notlike '*node_modules*'} | Group-Object -Property directory
|
||||
|
||||
$jobs = @{}
|
||||
# start all link verification in parallel
|
|
@ -15,8 +15,7 @@
|
|||
"ini": "^1.3.6",
|
||||
"copy-props":"^2.0.5",
|
||||
"glob-parent":"^5.1.2",
|
||||
"hosted-git-info":"^3.0.8",
|
||||
"set-value":"^4.0.1"
|
||||
"hosted-git-info":"^3.0.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"gulp-concat": "^2.6.1",
|
|
@ -1180,11 +1180,6 @@ is-plain-object@^5.0.0:
|
|||
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
|
||||
integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
|
||||
|
||||
is-primitive@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-3.0.1.tgz#98c4db1abff185485a657fc2905052b940524d05"
|
||||
integrity sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==
|
||||
|
||||
is-regexp@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz"
|
||||
|
@ -1901,13 +1896,15 @@ set-blocking@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz"
|
||||
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
|
||||
|
||||
set-value@^2.0.0, set-value@^2.0.1, set-value@^4.0.1:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/set-value/-/set-value-4.1.0.tgz#aa433662d87081b75ad88a4743bd450f044e7d09"
|
||||
integrity sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==
|
||||
set-value@^2.0.0, set-value@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz"
|
||||
integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
|
||||
dependencies:
|
||||
is-plain-object "^2.0.4"
|
||||
is-primitive "^3.0.1"
|
||||
extend-shallow "^2.0.1"
|
||||
is-extendable "^0.1.1"
|
||||
is-plain-object "^2.0.3"
|
||||
split-string "^3.0.1"
|
||||
|
||||
snapdragon-node@^2.0.1:
|
||||
version "2.1.1"
|
||||
|
@ -1996,7 +1993,7 @@ spdx-license-ids@^3.0.0:
|
|||
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz"
|
||||
integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==
|
||||
|
||||
split-string@^3.0.2:
|
||||
split-string@^3.0.1, split-string@^3.0.2:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz"
|
||||
integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
|
|
@ -1,4 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Library</OutputType>
|
||||
|
@ -7,7 +7,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
|
||||
<PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="5.0.0-preview.5.20278.1" />
|
||||
<PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.1.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFrameworks>$(PERFLAB_TARGET_FRAMEWORKS)</TargetFrameworks>
|
||||
|
@ -6,10 +6,10 @@
|
|||
<LangVersion>latest</LangVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CommandLineParser" Version="2.8.0" />
|
||||
<PackageReference Include="CommandLineParser" Version="2.4.3" />
|
||||
<PackageReference Include="MarkdownLog.NS20" Version="0.10.1" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
|
||||
<PackageReference Include="BenchmarkDotNet" Version="0.13.1" />
|
||||
<PackageReference Include="BenchmarkDotNet" Version="0.12.1" />
|
||||
<PackageReference Include="Perfolizer" Version="0.2.1" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
@ -23,7 +23,7 @@ Describe "PSVersionTable" -Tags "CI" {
|
|||
$unexpectectGitCommitIdPattern = $fullVersionPattern
|
||||
}
|
||||
|
||||
$powerShellVersions = "1.0", "2.0", "3.0", "4.0", "5.0", "5.1", "6.0", "6.1", "6.2", "7.0", "7.1", "7.2", "7.3"
|
||||
$powerShellVersions = "1.0", "2.0", "3.0", "4.0", "5.0", "5.1", "6.0", "6.1", "6.2", "7.0", "7.1", "7.2"
|
||||
$powerShellCompatibleVersions = $PSVersionTable.PSCompatibleVersions |
|
||||
ForEach-Object {$_.ToString(2).SubString(0,3)}
|
||||
}
|
||||
|
|
|
@ -1097,14 +1097,6 @@ Describe "TabCompletion" -Tags CI {
|
|||
$entry.CompletionText | Should -BeExactly "Mandatory"
|
||||
}
|
||||
|
||||
It "Test Attribute scriptblock completion" {
|
||||
$inputStr = '[ValidateScript({Get-Child})]$Test=ls'
|
||||
$res = TabExpansion2 -inputScript $inputStr -cursorColumn ($inputStr.IndexOf('}'))
|
||||
$res.CompletionMatches | Should -HaveCount 1
|
||||
$entry = $res.CompletionMatches | Where-Object CompletionText -EQ "Get-ChildItem"
|
||||
$entry.CompletionText | Should -BeExactly "Get-ChildItem"
|
||||
}
|
||||
|
||||
It "Test completion with line continuation" {
|
||||
$inputStr = @'
|
||||
dir -Recurse `
|
||||
|
@ -1142,27 +1134,6 @@ dir -Recurse `
|
|||
$res.CompletionMatches | Should -HaveCount 4
|
||||
[string]::Join(',', ($res.CompletionMatches.completiontext | Sort-Object)) | Should -BeExactly "-Path,-PipelineVariable,-PSPath,-pv"
|
||||
}
|
||||
|
||||
It "Test completion for HttpVersion parameter name" {
|
||||
$inputStr = 'Invoke-WebRequest -HttpV'
|
||||
$res = TabExpansion2 -inputScript $inputStr -cursorColumn $inputStr.Length
|
||||
$res.CompletionMatches | Should -HaveCount 1
|
||||
$res.CompletionMatches[0].CompletionText | Should -BeExactly "-HttpVersion"
|
||||
}
|
||||
|
||||
It "Test completion for HttpVersion parameter" {
|
||||
$inputStr = 'Invoke-WebRequest -HttpVersion '
|
||||
$res = TabExpansion2 -inputScript $inputStr -cursorColumn $inputStr.Length
|
||||
$res.CompletionMatches | Should -HaveCount 4
|
||||
[string]::Join(',', ($res.CompletionMatches.completiontext | Sort-Object)) | Should -BeExactly "1.0,1.1,2.0,3.0"
|
||||
}
|
||||
|
||||
It "Test completion for HttpVersion parameter with input" {
|
||||
$inputStr = 'Invoke-WebRequest -HttpVersion 1'
|
||||
$res = TabExpansion2 -inputScript $inputStr -cursorColumn $inputStr.Length
|
||||
$res.CompletionMatches | Should -HaveCount 2
|
||||
[string]::Join(',', ($res.CompletionMatches.completiontext | Sort-Object)) | Should -BeExactly "1.0,1.1"
|
||||
}
|
||||
}
|
||||
|
||||
Context "Module completion for 'using module'" {
|
||||
|
|
|
@ -626,21 +626,3 @@ Describe "Keywords 'default', 'hidden', 'in', 'static' Token parsing" -Tags CI {
|
|||
. $Keyword | Should -BeExactly $Keyword
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Parsing array that has too many dimensions" -Tag CI {
|
||||
It "ParseError for '<Script>'" -TestCases @(
|
||||
@{ Script = '[int[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'; ErrorId = @('ArrayHasTooManyDimensions', 'EndSquareBracketExpectedAtEndOfAttribute'); StartOffset = @(5, 37); EndOffset = @(37, 37) }
|
||||
@{ Script = '[int[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,]'; ErrorId = @('ArrayHasTooManyDimensions', 'EndSquareBracketExpectedAtEndOfAttribute'); StartOffset = @(5, 38); EndOffset = @(37, 38) }
|
||||
@{ Script = '[int[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,]]'; ErrorId = @('ArrayHasTooManyDimensions'); StartOffset = @(5); EndOffset = @(37) }
|
||||
) {
|
||||
param($Script, $ErrorId, $StartOffset, $EndOffset)
|
||||
|
||||
$errs = Get-ParseResults -src $Script
|
||||
$errs.Count | Should -Be $ErrorId.Count
|
||||
for ($i = 0; $i -lt $errs.Count; $i++) {
|
||||
$errs[$i].ErrorId | Should -BeExactly $ErrorId[$i]
|
||||
$errs[$i].Extent.StartScriptPosition.Offset | Should -Be $StartOffset[$i]
|
||||
$errs[$i].Extent.EndScriptPosition.Offset | Should -Be $EndOffset[$i]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -252,48 +252,3 @@ Categories=Application;
|
|||
{ $dllFile = "$PSHOME\System.Management.Automation.dll"; & $dllFile } | Should -Throw -ErrorId "NativeCommandFailed"
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Run native command from a mounted FAT-format VHD" -tags @("Feature", "RequireAdminOnWindows") {
|
||||
BeforeAll {
|
||||
if (-not $IsWindows) {
|
||||
return;
|
||||
}
|
||||
|
||||
$vhdx = Join-Path -Path $TestDrive -ChildPath ncp.vhdx
|
||||
|
||||
if (Test-Path -Path $vhdx) {
|
||||
Remove-item -Path $vhdx -Force
|
||||
}
|
||||
|
||||
$create_vhdx = Join-Path -Path $TestDrive -ChildPath 'create_vhdx.txt'
|
||||
|
||||
Set-Content -Path $create_vhdx -Force -Value @"
|
||||
create vdisk file="$vhdx" maximum=20 type=fixed
|
||||
select vdisk file="$vhdx"
|
||||
attach vdisk
|
||||
convert mbr
|
||||
create partition primary
|
||||
format fs=fat
|
||||
assign letter="T"
|
||||
detach vdisk
|
||||
"@
|
||||
|
||||
diskpart.exe /s $create_vhdx
|
||||
Mount-DiskImage -ImagePath $vhdx > $null
|
||||
|
||||
Copy-Item "$env:WinDir\System32\whoami.exe" T:\whoami.exe
|
||||
}
|
||||
|
||||
AfterAll {
|
||||
if ($IsWindows) {
|
||||
Dismount-DiskImage -ImagePath $vhdx
|
||||
Remove-Item $vhdx, $create_vhdx -Force
|
||||
}
|
||||
}
|
||||
|
||||
It "Should run 'whoami.exe' from FAT file system without error" -Skip:(!$IsWindows) {
|
||||
$expected = & "$env:WinDir\System32\whoami.exe"
|
||||
$result = T:\whoami.exe
|
||||
$result | Should -BeExactly $expected
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ Describe "Requires tests" -Tags "CI" {
|
|||
BeforeAll {
|
||||
$currentVersion = $PSVersionTable.PSVersion
|
||||
|
||||
$powerShellVersions = "1.0", "2.0", "3.0", "4.0", "5.0", "5.1", "6.0", "6.1", "6.2", "7.0", "7.1", "7.2", "7.3"
|
||||
$powerShellVersions = "1.0", "2.0", "3.0", "4.0", "5.0", "5.1", "6.0", "6.1", "6.2", "7.0", "7.1", "7.2"
|
||||
$latestVersion = [version]($powerShellVersions | Sort-Object -Descending -Top 1)
|
||||
$nonExistingMinor = "$($latestVersion.Major).$($latestVersion.Minor + 1)"
|
||||
$nonExistingMajor = "$($latestVersion.Major + 1).0"
|
||||
|
|
|
@ -187,20 +187,6 @@ Describe "Basic FileSystem Provider Tests" -Tags "CI" {
|
|||
$e.Exception | Should -BeOfType System.IO.IOException
|
||||
}
|
||||
|
||||
It 'Verify Move-Item fails for destination that is subdir of source with trailing: <trailingChar>' -TestCases @(
|
||||
@{ trailingChar = [System.IO.Path]::DirectorySeparatorChar }
|
||||
@{ trailingChar = [System.IO.Path]::AltDirectorySeparatorChar }
|
||||
@{ trailingChar = '' }
|
||||
) {
|
||||
param($trailingChar)
|
||||
|
||||
$dest = Join-Path -Path $TestDrive -ChildPath dest
|
||||
$null = New-item -ItemType Directory -Path $dest -Force -ErrorAction Stop
|
||||
$src = "$TestDrive$trailingChar"
|
||||
|
||||
{ Move-Item -Path $src -Destination $dest -ErrorAction Stop } | Should -Throw -ErrorId 'MoveItemArgumentError,Microsoft.PowerShell.Commands.MoveItemCommand'
|
||||
}
|
||||
|
||||
It "Verify Move-Item throws correct error for non-existent source" {
|
||||
{ Move-Item -Path /does/not/exist -Destination $testFile -ErrorAction Stop } | Should -Throw -ErrorId 'PathNotFound,Microsoft.PowerShell.Commands.MoveItemCommand'
|
||||
}
|
||||
|
|
|
@ -672,41 +672,6 @@ try
|
|||
}
|
||||
}
|
||||
|
||||
Describe "Add-Type in no language mode on locked down system" -Tags 'Feature','RequireAdminOnWindows' {
|
||||
|
||||
It "Verifies Add-Type fails in no language mode when in system lock down" {
|
||||
|
||||
# Create No-Language session, that allows Add-Type cmdlet
|
||||
$entry = [System.Management.Automation.Runspaces.SessionStateCmdletEntry]::new('Add-Type', [Microsoft.PowerShell.Commands.AddTypeCommand], $null)
|
||||
$iss = [initialsessionstate]::CreateRestricted([System.Management.Automation.SessionCapabilities]::Language)
|
||||
$iss.Commands.Add($entry)
|
||||
$rs = [runspacefactory]::CreateRunspace($iss)
|
||||
$rs.Open()
|
||||
|
||||
# Try to use Add-Type in No-Language session
|
||||
$ps = [powershell]::Create($rs)
|
||||
$ps.AddCommand('Add-Type').AddParameter('TypeDefinition', 'public class C1 { }')
|
||||
$expectedError = $null
|
||||
try
|
||||
{
|
||||
Invoke-LanguageModeTestingSupportCmdlet -SetLockdownMode
|
||||
$ps.Invoke()
|
||||
}
|
||||
catch
|
||||
{
|
||||
$expectedError = $_
|
||||
}
|
||||
finally
|
||||
{
|
||||
Invoke-LanguageModeTestingSupportCmdlet -RevertLockdownMode -EnableFullLanguageMode
|
||||
$rs.Dispose()
|
||||
$ps.Dispose()
|
||||
}
|
||||
|
||||
$expectedError.Exception.InnerException.ErrorRecord.FullyQualifiedErrorId | Should -BeExactly 'CannotDefineNewType,Microsoft.PowerShell.Commands.AddTypeCommand'
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Import-LocalizedData additional commands in constrained language" -Tags 'Feature','RequireAdminOnWindows' {
|
||||
|
||||
It "Verifies Import-LocalizedData disallows Add-Type in constrained language" {
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
# Copyright (c) Microsoft Corporation.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
$FeatureEnabled = $EnabledExperimentalFeatures.Contains('Microsoft.PowerShell.Utility.PSDebugRunspaceWithBreakpoints')
|
||||
|
||||
Describe "`Enable-RunspaceDebug -Breakpoint` Unit Tests - Feature-Enabled" -Tags "CI" {
|
||||
|
||||
BeforeAll {
|
||||
if (!$FeatureEnabled) {
|
||||
Write-Verbose "Test Suite Skipped. The test suite requires the experimental feature 'Microsoft.PowerShell.Utility.PSDebugRunspaceWithBreakpoints' to be enabled." -Verbose
|
||||
$originalDefaultParameterValues = $PSDefaultParameterValues.Clone()
|
||||
$PSDefaultParameterValues["it:skip"] = $true
|
||||
return
|
||||
}
|
||||
|
||||
#Set up script file 1
|
||||
$scriptFileName1 = Join-Path $TestDrive -ChildPath breakpointTestScript.ps1
|
||||
|
||||
$contents = @"
|
||||
function Hello
|
||||
{
|
||||
`$greeting = 'Hello, world!'
|
||||
write-host `$greeting
|
||||
}
|
||||
|
||||
function Goodbye
|
||||
{
|
||||
`$message = 'Good bye, cruel world!'
|
||||
write-host `$message
|
||||
}
|
||||
|
||||
Hello
|
||||
Goodbye
|
||||
"@
|
||||
|
||||
$contents > $scriptFileName1
|
||||
|
||||
# The breakpoints are created here because when the tests are run with the experimental feature off,
|
||||
# this command does not exist and the Pester tests fail to work
|
||||
$breakpointArr = @(
|
||||
New-PSBreakpoint -Line 12 $scriptFileName1
|
||||
New-PSBreakpoint -Line 13 $scriptFileName1
|
||||
)
|
||||
|
||||
$iss = [initialsessionstate]::CreateDefault2();
|
||||
$testRunspace1 = [runspacefactory]::CreateRunspace($iss)
|
||||
$testRunspace1.Name = "TestRunspaceDebuggerReset"
|
||||
$testRunspace1.Open()
|
||||
}
|
||||
|
||||
AfterAll {
|
||||
if (!$FeatureEnabled) {
|
||||
$global:PSDefaultParameterValues = $originalDefaultParameterValues
|
||||
return
|
||||
}
|
||||
|
||||
# Clean up
|
||||
$testRunspace1.Dispose()
|
||||
}
|
||||
|
||||
It "Can set breakpoints in the runspace - <Name>" -TestCases @(
|
||||
@{
|
||||
Name = "Current runspace"
|
||||
Runspace = [System.Management.Automation.Runspaces.Runspace]::DefaultRunspace
|
||||
Breakpoints = $breakpointArr
|
||||
},
|
||||
@{
|
||||
Name = $testRunspace1.Name
|
||||
Runspace = $testRunspace1
|
||||
Breakpoints = $breakpointArr
|
||||
}
|
||||
) {
|
||||
param($Runspace, $Breakpoints)
|
||||
Enable-RunspaceDebug -Breakpoint $Breakpoints -Runspace $Runspace
|
||||
$Runspace.Debugger.GetBreakpoints() | Should -Be @($Breakpoints)
|
||||
}
|
||||
}
|
|
@ -1670,10 +1670,10 @@ Describe "Json Bug fixes" -Tags "Feature" {
|
|||
|
||||
$testCases = @(
|
||||
@{
|
||||
Name = "ConvertTo-Json -Depth 101 throws ParameterArgumentValidationError when the user specifies a depth greater than 100."
|
||||
Name = "ConvertTo-Json -Depth 101 throws MaximumAllowedDepthReached when the user specifies a depth greater than 100."
|
||||
NumberOfElements = 10
|
||||
MaxDepth = 101
|
||||
FullyQualifiedErrorId = "ParameterArgumentValidationError,Microsoft.PowerShell.Commands.ConvertToJsonCommand"
|
||||
FullyQualifiedErrorId = "ReachedMaximumDepthAllowed,Microsoft.PowerShell.Commands.ConvertToJsonCommand"
|
||||
ShouldThrow = $true
|
||||
}
|
||||
@{
|
||||
|
|
|
@ -19,33 +19,15 @@ Describe "Tee-Object" -Tags "CI" {
|
|||
Remove-Item -Path $testfile -ErrorAction SilentlyContinue -Force
|
||||
}
|
||||
|
||||
It "Should return the output to the screen and to the variable" {
|
||||
Write-Output teeobjecttest1 | Tee-Object -Variable teeresults
|
||||
$teeresults | Should -BeExactly "teeobjecttest1"
|
||||
}
|
||||
It "Should return the output to the screen and to the variable" {
|
||||
Write-Output teeobjecttest1 | Tee-Object -Variable teeresults
|
||||
$teeresults | Should -BeExactly "teeobjecttest1"
|
||||
}
|
||||
|
||||
It "Should tee the output to a file" {
|
||||
$teefile = $testfile
|
||||
Write-Output teeobjecttest3 | Tee-Object $teefile
|
||||
Get-Content $teefile | Should -BeExactly "teeobjecttest3"
|
||||
}
|
||||
|
||||
$unicodeTestString = "A1£ę௸🤔"
|
||||
It "Should tee output to file using <encoding> encoding when selected" -TestCases @(
|
||||
@{ Encoding = "ascii"; Content = "teeobjecttest1"},
|
||||
@{ Encoding = "bigendianunicode"; Content = $unicodeTestString },
|
||||
@{ Encoding = "default"; Content = $unicodeTestString },
|
||||
@{ Encoding = "latin1"; Content = "téèõbjêcttëst1" },
|
||||
@{ Encoding = "unicode"; Content = $unicodeTestString },
|
||||
@{ Encoding = "utf32"; Content = $unicodeTestString },
|
||||
@{ Encoding = "utf7"; Content = $unicodeTestString},
|
||||
@{ Encoding = "utf8"; Content = $unicodeTestString}
|
||||
) {
|
||||
param($Encoding, $Content)
|
||||
$teefile = $testfile
|
||||
Write-Output -InputObject $content | Tee-Object -FilePath $teefile -Encoding $Encoding
|
||||
Get-Content -Path $teefile -Encoding $Encoding | Should -BeExactly $content
|
||||
Remove-Item -Path $teefile -ErrorAction SilentlyContinue
|
||||
It "Should tee the output to a file" {
|
||||
$teefile = $testfile
|
||||
Write-Output teeobjecttest3 | Tee-Object $teefile
|
||||
Get-Content $teefile | Should -BeExactly "teeobjecttest3"
|
||||
}
|
||||
|
||||
It "Parameter 'Encoding' should accept encoding" {
|
||||
|
|
|
@ -469,23 +469,6 @@ Describe "Invoke-WebRequest tests" -Tags "Feature", "RequireAdminOnWindows" {
|
|||
$result.Output.Headers.Connection | Should -Be "Close"
|
||||
}
|
||||
|
||||
It "Validate Invoke-WebRequest -HttpVersion '<httpVersion>'" -Skip:(!$IsWindows) -TestCases @(
|
||||
@{ httpVersion = '1.1'},
|
||||
@{ httpVersion = '2'}
|
||||
) {
|
||||
param($httpVersion)
|
||||
# Operation options
|
||||
$uri = Get-WebListenerUrl -Test 'Get' -Https
|
||||
$command = "Invoke-WebRequest -Uri $uri -HttpVersion $httpVersion -SkipCertificateCheck"
|
||||
|
||||
$result = ExecuteWebCommand -command $command
|
||||
ValidateResponse -response $result
|
||||
|
||||
# Validate response content
|
||||
$jsonContent = $result.Output.Content | ConvertFrom-Json
|
||||
$jsonContent.protocol | Should -Be "HTTP/$httpVersion"
|
||||
}
|
||||
|
||||
It "Validate Invoke-WebRequest -MaximumRedirection" {
|
||||
$uri = Get-WebListenerUrl -Test 'Redirect' -TestValue '3'
|
||||
$command = "Invoke-WebRequest -Uri '$uri' -MaximumRedirection 4"
|
||||
|
@ -1950,48 +1933,6 @@ Describe "Invoke-WebRequest tests" -Tags "Feature", "RequireAdminOnWindows" {
|
|||
$response = Invoke-WebRequest -Uri $dosUri
|
||||
$response.Images | Should -Not -BeNullOrEmpty
|
||||
}
|
||||
|
||||
$singleInputExpected = @(
|
||||
@{ Name = 'foo'; Value = 'bar' }
|
||||
)
|
||||
|
||||
It 'correctly parses input tag(s) for `<markup>`' -TestCases @(
|
||||
@{
|
||||
Markup = "<input name='foo' value='bar'>";
|
||||
ExpectedFields = $singleInputExpected
|
||||
},
|
||||
@{
|
||||
Markup = "<input name='foo' value='bar'/>";
|
||||
ExpectedFields = $singleInputExpected
|
||||
},
|
||||
@{
|
||||
Markup = "<input name='foo' value='bar'>baz</input>";
|
||||
ExpectedFields = $singleInputExpected
|
||||
}
|
||||
@{
|
||||
Markup = "<input name='item1' value='bar'><input name='item2' value='foo'><input name='item3'></input><input name='item4' value='fu'><input name='item5' value='bahr'/>";
|
||||
ExpectedFields = @(
|
||||
@{ Name = 'item1'; Value = 'bar'},
|
||||
@{ Name = 'item2'; Value = 'foo' },
|
||||
@{ Name = 'item3'; Value = $null },
|
||||
@{ Name = 'item4'; Value = 'fu' },
|
||||
@{ Name = 'item5'; Value = 'bahr' }
|
||||
)
|
||||
}
|
||||
) {
|
||||
param($markup, $expectedFields)
|
||||
$query = @{
|
||||
contenttype = 'text/html'
|
||||
body = "<html><body>${markup}</body></html>"
|
||||
}
|
||||
$uri = Get-WebListenerUrl -Test 'Response' -Query $query
|
||||
$response = Invoke-WebRequest -Uri $uri -UseBasicParsing
|
||||
$response.Error | Should -BeNullOrEmpty
|
||||
ForEach ($expectedField in $expectedFields) {
|
||||
$actualField = $response.InputFields.FindByName($expectedField.Name)
|
||||
$actualField.Value | Should -Be $expectedField.Value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Context "Denial of service" -Tag 'DOS' {
|
||||
|
@ -2135,21 +2076,6 @@ Describe "Invoke-RestMethod tests" -Tags "Feature", "RequireAdminOnWindows" {
|
|||
$result.Output.Headers.Connection | Should -Be "Close"
|
||||
}
|
||||
|
||||
It "Validate Invoke-RestMethod -HttpVersion '<httpVersion>'" -Skip:(!$IsWindows) -TestCases @(
|
||||
@{ httpVersion = '1.1'},
|
||||
@{ httpVersion = '2'}
|
||||
) {
|
||||
param($httpVersion)
|
||||
# Operation options
|
||||
$uri = Get-WebListenerUrl -Test 'Get' -Https
|
||||
$command = "Invoke-RestMethod -Uri $uri -HttpVersion $httpVersion -SkipCertificateCheck"
|
||||
|
||||
$result = ExecuteWebCommand -command $command
|
||||
|
||||
# Validate response
|
||||
$result.Output.protocol | Should -Be "HTTP/$httpVersion"
|
||||
}
|
||||
|
||||
It "Validate Invoke-RestMethod -MaximumRedirection" {
|
||||
$uri = Get-WebListenerUrl -Test 'Redirect' -TestValue '3'
|
||||
$command = "Invoke-RestMethod -Uri '$uri' -MaximumRedirection 4"
|
||||
|
|
|
@ -14,7 +14,6 @@ Describe 'Native command error handling tests' -Tags 'CI' {
|
|||
}
|
||||
|
||||
$exeName = $IsWindows ? 'testexe.exe' : 'testexe'
|
||||
$exePath = @(Get-Command $exeName -Type Application)[0].Path
|
||||
|
||||
$errorActionPrefTestCases = @(
|
||||
@{ ErrorActionPref = 'Stop' }
|
||||
|
@ -44,7 +43,7 @@ Describe 'Native command error handling tests' -Tags 'CI' {
|
|||
|
||||
$error.Count | Should -Be 1
|
||||
$error[0].FullyQualifiedErrorId | Should -BeExactly 'ProgramExitedWithNonZeroCode'
|
||||
$error[0].TargetObject | Should -BeExactly $exePath
|
||||
$error[0].TargetObject | Should -BeExactly $exeName
|
||||
}
|
||||
|
||||
It 'Non-zero exit code outputs a non-teminating error for $ErrorActionPreference = ''Continue''' {
|
||||
|
@ -53,7 +52,7 @@ Describe 'Native command error handling tests' -Tags 'CI' {
|
|||
$stderr = testexe -returncode 1 2>&1
|
||||
|
||||
$error[0].FullyQualifiedErrorId | Should -BeExactly 'ProgramExitedWithNonZeroCode'
|
||||
$error[0].TargetObject | Should -BeExactly $exePath
|
||||
$error[0].TargetObject | Should -BeExactly $exeName
|
||||
$stderr[1].Exception.Message | Should -BeExactly "Program `"$exeName`" ended with non-zero exit code: 1."
|
||||
}
|
||||
|
||||
|
@ -66,7 +65,7 @@ Describe 'Native command error handling tests' -Tags 'CI' {
|
|||
$stderr = testexe -returncode 1 2>&1
|
||||
|
||||
$error[0].FullyQualifiedErrorId | Should -BeExactly 'ProgramExitedWithNonZeroCode'
|
||||
$error[0].TargetObject | Should -BeExactly $exePath
|
||||
$error[0].TargetObject | Should -BeExactly $exeName
|
||||
$stderr[1].Exception.Message | Should -BeExactly "Program `"$exeName`" ended with non-zero exit code: 1."
|
||||
}
|
||||
|
||||
|
@ -77,7 +76,7 @@ Describe 'Native command error handling tests' -Tags 'CI' {
|
|||
|
||||
$error.Count | Should -Be 1
|
||||
$error[0].FullyQualifiedErrorId | Should -BeExactly 'ProgramExitedWithNonZeroCode'
|
||||
$error[0].TargetObject | Should -BeExactly $exePath
|
||||
$error[0].TargetObject | Should -BeExactly $exeName
|
||||
}
|
||||
|
||||
It 'Non-zero exit code does not generates an error record for $ErrorActionPreference = ''Ignore''' {
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Windows.Compatibility" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.Windows.Compatibility" Version="6.0.0-rc.1.21451.13" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -1,9 +1,13 @@
|
|||
// Copyright (c) Microsoft Corporation.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Http.Extensions;
|
||||
using mvc.Models;
|
||||
|
@ -28,13 +32,12 @@ namespace mvc.Controllers
|
|||
|
||||
Hashtable output = new Hashtable
|
||||
{
|
||||
{ "args", args },
|
||||
{ "headers", headers },
|
||||
{ "origin", Request.HttpContext.Connection.RemoteIpAddress.ToString() },
|
||||
{ "url", UriHelper.GetDisplayUrl(Request) },
|
||||
{ "query", Request.QueryString.ToUriComponent() },
|
||||
{ "method", Request.Method },
|
||||
{ "protocol", Request.Protocol }
|
||||
{"args", args},
|
||||
{"headers", headers},
|
||||
{"origin", Request.HttpContext.Connection.RemoteIpAddress.ToString()},
|
||||
{"url", UriHelper.GetDisplayUrl(Request)},
|
||||
{"query", Request.QueryString.ToUriComponent()},
|
||||
{"method", Request.Method}
|
||||
};
|
||||
|
||||
if (Request.HasFormContentType)
|
||||
|
|
|
@ -2,13 +2,18 @@
|
|||
// Licensed under the MIT License.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Security.Authentication;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Server.Kestrel.Https;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace mvc
|
||||
{
|
||||
|
@ -29,79 +34,52 @@ namespace mvc
|
|||
WebHost.CreateDefaultBuilder()
|
||||
.UseStartup<Startup>().UseKestrel(options =>
|
||||
{
|
||||
options.AllowSynchronousIO = true;
|
||||
|
||||
options.Listen(
|
||||
IPAddress.Loopback,
|
||||
int.Parse(args[2]),
|
||||
listenOptions =>
|
||||
{
|
||||
listenOptions.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1AndHttp2;
|
||||
});
|
||||
|
||||
options.Listen(
|
||||
IPAddress.Loopback,
|
||||
int.Parse(args[3]),
|
||||
listenOptions =>
|
||||
{
|
||||
var certificate = new X509Certificate2(args[0], args[1]);
|
||||
HttpsConnectionAdapterOptions httpsOption = new HttpsConnectionAdapterOptions();
|
||||
httpsOption.SslProtocols = SslProtocols.Tls12;
|
||||
httpsOption.ClientCertificateMode = ClientCertificateMode.AllowCertificate;
|
||||
httpsOption.ClientCertificateValidation = (inCertificate, inChain, inPolicy) => { return true; };
|
||||
httpsOption.CheckCertificateRevocation = false;
|
||||
httpsOption.ServerCertificate = certificate;
|
||||
listenOptions.UseHttps(httpsOption);
|
||||
listenOptions.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1AndHttp2;
|
||||
});
|
||||
|
||||
options.Listen(
|
||||
IPAddress.Loopback,
|
||||
int.Parse(args[4]),
|
||||
listenOptions =>
|
||||
{
|
||||
var certificate = new X509Certificate2(args[0], args[1]);
|
||||
HttpsConnectionAdapterOptions httpsOption = new HttpsConnectionAdapterOptions();
|
||||
httpsOption.SslProtocols = SslProtocols.Tls11;
|
||||
httpsOption.ClientCertificateMode = ClientCertificateMode.AllowCertificate;
|
||||
httpsOption.ClientCertificateValidation = (inCertificate, inChain, inPolicy) => { return true; };
|
||||
httpsOption.CheckCertificateRevocation = false;
|
||||
httpsOption.ServerCertificate = certificate;
|
||||
listenOptions.UseHttps(httpsOption);
|
||||
listenOptions.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1AndHttp2;
|
||||
});
|
||||
|
||||
options.Listen(
|
||||
IPAddress.Loopback,
|
||||
int.Parse(args[5]),
|
||||
listenOptions =>
|
||||
{
|
||||
var certificate = new X509Certificate2(args[0], args[1]);
|
||||
HttpsConnectionAdapterOptions httpsOption = new HttpsConnectionAdapterOptions();
|
||||
httpsOption.SslProtocols = SslProtocols.Tls;
|
||||
httpsOption.ClientCertificateMode = ClientCertificateMode.AllowCertificate;
|
||||
httpsOption.ClientCertificateValidation = (inCertificate, inChain, inPolicy) => { return true; };
|
||||
httpsOption.CheckCertificateRevocation = false;
|
||||
httpsOption.ServerCertificate = certificate;
|
||||
listenOptions.UseHttps(httpsOption);
|
||||
listenOptions.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1AndHttp2;
|
||||
});
|
||||
|
||||
options.Listen(
|
||||
IPAddress.Loopback,
|
||||
int.Parse(args[6]),
|
||||
listenOptions =>
|
||||
{
|
||||
var certificate = new X509Certificate2(args[0], args[1]);
|
||||
HttpsConnectionAdapterOptions httpsOption = new HttpsConnectionAdapterOptions();
|
||||
httpsOption.SslProtocols = SslProtocols.Tls13;
|
||||
httpsOption.ClientCertificateMode = ClientCertificateMode.AllowCertificate;
|
||||
httpsOption.ClientCertificateValidation = (inCertificate, inChain, inPolicy) => { return true; };
|
||||
httpsOption.CheckCertificateRevocation = false;
|
||||
httpsOption.ServerCertificate = certificate;
|
||||
listenOptions.UseHttps(httpsOption);
|
||||
listenOptions.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1AndHttp2;
|
||||
});
|
||||
options.AllowSynchronousIO = true;
|
||||
options.Listen(IPAddress.Loopback, int.Parse(args[2]));
|
||||
options.Listen(IPAddress.Loopback, int.Parse(args[3]), listenOptions =>
|
||||
{
|
||||
var certificate = new X509Certificate2(args[0], args[1]);
|
||||
HttpsConnectionAdapterOptions httpsOption = new HttpsConnectionAdapterOptions();
|
||||
httpsOption.SslProtocols = SslProtocols.Tls12;
|
||||
httpsOption.ClientCertificateMode = ClientCertificateMode.AllowCertificate;
|
||||
httpsOption.ClientCertificateValidation = (inCertificate, inChain, inPolicy) => { return true; };
|
||||
httpsOption.CheckCertificateRevocation = false;
|
||||
httpsOption.ServerCertificate = certificate;
|
||||
listenOptions.UseHttps(httpsOption);
|
||||
});
|
||||
options.Listen(IPAddress.Loopback, int.Parse(args[4]), listenOptions =>
|
||||
{
|
||||
var certificate = new X509Certificate2(args[0], args[1]);
|
||||
HttpsConnectionAdapterOptions httpsOption = new HttpsConnectionAdapterOptions();
|
||||
httpsOption.SslProtocols = SslProtocols.Tls11;
|
||||
httpsOption.ClientCertificateMode = ClientCertificateMode.AllowCertificate;
|
||||
httpsOption.ClientCertificateValidation = (inCertificate, inChain, inPolicy) => { return true; };
|
||||
httpsOption.CheckCertificateRevocation = false;
|
||||
httpsOption.ServerCertificate = certificate;
|
||||
listenOptions.UseHttps(httpsOption);
|
||||
});
|
||||
options.Listen(IPAddress.Loopback, int.Parse(args[5]), listenOptions =>
|
||||
{
|
||||
var certificate = new X509Certificate2(args[0], args[1]);
|
||||
HttpsConnectionAdapterOptions httpsOption = new HttpsConnectionAdapterOptions();
|
||||
httpsOption.SslProtocols = SslProtocols.Tls;
|
||||
httpsOption.ClientCertificateMode = ClientCertificateMode.AllowCertificate;
|
||||
httpsOption.ClientCertificateValidation = (inCertificate, inChain, inPolicy) => { return true; };
|
||||
httpsOption.CheckCertificateRevocation = false;
|
||||
httpsOption.ServerCertificate = certificate;
|
||||
listenOptions.UseHttps(httpsOption);
|
||||
});
|
||||
options.Listen(IPAddress.Loopback, int.Parse(args[6]), listenOptions =>
|
||||
{
|
||||
var certificate = new X509Certificate2(args[0], args[1]);
|
||||
HttpsConnectionAdapterOptions httpsOption = new HttpsConnectionAdapterOptions();
|
||||
httpsOption.SslProtocols = SslProtocols.Tls13;
|
||||
httpsOption.ClientCertificateMode = ClientCertificateMode.AllowCertificate;
|
||||
httpsOption.ClientCertificateValidation = (inCertificate, inChain, inPolicy) => { return true; };
|
||||
httpsOption.CheckCertificateRevocation = false;
|
||||
httpsOption.ServerCertificate = certificate;
|
||||
listenOptions.UseHttps(httpsOption);
|
||||
});
|
||||
})
|
||||
.Build();
|
||||
}
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.0" />
|
||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.0-rc.1.21452.15" />
|
||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0-rc.1.21451.13" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue