-
Notifications
You must be signed in to change notification settings - Fork 8
/
Restore-TestEnvironment.ps1
66 lines (55 loc) · 2.08 KB
/
Restore-TestEnvironment.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
<#
.SYNOPSIS
Restores the environment after running unit or integration tests
on a DSC resource.
This restores the following changes made by calling
Initialize-TestEnvironment:
1. Restores the $env:PSModulePath if it was changed.
2. Restores the PowerShell execution policy.
3. Resets the DSC LCM if running Integration tests.
.PARAMETER TestEnvironment
The hashtable created by the Initialize-TestEnvironment.
.EXAMPLE
Restore-TestEnvironment -TestEnvironment $TestEnvironment
#>
function Restore-TestEnvironment
{
[CmdletBinding()]
param
(
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[Hashtable]
$TestEnvironment
)
Write-Verbose -Message "Cleaning up Test Environment after $($TestEnvironment.TestType) testing of $($TestEnvironment.DSCResourceName) in module $($TestEnvironment.DSCModuleName)."
if ($TestEnvironment.TestType -in ('Integration','All'))
{
# Clear the DSC LCM & Configurations
Clear-DscLcmConfiguration
}
# Restore PSModulePath
if ($TestEnvironment.OldPSModulePath -ne $env:PSModulePath)
{
Set-PSModulePath -Path $TestEnvironment.OldPSModulePath
if ($TestEnvironment.TestType -in ('Integration','All'))
{
# Restore the machine PSModulePath for integration tests.
Set-PSModulePath -Path $TestEnvironment.OldPSModulePath -Machine
}
}
# Restore the Execution Policy
if ($TestEnvironment.OldExecutionPolicy -ne (Get-ExecutionPolicy))
{
Set-ExecutionPolicy -ExecutionPolicy $TestEnvironment.OldExecutionPolicy -Scope 'Process' -Force
}
if ($script:MachineOldPSModulePath)
{
[System.Environment]::SetEnvironmentVariable('PSModulePath', $script:MachineOldPSModulePath, 'Machine')
}
if ($script:MachineOldExecutionPolicy)
{
Set-ExecutionPolicy -ExecutionPolicy $script:MachineOldExecutionPolicy -Scope LocalMachine -Force -ErrorAction Stop
$script:MachineOldExecutionPolicy = $null
}
}