forked from pester/Pester
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTestDrive.Tests.ps1
170 lines (133 loc) · 4.03 KB
/
TestDrive.Tests.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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
Set-StrictMode -Version Latest
if ($PSVersionTable.PSVersion.Major -lt 6 -or $IsWindows)
{
$tempPath = $env:TEMP
}
else
{
$tempPath = '/tmp'
}
Describe "Setup" {
It "returns a location that is in a temp area" {
$testDrivePath = (Get-Item $TestDrive).FullName
$testDrivePath -like "$tempPath*" | Should -Be $true
}
It "creates a drive location called TestDrive:" {
"TestDrive:\" | Should -Exist
}
}
Describe "TestDrive" {
It "handles creation of a drive with . characters in the path" {
#TODO: currently untested but requirement needs to be here
"preventing this from failing"
}
}
Describe "Create filesystem with directories" {
Setup -Dir "dir1"
Setup -Dir "dir2"
It "creates directory when called with no file content" {
"TestDrive:\dir1" | Should -Exist
}
It "creates another directory when called with no file content and doesn't remove first directory" {
$result = Test-Path "TestDrive:\dir2"
$result = $result -and (Test-Path "TestDrive:\dir1")
$result | Should -Be $true
}
}
Describe "Create nested directory structure" {
Setup -Dir "parent/child"
It "creates parent directory" {
"TestDrive:\parent" | Should -Exist
}
It "creates child directory underneath parent" {
"TestDrive:\parent\child" | Should -Exist
}
}
Describe "Create a file with no content" {
Setup -File "file"
It "creates file" {
"TestDrive:\file" | Should -Exist
}
It "also has no content" {
Get-Content "TestDrive:\file" | Should -BeNullOrEmpty
}
}
Describe "Create a file with content" {
Setup -File "file" "file contents"
It "creates file" {
"TestDrive:\file" | Should -Exist
}
It "adds content to the file" {
Get-Content "TestDrive:\file" | Should -Be "file contents"
}
}
Describe "Create file with passthru" {
$thefile = Setup -File "thefile" -PassThru
It "returns the file from the temp location" {
$thefile.FullName -like "$tempPath*" | Should -Be $true
$thefile.Exists | Should -Be $true
}
}
Describe "Create directory with passthru" {
$thedir = Setup -Dir "thedir" -PassThru
It "returns the directory from the temp location" {
$thedir.FullName -like "$tempPath*" | Should -Be $true
$thedir.Exists | Should -Be $true
}
}
Describe "TestDrive scoping" {
$describe = Setup -File 'Describe' -PassThru
Context "Describe file is available in context" {
It "Finds the file" {
$describe | Should -Exist
}
#create file for the next test
Setup -File 'Context'
It "Creates It-scoped contents" {
Setup -File 'It'
'TestDrive:\It' | Should -Exist
}
It "Does not clear It-scoped contents on exit" {
'TestDrive:\It' | Should -Exist
}
}
It "Context file are removed when returning to Describe" {
"TestDrive:\Context" | Should -Not -Exist
}
It "Describe file is still available in Describe" {
$describe | Should -Exist
}
}
Describe "Cleanup" {
Setup -Dir "foo"
}
Describe "Cleanup" {
It "should have removed the temp folder from the previous fixture" {
Test-Path "$TestDrive\foo" | Should -Not -Exist
}
It "should also remove the TestDrive:" {
Test-Path "TestDrive:\foo" | Should -Not -Exist
}
}
Describe "Cleanup when Remove-Item is mocked" {
Mock Remove-Item {}
Context "add a temp directory" {
Setup -Dir "foo"
}
Context "next context" {
It "should have removed the temp folder" {
"$TestDrive\foo" | Should -Not -Exist
}
}
}
InModuleScope Pester {
Describe "New-RandomTempDirectory" {
It "creates randomly named directory" {
$first = New-RandomTempDirectory
$second = New-RandomTempDirectory
$first | Remove-Item -Force
$second | Remove-Item -Force
$first.name | Should -Not -Be $second.name
}
}
}