forked from Azure/azure-powershell
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest-module.ps1
94 lines (85 loc) · 3.64 KB
/
test-module.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# ----------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# 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.
# Code generated by Microsoft (R) AutoRest Code Generator.Changes may cause incorrect behavior and will be lost if the code
# is regenerated.
# ----------------------------------------------------------------------------------
param([switch]$Isolated, [switch]$Live, [switch]$Record, [switch]$Playback, [switch]$RegenerateSupportModule, [switch]$UsePreviousConfigForRecord, [string[]]$TestName)
$ErrorActionPreference = 'Stop'
if(-not $Isolated)
{
Write-Host -ForegroundColor Green 'Creating isolated process...'
if ($PSBoundParameters.ContainsKey("TestName")) {
$PSBoundParameters["TestName"] = $PSBoundParameters["TestName"] -join ","
}
$pwsh = [System.Diagnostics.Process]::GetCurrentProcess().Path
& "$pwsh" -NonInteractive -NoLogo -NoProfile -File $MyInvocation.MyCommand.Path @PSBoundParameters -Isolated
return
}
# This is a workaround, since for string array parameter, pwsh -File will only take the first element
if ($PSBoundParameters.ContainsKey("TestName") -and ($TestName.count -eq 1) -and ($TestName[0].Contains(','))) {
$TestName = $TestName[0].Split(",")
}
$ProgressPreference = 'SilentlyContinue'
$baseName = $PSScriptRoot.BaseName
$requireResourceModule = (($baseName -ne "Resources") -and ($Record.IsPresent -or $Live.IsPresent))
. (Join-Path $PSScriptRoot 'check-dependencies.ps1') -Isolated -Accounts:$false -Pester -Resources:$requireResourceModule -RegenerateSupportModule:$RegenerateSupportModule
. ("$PSScriptRoot\test\utils.ps1")
if ($requireResourceModule)
{
# Load the latest Az.Accounts installed
Import-Module -Name Az.Accounts -RequiredVersion (Get-Module -Name Az.Accounts -ListAvailable | Sort-Object -Property Version -Descending)[0].Version
$resourceModulePSD = Get-Item -Path (Join-Path $HOME '.PSSharedModules\Resources\Az.Resources.TestSupport.psd1')
Import-Module -Name $resourceModulePSD.FullName
}
$localModulesPath = Join-Path $PSScriptRoot 'generated\modules'
if(Test-Path -Path $localModulesPath)
{
$env:PSModulePath = "$localModulesPath$([IO.Path]::PathSeparator)$env:PSModulePath"
}
$modulePsd1 = Get-Item -Path (Join-Path $PSScriptRoot './Az.MachineLearningServices.psd1')
$modulePath = $modulePsd1.FullName
$moduleName = $modulePsd1.BaseName
Import-Module -Name Pester
Import-Module -Name $modulePath
$TestMode = 'playback'
$ExcludeTag = @("LiveOnly")
if($Live)
{
$TestMode = 'live'
$ExcludeTag = @()
}
if($Record)
{
$TestMode = 'record'
}
try
{
if ($TestMode -ne 'playback')
{
setupEnv
}
$testFolder = Join-Path $PSScriptRoot 'test'
if ($null -ne $TestName)
{
Invoke-Pester -Script @{ Path = $testFolder } -TestName $TestName -ExcludeTag $ExcludeTag -EnableExit -OutputFile (Join-Path $testFolder "$moduleName-TestResults.xml")
} else
{
Invoke-Pester -Script @{ Path = $testFolder } -ExcludeTag $ExcludeTag -EnableExit -OutputFile (Join-Path $testFolder "$moduleName-TestResults.xml")
}
} Finally
{
if ($TestMode -ne 'playback')
{
cleanupEnv
}
}
Write-Host -ForegroundColor Green '-------------Done-------------'