11// Install tools.
22#tool dotnet : ? package= GitVersion . Tool & version = 5.6 .6
33#tool nuget: ? package = GitReleaseManager & version = 0.11 .0
4- #tool nuget: ? package = OpenCover & version = 4.7 .922
5- #tool nuget: ? package = ReportGenerator & version = 4.8 .7
4+ #tool nuget: ? package = OpenCover & version = 4.7 .1221
5+ #tool nuget: ? package = ReportGenerator & version = 4.8 .11
66#tool nuget: ? package = coveralls . io & version = 1.4 .2
77#tool nuget: ? package = xunit . runner . console & version = 2.4 .1
88
99// Install addins.
10- #addin nuget: ? package = Cake . Coveralls & version = 1.0 .0
10+ #addin nuget: ? package = Cake . Coveralls & version = 1.1 .0
11+ #addin nuget: ? package = Cake . Git & version = 1.0 .1
1112
1213
1314///////////////////////////////////////////////////////////////////////////////
1718var target = Argument < string > ( "target" , "Default" ) ;
1819var configuration = Argument < string > ( "configuration" , "Release" ) ;
1920
21+ if ( IsRunningOnUnix ( ) ) target = "Run-Unit-Tests" ;
22+
2023
2124///////////////////////////////////////////////////////////////////////////////
2225// GLOBAL VARIABLES
@@ -45,6 +48,9 @@ var outputDir = "./artifacts/";
4548var codeCoverageDir = $"{outputDir}CodeCoverage/" ;
4649var benchmarkDir = $"{outputDir}Benchmark/" ;
4750
51+ var solutionFile = $"{sourceFolder}{libraryName}.sln" ;
52+ var sourceProject = $"{sourceFolder}{libraryName}/{libraryName}.csproj" ;
53+ var integrationTestsProject = $"{sourceFolder}{libraryName}.IntegrationTests/{libraryName}.IntegrationTests.csproj" ;
4854var unitTestsProject = $"{sourceFolder}{libraryName}.UnitTests/{libraryName}.UnitTests.csproj" ;
4955var benchmarkProject = $"{sourceFolder}{libraryName}.Benchmark/{libraryName}.Benchmark.csproj" ;
5056
@@ -116,10 +122,27 @@ Setup(context =>
116122 string . IsNullOrEmpty ( gitHubPassword ) ? "[NULL]" : new string ( '*' , gitHubPassword . Length )
117123 ) ;
118124 }
125+
126+ // Integration tests are intended to be used for debugging purposes and not intended to be executed in CI environment.
127+ // Also, the runner for these tests contains windows-specific code (such as resizing window, moving window to center of screen, etc.)
128+ // which can cause problems when attempting to run unit tests on an Ubuntu image on AppVeyor.
129+ if ( ! isLocalBuild )
130+ {
131+ Information ( "" ) ;
132+ Information ( "Removing integration tests" ) ;
133+ DotNetCoreTool ( solutionFile , "sln" , $ "remove { integrationTestsProject . TrimStart ( sourceFolder , StringComparison . OrdinalIgnoreCase ) } ") ;
134+ }
119135} ) ;
120136
121137Teardown( context =>
122138{
139+ if ( ! isLocalBuild )
140+ {
141+ Information ( "Restoring integration tests" ) ;
142+ GitCheckout ( "." , new FilePath [ ] { solutionFile } ) ;
143+ Information ( "" ) ;
144+ }
145+
123146 // Executed AFTER the last task.
124147 Information ( "Finished running tasks." ) ;
125148} ) ;
@@ -174,7 +197,7 @@ Task("Build")
174197 . IsDependentOn ( "Restore-NuGet-Packages" )
175198 . Does ( ( ) =>
176199{
177- DotNetCoreBuild ( $ " { sourceFolder } { libraryName } .sln" , new DotNetCoreBuildSettings
200+ DotNetCoreBuild ( solutionFile , new DotNetCoreBuildSettings
178201 {
179202 Configuration = configuration ,
180203 NoRestore = true ,
@@ -220,6 +243,7 @@ Task("Run-Code-Coverage")
220243} ) ;
221244
222245Task( "Upload-Coverage-Result" )
246+ . IsDependentOn ( "Run-Code-Coverage" )
223247 . Does ( ( ) =>
224248{
225249 CoverallsIo ( $ "{ codeCoverageDir } coverage.xml") ;
@@ -265,7 +289,7 @@ Task("Create-NuGet-Package")
265289 }
266290 } ;
267291
268- DotNetCorePack ( $ " { sourceFolder } { libraryName } / { libraryName } .csproj" , settings ) ;
292+ DotNetCorePack ( sourceProject , settings ) ;
269293} ) ;
270294
271295Task( "Upload-AppVeyor-Artifacts" )
@@ -408,8 +432,11 @@ Task("Benchmark")
408432 . WithCriteria ( isBenchmarkPresent )
409433 . Does ( ( ) =>
410434{
411- var htmlReport = GetFiles ( $ "{ benchmarkDir } results/*-report.html", new GlobberSettings { IsCaseSensitive = false } ) . FirstOrDefault ( ) ;
412- StartProcess ( "cmd" , $ "/c start { htmlReport } ") ;
435+ var htmlReports = GetFiles ( $ "{ benchmarkDir } results/*-report.html", new GlobberSettings { IsCaseSensitive = false } ) ;
436+ foreach ( var htmlReport in htmlReports )
437+ {
438+ StartProcess ( "cmd" , $ "/c start { htmlReport } ") ;
439+ }
413440} ) ;
414441
415442Task( "ReleaseNotes" )
@@ -435,3 +462,25 @@ Task("Default")
435462///////////////////////////////////////////////////////////////////////////////
436463
437464RunTarget( target ) ;
465+
466+
467+
468+ ///////////////////////////////////////////////////////////////////////////////
469+ // PRIVATE METHODS
470+ ///////////////////////////////////////////////////////////////////////////////
471+ private static string TrimStart( this string source, string value , StringComparison comparisonType )
472+ {
473+ if ( source == null )
474+ {
475+ throw new ArgumentNullException( nameof ( source ) ) ;
476+ }
477+
478+ int valueLength = value. Length ;
479+ int startIndex = 0 ;
480+ while ( source . IndexOf ( value , startIndex , comparisonType ) == startIndex )
481+ {
482+ startIndex += valueLength ;
483+ }
484+
485+ return source . Substring ( startIndex ) ;
486+ }
0 commit comments