-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathbuild.ps1
50 lines (41 loc) · 1.72 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
Properties {
$base_dir = resolve-path .
$packages_dir = "$base_dir\packages"
$build_artifacts_dir = "$base_dir\build"
$solution_name = "$base_dir\WebApi-OrderedFilters.sln"
$nunit_runner = "$packages_dir\NUnit.Runners.2.6.2\tools"
$nunit_build_destination = "$build_artifacts_dir\tools\nunit"
$nunitConsole = "$nunit_build_destination\nunit-console.exe"
$nuget_exe = "$base_dir\.nuget\Nuget.exe"
}
Task Default -Depends BuildMain, PrepareForTest, RunUnitTests, NuGetBuild
Task BuildMain -Depends Clean, Build
Task Clean {
Exec { msbuild $solution_name /v:Quiet /t:Clean /p:Configuration=Release }
}
Task Build -depends Clean {
Exec { msbuild $solution_name /v:Quiet /t:Build /p:Configuration=Release /p:OutDir=$build_artifacts_dir\ }
}
Task NuGetBuild {
& $nuget_exe pack "$base_dir/src/RichardLawley.WebApi.OrderedFilters/RichardLawley.WebApi.OrderedFilters.csproj" -Build -OutputDirectory $build_artifacts_dir -Verbose -Properties Configuration=Release
}
Task PrepareForTest {
$tools_folder = "$build_artifacts_dir\tools"
if (Test-Path $tools_folder) {
Remove-Item $tools_folder -Force -Recurse
}
Copy-Item "$nunit_runner\*" $nunit_build_destination
Copy-Item "$nunit_runner\lib\*" "$nunit_build_destination\lib"
}
Task RunUnitTests -depends PrepareForTest, Build {
$test_result = "$build_artifacts_dir\UnitTestsResult.xml"
& "$nunitConsole" "$build_artifacts_dir\RichardLawley.WebApi.OrderedFilters.Tests.dll" /nologo /nodots /framework:net-4.0 "/xml=$test_result"
if ($lastexitcode -gt 0)
{
throw "{0} unit tests failed. See {1} for a simple summary." -f $lastexitcode, $test_result
}
if ($lastexitcode -lt 0)
{
throw "unit test run was terminated by a fatal error. See {0} for a simple summary." -f $test_result
}
}