Skip to content

Commit 8b86678

Browse files
authored
Expand test suite (#787)
* add -T/-t pester tests * configure default shell for scp and sftp * fix syntax * fix scp test * refactor default shell tests * fix typos * fix ssh tests * fix sftp tests * fix ssh test * move force pty test to separate pester test file * fix initialization * Update SSH.Tests.ps1 * fix skip parameter * move duplicated function to common module file * Update CommonUtils.psm1 * fix typo * revert spacing for clearer diff * fix spacing
1 parent 935a911 commit 8b86678

File tree

6 files changed

+385
-155
lines changed

6 files changed

+385
-155
lines changed

contrib/win32/openssh/AzDOBuildTools/AzDOBuildTools.psm1

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -218,31 +218,9 @@ function Invoke-OpenSSHTests
218218
# Run all E2E tests.
219219
Write-Verbose -Verbose -Message "Running E2E Tests..."
220220
Set-OpenSSHTestEnvironment -Confirm:$false
221-
Invoke-OpenSSHE2ETest
222-
if (($OpenSSHTestInfo -eq $null) -or (-not (Test-Path $OpenSSHTestInfo["E2ETestResultsFile"])))
223-
{
224-
Write-BuildMessage -Message "Test result file $OpenSSHTestInfo["E2ETestResultsFile"] not found after tests." -Category Error
225-
$AllTestsPassed = $false
226-
}
227-
else
228-
{
229-
$xml = [xml](Get-Content $OpenSSHTestInfo["E2ETestResultsFile"] | out-string)
230-
if ([int]$xml.'test-results'.failures -gt 0)
231-
{
232-
$errorMessage = "$($xml.'test-results'.failures) E2E tests in regress\pesterTests failed. Detail test log is at $($OpenSSHTestInfo["E2ETestResultsFile"])."
233-
Write-BuildMessage -Message $errorMessage -Category Error
234-
$AllTestsPassed = $false
235-
}
236-
else
237-
{
238-
Write-BuildMessage -Message "All E2E tests passed!" -Category Information
239-
}
240-
}
241-
242-
# Bash tests.
243-
Write-Verbose -Verbose -Message "Running Bash Tests..."
244221

245222
# Ensure CygWin is installed, and install from Chocolatey if needed.
223+
# used for bash tests and default shell pester tests
246224
$cygwinInstalled = $true
247225
$cygwinInstallLocation = "$env:SystemDrive/cygwin"
248226
if (! (Test-Path -Path "$cygwinInstallLocation/bin/sh.exe"))
@@ -269,9 +247,33 @@ function Invoke-OpenSSHTests
269247
}
270248
}
271249

