-
Notifications
You must be signed in to change notification settings - Fork 45
/
Format-TestResult.ps1
59 lines (53 loc) · 2.16 KB
/
Format-TestResult.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
<#
.SYNOPSIS
Displays a test result report.
.DESCRIPTION
The `Format-TestResult.ps1` script parses test result XML files and displays a report on all test fixtures that ran, ordered by longest to shortest.
#>
# 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.
param(
[Parameter(Mandatory=$true)]
[string]
# Directory where the test output files are.
$OutputPath
)
#Requires -Version 4
Set-StrictMode -Version 'Latest'
$OutputPath = Join-Path -Path $OutputPath -ChildPath '*'
Get-ChildItem -Path $OutputPath -Include 'pester*.xml','*blade*.xml' |
Get-Content -Raw |
ForEach-Object { [xml]$_ } |
ForEach-Object {
$_.SelectNodes('/test-results/test-suite/results/test-suite')
} |
Group-Object -Property { $_.GetAttribute('name') -replace '^([^. ]+)(\.|\ ).*$','$1' } |
ForEach-Object {
$totalTime = 0.0
$testSuiteName = $_.Name
foreach( $testSuite in $_.Group )
{
$time = [double]$testSuite.time
$totalTime += $time
}
[int]$seconds = [math]::Truncate($totalTime)
[int]$milliseconds = ($totalTime - $seconds) * 1000
[pscustomobject]@{
Name = $testSuiteName;
TotalTime = $totalTime;
Seconds = $seconds
Milliseconds = $milliseconds
Duration = (New-Object -TypeName 'TimeSpan' -ArgumentList (0,0,0,$seconds,$milliseconds))
}
} |
Sort-Object -Property 'Duration' -Descending |
Format-Table -Property 'Name','Duration' -AutoSize