Support TAEF testing in foundation pipeline (#3367)
* Initial commit * Test run * Update ProjectReunion-BuildFoundation.yml * Update ProjectReunion-BuildFoundation.yml * Update ProjectReunion-BuildFoundation.yml * Update ProjectReunion-BuildFoundation.yml * Update ProjectReunion-BuildFoundation.yml * Update ProjectReunion-BuildFoundation.yml * Learning yml * Update ProjectReunion-BuildFoundation.yml * Update WindowsAppSDK-RunTestsInPipeline-Job.yml * Update WindowsAppSDK-RunTests-Steps.yml * Update WindowsAppSDK-RunTests-Steps.yml * Update WindowsAppSDK-RunTests-Steps.yml * Update WindowsAppSDK-RunTests-Steps.yml * Run tests after the build phases * Add dependency * Update WindowsAppSDK-RunTestsInPipeline-Job.yml * Update WindowsAppSDK-RunTestsInPipeline-Job.yml * Update WindowsAppSDK-RunTestsInPipeline-Job.yml * Update WindowsAppSDK-RunTestsInPipeline-Job.yml * Update WindowsAppSDK-RunTestsInPipeline-Job.yml * Move some folders around * Trying 1 test * Update TestAll.ps1 * Update TestAll.ps1 * Update TestAll.ps1 * Update TestAll.ps1 * Install VSWhere * Update TestAll.ps1 * Give it internet * Update DevCheck.ps1 * Update TestAll.ps1 * Update TestAll.ps1 * Update WindowsAppSDK-RunTests-Steps.yml * Publish test stuff * Install the cert * Try to get TE.Service * Update WindowsAppSDK-RunTests-Steps.yml * Use Powershell task * Update WindowsAppSDK-RunTests-Steps.yml * Update WindowsAppSDK-RunTests-Steps.yml * Update WindowsAppSDK-RunTests-Steps.yml * Trust in root * Update WindowsAppSDK-RunTests-Steps.yml * Update WindowsAppSDK-RunTests-Steps.yml * Update WindowsAppSDK-RunTests-Steps.yml * Update WindowsAppSDK-RunTests-Steps.yml * Update WindowsAppSDK-RunTests-Steps.yml * Update WindowsAppSDK-RunTests-Steps.yml * Install dotnet/vcredist * Update ProjectReunion-BuildFoundation.yml * Update ProjectReunion-BuildFoundation.yml * Update ProjectReunion-BuildFoundation.yml * Update WindowsAppSDK-RunTests-Steps.yml * Install VCLibs desktop * Update ProjectReunion-BuildFoundation.yml * Make it a string duh * Testing test schema test * Loop through current plat/config * Cleanup scripts * Update ProjectReunion-BuildFoundation.yml * Address PR comments * Move displayInfo * Better practices in scripts * Update DownloadVCRedistInstaller.ps1 * Only get installers for x64/x86 * Check architectures * Addressing nits * Update TestAll.ps1 * Add testdef to ProjectTemplate * Add -List feature * Update description * Update DevCheck.ps1 * Match devcheck in develop * Enable installers for arm64
This commit is contained in:
Родитель
c1bf4da226
Коммит
d23991a0f0
|
@ -0,0 +1,5 @@
|
|||
@echo off
|
||||
|
||||
powershell -ExecutionPolicy Unrestricted -NoLogo -NoProfile -File %~dp0\TestAll.ps1 %*
|
||||
|
||||
exit /b %ERRORLEVEL%
|
|
@ -0,0 +1,132 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Run the TAEF dlls generated by WinAppSDK
|
||||
|
||||
.DESCRIPTION
|
||||
The TestAll script will take the folder input and look for subfolders containing a .testdef file. WinAppSDK
|
||||
components define a testdef with the following schema and runs the TAEF dll in the subfolder.
|
||||
|
||||
Example:
|
||||
{
|
||||
"Tests": [
|
||||
{
|
||||
"Description": "This module tests the push notifications component in WinAppSDK.",
|
||||
"Filename": "PushNotificationTests.dll",
|
||||
"Parameters": "",
|
||||
"Architectures": ["x86", "x64", "arm64"],
|
||||
"Status": "Enabled"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
.PARAMETER OutputFolder
|
||||
Set the base folder for the script to look for testdefs
|
||||
|
||||
.PARAMETER Platform
|
||||
Only run tests for the selected platform
|
||||
|
||||
.PARAMETER Configuration
|
||||
Only run tests the selected configuration
|
||||
|
||||
.PARAMETER List
|
||||
List the tests available in BuildOutput with their settings
|
||||
|
||||
.PARAMETER Test
|
||||
Runs the tests available in BuildOutput
|
||||
#>
|
||||
|
||||
param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]$OutputFolder,
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]$Platform,
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]$Configuration,
|
||||
[Parameter(Mandatory=$false)]
|
||||
[Switch]$Test,
|
||||
[Parameter(Mandatory=$false)]
|
||||
[Switch]$List
|
||||
)
|
||||
|
||||
$StartTime = Get-Date
|
||||
$lastexitcode = 0
|
||||
Set-StrictMode -Version 3.0
|
||||
|
||||
function Get-TaefTests
|
||||
{
|
||||
$configPlat = Join-Path $Configuration $Platform
|
||||
$outputFolderPath = Join-Path $OutputFolder $configPlat
|
||||
|
||||
$tests = @()
|
||||
foreach ($testdef in (Get-ChildItem -Recurse -Filter "*.testdef" $outputFolderPath))
|
||||
{
|
||||
$testJson = Get-Content -Raw $testdef.FullName | ConvertFrom-Json
|
||||
|
||||
$count = 0
|
||||
$baseId = $testdef.BaseName
|
||||
foreach ($testConfig in $testJson.Tests)
|
||||
{
|
||||
$id = $baseId + "-Test$count"
|
||||
$t = [PSCustomObject]@{}
|
||||
$t | Add-Member -MemberType NoteProperty -Name 'Test' -Value $id
|
||||
$t | Add-Member -MemberType NoteProperty -Name 'Description' -Value $testConfig.Description
|
||||
$t | Add-Member -MemberType NoteProperty -Name 'Filename' -Value $testConfig.Filename
|
||||
$t | Add-Member -MemberType NoteProperty -Name 'Parameters' -Value $testConfig.Parameters
|
||||
$t | Add-Member -MemberType NoteProperty -Name 'Architectures' -Value $testConfig.Architectures
|
||||
$t | Add-Member -MemberType NoteProperty -Name 'Status' -Value $testConfig.Status
|
||||
$t | Add-Member -MemberType NoteProperty -Name 'TestDef' -Value $testdef.FullName
|
||||
|
||||
$tests += $t
|
||||
$count += 1
|
||||
}
|
||||
}
|
||||
|
||||
$tests
|
||||
}
|
||||
|
||||
function List-TaefTests
|
||||
{
|
||||
$tests = Get-TaefTests
|
||||
$tests | Sort-Object -Property Test | Format-Table Test,Description,Filename,Parameters,Architectures,Status -AutoSize | Out-Default
|
||||
}
|
||||
|
||||
function Run-TaefTests
|
||||
{
|
||||
$tests = Get-TaefTests
|
||||
foreach ($test in $tests)
|
||||
{
|
||||
Write-Host "$($test.Filename) - $($test.Description)"
|
||||
$validPlatform = $test.Architectures.Contains($Platform)
|
||||
$testEnabled = $test.Status -eq "Enabled"
|
||||
if ($validPlatform -and $testEnabled)
|
||||
{
|
||||
$testFolder = Split-Path -parent $test.TestDef
|
||||
$tePath = Join-Path $testFolder "te.exe"
|
||||
$dllFile = Join-Path $testFolder $test.Filename
|
||||
& $tePath $dllFile $test.Parameters
|
||||
}
|
||||
elseif (-not($validPlatform))
|
||||
{
|
||||
Write-Host "$Platform not listed in supported architectures."
|
||||
}
|
||||
elseif (-not($testEnabled))
|
||||
{
|
||||
Write-Host "Test is disabled. Not running."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($List -eq $true)
|
||||
{
|
||||
$null = List-TaefTests
|
||||
}
|
||||
|
||||
if ($Test -eq $true)
|
||||
{
|
||||
Run-TaefTests
|
||||
}
|
||||
|
||||
$TotalTime = (Get-Date)-$StartTime
|
||||
$TotalMinutes = $TotalTime.Minutes
|
||||
$TotalSeconds = $TotalTime.Seconds
|
||||
Write-Host "Total Running Time: $TotalMinutes minutes and $TotalSeconds seconds"
|
|
@ -0,0 +1,143 @@
|
|||
parameters:
|
||||
buildPlatform: ''
|
||||
buildConfiguration: ''
|
||||
ImageName: ''
|
||||
TaefSelect: '*'
|
||||
BinaryCompatSwitch: ''
|
||||
testLocale: ''
|
||||
steps:
|
||||
# Download the BuildOutput from the Build stage(s).
|
||||
# We only bring down the relevant content for this build config (Debug/Release) & platform, to save some space and time.
|
||||
- task: DownloadBuildArtifacts@0
|
||||
displayName: 'Download: BuildOutput'
|
||||
inputs:
|
||||
artifactName: 'BuildOutput'
|
||||
downloadPath: $(Build.SourcesDirectory)\BuildOutput
|
||||
|
||||
# We only bring down the relevant content for this build config (Debug/Release) & platform, to save some space and time.
|
||||
- task: DownloadBuildArtifacts@0
|
||||
displayName: 'Download: Test dependencies'
|
||||
inputs:
|
||||
artifactName: 'packages'
|
||||
downloadPath: $(Build.SourcesDirectory)
|
||||
|
||||
# We only bring down the relevant content for this build config (Debug/Release) & platform, to save some space and time.
|
||||
- task: DownloadBuildArtifacts@0
|
||||
displayName: 'Download: WinAppSDK Test Certificate'
|
||||
inputs:
|
||||
artifactName: 'TestCert'
|
||||
downloadPath: $(Build.SourcesDirectory)\BuildOutput
|
||||
|
||||
- task: powerShell@2
|
||||
displayName: 'Enable developer mode'
|
||||
inputs:
|
||||
targetType: 'inline'
|
||||
script: |
|
||||
$RegistryKeyPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock"
|
||||
if (-not(Test-Path -Path $RegistryKeyPath))
|
||||
{
|
||||
New-Item -Path $RegistryKeyPath -ItemType Directory -Force
|
||||
}
|
||||
|
||||
New-ItemProperty -Path $RegistryKeyPath -Name AllowDevelopmentWithoutDevLicense -PropertyType DWORD -Value 1 -Force
|
||||
reg add HKLM\Software\Policies\Microsoft\Windows\Appx /v AllowDevelopmentWithoutDevLicense /t REG_DWORD /d 1 /f
|
||||
|
||||
- task: powerShell@2
|
||||
displayName: 'Install certificates in payload'
|
||||
inputs:
|
||||
targetType: 'inline'
|
||||
script: |
|
||||
foreach($cerFile in (Get-ChildItem -Path '$(Build.SourcesDirectory)\BuildOutput' '*.cer' -Recurse))
|
||||
{
|
||||
Write-Host "Adding cert $($cerFile.FullName)"
|
||||
certutil -addstore TrustedPeople $($cerFile.FullName)
|
||||
certutil -addstore root $($cerFile.FullName)
|
||||
}
|
||||
|
||||
- task: powerShell@2
|
||||
displayName: 'Run dotnet installer'
|
||||
inputs:
|
||||
targetType: 'inline'
|
||||
script: |
|
||||
$(Build.SourcesDirectory)\packages\dotnet-windowsdesktop-runtime-installer.exe /quiet /install /norestart
|
||||
|
||||
- task: powerShell@2
|
||||
displayName: 'Install VCLibs.Desktop'
|
||||
inputs:
|
||||
targetType: 'inline'
|
||||
script: |
|
||||
$package = "$(Build.SourcesDirectory)\packages\Microsoft.VCLibs.${{ parameters.buildPlatform }}.14.00.Desktop.appx"
|
||||
Add-AppxPackage $package -ErrorAction SilentlyContinue
|
||||
|
||||
- task: powerShell@2
|
||||
displayName: 'Install vc_redist'
|
||||
inputs:
|
||||
targetType: 'inline'
|
||||
script: |
|
||||
$(Build.SourcesDirectory)\packages\vc_redist.${{ parameters.buildPlatform }}.exe /quiet /install /norestart
|
||||
|
||||
- task: powershell@2
|
||||
displayName: 'Run TE.Service'
|
||||
inputs:
|
||||
targetType: filePath
|
||||
filePath: DevCheck.ps1
|
||||
arguments: -NoInteractive -Offline -Verbose -CheckTAEFService
|
||||
workingDirectory: '$(Build.SourcesDirectory)'
|
||||
|
||||
- task: VisualStudioTestPlatformInstaller@1
|
||||
inputs:
|
||||
versionSelector: latestStable
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Add test locale to User Language List
|
||||
inputs:
|
||||
targetType: 'inline'
|
||||
script: |
|
||||
$langToAdd = "${{ parameters.testLocale }}"
|
||||
|
||||
Write-Host "Adding $langToAdd to user language list"
|
||||
$langList = Get-WinUserLanguageList
|
||||
$langList.Insert(0, $langToAdd)
|
||||
Set-WinUserLanguageList -LanguageList $langList -Force
|
||||
|
||||
Write-Host "Get-WinUserLanguageList:"
|
||||
Get-WinUserLanguageList
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Display OS build/version/language info
|
||||
inputs:
|
||||
targetType: 'inline'
|
||||
script: |
|
||||
Get-Item -Path 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion'
|
||||
Write-Host (reg query "HKLM\SYSTEM\CurrentControlSet\Control\MUI" /s)
|
||||
Write-Host (reg query "HKLM\SYSTEM\CurrentControlSet\Control\Nls" /s)
|
||||
Write-Host (reg query "HKCU\Control Panel\International" /s)
|
||||
|
||||
Write-Host "Get-WmiObject -Class Win32_OperatingSystem"
|
||||
$OSInfo = Get-WmiObject -Class Win32_OperatingSystem
|
||||
$languagePacks = $OSInfo.MUILanguages
|
||||
$languagePacks
|
||||
|
||||
Write-Host "dism /online /Get-Intl"
|
||||
dism /online /Get-Intl
|
||||
|
||||
Write-Host "Get-WinUserLanguageList"
|
||||
Get-WinUserLanguageList
|
||||
|
||||
Write-Host "Get-WinUILanguageOverride"
|
||||
Get-WinUILanguageOverride
|
||||
|
||||
Write-Host "Get-WinSystemLocale"
|
||||
Get-WinSystemLocale
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: 'Run TAEF Tests'
|
||||
inputs:
|
||||
filePath: 'TestAll.ps1'
|
||||
arguments: >
|
||||
-OutputFolder "$(Build.SourcesDirectory)\BuildOutput\BuildOutput"
|
||||
-Platform "${{ parameters.buildPlatform }}"
|
||||
-Configuration "${{ parameters.buildConfiguration }}"
|
||||
-Test
|
||||
-List
|
||||
|
|
@ -0,0 +1,120 @@
|
|||
# This runs the integration tests directly in the pipeline on the images hosted by the 'WinAppSDK-Test-Pool'.
|
||||
# This pool is a 1ES Hosted Pool with custom images, which lets us run tests on builds beyond what is
|
||||
# supported by Helix or the Azure DevOps Microsoft hosted agents. In case of arm64, we use the
|
||||
# 'WinAppSDK-Test-Pool-Arm64' pool instead, and use parameter isArm64Platfrom to drive pool selection.
|
||||
|
||||
parameters:
|
||||
- name: jobName
|
||||
type: string
|
||||
default: PipelineTests
|
||||
- name: isArm64Platfrom
|
||||
type: boolean
|
||||
default: false
|
||||
- name: dependsOn
|
||||
type: object
|
||||
default:
|
||||
- ''
|
||||
|
||||
jobs:
|
||||
- job: ${{ parameters.jobName }}
|
||||
dependsOn: ${{ parameters.dependsOn }}
|
||||
strategy:
|
||||
# Debug/Release buildConfiguration below refers to the build of the tests/apps. The OS image bits are always Release build.
|
||||
matrix:
|
||||
# The test matrix for x64 is currently larger; this is where we exercise most variations.
|
||||
${{ if not( parameters.isArm64Platfrom ) }}:
|
||||
RS5_x86fre:
|
||||
imageName: Windows.10.Enterprise.RS5
|
||||
buildPlatform: x86
|
||||
buildConfiguration: release
|
||||
testLocale: en-US
|
||||
19H2_de-DE_x64fre:
|
||||
imageName: Windows.10.Enterprise.19H2.de-DE
|
||||
buildPlatform: x86
|
||||
buildConfiguration: release
|
||||
testLocale: de-DE
|
||||
20H2_x64fre:
|
||||
imageName: Windows.10.Enterprise.20H2
|
||||
buildPlatform: x64
|
||||
buildConfiguration: release
|
||||
testLocale: en-US
|
||||
20H2_fr-FR_x64fre:
|
||||
imageName: Windows.10.Enterprise.20H2.fr-FR
|
||||
buildPlatform: x64
|
||||
buildConfiguration: release
|
||||
testLocale: fr-FR
|
||||
20H2_zh-CN_x86fre:
|
||||
imageName: Windows.10.Enterprise.20H2.zh-CN
|
||||
buildPlatform: x86
|
||||
buildConfiguration: release
|
||||
testLocale: zh-CN
|
||||
20H2_ja-JP_x64fre:
|
||||
imageName: Windows.10.Enterprise.20H2.ja-JP
|
||||
buildPlatform: x64
|
||||
buildConfiguration: release
|
||||
testLocale: ja-JP
|
||||
21H1_x64fre:
|
||||
imageName: Windows.10.Enterprise.21h1
|
||||
buildPlatform: x64
|
||||
buildConfiguration: release
|
||||
testLocale: en-US
|
||||
21H2_MS_x64fre:
|
||||
imageName: Windows.11.Enterprise.MultiSession.21h2
|
||||
buildPlatform: x64
|
||||
buildConfiguration: release
|
||||
testLocale: en-US
|
||||
22H2_x86fre:
|
||||
imageName: Windows.10.Enterprise.22h2
|
||||
buildPlatform: x86
|
||||
buildConfiguration: release
|
||||
testLocale: en-US
|
||||
co_refresh_x64fre:
|
||||
imageName: co_refresh
|
||||
buildPlatform: x64
|
||||
buildConfiguration: release
|
||||
testLocale: en-US
|
||||
rs_prerelease_x64fre:
|
||||
imageName: rs_prerelease
|
||||
buildPlatform: x64
|
||||
buildConfiguration: release
|
||||
testLocale: en-US
|
||||
Server22_DC_x64fre:
|
||||
imageName: Windows.Server.2022.DataCenter.WestUS3
|
||||
buildPlatform: x64
|
||||
buildConfiguration: release
|
||||
testLocale: en-US
|
||||
# The arm64 test matrix starts here.
|
||||
${{ if parameters.isArm64Platfrom }}:
|
||||
Win11_Professional_arm64fre:
|
||||
imageName: Windows.11.Professional.Arm64
|
||||
buildPlatform: arm64
|
||||
buildConfiguration: release
|
||||
testLocale: en-US
|
||||
Win11_Enterprise_arm64fre:
|
||||
imageName: Windows.11.Enterprise.arm64
|
||||
buildPlatform: arm64
|
||||
buildConfiguration: release
|
||||
testLocale: en-US
|
||||
Server22_DC_arm64fre:
|
||||
imageName: Windows.11.Server2022.DataCenter.arm64
|
||||
buildPlatform: arm64
|
||||
buildConfiguration: release
|
||||
testLocale: en-US
|
||||
pool:
|
||||
# arm64 and amd64 use different pools because their VM types are different.
|
||||
${{ if not( parameters.isArm64Platfrom ) }}:
|
||||
name: 'WinAppSDK-Test-Pool'
|
||||
demands: ImageOverride -equals $(imageName)
|
||||
${{ if parameters.isArm64Platfrom }}:
|
||||
name: 'WinAppSDK-Test-Pool-Arm64'
|
||||
demands: ImageOverride -equals $(imageName)
|
||||
timeoutInMinutes: 60
|
||||
variables:
|
||||
testPayloadArtifactDir: $(Build.SourcesDirectory)\BuildOutput\$(buildConfiguration)\$(buildPlatform)
|
||||
steps:
|
||||
- template: WindowsAppSDK-RunTests-Steps.yml
|
||||
parameters:
|
||||
buildPlatform: $(buildPlatform)
|
||||
buildConfiguration: $(buildConfiguration)
|
||||
testLocale: $(testLocale)
|
||||
ImageName: $(imageName)
|
|
@ -38,6 +38,30 @@ steps:
|
|||
-ProductMajor "$(major)"
|
||||
-ProductMinor "$(minor)"
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: 'Download dotnet installer'
|
||||
condition: or(eq(variables['buildPlatform'], 'x86'), eq(variables['buildPlatform'], 'x64'), eq(variables['buildPlatform'], 'arm64'))
|
||||
inputs:
|
||||
targetType: filePath
|
||||
filePath: '$(Build.SourcesDirectory)\build\scripts\DownloadDotNetRuntimeInstaller.ps1'
|
||||
arguments: -Platform "$(buildPlatform)" -OutputDirectory "$(build.SourcesDirectory)\packages"
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: 'Download vcredist installer'
|
||||
condition: or(eq(variables['buildPlatform'], 'x86'), eq(variables['buildPlatform'], 'x64'), eq(variables['buildPlatform'], 'arm64'))
|
||||
inputs:
|
||||
targetType: filePath
|
||||
filePath: '$(Build.SourcesDirectory)\build\scripts\DownloadVCRedistInstaller.ps1'
|
||||
arguments: -Platform "$(buildPlatform)" -OutputDirectory "$(build.SourcesDirectory)\packages"
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: 'Download desktop bridge CRT'
|
||||
condition: or(eq(variables['buildPlatform'], 'x86'), eq(variables['buildPlatform'], 'x64'), eq(variables['buildPlatform'], 'arm64'))
|
||||
inputs:
|
||||
targetType: filePath
|
||||
filePath: '$(Build.SourcesDirectory)\build\scripts\DownloadVCLibsDesktop.ps1'
|
||||
arguments: -Platform "$(buildPlatform)" -OutputDirectory "$(build.SourcesDirectory)\packages"
|
||||
|
||||
- task: powershell@2
|
||||
displayName: 'Create DynamicDependencies TerminalVelocity features'
|
||||
inputs:
|
||||
|
|
|
@ -148,6 +148,18 @@ jobs:
|
|||
PathtoPublish: '$(build.SourcesDirectory)\BuildOutput'
|
||||
artifactName: 'BuildOutput'
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish artifact: Test dependencies'
|
||||
inputs:
|
||||
PathtoPublish: '$(build.SourcesDirectory)\packages'
|
||||
artifactName: 'packages'
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish artifact: Test cert'
|
||||
inputs:
|
||||
PathtoPublish: '$(build.SourcesDirectory)\.user'
|
||||
artifactName: 'TestCert'
|
||||
|
||||
- job: BuildAnyCPU
|
||||
# For now, this job just builds Microsoft.WindowsAppRuntime.Bootstrap.Net.dll in AnyCPU
|
||||
# Can be expanded to add any other binary as needed
|
||||
|
@ -263,6 +275,23 @@ jobs:
|
|||
- BuildAndTestMRT
|
||||
condition: eq(variables['Build.SourceBranch'], 'refs/heads/develop')
|
||||
|
||||
# Arm64 uses a different VM type than x64, thus requiring them to be in different
|
||||
# pools, hence, we spilt the two scenarios into separate jobs.
|
||||
- template: AzurePipelinesTemplates\WindowsAppSDK-RunTestsInPipeline-Job.yml
|
||||
parameters:
|
||||
jobName: PipelineTestsX64
|
||||
isArm64Platfrom: false
|
||||
dependsOn:
|
||||
- Build
|
||||
- BuildAndTestMRT
|
||||
- template: AzurePipelinesTemplates\WindowsAppSDK-RunTestsInPipeline-Job.yml
|
||||
parameters:
|
||||
jobName: PipelineTestsArm64
|
||||
isArm64Platfrom: true
|
||||
dependsOn:
|
||||
- Build
|
||||
- BuildAndTestMRT
|
||||
|
||||
- job: StageAndPack
|
||||
pool: ProjectReunionESPool-2022
|
||||
timeoutInMinutes: 120
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]$Platform,
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]$OutputDirectory
|
||||
)
|
||||
|
||||
$ProgressPreference = "SilentlyContinue"
|
||||
$ErrorActionPreference = "Stop"
|
||||
Set-StrictMode -Version 3.0
|
||||
|
||||
$outputPath = Join-Path $OutputDirectory "dotnet-windowsdesktop-runtime-installer.exe"
|
||||
if(-not(Test-Path $OutputDirectory))
|
||||
{
|
||||
$null = New-Item -ItemType Directory -Path $OutputDirectory
|
||||
}
|
||||
|
||||
# Find direct download links at https://dotnet.microsoft.com/download/dotnet/5.0
|
||||
$downloadurlx86 = "https://download.visualstudio.microsoft.com/download/pr/c089205d-4f58-4f8d-ad84-c92eaf2f3411/5cd3f9b3bd089c09df14dbbfb64124a4/windowsdesktop-runtime-5.0.5-win-x86.exe"
|
||||
$downloadurlx64 = "https://download.visualstudio.microsoft.com/download/pr/c1ef0b3f-9663-4fc5-85eb-4a9cadacdb87/52b890f91e6bd4350d29d2482038df1c/windowsdesktop-runtime-5.0.5-win-x64.exe"
|
||||
$downloadurlArm64 = "https://download.visualstudio.microsoft.com/download/pr/1201ea91-3344-4745-9143-ad4f7eb0a88d/f04108de4f95817aa1b832061a467be0/dotnet-runtime-5.0.5-win-arm64.exe"
|
||||
|
||||
if($Platform -eq "x86")
|
||||
{
|
||||
$downloadurl = $downloadurlx86
|
||||
}
|
||||
elseif($Platform -eq "x64")
|
||||
{
|
||||
$downloadurl = $downloadurlx64
|
||||
}
|
||||
elseif($Platform -eq "arm64")
|
||||
{
|
||||
$downloadurl = $downloadurlArm64
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "dotnet Desktop runtime not available for arch $Platform"
|
||||
return
|
||||
}
|
||||
|
||||
if(-not(Test-Path $outputPath))
|
||||
{
|
||||
Write-Host "Downloading $downloadurl to $outputPath"
|
||||
Invoke-WebRequest $downloadurl -OutFile $outputPath
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "The file '$outputPath' already exists. Skipping download."
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]$Platform,
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]$OutputDirectory
|
||||
)
|
||||
|
||||
$ProgressPreference = "SilentlyContinue"
|
||||
$ErrorActionPreference = "Stop"
|
||||
Set-StrictMode -Version 3.0
|
||||
|
||||
$outputPath = Join-Path $OutputDirectory "Microsoft.VCLibs.$Platform.14.00.Desktop.appx"
|
||||
if(-not(Test-Path $OutputDirectory))
|
||||
{
|
||||
$null = New-Item -ItemType Directory -Path $OutputDirectory
|
||||
}
|
||||
|
||||
# Find direct download links at https://learn.microsoft.com/en-us/troubleshoot/developer/visualstudio/cpp/libraries/c-runtime-packages-desktop-bridge
|
||||
$downloadurl = "https://aka.ms/Microsoft.VCLibs.$Platform.14.00.Desktop.appx"
|
||||
|
||||
if(-not(Test-Path $outputPath))
|
||||
{
|
||||
Write-Host "Downloading $downloadurl to $outputPath"
|
||||
Invoke-WebRequest $downloadurl -OutFile $outputPath
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "The file '$outputPath' already exists. Skipping download."
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]$Platform,
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]$OutputDirectory
|
||||
)
|
||||
|
||||
$ProgressPreference = "SilentlyContinue"
|
||||
$ErrorActionPreference = "Stop"
|
||||
Set-StrictMode -Version 3.0
|
||||
|
||||
$outputPath = Join-Path $OutputDirectory "vc_redist.$Platform.exe"
|
||||
if(-not(Test-Path $OutputDirectory))
|
||||
{
|
||||
$null = New-Item -ItemType Directory -Path $OutputDirectory
|
||||
}
|
||||
|
||||
# Find direct download links at https://learn.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist?view=msvc-170
|
||||
$downloadurl = "https://aka.ms/vs/17/release/vc_redist.$Platform.exe"
|
||||
|
||||
if(-not(Test-Path $outputPath))
|
||||
{
|
||||
Write-Host "Downloading $downloadurl to $outputPath"
|
||||
Invoke-WebRequest $downloadurl -OutFile $outputPath
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "The file '$outputPath' already exists. Skipping download."
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"Tests": [
|
||||
{
|
||||
"Description": "Test unpackaged scenarios for PushNotifications",
|
||||
"Filename": "PushNotificationTests.dll",
|
||||
"Parameters": "/name:UnpackagedTests#metadataSet1::VerifyForegroundHandlerFails",
|
||||
"Architectures": ["x64"],
|
||||
"Status": "Disabled"
|
||||
},
|
||||
{
|
||||
"Description": "Test packaged scenarios for PushNotifications",
|
||||
"Filename": "PushNotificationTests.dll",
|
||||
"Parameters": "/name:PackagedTests#metadataSet1::VerifyForegroundHandlerFails",
|
||||
"Architectures": ["x64"],
|
||||
"Status": "Disabled"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -122,6 +122,7 @@
|
|||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
<None Include="PushNotificationTests.testmd" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.Windows.PushNotifications">
|
||||
|
@ -151,6 +152,7 @@
|
|||
<Target Name="CopyFiles" AfterTargets="AfterBuild">
|
||||
<Copy SourceFiles="$(OutDir)\..\WindowsAppRuntime_BootstrapDLL\Microsoft.WindowsAppRuntime.Bootstrap.dll" DestinationFolder="$(OutDir)" />
|
||||
<Copy SourceFiles="$(OutDir)\..\WindowsAppRuntime_DLL\Microsoft.WindowsAppRuntime.dll" DestinationFolder="$(OutDir)" />
|
||||
<Copy SourceFiles="PushNotificationTests.testdef" DestinationFolder="$(OutDir)" />
|
||||
</Target>
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
|
|
|
@ -50,6 +50,7 @@
|
|||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
<None Include="PushNotificationTests.testmd" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CopyFileToFolders Include="$(TestPkgOutputFile)" />
|
||||
|
@ -61,4 +62,7 @@
|
|||
<Filter>Source Files</Filter>
|
||||
</Xml>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Natvis Include="$(MSBuildThisFileDirectory)..\..\natvis\wil.natvis" />
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -123,6 +123,9 @@
|
|||
<IsWinMDFile>true</IsWinMDFile>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<Target Name="CopyFiles" AfterTargets="AfterBuild">
|
||||
<Copy SourceFiles="Test.testdef" DestinationFolder="$(OutDir)" />
|
||||
</Target>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="$(RepoRoot)\dev\WindowsAppRuntime_BootstrapDLL\WindowsAppRuntime_BootstrapDLL.vcxproj">
|
||||
<Project>{f76b776e-86f5-48c5-8fc7-d2795ecc9746}</Project>
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"Tests": [
|
||||
{
|
||||
"Description": "PurojekutoTenpuret tests for feature Tokucho",
|
||||
"Filename": "PurojekutoTenpuret.dll",
|
||||
"Parameters": "",
|
||||
"Architectures": ["x86", "x64", "arm64"],
|
||||
"Status": "Enabled",
|
||||
}
|
||||
]
|
||||
}
|
Загрузка…
Ссылка в новой задаче