Skip to content

Commit 2cdeb66

Browse files
committed
Use cake for all build related and fix code coverage
1 parent e56100d commit 2cdeb66

File tree

6 files changed

+150
-21
lines changed

6 files changed

+150
-21
lines changed

.gitignore

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,4 +285,9 @@ tools/**
285285
*.btp.cs
286286
*.btm.cs
287287
*.odx.cs
288-
*.xsd.cs
288+
*.xsd.cs
289+
290+
291+
292+
293+
/coverage.xml

BencodeNET.Tests/BencodeNET.Tests.csproj

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
<None Update="Files\ubuntu-14.10-desktop-amd64.iso.torrent">
1010
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
1111
</None>
12+
<None Update="xunit.runner.json">
13+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
14+
</None>
1215
</ItemGroup>
1316

1417
<ItemGroup>
@@ -23,11 +26,11 @@
2326
<PackageReference Include="AutoFixture.Xunit2" Version="3.50.3" />
2427
<PackageReference Include="FluentAssertions" Version="4.19.3" />
2528
<PackageReference Include="NSubstitute" Version="2.0.3" />
26-
<PackageReference Include="xunit" Version="2.2.0" />
27-
<PackageReference Include="xunit.core" Version="2.2.0" />
28-
<PackageReference Include="xunit.extensibility.execution" Version="2.2.0" />
29-
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
30-
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.0-beta1-build3642" />
29+
<PackageReference Include="xunit" Version="2.3.0-beta3-build3705" />
30+
<PackageReference Include="xunit.core" Version="2.3.0-beta3-build3705" />
31+
<PackageReference Include="xunit.extensibility.execution" Version="2.3.0-beta3-build3705" />
32+
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0-beta3-build3705" />
33+
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.0-beta3-build3705" />
3134
</ItemGroup>
3235

3336
<ItemGroup>

BencodeNET.Tests/xunit.runner.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"shadowCopy": false
3+
}

BencodeNET/BencodeNET.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66
<GenerateDocumentationFile>True</GenerateDocumentationFile>
77
</PropertyGroup>
88

9+
<!-- Needed for code coverage -->
10+
<PropertyGroup>
11+
<DebugType>full</DebugType>
12+
</PropertyGroup>
13+
914
<PropertyGroup>
1015
<PackageId>BencodeNET</PackageId>
1116
<Version>2.2.0</Version>

build.cake

Lines changed: 124 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,144 @@
1-
var target = Argument("target", "Default");
1+
// Install addins.
2+
#addin "nuget:?package=Cake.Coveralls&version=0.5.0"
23

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)
451
.Does(() =>
552
{
6-
var projectFile = "./BencodeNET/BencodeNET.csproj";
753
var versionPeekXpath = "/Project/PropertyGroup/Version/text()";
854
var versionPokeXpath = "/Project/PropertyGroup/Version";
955

56+
var buildNumber = AppVeyor.Environment.Build.Number;
1057
var version = XmlPeek(projectFile, versionPeekXpath);
58+
59+
Information("AppVeyor build version is " + AppVeyor.Environment.Build.Version);
60+
Information("Project version is " + version);
61+
1162
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+
});
1270

13-
var buildNumber = 0;
71+
Task("Restore-NuGet-Packages")
72+
.Does(() =>
73+
{
74+
DotNetCoreRestore();
75+
});
1476

15-
if (BuildSystem.IsRunningOnAppVeyor)
77+
Task("Build")
78+
.IsDependentOn("Restore-NuGet-Packages")
79+
.Does(() =>
80+
{
81+
DotNetCoreBuild(sourceFolder + libraryName + ".sln", new DotNetCoreBuildSettings
1682
{
17-
buildNumber = AppVeyor.Environment.Build.Number;
18-
}
83+
Configuration = configuration
84+
});
85+
});
1986

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+
});
2197

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
23103
{
24-
AppVeyor.UpdateBuildVersion(version);
25-
Information("Updated AppVeyor build version to " + version);
26-
}
104+
NoBuild = true,
105+
Configuration = configuration
106+
});
27107

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);
30124
});
31125

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+
32136
Task("Default")
33-
.IsDependentOn("Set-Build-Version");
137+
.IsDependentOn("AppVeyor");
138+
139+
140+
///////////////////////////////////////////////////////////////////////////////
141+
// EXECUTION
142+
///////////////////////////////////////////////////////////////////////////////
34143

35144
RunTarget(target);

tools/packages.config

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<packages>
3+
<package id="Cake" version="0.21.1" />
4+
</packages>

0 commit comments

Comments
 (0)