From 4ac87b4991142e8da86ae81cfefb57e6e1afce2a Mon Sep 17 00:00:00 2001 From: Yanbing Date: Mon, 6 Aug 2018 12:57:47 -0700 Subject: [PATCH] Upload unit test as artifacts (#337) Update vsts scripts to upload unit tests as artifacts --- contrib/win32/openssh/OpenSSH-build.ps1 | 10 +++- contrib/win32/openssh/OpenSSHBuildHelper.psm1 | 53 ++++++++++++++++++- contrib/win32/openssh/vstsbuild.ps1 | 10 ++-- .../Authorized_keys_fileperm.Tests.ps1 | 2 + 4 files changed, 69 insertions(+), 6 deletions(-) diff --git a/contrib/win32/openssh/OpenSSH-build.ps1 b/contrib/win32/openssh/OpenSSH-build.ps1 index 4b0693a0f..27c793ac1 100644 --- a/contrib/win32/openssh/OpenSSH-build.ps1 +++ b/contrib/win32/openssh/OpenSSH-build.ps1 @@ -14,18 +14,22 @@ param ( try { Push-location $repolocation - Import-Module "$repolocation\contrib\win32\openssh\OpenSSHBuildHelper.psm1" -Force + Import-Module "$repolocation\contrib\win32\openssh\OpenSSHBuildHelper.psm1" -Force + $UnitTestFolder = "Unittests-$NativeHostArch" $Bucket = "OpenSSH-$NativeHostArch" if($NativeHostArch -ieq 'x86') { $Bucket = "OpenSSH-Win32" + $UnitTestFolder = "Unittests-Win32" } elseif($NativeHostArch -ieq 'x64') { $Bucket = "OpenSSH-Win64" + $UnitTestFolder = "Unittests-Win64" } Write-Verbose "Start-OpenSSHBuild -NativeHostArch $NativeHostArch -Configuration $Configuration -NoOpenSSL:$NoOpenSSL -Onecore:$OneCore -Verbose " -Verbose Start-OpenSSHBuild -NativeHostArch $NativeHostArch -Configuration $Configuration -NoOpenSSL:$NoOpenSSL -Onecore:$OneCore -Verbose Write-Verbose "Start-OpenSSHPackage -NativeHostArch $NativeHostArch -Configuration $Configuration -NoOpenSSL:$NoOpenSSL -Onecore:$OneCore -DestinationPath $repolocation\$($Bucket)_symbols" -verbose Start-OpenSSHPackage -NativeHostArch $NativeHostArch -Configuration $Configuration -NoOpenSSL:$NoOpenSSL -Onecore:$OneCore -DestinationPath "$repolocation\$($Bucket)_symbols" + Copy-OpenSSHUnitTests -NativeHostArch $NativeHostArch -Configuration $Configuration -DestinationPath "$repolocation\UnitTests" if(-not (Test-Path $destination)) { New-Item -Path $destination -ItemType Directory -Force -ErrorAction Stop| Out-Null @@ -33,8 +37,10 @@ try #copy the build log $buildLog = Get-BuildLogFile -NativeHostArch $NativeHostArch -Configuration $Configuration -root $repolocation Write-Verbose "Copying $buildLog to $repolocation\$($Bucket)_symbols" -verbose - Copy-Item -Path $buildLog -Destination "$($Bucket)_symbols\" -Force -ErrorAction SilentlyContinue + Copy-Item -Path $buildLog -Destination "$($Bucket)_symbols\" -Force -ErrorAction SilentlyContinue + $unitTestPaths = Get-ChildItem "$repolocation\UnitTests\*" -Directory + Compress-Archive -path $unitTestPaths.FullName -DestinationPath "$repolocation\$($Bucket)_symbols\$UnitTestFolder" Compress-Archive -path "$repolocation\$($Bucket)_symbols\*" -DestinationPath "$destination\$($Bucket)_symbols" } finally diff --git a/contrib/win32/openssh/OpenSSHBuildHelper.psm1 b/contrib/win32/openssh/OpenSSHBuildHelper.psm1 index 8f27e38b3..a77ad5715 100644 --- a/contrib/win32/openssh/OpenSSHBuildHelper.psm1 +++ b/contrib/win32/openssh/OpenSSHBuildHelper.psm1 @@ -457,6 +457,57 @@ function Start-OpenSSHPackage Remove-Item $symbolsDir -Recurse -Force -ErrorAction SilentlyContinue } +function Copy-OpenSSHUnitTests +{ + [CmdletBinding(SupportsShouldProcess=$false)] + param + ( + [ValidateSet('x86', 'x64', 'arm64', 'arm')] + [string]$NativeHostArch = "x64", + + [ValidateSet('Debug', 'Release')] + [string]$Configuration = "Release", + + # Copy unittests to DestinationPath + [string]$DestinationPath = "" + ) + + [System.IO.DirectoryInfo] $repositoryRoot = Get-RepositoryRoot + $repositoryRoot = Get-Item -Path $repositoryRoot.FullName + $folderName = $NativeHostArch + if($NativeHostArch -ieq 'x86') + { + $folderName = "Win32" + } + $buildDir = Join-Path $repositoryRoot ("bin\" + $folderName + "\" + $Configuration) + $unittestsDir = Join-Path $buildDir "unittests" + $unitTestFolders = Get-ChildItem -Directory $buildDir\unittest-* + + if ($DestinationPath -ne "") { + if (-not (Test-Path $DestinationPath -PathType Container)) { + New-Item -ItemType Directory $DestinationPath -Force | Out-Null + } + foreach ($folder in $unitTestFolders) { + Copy-Item $folder.FullName $DestinationPath\$($folder.Name) -Recurse -Force + Write-BuildMsg -AsInfo -Message "Copied $($folder.FullName) to $DestinationPath\$($folder.Name)." + } + } + else { + if(Test-Path ($unittestsDir + '.zip') -PathType Leaf) { + Remove-Item ($unittestsDir + '.zip') -Force -ErrorAction SilentlyContinue + } + if(get-command Compress-Archive -ErrorAction SilentlyContinue) + { + Compress-Archive -Path $unitTestFolders.FullName -DestinationPath ($unittestsDir + '.zip') + Write-BuildMsg -AsInfo -Message "Packaged unittests - '$unittestsDir.zip'" + } + else + { + Write-BuildMsg -AsInfo -Message "Packaged unittests not compressed." + } + } +} + function Start-OpenSSHBuild { [CmdletBinding(SupportsShouldProcess=$false)] @@ -657,4 +708,4 @@ function Get-SolutionFile -Export-ModuleMember -Function Start-OpenSSHBuild, Get-BuildLogFile, Start-OpenSSHPackage +Export-ModuleMember -Function Start-OpenSSHBuild, Get-BuildLogFile, Start-OpenSSHPackage, Copy-OpenSSHUnitTests diff --git a/contrib/win32/openssh/vstsbuild.ps1 b/contrib/win32/openssh/vstsbuild.ps1 index 6c771a3a1..5e1762e44 100644 --- a/contrib/win32/openssh/vstsbuild.ps1 +++ b/contrib/win32/openssh/vstsbuild.ps1 @@ -72,7 +72,7 @@ try if($SignedFilesPath) { Write-Verbose "SignedFilesPath: $SignedFilesPath" -Verbose - $files = Get-ChildItem -Path $SignedFilesPath\* -Recurse -File | Select-Object -ExpandProperty FullName + $files = Get-ChildItem -Path $SignedFilesPath\* -File | Select-Object -ExpandProperty FullName #Count the remaining file not signed files. Get-ChildItem -Path $BuildPath\* -Recurse -File | % { $src = $_.FullName @@ -88,7 +88,7 @@ try else { #did not run codesign, so publish the plain binaries - $files = Get-ChildItem -Path $BuildPath\* -Recurse -File | Select-Object -ExpandProperty FullName + $files = Get-ChildItem -Path $BuildPath\* -File | Select-Object -ExpandProperty FullName } $Bucket = (Split-Path $BuildPath -Leaf).Replace("_symbols", "") @@ -111,6 +111,10 @@ try $artifactname = "$folderName-$leafFileName" Write-Host "##vso[artifact.upload containerfolder=$folderName;artifactname=$artifactname]$fileName" } + elseif($extension -ieq '.zip') + { + Write-Host "##vso[artifact.upload artifactname=$leafFileName]$fileName" + } else { $artifactname = "$Bucket-$leafFileName" @@ -132,4 +136,4 @@ catch finally{ Write-VstsTaskState exit 0 -} +} \ No newline at end of file diff --git a/regress/pesterTests/Authorized_keys_fileperm.Tests.ps1 b/regress/pesterTests/Authorized_keys_fileperm.Tests.ps1 index 915b89f1c..9bb838883 100644 --- a/regress/pesterTests/Authorized_keys_fileperm.Tests.ps1 +++ b/regress/pesterTests/Authorized_keys_fileperm.Tests.ps1 @@ -30,6 +30,7 @@ Describe "Tests for authorized_keys file permission" -Tags "CI" { #skip when the task schedular (*-ScheduledTask) cmdlets does not exist $ts = (get-command get-ScheduledTask -ErrorAction SilentlyContinue) $skip = $ts -eq $null + $platform = Get-Platform if(($platform -eq [PlatformType]::Windows) -and ([Environment]::OSVersion.Version.Major -le 6)) { #suppress the firewall blocking dialogue on win7 @@ -40,6 +41,7 @@ Describe "Tests for authorized_keys file permission" -Tags "CI" { AfterEach { $tI++ } AfterAll { + $platform = Get-Platform if(($platform -eq [PlatformType]::Windows) -and ($psversiontable.BuildVersion.Major -le 6)) { netsh advfirewall firewall delete rule name="sshd" program="$($OpenSSHTestInfo['OpenSSHBinPath'])\sshd.exe" protocol=any dir=in