mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-06-19 23:48:16 +08:00
Rough first go at test coverage. Might need tidying up.
This commit is contained in:
72
build.cake
72
build.cake
@ -1,6 +1,10 @@
|
||||
#tool "nuget:?package=GitVersion.CommandLine"
|
||||
#tool "nuget:?package=GitReleaseNotes"
|
||||
#addin "nuget:?package=Cake.Json"
|
||||
#tool "nuget:?package=OpenCover"
|
||||
#tool "nuget:?package=ReportGenerator"
|
||||
#tool coveralls.net
|
||||
#addin Cake.Coveralls
|
||||
|
||||
// compile
|
||||
var compileConfig = Argument("configuration", "Release");
|
||||
@ -12,6 +16,8 @@ var artifactsDir = Directory("artifacts");
|
||||
// unit testing
|
||||
var artifactsForUnitTestsDir = artifactsDir + Directory("UnitTests");
|
||||
var unitTestAssemblies = @"./test/Ocelot.UnitTests/Ocelot.UnitTests.csproj";
|
||||
var minCodeCoverage = 75d;
|
||||
var coverallsRepoToken = "coveralls-repo-token-ocelot";
|
||||
|
||||
// acceptance testing
|
||||
var artifactsForAcceptanceTestsDir = artifactsDir + Directory("AcceptanceTests");
|
||||
@ -118,13 +124,69 @@ Task("RunUnitTests")
|
||||
.IsDependentOn("Compile")
|
||||
.Does(() =>
|
||||
{
|
||||
var settings = new DotNetCoreTestSettings
|
||||
if (IsRunningOnWindows())
|
||||
{
|
||||
Configuration = compileConfig,
|
||||
};
|
||||
var coverageSummaryFile = artifactsForUnitTestsDir + File("coverage.xml");
|
||||
|
||||
EnsureDirectoryExists(artifactsForUnitTestsDir);
|
||||
|
||||
OpenCover(tool =>
|
||||
{
|
||||
tool.DotNetCoreTest(unitTestAssemblies);
|
||||
},
|
||||
new FilePath(coverageSummaryFile),
|
||||
new OpenCoverSettings()
|
||||
{
|
||||
Register="user",
|
||||
ArgumentCustomization=args=>args.Append(@"-oldstyle -returntargetcode")
|
||||
}
|
||||
.WithFilter("+[Ocelot*]*")
|
||||
.WithFilter("-[xunit*]*")
|
||||
.WithFilter("-[Ocelot*Tests]*")
|
||||
);
|
||||
|
||||
ReportGenerator(coverageSummaryFile, artifactsForUnitTestsDir);
|
||||
|
||||
if (!AppVeyor.IsRunningOnAppVeyor)
|
||||
{
|
||||
var repoToken = EnvironmentVariable(coverallsRepoToken);
|
||||
if (string.IsNullOrEmpty(repoToken))
|
||||
{
|
||||
throw new Exception(string.Format("Coveralls repo token not found. Set environment variable '{0}'", coverallsRepoToken));
|
||||
}
|
||||
|
||||
EnsureDirectoryExists(artifactsForUnitTestsDir);
|
||||
DotNetCoreTest(unitTestAssemblies, settings);
|
||||
Information("Uploading test coverage to coveralls.io");
|
||||
CoverallsNet(coverageSummaryFile, CoverallsNetReportType.OpenCover, new CoverallsNetSettings()
|
||||
{
|
||||
RepoToken = repoToken
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
Information("We are not running on the build server so we won't publish the coverage report to coveralls.io");
|
||||
}
|
||||
|
||||
var sequenceCoverage = XmlPeek(coverageSummaryFile, "//CoverageSession/Summary/@sequenceCoverage");
|
||||
var branchCoverage = XmlPeek(coverageSummaryFile, "//CoverageSession/Summary/@branchCoverage");
|
||||
|
||||
Information("Sequence Coverage: " + sequenceCoverage);
|
||||
|
||||
if(double.Parse(sequenceCoverage) < minCodeCoverage)
|
||||
{
|
||||
throw new Exception(string.Format("Code coverage fell below the threshold of {0}%", minCodeCoverage));
|
||||
};
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
var settings = new DotNetCoreTestSettings
|
||||
{
|
||||
Configuration = compileConfig,
|
||||
};
|
||||
|
||||
EnsureDirectoryExists(artifactsForUnitTestsDir);
|
||||
DotNetCoreTest(unitTestAssemblies, settings);
|
||||
}
|
||||
});
|
||||
|
||||
Task("RunAcceptanceTests")
|
||||
|
Reference in New Issue
Block a user