-
-
Notifications
You must be signed in to change notification settings - Fork 271
/
psake-buildTester.ps1
53 lines (45 loc) · 1.13 KB
/
psake-buildTester.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
function runBuilds{
$buildFiles = dir examples\*.ps1
$testResults = @()
$non_existant_buildfile = "" | select Name, FullName
$non_existant_buildfile.Name = "bad-non_existant_buildfile.ps1"
$non_existant_buildfile.FullName = "c:\bad-non_existant_buildfile.ps1"
$buildFiles += $non_existant_buildfile
foreach($buildFile in $buildFiles) {
$testResult = "" | select Name, Result
$testResult.Name = $buildFile.Name
Invoke-psake $buildFile.FullName | Out-Null
$testResult.Result = (getResult $buildFile.Name $psake.build_success)
$testResults += $testResult
}
return $testResults
}
function getResult([string]$fileName, [bool]$buildSucceeded) {
if ($fileName.StartsWith("bad")) {
if (!$buildSucceeded) {
"Passed"
}
else {
"Failed"
}
}
else {
if ($buildSucceeded) {
"Passed"
}
else {
"Failed"
}
}
}
Import-Module .\psake.psm1
$results = runBuilds
Remove-Module psake
$results | Sort 'Name' | Format-Table -Auto
$failed = $results | ? { $_.Result -eq "Failed" }
if ($failed) {
write-host "One of the builds failed" -ForeGroundColor 'RED'
exit 1
} else {
exit 0
}