4
4
5
5
open System
6
6
open System.IO
7
+ open System.Text
7
8
open Fake
8
9
open Fake.FileUtils
9
10
open Fake.MSTest
@@ -35,14 +36,15 @@ let parsedRelease =
35
36
File.ReadLines " RELEASE_NOTES.md"
36
37
|> ReleaseNotesHelper.parseReleaseNotes
37
38
38
- //Fake.ReleaseNotesHelper.Parse assumes letters+int in PreRelease.TryParse.
39
- //This means we cannot append the full date yyyMMddHHmmss to prerelease.
40
- //See https://github.com/fsharp/FAKE/issues/522
41
- //TODO: When this has been fixed, switch to DateTime.UtcNow.ToString("yyyyMMddHHmmss")
42
- let preReleaseVersion = parsedRelease.AssemblyVersion + " -" + ( getBuildParamOrDefault " nugetprerelease" " pre" ) + DateTime.UtcNow.ToString( " yyMMddHHmm" )
39
+ let envBuildNumber = System.Environment.GetEnvironmentVariable( " BUILD_NUMBER" )
40
+ let buildNumber = if String.IsNullOrWhiteSpace( envBuildNumber) then " 0" else envBuildNumber
41
+
42
+ let version = parsedRelease.AssemblyVersion + " ." + buildNumber
43
+ let preReleaseVersion = version + " -beta"
44
+
43
45
let isUnstableDocs = hasBuildParam " unstable"
44
46
let isPreRelease = hasBuildParam " nugetprerelease"
45
- let release = if isPreRelease then ReleaseNotesHelper.ReleaseNotes.New( parsedRelease.AssemblyVersion , preReleaseVersion , parsedRelease.Notes) else parsedRelease
47
+ let release = if isPreRelease then ReleaseNotesHelper.ReleaseNotes.New( version , version + " -beta " , parsedRelease.Notes) else parsedRelease
46
48
47
49
printfn " Assembly version: %s \n Nuget version; %s \n " release.AssemblyVersion release.NugetVersion
48
50
//--------------------------------------------------------------------------------
@@ -57,6 +59,14 @@ let libDir = workingDir @@ @"lib\net45\"
57
59
let nugetExe = FullName @" src\.nuget\NuGet.exe"
58
60
let docDir = " bin" @@ " doc"
59
61
62
+ open Fake.RestorePackageHelper
63
+ Target " RestorePackages" ( fun _ ->
64
+ " ./src/Akka.sln"
65
+ |> RestoreMSSolutionPackages ( fun p ->
66
+ { p with
67
+ OutputPath = " ./src/packages"
68
+ Retries = 4 })
69
+ )
60
70
61
71
//--------------------------------------------------------------------------------
62
72
// Clean build results
@@ -67,17 +77,22 @@ Target "Clean" <| fun _ ->
67
77
//--------------------------------------------------------------------------------
68
78
// Generate AssemblyInfo files with the version for release notes
69
79
70
-
71
80
open AssemblyInfoFile
81
+
72
82
Target " AssemblyInfo" <| fun _ ->
83
+ CreateCSharpAssemblyInfoWithConfig " src/SharedAssemblyInfo.cs" [
84
+ Attribute.Company company
85
+ Attribute.Copyright copyright
86
+ Attribute.Trademark " "
87
+ Attribute.Version version
88
+ Attribute.FileVersion version ] <| AssemblyInfoFileConfig( false )
89
+
73
90
for file in !! " src/**/AssemblyInfo.fs" do
74
91
let title =
75
92
file
76
93
|> Path.GetDirectoryName
77
94
|> Path.GetDirectoryName
78
95
|> Path.GetFileName
79
-
80
- let version = release.AssemblyVersion + " .0"
81
96
82
97
CreateFSharpAssemblyInfo file [
83
98
Attribute.Title title
@@ -90,12 +105,6 @@ Target "AssemblyInfo" <| fun _ ->
90
105
Attribute.Version version
91
106
Attribute.FileVersion version ]
92
107
93
- CreateCSharpAssemblyInfoWithConfig " src/SharedAssemblyInfo.cs" [
94
- Attribute.Company company
95
- Attribute.Copyright copyright
96
- Attribute.Trademark " "
97
- Attribute.Version version
98
- Attribute.FileVersion version ] |> ignore
99
108
100
109
//--------------------------------------------------------------------------------
101
110
// Build the solution
@@ -182,6 +191,7 @@ Target "CopyOutput" <| fun _ ->
182
191
" contrib/dependencyinjection/Akka.DI.Ninject"
183
192
" contrib/testkits/Akka.TestKit.Xunit"
184
193
" contrib/testkits/Akka.TestKit.NUnit"
194
+ " contrib/testkits/Akka.TestKit.Xunit2"
185
195
]
186
196
|> List.iter copyOutput
187
197
@@ -201,14 +211,16 @@ Target "CleanTests" <| fun _ ->
201
211
//--------------------------------------------------------------------------------
202
212
// Run tests
203
213
204
- open XUnitHelper
214
+ open XUnit2Helper
205
215
Target " RunTests" <| fun _ ->
206
216
let msTestAssemblies = !! " src/**/bin/Release/Akka.TestKit.VsTest.Tests.dll"
207
217
let nunitTestAssemblies = !! " src/**/bin/Release/Akka.TestKit.NUnit.Tests.dll"
208
218
let xunitTestAssemblies = !! " src/**/bin/Release/*.Tests.dll" --
209
219
" src/**/bin/Release/Akka.TestKit.VsTest.Tests.dll" --
210
220
" src/**/bin/Release/Akka.TestKit.NUnit.Tests.dll" --
211
- " src/**/bin/Release/Akka.Persistence.SqlServer.Tests.dll"
221
+ " src/**/bin/Release/Akka.Persistence.SqlServer.Tests.dll" --
222
+ " src/**/bin/Release/Akka.Persistence.PostgreSql.Tests.dll" --
223
+ " src/**/bin/Release/Akka.Persistence.Cassandra.Tests.dll"
212
224
213
225
mkdir testOutput
214
226
@@ -219,9 +231,9 @@ Target "RunTests" <| fun _ ->
219
231
DisableShadowCopy = true ;
220
232
OutputFile = testOutput + @" \NUnitTestResults.xml" })
221
233
222
- let xunitToolPath = findToolInSubPath " xunit.console.clr4. exe" " src/packages/xunit.runners* "
234
+ let xunitToolPath = findToolInSubPath " xunit.console.exe" " src/packages/xunit.runner.console*/tools "
223
235
printfn " Using XUnit runner: %s " xunitToolPath
224
- xUnit
236
+ xUnit2
225
237
( fun p -> { p with OutputDir = testOutput; ToolPath = xunitToolPath })
226
238
xunitTestAssemblies
227
239
@@ -230,18 +242,24 @@ Target "RunTestsMono" <| fun _ ->
230
242
231
243
mkdir testOutput
232
244
233
- let xunitToolPath = findToolInSubPath " xunit.console.clr4. exe" " src/packages/xunit.runners* "
245
+ let xunitToolPath = findToolInSubPath " xunit.console.exe" " src/packages/xunit.runner.console*/tools "
234
246
printfn " Using XUnit runner: %s " xunitToolPath
235
- xUnit
247
+ xUnit2
236
248
( fun p -> { p with OutputDir = testOutput; ToolPath = xunitToolPath })
237
249
xunitTestAssemblies
238
250
239
251
Target " MultiNodeTests" <| fun _ ->
240
252
let multiNodeTestPath = findToolInSubPath " Akka.MultiNodeTestRunner.exe" " bin/core/Akka.MultiNodeTestRunner*"
241
253
printfn " Using MultiNodeTestRunner: %s " multiNodeTestPath
242
254
255
+ let spec = getBuildParam " spec"
256
+
257
+ let args = new StringBuilder()
258
+ |> append " Akka.MultiNodeTests.dll"
259
+ |> append " -Dmultinode.enable-filesink=on"
260
+ |> appendIfNotNullOrEmpty spec " -Dmultinode.test-spec="
261
+ |> toText
243
262
244
- let args = " Akka.Cluster.Tests.dll -Dmultinode.enable-filesink=on"
245
263
let result = ExecProcess( fun info ->
246
264
info.FileName <- multiNodeTestPath
247
265
info.WorkingDirectory <- ( Path.GetDirectoryName ( FullName multiNodeTestPath))
@@ -256,6 +274,22 @@ Target "RunSqlServerTests" <| fun _ ->
256
274
( fun p -> { p with OutputDir = testOutput; ToolPath = xunitToolPath })
257
275
sqlServerTests
258
276
277
+ Target " RunPostgreSqlTests" <| fun _ ->
278
+ let postgreSqlTests = !! " src/**/bin/Release/Akka.Persistence.PostgreSql.Tests.dll"
279
+ let xunitToolPath = findToolInSubPath " xunit.console.exe" " src/packages/xunit.runner.console*/tools"
280
+ printfn " Using XUnit runner: %s " xunitToolPath
281
+ xUnit2
282
+ ( fun p -> { p with OutputDir = testOutput; ToolPath = xunitToolPath })
283
+ postgreSqlTests
284
+
285
+ Target " RunCassandraTests" <| fun _ ->
286
+ let cassandraTests = !! " src/**/bin/Release/Akka.Persistence.Cassandra.Tests.dll"
287
+ let xunitToolPath = findToolInSubPath " xunit.console.exe" " src/packages/xunit.runner.console*/tools"
288
+ printfn " Using XUnit runner: %s " xunitToolPath
289
+ xUnit2
290
+ ( fun p -> { p with OutputDir = testOutput; ToolPath = xunitToolPath })
291
+ cassandraTests
292
+
259
293
//--------------------------------------------------------------------------------
260
294
// Nuget targets
261
295
//--------------------------------------------------------------------------------
@@ -266,8 +300,7 @@ module Nuget =
266
300
match project with
267
301
| " Akka" -> []
268
302
| " Akka.Cluster" -> [ " Akka.Remote" , release.NugetVersion]
269
- | " Akka.Persistence.TestKit" -> [ " Akka.Persistence" , preReleaseVersion]
270
- | " Akka.Persistence.FSharp" -> [ " Akka.Persistence" , preReleaseVersion]
303
+ | persistence when ( persistence.StartsWith( " Akka.Persistence." )) -> [ " Akka.Persistence" , preReleaseVersion]
271
304
| di when ( di.StartsWith( " Akka.DI." ) && not ( di.EndsWith( " Core" ))) -> [ " Akka.DI.Core" , release.NugetVersion]
272
305
| testkit when testkit.StartsWith( " Akka.TestKit." ) -> [ " Akka.TestKit" , release.NugetVersion]
273
306
| _ -> [ " Akka" , release.NugetVersion]
@@ -308,7 +341,7 @@ let createNugetPackages _ =
308
341
let projectDir = Path.GetDirectoryName nuspec
309
342
let projectFile = (!! ( projectDir @@ project + " .*sproj" )) |> Seq.head
310
343
let releaseDir = projectDir @@ @" bin\Release"
311
- let packages = projectDir @@ " packages.config"
344
+ let packages = projectDir @@ " packages.config"
312
345
let packageDependencies = if ( fileExists packages) then ( getDependencies packages) else []
313
346
let dependencies = packageDependencies @ getAkkaDependency project
314
347
let releaseVersion = getProjectVersion project
@@ -511,7 +544,7 @@ Target "HelpDocs" <| fun _ ->
511
544
//--------------------------------------------------------------------------------
512
545
513
546
// build dependencies
514
- " Clean" ==> " AssemblyInfo" ==> " Build" ==> " CopyOutput" ==> " BuildRelease"
547
+ " Clean" ==> " AssemblyInfo" ==> " RestorePackages " ==> " Build" ==> " CopyOutput" ==> " BuildRelease"
515
548
516
549
// tests dependencies
517
550
" CleanTests" ==> " RunTests"
0 commit comments