1
- var target = Argument ( "target" , "Default" ) ;
1
+ // Install addins.
2
+ #addin "nuget:?package=Cake.Coveralls&version=0.5.0"
2
3
3
- Task ( "Set-Build-Version" )
4
+ // Install tools.
5
+ #tool "nuget:?package=OpenCover&version=4.6.519"
6
+ #tool "nuget:?package=coveralls.io&version=1.3.4"
7
+ #tool "nuget:?package=xunit.runner.console&version=2.2.0"
8
+
9
+
10
+ ///////////////////////////////////////////////////////////////////////////////
11
+ // ARGUMENTS
12
+ ///////////////////////////////////////////////////////////////////////////////
13
+
14
+ var target = Argument < string > ( "target" , "Default" ) ;
15
+ var configuration = Argument < string > ( "configuration" , "Release" ) ;
16
+
17
+
18
+ ///////////////////////////////////////////////////////////////////////////////
19
+ // GLOBAL VARIABLES
20
+ ///////////////////////////////////////////////////////////////////////////////
21
+
22
+ var libraryName = "BencodeNET" ;
23
+
24
+ var sourceFolder = "./" ;
25
+
26
+ var projectFile = "./BencodeNET/BencodeNET.csproj" ;
27
+
28
+ var testProjectFile = "./BencodeNET.Tests/BencodeNET.Tests.csproj" ;
29
+ var codeCoverageOutput = "coverage.xml" ;
30
+ var codeCoverageFilter = "+[*]* -[*.Tests]*" ;
31
+
32
+ var cakeVersion = typeof ( ICakeContext ) . Assembly . GetName ( ) . Version . ToString ( ) ;
33
+
34
+
35
+ ///////////////////////////////////////////////////////////////////////////////
36
+ // SETUP / TEARDOWN
37
+ ///////////////////////////////////////////////////////////////////////////////
38
+
39
+ Setup ( context =>
40
+ {
41
+ Information ( $ "Building using version { cakeVersion } of Cake") ;
42
+ } ) ;
43
+
44
+
45
+ ///////////////////////////////////////////////////////////////////////////////
46
+ // TASK DEFINITIONS
47
+ ///////////////////////////////////////////////////////////////////////////////
48
+
49
+ Task ( "Update-Build-Version" )
50
+ . WithCriteria ( ( ) => AppVeyor . IsRunningOnAppVeyor )
4
51
. Does ( ( ) =>
5
52
{
6
- var projectFile = "./BencodeNET/BencodeNET.csproj" ;
7
53
var versionPeekXpath = "/Project/PropertyGroup/Version/text()" ;
8
54
var versionPokeXpath = "/Project/PropertyGroup/Version" ;
9
55
56
+ var buildNumber = AppVeyor . Environment . Build . Number ;
10
57
var version = XmlPeek ( projectFile , versionPeekXpath ) ;
58
+
59
+ Information ( "AppVeyor build version is " + AppVeyor . Environment . Build . Version ) ;
60
+ Information ( "Project version is " + version ) ;
61
+
11
62
var parts = version . Split ( '.' ) ;
63
+ version = string . Join ( "." , parts [ 0 ] , parts [ 1 ] , buildNumber ) ;
64
+
65
+ Information ( "Changing versions to " + version ) ;
66
+
67
+ AppVeyor . UpdateBuildVersion ( version ) ;
68
+ XmlPoke ( projectFile , versionPokeXpath , version ) ;
69
+ } ) ;
12
70
13
- var buildNumber = 0 ;
71
+ Task ( "Restore-NuGet-Packages" )
72
+ . Does ( ( ) =>
73
+ {
74
+ DotNetCoreRestore ( ) ;
75
+ } ) ;
14
76
15
- if ( BuildSystem . IsRunningOnAppVeyor )
77
+ Task ( "Build" )
78
+ . IsDependentOn ( "Restore-NuGet-Packages" )
79
+ . Does ( ( ) =>
80
+ {
81
+ DotNetCoreBuild ( sourceFolder + libraryName + ".sln" , new DotNetCoreBuildSettings
16
82
{
17
- buildNumber = AppVeyor . Environment . Build . Number ;
18
- }
83
+ Configuration = configuration
84
+ } ) ;
85
+ } ) ;
19
86
20
- version = string . Join ( "." , parts [ 0 ] , parts [ 1 ] , buildNumber ) ;
87
+ Task ( "Run-Unit-Tests" )
88
+ . IsDependentOn ( "Build" )
89
+ . Does ( ( ) =>
90
+ {
91
+ DotNetCoreTest ( testProjectFile , new DotNetCoreTestSettings
92
+ {
93
+ NoBuild = true ,
94
+ Configuration = configuration
95
+ } ) ;
96
+ } ) ;
21
97
22
- if ( BuildSystem . IsRunningOnAppVeyor )
98
+ Task ( "Run-Code-Coverage" )
99
+ . IsDependentOn ( "Build" )
100
+ . Does ( ( ) =>
101
+ {
102
+ Action < ICakeContext > testAction = ctx => ctx . DotNetCoreTest ( testProjectFile , new DotNetCoreTestSettings
23
103
{
24
- AppVeyor . UpdateBuildVersion ( version ) ;
25
- Information ( "Updated AppVeyor build version to " + version ) ;
26
- }
104
+ NoBuild = true ,
105
+ Configuration = configuration
106
+ } ) ;
27
107
28
- XmlPoke ( projectFile , versionPokeXpath , version ) ;
29
- Information ( "Set project version to " + version ) ;
108
+ OpenCover ( testAction ,
109
+ codeCoverageOutput ,
110
+ new OpenCoverSettings
111
+ {
112
+ OldStyle = true ,
113
+ SkipAutoProps = true ,
114
+ MergeOutput = false
115
+ }
116
+ . WithFilter ( codeCoverageFilter )
117
+ ) ;
118
+ } ) ;
119
+
120
+ Task ( "Upload-Coverage-Result" )
121
+ . Does ( ( ) =>
122
+ {
123
+ CoverallsIo ( codeCoverageOutput ) ;
30
124
} ) ;
31
125
126
+
127
+ ///////////////////////////////////////////////////////////////////////////////
128
+ // TARGETS
129
+ ///////////////////////////////////////////////////////////////////////////////
130
+
131
+ Task ( "AppVeyor" )
132
+ . IsDependentOn ( "Update-Build-Version" )
133
+ . IsDependentOn ( "Run-Code-Coverage" )
134
+ . IsDependentOn ( "Upload-Coverage-Result" ) ;
135
+
32
136
Task ( "Default" )
33
- . IsDependentOn ( "Set-Build-Version" ) ;
137
+ . IsDependentOn ( "AppVeyor" ) ;
138
+
139
+
140
+ ///////////////////////////////////////////////////////////////////////////////
141
+ // EXECUTION
142
+ ///////////////////////////////////////////////////////////////////////////////
34
143
35
144
RunTarget ( target ) ;
0 commit comments