1
1
#tool "nuget:?package=GitVersion.CommandLine"
2
2
#tool "nuget:?package=xunit.runner.console"
3
-
3
+ #tool "nuget:?package=OpenCover"
4
+ #tool "nuget:?package=coveralls.io"
5
+ #addin "Cake.Coveralls" ;
4
6
5
7
var target = Argument ( "target" , "Default" ) ;
6
8
var configuration = Argument ( "configuration" , "Release" ) ;
7
- var artifacts = "./artifacts" ;
9
+ var artifacts = new DirectoryPath ( "./artifacts" ) . MakeAbsolute ( Context . Environment ) ;
8
10
9
11
Task ( "Clean" )
10
12
. Does ( ( ) =>
@@ -23,20 +25,104 @@ Task("Build")
23
25
. IsDependentOn ( "Restore" )
24
26
. Does ( ( ) =>
25
27
{
26
- foreach ( var project in GetFiles ( "**/* .csproj" ) )
28
+ foreach ( var project in GetFiles ( "src/*/*.csproj" ) . Concat ( GetFiles ( "test/*/* .csproj") ) )
27
29
DotNetCoreBuild ( project . FullPath ) ;
28
30
} ) ;
29
31
30
32
Task ( "Test" )
31
33
. IsDependentOn ( "Build" )
32
34
. Does ( ( ) =>
33
35
{
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" )
34
65
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
+ }
35
80
} ) ;
36
81
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
+
37
122
Task ( "Default" )
38
123
. IsDependentOn ( "Clean" )
39
124
. IsDependentOn ( "Build" )
40
- . IsDependentOn ( "Test" ) ;
125
+ . IsDependentOn ( "Test" )
126
+ . IsDependentOn ( "Coveralls" ) ;
41
127
42
128
RunTarget ( target ) ;
0 commit comments