11#tool "nuget:?package=GitVersion.CommandLine"
22#tool "nuget:?package=xunit.runner.console"
3-
3+ #tool "nuget:?package=OpenCover"
4+ #tool "nuget:?package=coveralls.io"
5+ #addin "Cake.Coveralls" ;
46
57var target = Argument ( "target" , "Default" ) ;
68var configuration = Argument ( "configuration" , "Release" ) ;
7- var artifacts = "./artifacts" ;
9+ var artifacts = new DirectoryPath ( "./artifacts" ) . MakeAbsolute ( Context . Environment ) ;
810
911Task ( "Clean" )
1012 . Does ( ( ) =>
@@ -23,20 +25,104 @@ Task("Build")
2325 . IsDependentOn ( "Restore" )
2426 . Does ( ( ) =>
2527{
26- foreach ( var project in GetFiles ( "**/* .csproj" ) )
28+ foreach ( var project in GetFiles ( "src/*/*.csproj" ) . Concat ( GetFiles ( "test/*/* .csproj") ) )
2729 DotNetCoreBuild ( project . FullPath ) ;
2830} ) ;
2931
3032Task ( "Test" )
3133 . IsDependentOn ( "Build" )
3234 . Does ( ( ) =>
3335{
36+ EnsureDirectoryExists ( artifacts + "/tests" ) ;
37+ EnsureDirectoryExists ( artifacts + "/coverage" ) ;
38+
39+ foreach ( var testProject in GetFiles ( "test/*/*.csproj" ) ) {
40+ StartProcess ( "dotnet" , new ProcessSettings ( ) {
41+ WorkingDirectory = testProject . GetDirectory ( ) ,
42+ Arguments = new ProcessArgumentBuilder ( )
43+ . Append ( "xunit" )
44+ . Append ( "-noshadow" )
45+ . AppendSwitchQuotedSecret ( "-xml" , string . Format ( "{0}/tests/{1}.xml" , artifacts , testProject . GetFilenameWithoutExtension ( ) ) )
46+ . AppendSwitchQuotedSecret ( "-html" , string . Format ( "{0}/tests/{1}.html" , artifacts , testProject . GetFilenameWithoutExtension ( ) ) )
47+ } ) ;
48+ }
49+ } ) ;
50+
51+ Task ( "Coverage" )
52+ . IsDependentOn ( "Build" )
53+ . Does ( ( ) =>
54+ {
55+ EnsureDirectoryExists ( artifacts + "/coverage" ) ;
56+
57+ foreach ( var testProject in GetFiles ( "test/*/*.csproj" ) ) {
58+ OpenCover ( tool => {
59+ tool . StartProcess ( Context . Tools . Resolve ( "dotnet.exe" ) , new ProcessSettings ( ) {
60+ WorkingDirectory = testProject . GetDirectory ( ) ,
61+ Arguments = new ProcessArgumentBuilder ( )
62+ . Append ( "test" )
63+ . Append ( "--no-build" )
64+ . Append ( "-f net46" )
3465
66+ } ) ;
67+ } ,
68+ artifacts + "/coverage/coverage.opencover" ,
69+ new OpenCoverSettings ( ) {
70+ Register = "user" ,
71+ MergeOutput = true ,
72+ OldStyle = true ,
73+ WorkingDirectory = testProject . GetDirectory ( ) ,
74+ }
75+ . WithFilter ( "+[JsonRpc*]*" )
76+ . WithFilter ( "+[Lsp*]*" )
77+ . WithFilter ( "-[*.Tests]*" )
78+ ) ;
79+ }
3580} ) ;
3681
82+ Task ( "Coveralls [AppVeyor]" )
83+ . IsDependentOn ( "Coverage" )
84+ . WithCriteria ( AppVeyor . IsRunningOnAppVeyor )
85+ . Does ( ( ) => {
86+ CoverallsNet ( artifacts + "/coverage/coverage.opencover" , CoverallsNetReportType . OpenCover , new CoverallsNetSettings ( )
87+ {
88+ RepoToken = EnvironmentVariable ( "coveralls_repo_token" ) ,
89+ UseRelativePaths = true ,
90+ ServiceName = "Appveyor" ,
91+ CommitId = EnvironmentVariable ( "APPVEYOR_REPO_COMMIT" ) ,
92+ CommitBranch = EnvironmentVariable ( "APPVEYOR_REPO_BRANCH" ) ,
93+ CommitAuthor = EnvironmentVariable ( "APPVEYOR_REPO_COMMIT_AUTHOR" ) ,
94+ CommitEmail = EnvironmentVariable ( "APPVEYOR_REPO_COMMIT_AUTHOR_EMAIL" ) ,
95+ CommitMessage = EnvironmentVariable ( "APPVEYOR_REPO_COMMIT_MESSAGE" ) + ( EnvironmentVariable ( "APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED" ) ?? string . Empty ) ,
96+ } ) ;
97+ } ) ;
98+
99+ Task ( "Coveralls [TravisCI]" )
100+ . IsDependentOn ( "Coverage" )
101+ . WithCriteria ( TravisCI . IsRunningOnTravisCI )
102+ . Does ( ( ) => {
103+ CoverallsNet ( artifacts + "/coverage/coverage.opencover" , CoverallsNetReportType . OpenCover , new CoverallsNetSettings ( )
104+ {
105+ RepoToken = EnvironmentVariable ( "coveralls_repo_token" ) ,
106+ UseRelativePaths = true ,
107+ ServiceName = "TravisCI" ,
108+ // CommitId = EnvironmentVariable("APPVEYOR_REPO_COMMIT"),
109+ // CommitBranch = EnvironmentVariable("APPVEYOR_REPO_BRANCH"),
110+ // CommitAuthor = EnvironmentVariable("APPVEYOR_REPO_COMMIT_AUTHOR"),
111+ // CommitEmail = EnvironmentVariable("APPVEYOR_REPO_COMMIT_AUTHOR_EMAIL"),
112+ // CommitMessage = EnvironmentVariable("APPVEYOR_REPO_COMMIT_MESSAGE") + (EnvironmentVariable("APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED") ?? string.Empty),
113+ } ) ;
114+ } ) ;
115+
116+ Task ( "Coveralls" )
117+ . IsDependentOn ( "Coverage" )
118+ . IsDependentOn ( "Coveralls [TravisCI]" )
119+ . IsDependentOn ( "Coveralls [AppVeyor]" ) ;
120+
121+
37122Task ( "Default" )
38123 . IsDependentOn ( "Clean" )
39124 . IsDependentOn ( "Build" )
40- . IsDependentOn ( "Test" ) ;
125+ . IsDependentOn ( "Test" )
126+ . IsDependentOn ( "Coveralls" ) ;
41127
42128RunTarget ( target ) ;
0 commit comments