Skip to content

Commit 397bac7

Browse files
committed
Added psake build script to clean, build and run unit tests
1 parent df48d1a commit 397bac7

File tree

5 files changed

+798
-0
lines changed

5 files changed

+798
-0
lines changed

build.bat

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
echo off
2+
.\tools\psake\psake.bat %*

tools/nunit/SimpleSummary.xslt

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
3+
<xsl:output method="text"/>
4+
5+
<xsl:template match="/">
6+
<xsl:apply-templates/>
7+
</xsl:template>
8+
9+
<xsl:template match="test-results">
10+
<xsl:text>Tests run: </xsl:text>
11+
<xsl:value-of select="@total"/>
12+
<xsl:text>, Errors: </xsl:text>
13+
<xsl:value-of select="@errors"/>
14+
<xsl:text>, Failures: </xsl:text>
15+
<xsl:value-of select="@failures"/>
16+
<xsl:text>, Not run: </xsl:text>
17+
<xsl:value-of select="@not-run"/>
18+
<xsl:text>, Time: </xsl:text>
19+
<xsl:value-of select="test-suite/@time"/>
20+
<xsl:text> seconds
21+
</xsl:text>
22+
<xsl:text>
23+
</xsl:text>
24+
25+
<xsl:if test="//test-case[failure]">
26+
<xsl:text>Failures:
27+
</xsl:text>
28+
</xsl:if>
29+
<xsl:apply-templates select="//test-case[failure]"/>
30+
<xsl:text>
31+
</xsl:text>
32+
33+
<xsl:if test="//test-case[@executed='False']">
34+
<xsl:text>Tests not run:
35+
</xsl:text>
36+
</xsl:if>
37+
<xsl:apply-templates select="//test-case[@executed='False']"/>
38+
<xsl:text disable-output-escaping="yes"/>
39+
</xsl:template>
40+
41+
<xsl:template match="test-case">
42+
<xsl:value-of select="position()"/>
43+
<xsl:text>) </xsl:text>
44+
<xsl:value-of select="@name"/>
45+
<xsl:text>
46+
</xsl:text>
47+
<xsl:value-of select="child::node()/message"/>
48+
<xsl:text>
49+
</xsl:text>
50+
<xsl:text>
51+
</xsl:text>
52+
</xsl:template>
53+
</xsl:stylesheet>

tools/psake/default.ps1

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
Properties {
2+
$base_dir = resolve-path .\..\..\
3+
$packages_dir = "$base_dir\packages"
4+
$build_artifacts_dir = "$base_dir\build"
5+
$solution_name = "$base_dir\WebApiContrib.sln"
6+
$nunit_runner = "$packages_dir\NUnit.Runners.2.6.0.12051\tools"
7+
$nunit_build_destination = "$build_artifacts_dir\tools\nunit"
8+
$nunitConsole = "$nunit_build_destination\nunit-console.exe"
9+
}
10+
11+
Task Default -Depends BuildWebApiContrib, PrepareForTest, RunUnitTests
12+
13+
Task BuildWebApiContrib -Depends Clean, Build
14+
15+
Task Clean {
16+
Exec { msbuild $solution_name /v:Quiet /t:Clean /p:Configuration=Release }
17+
}
18+
19+
Task Build -depends Clean {
20+
Exec { msbuild $solution_name /v:Quiet /t:Build /p:Configuration=Release /p:OutDir=$build_artifacts_dir }
21+
}
22+
23+
Task PrepareForTest {
24+
$tools_folder = "$build_artifacts_dir\tools"
25+
if (Test-Path $tools_folder) {
26+
Remove-Item $tools_folder -Force -Recurse
27+
}
28+
Copy-Item "$nunit_runner\*" $nunit_build_destination
29+
Copy-Item "$nunit_runner\lib\*" "$nunit_build_destination\lib"
30+
}
31+
32+
Task RunUnitTests -depends PrepareForTest, Build {
33+
$test_result = "$build_artifacts_dir\UnitTestsResult.xml"
34+
35+
& "$nunitConsole" "$build_artifacts_dir\WebApiContribTests.dll" /nologo /nodots "/xml=$test_result"
36+
37+
if ($lastexitcode -gt 0)
38+
{
39+
throw "{0} unit tests failed. See {0} for a simple summary." -f $lastexitcode, $test_result
40+
}
41+
if ($lastexitcode -lt 0)
42+
{
43+
throw "unit test run was terminated by a fatal error. See {0} for a simple summary." -f $test_result
44+
}
45+
}

tools/psake/psake.bat

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
powershell.exe -NoProfile -ExecutionPolicy unrestricted -Command "& {Import-Module '.\tools\psake\psake.psm1'; invoke-psake .\tools\psake\default.ps1 %1 -parameters @{"version"="'%2'";"appPrefix"="'%3'";"filePath"="'%4'"}; if ($lastexitcode -ne 0) {write-host "ERROR: $lastexitcode" -fore RED; exit $lastexitcode} }"

0 commit comments

Comments
 (0)