Skip to content

Commit 25b8a35

Browse files
authored
Option/ValueOption.tryGetValue and reduce testing complexity (#163)
* Adds tryGetValue to Option/ValueOption * ensure dotnet tests run * Adds ValueOptionTests to test list * Adds tryGetValue tests * formatting * fix fable tests * Using dotnet test and reducing Fable test complexity
1 parent e8d4410 commit 25b8a35

File tree

28 files changed

+1288
-236
lines changed

28 files changed

+1288
-236
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,3 +399,4 @@ paket-files/
399399
fable_modules
400400
.fable
401401
*.fs.js
402+
js-dist/

FsToolkit.ErrorHandling.sln

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,6 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FsToolkit.ErrorHandling.Asy
2727
EndProject
2828
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FsToolkit.ErrorHandling.AsyncSeq.Tests", "tests\FsToolkit.ErrorHandling.AsyncSeq.Tests\FsToolkit.ErrorHandling.AsyncSeq.Tests.fsproj", "{5DED3CA8-B331-4B48-A6A2-2EE1410437CA}"
2929
EndProject
30-
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FsToolkit.ErrorHandling.Fable.Tests", "tests\FsToolkit.ErrorHandling.Fable.Tests\FsToolkit.ErrorHandling.Fable.Tests.fsproj", "{629C5ADC-6C4D-454C-88EE-CC067FB21D5E}"
31-
EndProject
32-
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FsToolkit.ErrorHandling.Tests.Runner", "tests\FsToolkit.ErrorHandling.Tests.Runner\FsToolkit.ErrorHandling.Tests.Runner.fsproj", "{B70E0B97-0CDD-481B-8F77-E1B0A486EB30}"
33-
EndProject
34-
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FsToolkit.ErrorHandling.AsyncSeq.Tests.Runner", "tests\FsToolkit.ErrorHandling.AsyncSeq.Tests.Runner\FsToolkit.ErrorHandling.AsyncSeq.Tests.Runner.fsproj", "{3DC38BAA-68F3-4493-B6F7-4A1C8C101897}"
35-
EndProject
3630
Global
3731
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3832
Debug|Any CPU = Debug|Any CPU
@@ -154,42 +148,6 @@ Global
154148
{5DED3CA8-B331-4B48-A6A2-2EE1410437CA}.Release|x64.Build.0 = Release|Any CPU
155149
{5DED3CA8-B331-4B48-A6A2-2EE1410437CA}.Release|x86.ActiveCfg = Release|Any CPU
156150
{5DED3CA8-B331-4B48-A6A2-2EE1410437CA}.Release|x86.Build.0 = Release|Any CPU
157-
{629C5ADC-6C4D-454C-88EE-CC067FB21D5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
158-
{629C5ADC-6C4D-454C-88EE-CC067FB21D5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
159-
{629C5ADC-6C4D-454C-88EE-CC067FB21D5E}.Debug|x64.ActiveCfg = Debug|Any CPU
160-
{629C5ADC-6C4D-454C-88EE-CC067FB21D5E}.Debug|x64.Build.0 = Debug|Any CPU
161-
{629C5ADC-6C4D-454C-88EE-CC067FB21D5E}.Debug|x86.ActiveCfg = Debug|Any CPU
162-
{629C5ADC-6C4D-454C-88EE-CC067FB21D5E}.Debug|x86.Build.0 = Debug|Any CPU
163-
{629C5ADC-6C4D-454C-88EE-CC067FB21D5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
164-
{629C5ADC-6C4D-454C-88EE-CC067FB21D5E}.Release|Any CPU.Build.0 = Release|Any CPU
165-
{629C5ADC-6C4D-454C-88EE-CC067FB21D5E}.Release|x64.ActiveCfg = Release|Any CPU
166-
{629C5ADC-6C4D-454C-88EE-CC067FB21D5E}.Release|x64.Build.0 = Release|Any CPU
167-
{629C5ADC-6C4D-454C-88EE-CC067FB21D5E}.Release|x86.ActiveCfg = Release|Any CPU
168-
{629C5ADC-6C4D-454C-88EE-CC067FB21D5E}.Release|x86.Build.0 = Release|Any CPU
169-
{B70E0B97-0CDD-481B-8F77-E1B0A486EB30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
170-
{B70E0B97-0CDD-481B-8F77-E1B0A486EB30}.Debug|Any CPU.Build.0 = Debug|Any CPU
171-
{B70E0B97-0CDD-481B-8F77-E1B0A486EB30}.Debug|x64.ActiveCfg = Debug|Any CPU
172-
{B70E0B97-0CDD-481B-8F77-E1B0A486EB30}.Debug|x64.Build.0 = Debug|Any CPU
173-
{B70E0B97-0CDD-481B-8F77-E1B0A486EB30}.Debug|x86.ActiveCfg = Debug|Any CPU
174-
{B70E0B97-0CDD-481B-8F77-E1B0A486EB30}.Debug|x86.Build.0 = Debug|Any CPU
175-
{B70E0B97-0CDD-481B-8F77-E1B0A486EB30}.Release|Any CPU.ActiveCfg = Release|Any CPU
176-
{B70E0B97-0CDD-481B-8F77-E1B0A486EB30}.Release|Any CPU.Build.0 = Release|Any CPU
177-
{B70E0B97-0CDD-481B-8F77-E1B0A486EB30}.Release|x64.ActiveCfg = Release|Any CPU
178-
{B70E0B97-0CDD-481B-8F77-E1B0A486EB30}.Release|x64.Build.0 = Release|Any CPU
179-
{B70E0B97-0CDD-481B-8F77-E1B0A486EB30}.Release|x86.ActiveCfg = Release|Any CPU
180-
{B70E0B97-0CDD-481B-8F77-E1B0A486EB30}.Release|x86.Build.0 = Release|Any CPU
181-
{3DC38BAA-68F3-4493-B6F7-4A1C8C101897}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
182-
{3DC38BAA-68F3-4493-B6F7-4A1C8C101897}.Debug|Any CPU.Build.0 = Debug|Any CPU
183-
{3DC38BAA-68F3-4493-B6F7-4A1C8C101897}.Debug|x64.ActiveCfg = Debug|Any CPU
184-
{3DC38BAA-68F3-4493-B6F7-4A1C8C101897}.Debug|x64.Build.0 = Debug|Any CPU
185-
{3DC38BAA-68F3-4493-B6F7-4A1C8C101897}.Debug|x86.ActiveCfg = Debug|Any CPU
186-
{3DC38BAA-68F3-4493-B6F7-4A1C8C101897}.Debug|x86.Build.0 = Debug|Any CPU
187-
{3DC38BAA-68F3-4493-B6F7-4A1C8C101897}.Release|Any CPU.ActiveCfg = Release|Any CPU
188-
{3DC38BAA-68F3-4493-B6F7-4A1C8C101897}.Release|Any CPU.Build.0 = Release|Any CPU
189-
{3DC38BAA-68F3-4493-B6F7-4A1C8C101897}.Release|x64.ActiveCfg = Release|Any CPU
190-
{3DC38BAA-68F3-4493-B6F7-4A1C8C101897}.Release|x64.Build.0 = Release|Any CPU
191-
{3DC38BAA-68F3-4493-B6F7-4A1C8C101897}.Release|x86.ActiveCfg = Release|Any CPU
192-
{3DC38BAA-68F3-4493-B6F7-4A1C8C101897}.Release|x86.Build.0 = Release|Any CPU
193151
EndGlobalSection
194152
GlobalSection(NestedProjects) = preSolution
195153
{E0466000-F8E4-416B-B605-C65F7602367A} = {E28025A7-EF6A-45BF-8FA0-75E394D3D42B}
@@ -201,8 +159,5 @@ Global
201159
{600EA6E9-C9F2-4F02-99EF-1F992711DB1C} = {9F888E39-5D40-4E29-9529-67C466722431}
202160
{02DF2AE6-A7D4-4C38-AA4D-651BDD1D3571} = {E28025A7-EF6A-45BF-8FA0-75E394D3D42B}
203161
{5DED3CA8-B331-4B48-A6A2-2EE1410437CA} = {D8B86171-2147-49EF-8ADA-1CF8B0A20D40}
204-
{629C5ADC-6C4D-454C-88EE-CC067FB21D5E} = {D8B86171-2147-49EF-8ADA-1CF8B0A20D40}
205-
{B70E0B97-0CDD-481B-8F77-E1B0A486EB30} = {D8B86171-2147-49EF-8ADA-1CF8B0A20D40}
206-
{3DC38BAA-68F3-4493-B6F7-4A1C8C101897} = {D8B86171-2147-49EF-8ADA-1CF8B0A20D40}
207162
EndGlobalSection
208163
EndGlobal

build.fsx

Lines changed: 27 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ Target.create "Clean" (fun _ ->
104104
++ "tests/**/bin"
105105
++ "src/**/obj"
106106
++ "tests/**/obj"
107+
++ "dist"
108+
++"js-dist"
107109
|> Shell.cleanDirs
108110

109111
[
@@ -129,77 +131,42 @@ Target.create "NpmRestore" (fun _ ->
129131
Npm.install id
130132
)
131133

132-
let runTestAssembly setParams testAssembly =
133-
let exitCode =
134-
let fakeStartInfo testAssembly (args : Expecto.Params) =
135-
let workingDir =
136-
if String.isNotNullOrEmpty args.WorkingDirectory
137-
then args.WorkingDirectory else Fake.IO.Path.getDirectory testAssembly
138-
(fun (info: ProcStartInfo) ->
139-
{ info with
140-
FileName = "dotnet"
141-
Arguments = sprintf "%s %s" testAssembly (string args)
142-
WorkingDirectory = workingDir } )
143-
144-
let execWithExitCode testAssembly argsString timeout =
145-
Process.execSimple (fakeStartInfo testAssembly argsString) timeout
146-
147-
execWithExitCode testAssembly (setParams Expecto.Params.DefaultParams) TimeSpan.MaxValue
148-
149-
testAssembly, exitCode
150-
151-
let runTests setParams testAssemblies =
152-
let details = testAssemblies |> String.separated ", "
153-
use __ = Trace.traceTask "Expecto" details
154-
let res =
155-
testAssemblies
156-
|> Seq.map (runTestAssembly setParams)
157-
|> Seq.filter( snd >> (<>) 0)
158-
|> Seq.toList
159-
160-
match res with
161-
| [] -> ()
162-
| failedAssemblies ->
163-
failedAssemblies
164-
|> List.map (fun (testAssembly,exitCode) ->
165-
sprintf "Expecto test of assembly '%s' failed. Process finished with exit code %d." testAssembly exitCode )
166-
|> String.concat System.Environment.NewLine
167-
|> Fake.Testing.Common.FailedTestsException |> raise
168-
__.MarkSuccess()
169-
170-
let testProjects = [
171-
"tests/FsToolkit.ErrorHandling.Tests.Runner"
172-
"tests/FsToolkit.ErrorHandling.AsyncSeq.Tests.Runner"
173-
"tests/FsToolkit.ErrorHandling.JobResult.Tests"
174-
"tests/FsToolkit.ErrorHandling.TaskResult.Tests"
175-
"tests/FsToolkit.ErrorHandling.Fable.Tests"
176-
]
134+
let dotnetTest ctx =
177135

178-
let testAssemblies = [
179-
for proj in testProjects do
180-
let projName = proj.Split('/') |> Array.last
181-
let pattern = proj </> "bin" </> configuration </> "**" </> (projName + ".dll")
136+
let args =
137+
[
138+
"--no-build"
139+
]
140+
DotNet.test(fun c ->
182141

183-
yield! (!!pattern)
184-
]
142+
{ c with
143+
Configuration =DotNet.BuildConfiguration.Release
144+
Common =
145+
c.Common
146+
|> DotNet.Options.withAdditionalArgs args
147+
}) solutionFile
185148

186-
Target.create "RunTests" (fun _ ->
187-
runTests id testAssemblies
188-
)
149+
Target.create "RunTests" dotnetTest
189150

190151
let runFableTests _ =
191152
Npm.test id
192153

193154
Target.create "RunFableTests" runFableTests
194155

156+
let fableAwareTests = [
157+
"./tests/FsToolkit.ErrorHandling.Tests"
158+
"./tests/FsToolkit.ErrorHandling.AsyncSeq.Tests"
159+
]
160+
195161
Target.create "FemtoValidate" (fun _ ->
196-
let result =
197-
CreateProcess.fromRawCommand "dotnet" [ "femto"; "./tests/FsToolkit.ErrorHandling.Fable.Tests"; "--validate" ]
198-
|> Proc.run
162+
for testProject in fableAwareTests do
163+
let result =
164+
CreateProcess.fromRawCommand "dotnet" [ "femto"; testProject; "--validate" ]
165+
|> Proc.run
199166

200-
if result.ExitCode <> 0
201-
then
202-
Fake.Testing.Common.FailedTestsException "Femto failed; perhaps you need to update the package.json?" |> raise
167+
if result.ExitCode <> 0
168+
then
169+
Fake.Testing.Common.FailedTestsException "Femto failed; perhaps you need to update the package.json?" |> raise
203170
)
204171

205172
let release = ReleaseNotes.load "RELEASE_NOTES.md"

0 commit comments

Comments
 (0)