mausch / fuchu Goto Github PK
View Code? Open in Web Editor NEWFunctional test library for F# / C# / VB.NET
License: Apache License 2.0
Functional test library for F# / C# / VB.NET
License: Apache License 2.0
------ Discover test started ------
NUnit Adapter 3.7.0.0: Test discovery starting
Assembly contains no NUnit 3.0 tests: C:\Users\sanke\OneDrive\code\github\Algorithms\FSharp\FSharp\bin\Debug\FSharp.exe
NUnit Adapter 3.7.0.0: Test discovery complete
System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.UnboxGeneric[T](Object source)
at [email protected](MemberInfo m) in c:\prg\Fuchu\Fuchu\Fuchu.fs:line 343
at Microsoft.FSharp.Primitives.Basics.List.choose[T,TResult](FSharpFunc2 f, FSharpList
1 xs)
at Fuchu.Impl.testFromMember(MemberInfo m) in c:\prg\Fuchu\Fuchu\Fuchu.fs:line 357
at [email protected](MemberInfo m) in c:\prg\Fuchu\Fuchu\Fuchu.fs:line 372
at Microsoft.FSharp.Collections.IEnumerator.choose@205.System-Collections-IEnumerator-MoveNext()
at Microsoft.FSharp.Collections.SeqModule.ToList[T](IEnumerable1 source) at [email protected](Type t) in c:\prg\Fuchu\Fuchu\Fuchu.fs:line 368 at Microsoft.FSharp.Collections.IEnumerator.choose@205.System-Collections-IEnumerator-MoveNext() at Microsoft.FSharp.Collections.SeqModule.ToList[T](IEnumerable
1 source)
at Fuchu.Impl.testFromAssemblyWithFilter(FSharpFunc2 typeFilter, Assembly a) in c:\prg\Fuchu\Fuchu\Fuchu.fs:line 378 at [email protected](Assembly a) in c:\prg\Fuchu\Fuchu\Fuchu.fs:line 385 at Discovery.DiscoverProxy.DiscoverTests(String source) at Discovery.DiscoverProxy.DiscoverTests(String source) at Discovery.Discoverer.Microsoft-VisualStudio-TestPlatform-ObjectModel-Adapter-ITestDiscoverer-DiscoverTests(IEnumerable
1 sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink)
========== Discover test finished: 2 found (0:00:00.6280152) ==========
module MaximizeStockProfit
open System
open NUnit.Framework
open FsUnit
open Fuchu
let maxProfit1 p =
let rec loop minSoFar maxProfitSoFar rest =
match rest with
| [] -> maxProfitSoFar
| h :: t ->
let newMin =
if (h < minSoFar) then h else minSoFar
let newMaxProfit =
let profit = h - minSoFar
if (profit > maxProfitSoFar) then profit else maxProfitSoFar
loop newMin newMaxProfit t
match p with
| [] | [_] -> failwith "Not enough datapoints"
| h :: t -> loop h Int32.MinValue t
[]
type Tests () =
[<Test>]
member x.``Basic Tests`` () =
[ ([2;3], 1); ([3;2], -1); ([5;3;8;0], 5); ([5;4;3;2;1], -1); ([1;2;3;4;3;2;1], 3) ]
|> List.iter (fun (i, o) -> maxProfit1 i |> should equal o)
[<Test>]
member x.``Negative Tests`` () =
[ []; [2] ]
|> List.iter
(fun (i) ->
(fun () -> maxProfit1 i |> ignore)
|> should (throwWithMessage "Not enough datapoints") typeof<Exception>)
[]
let tests =
let expect input output _ =
maxProfit1 input |> should equal output
let basicTest i (input, output) =
testCase (sprintf "%i" i) <| expect input output
let shouldFail input _ =
maxProfit1 input |> should (throwWithMessage "Not enough datapoints") typeof<Exception>
let negativeTest i input =
testCase (sprintf "%i" i) <| shouldFail input
testList "MaximizeStockProfit" [
testList "Basic" (
[ ([2;3], 1); ([3;2], -1); ([5;3;8;0], 5); ([5;4;3;2;1], -1); ([1;2;3;4;3;2;1], 3) ]
|> List.mapi basicTest
)
testList "Negative" (
[ []; [2] ]
|> List.mapi negativeTest
)
]
Have you got a clue as to what this might mean?
[19:46:53][Step 3/3] Unhandled Exception:
[19:46:53][Step 3/3] System.TypeInitializationException: An exception was thrown by the type initializer for <StartupCode$Logary-Riemann-Tests>.$Logary.Riemann.Tests ---> System.MissingMethodException: Method not found: 'Fuchu.Test.NewTestCase'.
[19:46:53][Step 3/3] --- End of inner exception stack trace ---
[19:46:53][Step 3/3] at Logary.Riemann.Tests.main (System.String[] args) [0x00000] in <filename unknown>:0
[19:46:53][Step 3/3] [ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: An exception was thrown by the type initializer for <StartupCode$Logary-Riemann-Tests>.$Logary.Riemann.Tests ---> System.MissingMethodException: Method not found: 'Fuchu.Test.NewTestCase'.
[19:46:53][Step 3/3] --- End of inner exception stack trace ---
[19:46:53][Step 3/3] at Logary.Riemann.Tests.main (System.String[] args) [0x00000] in <filename unknown>:0
[19:46:53][Step 3/3] rake aborted!
[19:46:53][Step 3/3] Albacore::CommandFailedError: Command failed with status (1):
[19:46:53][Step 3/3] mono src/Logary.Riemann.Tests/bin/Release/Logary.Riemann.Tests.exe
[19:46:53][Step 3/3] Could not load signature of Fuchu.Test:NewTestCase due to: Could not load file or assembly or one of its dependencies.
[19:46:53][Step 3/3] Could not load signature of Fuchu.Test:NewTestCase due to: Could not load file or assembly or one of its dependencies.
[19:46:53][Step 3/3] Missing method Fuchu.Test::NewTestCase(FSharpFunc`2<Unit, Unit>) in assembly /opt/teamcity-agent/work/87f19f40cdb0dbe/src/Logary.Riemann.Tests/bin/Release/Fuchu.dll, referenced in assembly /opt/teamcity-agent/work/87f19f40cdb0dbe/src/Logary.Riemann.Tests/bin/Release/Logary.Riemann.Tests.exe
[19:46:53][Step 3/3] /opt/teamcity-agent/work/87f19f40cdb0dbe/Rakefile.rb:75:in `block (2 levels) in <top (required)>'
[19:46:53][Step 3/3] /opt/teamcity-agent/work/87f19f40cdb0dbe/Rakefile.rb:72:in `each'
[19:46:53][Step 3/3] /opt/teamcity-agent/work/87f19f40cdb0dbe/Rakefile.rb:72:in `block in <top (required)>'
Which one is it?
Consider inherited tests when importing tests from NUnit/MbUnit/etc
I think this library has a lot of potential; wouldn't it be great if it was moved to fsprojects for everyone to contribute to? It would increase its exposure.
Hello.
By trying to build solution I'm getting:
Error 10 The type referenced through 'Microsoft.FSharp.Collections.LazyList`1' is
defined in an assembly that is not referenced. You must add a reference to assembly
'FSharp.PowerPack'. D:\TFS\Fuchu\Fuchu.Tests\Prelude.fs 4 6 Fuchu.Tests
Switching order for these would make it easier to read:
I Assert.Equal("because some context, that",``computed value``(), "is this string"
).
serialisation of can roundtrip: Failed:
can roundtrip-Falsifiable, after 1 test (0 shrinks) (StdGen (1843863707,295999223)):
Transitioned Failed
with exception:
Fuchu.IgnoreException: my msg
at lalllalaa.fs:203
at FsCheck.Testable.evaluate[Evt,Unit] (Microsoft.FSharp.Core.FSharpFunc`2 body, Evt a) [0x00000] in <filename unknown>:0
Create TestCase, TestList, etc from NUnit / xUnit / MbUnit test classes
I'm using the sample from the docs. My whole console app is this:
open Fuchu
open Fuchu.FuchuFsCheck
open FsCheck
module PropertyTests =
let config = { FsCheck.Config.Default with MaxTest = 10000 }
let properties =
testList "FsCheck" [
testProperty "Addition is commutative" <|
fun a b ->
a + b = b + a
// you can also override the FsCheck config
testPropertyWithConfig config "Product is distributive over addition" <|
fun a b c ->
a * (b + c) = a * b + a * c
]
run properties
[]
let main args = defaultMainThisAssembly args
And I get this error:
The module/namespace 'FsCheck.Fluent' from compilation unit 'FsCheck' did not contain the namespace, module or type 'SpecBuilder`1'
.NET 4.6
FSharp 4.3.1.0
FsCheck 2.1.0
FSharp.Core 3.1.2.5
Fuchu 0.6.0.0
Fuchu.FsCheck 0.6.0.0
Any thoughts? Thanks.
It helps to manage assembly bindings, rather to do trial-and-error
Could we just put a random Fuchu.snk and sign it? A bit of a PITA to work with unsigned assemblies from signed assemblies. Reverse is OK.
Check that tests imported from NUnit/MbUnit can be run in parallel. I think not.
I note that this definition is obsolete in this project.
Can you delete it from the source? It clashes with Fake; so you can't import both libraries in the same file!
https://ci.appveyor.com/project/haf/logary/build/4.0.7
Unhandled Exception: System.TypeInitializationException: The type initializer for '<StartupCode$Logary-Adapters-Facade-Tests>.$Program' threw an exception. ---> System.MissingMethodException: Method not found: 'Fuchu.Test Fuchu.Test.NewTestCase(Microsoft.FSharp.Core.FSharpFunc`2<Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit>)'.
at [email protected](Unit unitVar)
at [email protected](Unit unitVar0)
at Microsoft.FSharp.Collections.SeqModule.ToList[T](IEnumerable`1 source)
at <StartupCode$Logary-Adapters-Facade-Tests>.$Program..cctor()
--- End of inner exception stack trace ---
at Program.main(String[] argv)
App.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime><assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<Paket>True</Paket>
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="4.4.0.0" />
</dependentAssembly>
</assemblyBinding></runtime></configuration>
Filter the tests to be run using patterns specified on the command line.
Run tests in parallel but report results in a deterministic order (to aid diff-based analysis of test output).
Look into integrating with FsCheck sort of like https://github.com/batterseapower/test-framework/
As with --maximum-generated-tests
in test-framework
I found it is pretty convenient and free to integrate AppVeyor. It can build all commits (or, if you wish, tags) and push to NuGet automatically.
See for example: https://github.com/intellifactory/fsock
After #50 , implement the adapter for dotnet test
to work.
Docs are currently dismal so I guess we'd have to dive into xunit or nunit's code.
System.MissingMethodException: Method 'Config.get_QuietOnSuccess' not found.
at <StartupCode$Target-Tests>.$Target.Tests.Serialisation..cctor () <0x10f436ac0 + 0x002bf> in <filename unknown>:0
--- End of inner exception stack trace ---
at Target.Tests.Serialisation.get_roundtrip () <0x10f436a80 + 0x00010> in <filename unknown>:0
at System.Reflection.MonoProperty.StaticGetterAdapterFrame[R] (System.Reflection.StaticGetter`1 getter, System.Object obj) <0x10d21f1c0 + 0x00012> in <filename unknown>:0
at System.Reflection.MonoProperty.GetValue (System.Object obj, System.Object[] index) <0x10d21f3b0 + 0x000d9> in <filename unknown>:0
--- End of inner exception stack trace ---
at System.Reflection.MonoProperty.GetValue (System.Object obj, System.Object[] index) <0x10d21f3b0 + 0x00117> in <filename unknown>:0
at [email protected] (System.Reflection.MemberInfo m) <0x10f435540 + 0x0030d> in <filename unknown>:0
at Microsoft.FSharp.Collections.ListModule.chooseAllAcc[a,b] (Microsoft.FSharp.Core.FSharpFunc`2 f, Microsoft.FSharp.Collections.FSharpList`1 xs, Microsoft.FSharp.Collections.FSharpList`1 acc) <0x10f433f40 + 0x0005c> in <filename unknown>:0
at Microsoft.FSharp.Collections.ListModule.Choose[T,TResult] (Microsoft.FSharp.Core.FSharpFunc`2 chooser, Microsoft.FSharp.Collections.FSharpList`1 list) <0x10f433e70 + 0x00092> in <filename unknown>:0
at Fuchu.Impl.testFromMember (System.Reflection.MemberInfo m) <0x10f432050 + 0x000dd> in <filename unknown>:0
at [email protected] (System.Reflection.MemberInfo m) <0x10f432020 + 0x00018> in <filename unknown>:0
at Microsoft.FSharp.Collections.IEnumerator+choose@202[TResult,T].System-Collections-IEnumerator-MoveNext () <0x10f42f1e0 + 0x000fd> in <filename unknown>:0
at Microsoft.FSharp.Collections.SeqModule.ToList[T] (IEnumerable`1 source) <0x10f42e4d0 + 0x00156> in <filename unknown>:0
at [email protected] (System.Type t) <0x10f42fcf0 + 0x0023f> in <filename unknown>:0
at Microsoft.FSharp.Collections.IEnumerator+choose@202[TResult,T].System-Collections-IEnumerator-MoveNext () <0x10f42f1e0 + 0x000fd> in <filename unknown>:0
at Microsoft.FSharp.Collections.SeqModule.ToList[T] (IEnumerable`1 source) <0x10f42e4d0 + 0x0026e> in <filename unknown>:0
at Fuchu.Impl.testFromAssemblyWithFilter (Microsoft.FSharp.Core.FSharpFunc`2 typeFilter, System.Reflection.Assembly a) <0x10f42de00 + 0x000a9> in <filename unknown>:0
at [email protected] (System.Reflection.Assembly a) <0x10f42ddc0 + 0x00025> in <filename unknown>:0
at Fuchu.Tests.DefaultMainThisAssembly (System.String[] args) <0x10e1f9ac0 + 0x00049> in <filename unknown>:0
Something akin to this PR would be really nice to have in Fuchu; especially coupled to parallel running of tests.
The stack trace in assertion failures is incorrect.
open Fuchu
let clo f () =
printfn "Initializing..."
let mem = 2 // Allocate some unmanaged resources (like GPU memory for example.)
f mem
printfn "Freeing..."
/// Applies a function to a value
let inline testFixture' setup (name, partialTest) =
testCase name (setup partialTest)
let test1 x = printfn "Doing something with that memory..."
let test2 x = printfn "Doing something else with that memory..."
let test3 x = printfn "Third test that uses the memory..."
let testCombined x = test1 x; test2 x; test3 x // How do I get this to count as 3 tests instead of 1?
let tests = testFixture' clo ("3 tests",testCombined)
run tests
Alternatively, just using testFixture
, is it possible to use the setup only once, pass the resulting parameters to the tests and dispose of it afterwards? To be honest this is quite a puzzler, and I have no idea how to deal with this. In XUnit or NUnit (assuming there weren't bugs making the adapter unable to find the tests) I would just use a fixture class.
With the example I found on the blog, the setup would have to be triggered each time for every test. I think there should be a middle ground between loading the thing every time and loading it only once outside of the test suite.
Any idea how?
The reported total running time is calculated from adding up all individual test running times, which for parallel test running is obviously more than the actual wall clock time.
Support ExpectedExceptionAttribute when converting from MbUnit/NUnit tests.
Write a function to map Fuchu tests to MbUnit tests, as described in http://bugsquash.blogspot.com/2012/06/fuchu-functional-test-library-for-net.html?showComment=1364172010713#c6294531064534333851 .
This would enable alternative runners like Gallio.
Implement TestDriven.Framework.ITestRunner
"run" and "runParallel" customize TestPrinters.Default and use it to print outputs for failed and exceptions. It would be nice to provide a way to either customize TestPrinters.Default or allow run/runParallel take custom TestPrinters.
My goal is to have verbose printing and print information about passed tests.
It would also be nice to somehow print progress. Perhaps pass to BeforeRun # of test about to be run / # of tests total?
Currently there is no pronunciation guide for "Fuchu". Is it like "Foo choo", "Fuh choo", "Fuhkoo", or "foo koo" or something entirely different .
Currently things like Xunit.Sdk.EqualException
are counted as errors instead of test failures.
MultipleCultureAttribute can be present at the method, type, or assembly level.
Like http://hackage.haskell.org/packages/archive/HUnit/1.2.5.1/doc/html/Test-HUnit-Base.html#g:3 , but obviously instead of a typeclass use a dictionary of Type -> ((unit -> 'a) -> (unit -> unit))
and reflection. Or use statically resolved inline classes: https://github.com/gmpl/FsControl
This would enable a simpler syntax for those cases when you only want to check equality or some boolean result.
As a tester,
When writing failing tests,
I want to quickly be able to see differences between expected and actual output
And I want to quickly see where there the test cases start and stop in the output.
Example output that takes times to parse:
when serialising MetadataRequest/single topic: Failed:
single topic
Expected: [|0uy; 0uy; 0uy; 1uy; 0uy; 6uy; 116uy; 111uy; 112uy; 105uy; 99uy; 49uy|]
Actual: [|0uy; 0uy; 0uy; 1uy; 116uy; 111uy; 112uy; 105uy; 99uy; 49uy|]
g:\prg\Fuchu\Fuchu\Assertions.fs(8,1): <StartupCode$Fuchu>[email protected](String msg)
(00:00:00.0090713)
when serialising MetadataRequest/three topics: Failed:
three topics
Expected: [|0uy; 0uy; 0uy; 3uy; 0uy; 3uy; 102uy; 111uy; 111uy; 0uy; 3uy; 98uy; 97uy; 114uy;
0uy; 3uy; 98uy; 97uy; 122uy|]
Actual: [|0uy; 0uy; 0uy; 3uy; 102uy; 111uy; 111uy; 98uy; 97uy; 114uy; 98uy; 97uy; 122uy|]
g:\prg\Fuchu\Fuchu\Assertions.fs(8,1): <StartupCode$Fuchu>[email protected](String msg)
(00:00:00.0022625)
13 tests run: 11 passed, 0 ignored, 2 failed, 0 errored (00:00:00.0878414)
``
Upgrading to latest Fuchu + FsCheck yields:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Exception: Method 'Config..ctor' not found.
at Suave.Tests.HttpVerbs.gets (Suave.SuaveConfig cfg) [0x00000] in /Users/h/dev/suave/suave/src/Suave.Tests/HttpVerbs.fs:22
at at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00054] in /private/tmp/source-mono-mac-4.0.0-branch-c5sr5/bockbuild-mono-4.0.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.0.5/mcs/class/corlib/System.Reflection/MonoMethod.cs:230
--- End of inner exception stack trace ---
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00069] in /private/tmp/source-mono-mac-4.0.0-branch-c5sr5/bockbuild-mono-4.0.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.0.5/mcs/class/corlib/System.Reflection/MonoMethod.cs:238
at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in /private/tmp/source-mono-mac-4.0.0-branch-c5sr5/bockbuild-mono-4.0.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.0.5/mcs/class/corlib/System.Reflection/MethodBase.cs:114
at Suave.Tests.FuchuExtensions+testFromMemberWithParam@15-1[Suave.Web+SuaveConfig].Invoke (System.Reflection.MemberInfo m) [0x00064] in /Users/h/dev/suave/suave/src/Suave.Tests/FuchuExtensions.fs:23
at Microsoft.FSharp.Collections.ListModule.chooseAllAcc[MemberInfo,Test] (Microsoft.FSharp.Core.FSharpFunc`2 f, Microsoft.FSharp.Collections.FSharpList`1 xs, Microsoft.FSharp.Collections.FSharpList`1 acc) [0x00019] in <filename unknown>:0
at Microsoft.FSharp.Collections.ListModule.Choose[MemberInfo,Test] (Microsoft.FSharp.Core.FSharpFunc`2 chooser, Microsoft.FSharp.Collections.FSharpList`1 list) [0x00008] in <filename unknown>:0
at Suave.Tests.FuchuExtensions.testFromMemberWithParam[SuaveConfig] (Suave.SuaveConfig param, System.Reflection.MemberInfo m) [0x00000] in /Users/h/dev/suave/suave/src/Suave.Tests/FuchuExtensions.fs:30
at Suave.Tests.FuchuExtensions+testFromTypeWithParam@45-1[Suave.Web+SuaveConfig].Invoke (System.Reflection.MemberInfo m) [0x00000] in /Users/h/dev/suave/suave/src/Suave.Tests/FuchuExtensions.fs:45
at Microsoft.FSharp.Collections.IEnumerator+choose@154[Fuchu.Test,System.Reflection.MemberInfo].System-Collections-IEnumerator-MoveNext () [0x00064] in <filename unknown>:0
at Microsoft.FSharp.Collections.SeqModule.ToList[Test] (IEnumerable`1 source) [0x00047] in <filename unknown>:0
at Suave.Tests.FuchuExtensions+testFromTypeWithParam@40[Suave.Web+SuaveConfig].Invoke (System.Type t) [0x00000] in /Users/h/dev/suave/suave/src/Suave.Tests/FuchuExtensions.fs:41
at Microsoft.FSharp.Collections.IEnumerator+choose@154[Fuchu.Test,System.Type].System-Collections-IEnumerator-MoveNext () [0x00064] in <filename unknown>:0
at Microsoft.FSharp.Collections.SeqModule.ToList[Test] (IEnumerable`1 source) [0x00047] in <filename unknown>:0
at Suave.Tests.FuchuExtensions.testFromAssemblyWithFilterAndParam[SuaveConfig] (Microsoft.FSharp.Core.FSharpFunc`2 typeFilter, System.Reflection.Assembly a, Suave.SuaveConfig param) [0x00000] in /Users/h/dev/suave/suave/src/Suave.Tests/FuchuExtensions.fs:51
at Suave.Tests.FuchuExtensions.testFromAssemblyWithParam[SuaveConfig] (System.Reflection.Assembly asm, Suave.SuaveConfig param) [0x00000] in /Users/h/dev/suave/suave/src/Suave.Tests/FuchuExtensions.fs:59
at Suave.Tests.FuchuExtensions.defaultMainThisAssemblyWithParam[SuaveConfig] (Suave.SuaveConfig param, System.String[] args) [0x00002] in /Users/h/dev/suave/suave/src/Suave.Tests/FuchuExtensions.fs:64
at Suave.Tests.Program.main (System.String[] args) [0x000e7] in /Users/h/dev/suave/suave/src/Suave.Tests/Program.fs:27
Semi-blocking for SuaveIO/suave#340 SuaveIO/suave#334 (can solve by downgrading FsCheck, I think)
Possible source of the error:
let fsCheckConfig = { Config.Default with Arbitrary = [ typeof<Arbs> ] }
// later:
testPropertyWithConfig fsCheckConfig "200 OK returns equivalent" <| fun respStr ->
(runWithConfig (OK respStr) |> req HttpMethod.GET "/hello" None) = respStr
Versions:
GROUP Tests
FRAMEWORK: NET45
NUGET
remote: https://nuget.org/api/v2
specs:
FsCheck (2.2.2)
FSharp.Core (>= 3.1.2.5)
FSharp.Charting (0.90.13)
FSharp.Core (3.1.2.5)
Fuchu (1.0.1)
FSharp.Core (>= 3.1.2.1)
Fuchu.FsCheck (1.0.1.0)
FsCheck (>= 2.1.0)
FSharp.Core (>= 3.1.2.5)
Fuchu (>= 1.0.1.0)
Fuchu.PerfUtil (1.0.1.0)
FSharp.Core (>= 3.1.2.1)
Fuchu (>= 1.0.1.0)
PerfUtil (>= 0.1.8)
Http.fs-prerelease (2.4.0)
FSharp.Core (>= 3.1.2.1)
PerfUtil (0.1.8)
WebSocketSharp (1.0.3-rc9)
Has @fscheck an API breakage in a minor release? /cc @kurtschelfthout
Repro commit: SuaveIO/suave@c30f574
OS X 10.10
./build.sh: line 3: wget: command not found
mv: rename nuget.exe to ./.nuget/NuGet.exe: No such file or directory
chmod: ./.nuget/NuGet.exe: No such file or directory
Downloading FAKE...
Cannot open assembly './.nuget/NuGet.exe': No such file or directory.
Cannot open assembly 'packages/FAKE/tools/FAKE.exe': No such file or directory.
Recommend: curl.
❤️ this library!
Just wondering, what's with the rather unusual package id for Fuchu.TeamCity https://www.nuget.org/packages/Fuchu-suave.TeamCity/ ? I'm guessing @haf did this off on a fork and the package was just never renamed, is that right? Would you be open to a PR to unify it with the others?
I have some code that creates a test case:
let encoding_equal<'a when 'a : equality> f_encode text expected (message : obj) =
testCase text (fun () ->
Assert.Equal(text, expected, f_encode (message :?> 'a)))
Getting failure like this:
Expected: {compression = Nope;
key = seq [];
value = seq [];}
Actual: {compression = Nope;
key = seq [];
value = seq [];}
Structure:
type Message =
{ compression : Compression
; key : byte System.ArraySegment
; value : byte System.ArraySegment }
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.