forked from Kennethtruyers/SpecFlow.BrowserStack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.ps1
56 lines (41 loc) · 2.2 KB
/
build.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
$solution = "specflow.browserstack.sln"
function Get-SolutionConfigurations($solution)
{
Get-Content $solution |
Where-Object {$_ -match "(?<config>\w+)\|"} |
%{ $($Matches['config'])} |
select -uniq
}
$frameworkDirs = @((Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0" -Name "MSBuildToolsPath32")."MSBuildToolsPath32",
"$env:windir\Microsoft.NET\Framework\v4.0.30319\")
for ($i = 0; $i -lt $frameworkDirs.Count; $i++) {
$dir = $frameworkDirs[$i]
if ($dir -Match "\$\(Registry:HKEY_LOCAL_MACHINE(.*?)@(.*)\)") {
$key = "HKLM:" + $matches[1]
$name = $matches[2]
$dir = (Get-ItemProperty -Path $key -Name $name).$name
$frameworkDirs[$i] = $dir
}
}
$env:path = ($frameworkDirs -join ";") + ";$env:path"
Write-Host "Try building solution for different configurations..."
@(Get-SolutionConfigurations $solution) | foreach {
msbuild $solution /p:Configuration=$_ /nologo /verbosity:quiet
}
New-Item "$(get-location)\packages\specflow.1.9.0\tools\specflow.exe.config" -type file -force -value "<?xml version=""1.0"" encoding=""utf-8"" ?> <configuration> <startup> <supportedRuntime version=""v4.0.30319"" /> </startup> </configuration>" | Out-Null
Write-Host "Executing the tests..."
@(Get-SolutionConfigurations $solution)| foreach {
Start-Job -ScriptBlock {
param($configuration, $basePath)
try
{
& $basePath\packages\NUnit.Runners.2.6.4\tools\nunit-console.exe /labels /out=$basePath\nunit_$configuration.txt /xml:$basePath\nunit_$configuration.xml /nologo /config:$configuration "$basePath/SpecFlow.BrowserStack/bin/$configuration/SpecFlow.BrowserStack.dll"
}
finally
{
& $basePath\packages\specflow.1.9.0\tools\specflow.exe nunitexecutionreport "$basePath/SpecFlow.BrowserStack/SpecFlow.BrowserStack.csproj" /out:$basePath\specresult_$configuration.html /xmlTestResult:$basePath\nunit_$configuration.xml /testOutput:nunit_$configuration.txt
}
} -ArgumentList $_, $(get-location)
}
Get-Job | Wait-Job
Get-Job | Receive-Job