272-
# Run UNIX bash tests.
273250
if ($cygwinInstalled)
274251
{
252+
Invoke-OpenSSHE2ETest
253+
if (($OpenSSHTestInfo -eq $null) -or (-not (Test-Path $OpenSSHTestInfo["E2ETestResultsFile"])))
254+
{
255+
Write-BuildMessage -Message "Test result file $OpenSSHTestInfo["E2ETestResultsFile"] not found after tests." -Category Error
256+
$AllTestsPassed = $false
257+
}
258+
else
259+
{
260+
$xml = [xml](Get-Content $OpenSSHTestInfo["E2ETestResultsFile"] | out-string)
261+
if ([int]$xml.'test-results'.failures -gt 0)
262+
{
263+
$errorMessage = "$($xml.'test-results'.failures) E2E tests in regress\pesterTests failed. Detail test log is at $($OpenSSHTestInfo["E2ETestResultsFile"])."
264+
Write-BuildMessage -Message $errorMessage -Category Error
265+
$AllTestsPassed = $false
266+
}
267+
else
268+
{
269+
Write-BuildMessage -Message "All E2E tests passed!" -Category Information
270+
}
271+
}
272+
273+
# Bash tests.
274+
Write-Verbose -Verbose -Message "Running Bash Tests..."
275+
276+
# Run UNIX bash tests.
275277
Write-Verbose -Verbose -Message "Starting Bash Tests..."
276278
Invoke-OpenSSHBashTests
277279
if (-not $Global:bash_tests_summary)

regress/pesterTests/CommonUtils.psm1

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Add-Type -TypeDefinition @"
1010
"@
1111

1212
function Set-FilePermission
13-
{
13+
{
1414
param(
1515
[parameter(Mandatory=$true)]
1616
[string]$FilePath,
@@ -20,7 +20,7 @@ function Set-FilePermission
2020
[System.Security.AccessControl.AccessControlType] $AccessType = "Allow",
2121
[ValidateSet("Add", "Delete")]
2222
[string]$Action = "Add"
23-
)
23+
)
2424

2525
$myACL = Get-ACL $FilePath
2626
$account = Get-UserAccount -UserSid $UserSid
@@ -30,9 +30,9 @@ function Set-FilePermission
3030
Enable-Privilege SeRestorePrivilege | out-null
3131
Set-Acl -Path $FilePath -AclObject $myACL
3232
$myACL = Get-ACL $FilePath
33-
34-
if($myACL.Access)
35-
{
33+
34+
if($myACL.Access)
35+
{
3636
$myACL.Access | % {
3737
if($_.IdentityReference.Equals($account))
3838
{
@@ -43,18 +43,18 @@ function Set-FilePermission
4343
Set-Acl -Path $FilePath -AclObject $myACL
4444
$myACL = Get-ACL $FilePath
4545
}
46-
46+
4747
if(-not ($myACL.RemoveAccessRule($_)))
4848
{
4949
throw "failed to remove access of $($_.IdentityReference) rule in setup "
5050
}
5151
}
5252
}
53-
}
53+
}
5454
}
5555
elseif($Perms)
5656
{
57-
$Perms | % {
57+
$Perms | % {
5858
$userACE = New-Object System.Security.AccessControl.FileSystemAccessRule `
5959
($UserSid, $_, "None", "None", $AccessType)
6060
$myACL.AddAccessRule($userACE)
@@ -64,7 +64,7 @@ function Set-FilePermission
6464
Set-Acl -Path $FilePath -AclObject $myACL -confirm:$false
6565
}
6666

67-
function Add-PasswordSetting
67+
function Add-PasswordSetting
6868
{
6969
param([string] $pass)
7070
if ($IsWindows) {
@@ -86,17 +86,17 @@ function Remove-PasswordSetting
8686

8787
$Taskfolder = "\OpenSSHTestTasks\"
8888
$Taskname = "StartTestDaemon"
89-
89+
9090
function Start-SSHDTestDaemon
9191
{
9292
param(
9393
[string] $Arguments,
9494
[string] $Workdir,
95-
[string] $Port)
95+
[string] $Port)
9696

9797
$Arguments += " -p $Port"
9898
$ac = New-ScheduledTaskAction -Execute (join-path $workdir "sshd") -WorkingDirectory $workdir -Argument $Arguments
99-
$task = Register-ScheduledTask -TaskName $Taskname -User system -Action $ac -TaskPath $Taskfolder -Force
99+
$task = Register-ScheduledTask -TaskName $Taskname -User system -Action $ac -TaskPath $Taskfolder -Force
100100
Start-ScheduledTask -TaskPath $Taskfolder -TaskName $Taskname
101101
#sleep for 1 seconds for process to ready to listener
102102
$num = 0
@@ -111,25 +111,25 @@ function Start-SSHDTestDaemon
111111
function Stop-SSHDTestDaemon
112112
{
113113
param(
114-
[string] $Port)
114+
[string] $Port)
115115

116116
$task = Get-ScheduledTask -TaskPath $Taskfolder -TaskName $Taskname -ErrorAction SilentlyContinue
117117
if($task)
118118
{
119119
if($task.State -eq "Running")
120120
{
121121
Stop-ScheduledTask -TaskPath $Taskfolder -TaskName $Taskname
122-
}
122+
}
123123
Unregister-ScheduledTask -TaskPath $Taskfolder -TaskName $Taskname -Confirm:$false
124124
}
125125

126126
#kill process listening on $Port
127127
$p = netstat -anop TCP | select-string -Pattern "0.0.0.0:$Port"
128-
if (-not($p -eq $null))
128+
if (-not($p -eq $null))
129129
{
130130
foreach ($ps in $p) {
131-
$pss =$ps.ToString() -split "\s+";
132-
$processid = $pss[$pss.length -1]
131+
$pss =$ps.ToString() -split "\s+";
132+
$processid = $pss[$pss.length -1]
133133
Stop-Process -Id $processid -Force -ErrorAction SilentlyContinue
134134
}
135135
#if still running, wait a little while for task to complete
@@ -142,4 +142,22 @@ function Stop-SSHDTestDaemon
142142
}
143143
}
144144

145-
}
145+
}
146+
147+
function ConfigureDefaultShell {
148+
param
149+
(
150+
[string] $default_shell_path,
151+
[string] $dfltShellRegPath = "HKLM:\Software\OpenSSH",
152+
[string] $dfltShellRegKeyName = "DefaultShell",
153+
[string] $dfltShellCmdOptionRegKeyName = "DefaultShellCommandOption",
154+
[string] $default_shell_cmd_option_val = $null
155+
)
156+
if (!(Test-Path $dfltShellRegPath)) {
157+
New-Item -Path $dfltShellRegPath -Force | Out-Null
158+
}
159+
New-ItemProperty -Path $dfltShellRegPath -Name $dfltShellRegKeyName -Value $default_shell_path -PropertyType String -Force
160+
if ($default_shell_cmd_option_val -ne $null) {
161+
New-ItemProperty -Path $dfltShellRegPath -Name $dfltShellCmdOptionRegKeyName -Value $default_shell_cmd_option_val -PropertyType String -Force
162+
}
163+
}

0 commit comments

Comments
 (0)