diff --git a/canopy.sln b/canopy.sln index 4b6c0b0a..f75b887c 100644 --- a/canopy.sln +++ b/canopy.sln @@ -14,8 +14,6 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "basictests", "tests\basicte EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "canopy", "src\canopy\canopy.fsproj", "{63135CF6-70A9-4382-851D-4B679EE0CBF8}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "sampleprojectstructure", "src\sampleprojectstructure\sampleprojectstructure.fsproj", "{9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{12E9007C-8265-43D8-86B0-C9182921A9E5}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "project", "project", "{C8531F58-5EAB-413F-BB2F-FE96AE0A55F2}" @@ -46,6 +44,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{3C3590B5 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csharptests", "csharptests\csharptests.csproj", "{8FD011AE-ACEC-4B55-810B-736DAE312D32}" EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "canopy.integration", "src\canopy.integration\canopy.integration.fsproj", "{4303FFAC-759E-4764-89AD-ED6A73E2E16D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -76,16 +76,6 @@ Global {63135CF6-70A9-4382-851D-4B679EE0CBF8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {63135CF6-70A9-4382-851D-4B679EE0CBF8}.Release|Mixed Platforms.Build.0 = Release|Any CPU {63135CF6-70A9-4382-851D-4B679EE0CBF8}.Release|x86.ActiveCfg = Release|Any CPU - {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Debug|x86.ActiveCfg = Debug|Any CPU - {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Release|Any CPU.Build.0 = Release|Any CPU - {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Release|x86.ActiveCfg = Release|Any CPU {8FD011AE-ACEC-4B55-810B-736DAE312D32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8FD011AE-ACEC-4B55-810B-736DAE312D32}.Debug|Any CPU.Build.0 = Debug|Any CPU {8FD011AE-ACEC-4B55-810B-736DAE312D32}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -98,6 +88,18 @@ Global {8FD011AE-ACEC-4B55-810B-736DAE312D32}.Release|Mixed Platforms.Build.0 = Release|Any CPU {8FD011AE-ACEC-4B55-810B-736DAE312D32}.Release|x86.ActiveCfg = Release|Any CPU {8FD011AE-ACEC-4B55-810B-736DAE312D32}.Release|x86.Build.0 = Release|Any CPU + {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Debug|x86.ActiveCfg = Debug|Any CPU + {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Debug|x86.Build.0 = Debug|Any CPU + {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Release|Any CPU.Build.0 = Release|Any CPU + {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Release|x86.ActiveCfg = Release|Any CPU + {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/csharptests/csharptests.csproj b/csharptests/csharptests.csproj index ce27f28e..c370c3cd 100644 --- a/csharptests/csharptests.csproj +++ b/csharptests/csharptests.csproj @@ -54,6 +54,10 @@ + + {4303ffac-759e-4764-89ad-ed6a73e2e16d} + canopy.integration + {63135cf6-70a9-4382-851d-4b679ee0cbf8} canopy diff --git a/csharptests/jsonValidatorTests.cs b/csharptests/jsonValidatorTests.cs index e2526b3e..55765d5e 100644 --- a/csharptests/jsonValidatorTests.cs +++ b/csharptests/jsonValidatorTests.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using _ = canopy.csharp.canopy; +using __ = canopy.csharp.integration; namespace csharptests { @@ -31,56 +32,56 @@ public static void All() _.test("two identical people have no differences", () => { - var diff = _.diffJson(person1, person1); + var diff = __.diffJson(person1, person1); _.equality(diff.Count, empty.Count); - _.validateJson(person1, person1); + __.validateJson(person1, person1); }); _.test("missing property is identified", () => { - var diff = _.diffJson(person1, person2); + var diff = __.diffJson(person1, person2); _.equality(1, diff.Count); _.equality(true, diff.Contains("Missing {root}.middle")); }); _.test("extra property is identified", () => { - var diff = _.diffJson(person1, person3); + var diff = __.diffJson(person1, person3); _.equality(1, diff.Count); _.equality(true, diff.Contains("Extra {root}.phone")); }); _.test("empty array is acceptable array of ints", () => { - var diff = _.diffJson(location1, location2); + var diff = __.diffJson(location1, location2); _.equality(diff.Count, empty.Count); - _.validateJson(location1, location2); + __.validateJson(location1, location2); }); _.test("empty array is acceptable array of records", () => { - var diff = _.diffJson(location3, location4); + var diff = __.diffJson(location3, location4); _.equality(diff.Count, empty.Count); - _.validateJson(location3, location4); + __.validateJson(location3, location4); }); _.test("missing fields on records in arrays recognized correctly", () => { - var diff = _.diffJson(location3, location5); + var diff = __.diffJson(location3, location5); _.equality(1, diff.Count); _.equality(true, diff.Contains("Missing {root}.[people].{}.middle")); }); _.test("extra fields on records in arrays recognized correctly", () => { - var diff = _.diffJson(location3, location6); + var diff = __.diffJson(location3, location6); _.equality(1, diff.Count); _.equality(true, diff.Contains("Extra {root}.[people].{}.phone")); }); _.test("renamed field with extra property shows", () => { - var diff = _.diffJson(location7, location8); + var diff = __.diffJson(location7, location8); _.equality(7, diff.Count); _.equality(true, diff.Contains("Missing {root}.[workers]")); @@ -94,7 +95,7 @@ public static void All() _.test("nested objects with arrays reocgnized correctly", () => { - var diff = _.diffJson(class1, class2); + var diff = __.diffJson(class1, class2); _.equality(3, diff.Count); _.equality(true, diff.Contains("Missing {root}.{location}.long")); _.equality(true, diff.Contains("Missing {root}.{location}.[people].{}.middle")); diff --git a/nuget/canopy-edge.nuspec b/nuget/canopy-edge.nuspec deleted file mode 100644 index f12bf400..00000000 --- a/nuget/canopy-edge.nuspec +++ /dev/null @@ -1,29 +0,0 @@ - - - - canopy-edge - @build.number@ - @authors@ - @authors@ - https://github.com/lefthandedgoat/canopy/blob/master/license.txt - http://lefthandedgoat.github.io/canopy/canopy_orig.jpg - http://lefthandedgoat.github.com/canopy - @description@ - @releaseNotes@ - @tags@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/nuget/canopy.integration.nuspec b/nuget/canopy.integration.nuspec new file mode 100644 index 00000000..15fb8062 --- /dev/null +++ b/nuget/canopy.integration.nuspec @@ -0,0 +1,20 @@ + + + + canopy.integration + @build.number@ + @authors@ + @authors@ + https://github.com/lefthandedgoat/canopy/blob/master/license.txt + http://lefthandedgoat.github.io/canopy/canopy_orig.jpg + http://lefthandedgoat.github.com/canopy + @description@ + @releaseNotes@ + @tags@ + + + + + + + diff --git a/nuget/canopy.nuspec b/nuget/canopy.nuspec index bf7aed32..a53ddf30 100644 --- a/nuget/canopy.nuspec +++ b/nuget/canopy.nuspec @@ -14,7 +14,6 @@ - diff --git a/paket.dependencies b/paket.dependencies index 664e58b1..59961069 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -1,5 +1,7 @@ source https://www.nuget.org/api/v2/ +framework: net4 + nuget NuGet.CommandLine nuget FSharp.Core >= 3.0.2 lowest_matching:true nuget Selenium.WebDriver diff --git a/paket.lock b/paket.lock index 436714f2..f613e3fe 100644 --- a/paket.lock +++ b/paket.lock @@ -1,15 +1,14 @@ +FRAMEWORK: NET40 NUGET remote: https://www.nuget.org/api/v2 - FAKE (4.52) + FAKE (4.61.3) FSharp.Compiler.Service (2.0.0.6) FSharp.Core (3.0.2) FSharp.Data (2.3.3) - Zlib.Portable (>= 1.11) - framework: >= netstandard11, portable-net45+sl5+win8, portable-net45+win8, portable-net45+win8+wp8+wpa81 FSharp.Formatting (2.14.4) FSharp.Compiler.Service (2.0.0.6) FSharpVSPowerTools.Core (>= 2.3 < 2.4) FSharpVSPowerTools.Core (2.3) FSharp.Compiler.Service (>= 2.0.0.3) - NuGet.CommandLine (3.5) + NuGet.CommandLine (4.1) Selenium.WebDriver (3.4) - Zlib.Portable (1.11) - framework: >= netstandard11, portable-net45+sl5+win8, portable-net45+win8, portable-net45+win8+wp8+wpa81 diff --git a/src/canopy.integration/AssemblyInfo.fs b/src/canopy.integration/AssemblyInfo.fs new file mode 100644 index 00000000..1b43776f --- /dev/null +++ b/src/canopy.integration/AssemblyInfo.fs @@ -0,0 +1,17 @@ +// Auto-Generated by FAKE; do not edit +namespace System +open System.Reflection + +[] +[] +[] +[] +[] +do () + +module internal AssemblyVersionInformation = + let [] AssemblyTitle = "canopy.integration" + let [] AssemblyProduct = "canopy.integration" + let [] AssemblyDescription = "F# web testing framework" + let [] AssemblyVersion = "1.4.5" + let [] AssemblyFileVersion = "1.4.5" diff --git a/src/canopy.integration/canopy.integration.fsproj b/src/canopy.integration/canopy.integration.fsproj new file mode 100644 index 00000000..bd79a10f --- /dev/null +++ b/src/canopy.integration/canopy.integration.fsproj @@ -0,0 +1,99 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {4303ffac-759e-4764-89ad-ed6a73e2e16d} + Library + canopy.integration + canopy.integration + v4.0 + canopy.integration + ..\ + + + true + full + false + false + bin\Debug\ + DEBUG;TRACE + 3 + bin\Debug\canopy.integration.XML + + + pdbonly + true + true + ..\..\bin + TRACE + 3 + ..\..\bin\canopy.integration.XML + + + 11 + + + + + $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets + + + + + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets + + + + + + + + + + + + + + + + + + + + + + + + + + ..\..\packages\FSharp.Core\lib\net40\FSharp.Core.dll + True + True + + + + + + + + + True + + + ..\..\packages\FSharp.Data\lib\net40\FSharp.Data.dll + True + True + + + + + \ No newline at end of file diff --git a/src/canopy.integration/csharp.fs b/src/canopy.integration/csharp.fs new file mode 100644 index 00000000..032cd155 --- /dev/null +++ b/src/canopy.integration/csharp.fs @@ -0,0 +1,12 @@ +namespace canopy.csharp + + + +type integration () = + + static member diffJson example actual = + let diff = jsonValidator.diff example actual + let diffString = diff |> List.map (fun d -> match d with | jsonValidator.Missing s -> sprintf "Missing %s" s | jsonValidator.Extra s -> sprintf "Extra %s" s) + ResizeArray(diffString) + + static member validateJson example actual = jsonValidator.validate example actual \ No newline at end of file diff --git a/src/canopy/jsonValidator.fs b/src/canopy.integration/jsonValidator.fs similarity index 100% rename from src/canopy/jsonValidator.fs rename to src/canopy.integration/jsonValidator.fs diff --git a/src/canopy.integration/paket.references b/src/canopy.integration/paket.references new file mode 100644 index 00000000..940f7853 --- /dev/null +++ b/src/canopy.integration/paket.references @@ -0,0 +1,2 @@ +FSharp.Core +FSharp.Data \ No newline at end of file diff --git a/src/canopy/canopy.fsproj b/src/canopy/canopy.fsproj index 02ce9fc6..a9cd6cec 100644 --- a/src/canopy/canopy.fsproj +++ b/src/canopy/canopy.fsproj @@ -63,10 +63,8 @@ - - @@ -86,16 +84,7 @@ --> - - - - ..\..\packages\FSharp.Core\lib\net35\FSharp.Core.dll - True - True - - - - + ..\..\packages\FSharp.Core\lib\net40\FSharp.Core.dll @@ -104,68 +93,9 @@ - - - - ..\..\packages\FSharp.Core\lib\portable-net45+sl5+netcore45+MonoAndroid1+MonoTouch1\FSharp.Core.dll - True - True - - - - - - - True - - - ..\..\packages\FSharp.Data\lib\net40\FSharp.Data.dll - True - True - - - - - - - ..\..\packages\FSharp.Data\lib\portable-net45+netcore45\FSharp.Data.dll - True - True - - - - - - - ..\..\packages\FSharp.Data\lib\portable-net45+netcore45+wpa81+wp8\FSharp.Data.dll - True - True - - - - - - - ..\..\packages\FSharp.Data\lib\portable-net45+sl50+netcore45\FSharp.Data.dll - True - True - - - - - - - - - ..\..\packages\Selenium.WebDriver\lib\net35\WebDriver.dll - True - True - - - - + ..\..\packages\Selenium.WebDriver\lib\net40\WebDriver.dll @@ -175,15 +105,4 @@ - - - - - ..\..\packages\Zlib.Portable\lib\portable-net4+sl5+wp8+win8+wpa81+MonoTouch+MonoAndroid\Zlib.Portable.dll - True - True - - - - \ No newline at end of file diff --git a/src/canopy/csharp.fs b/src/canopy/csharp.fs index 4b66f3f6..663dbc0c 100644 --- a/src/canopy/csharp.fs +++ b/src/canopy/csharp.fs @@ -204,11 +204,4 @@ type canopy () = static member onn url = onn url - static member on url = on url - - static member diffJson example actual = - let diff = jsonValidator.diff example actual - let diffString = diff |> List.map (fun d -> match d with | jsonValidator.Missing s -> sprintf "Missing %s" s | jsonValidator.Extra s -> sprintf "Extra %s" s) - ResizeArray(diffString) - - static member validateJson example actual = jsonValidator.validate example actual \ No newline at end of file + static member on url = on url \ No newline at end of file diff --git a/src/canopy/jsValidator.fsx b/src/canopy/jsValidator.fsx deleted file mode 100644 index b2e85f28..00000000 --- a/src/canopy/jsValidator.fsx +++ /dev/null @@ -1,193 +0,0 @@ -module jsonValidator - -#r "../../packages/FSharp.Data/lib/net40/FSharp.Data.dll" - -open FSharp.Data - -let mutable tests : (string * (unit -> unit)) list = [] -let ( &&& ) desc f = tests <- (desc, f) :: tests -let ( == ) left right = if left <> right then failwith (sprintf "expected %A%sgot %A" right System.Environment.NewLine left) -let clear () = tests <- [] -let run () = tests |> List.rev |> List.iter (fun (desc, f) -> printfn "%s" desc; try f(); printfn "pass" with ex -> printfn "failed: %s" ex.Message) - -type Difference = - | Missing of string - | Extra of string - -type Type = - | Array - | Record - | AnonymousRecord - | Property - | Root - | None - -type Meta = - { - Path : string - ParentPath : string - Type : Type - ParentType : Type - ImmediateOptional : bool - HistoricalOptional : bool - } - -let root = - { - Path = "{root}" - ParentPath = "" - Type = Type.Root - ParentType = Type.None - ImmediateOptional = false - HistoricalOptional = false - } - -let jsonValueToType jsonValue = - match jsonValue with - | JsonValue.Array _ -> Array - | JsonValue.Record _ -> Record - | _ -> Property - -let AST jsonValue = - let rec AST meta jsonValue = - match jsonValue with - | JsonValue.String _ - | JsonValue.Number _ - | JsonValue.Float _ - | JsonValue.Boolean _ - | JsonValue.Null -> [| { meta with ImmediateOptional = false } |] - - //real work done here - | JsonValue.Array values -> - values - |> Array.map (fun value -> AST { meta with ParentPath = meta.Path; ParentType = Array; Type = jsonValueToType value; ImmediateOptional = true; HistoricalOptional = true } value) - |> Array.concat - |> Array.append [| meta |] - - //real work done here - | JsonValue.Record props -> - let selfType = if meta.ParentType = Array then AnonymousRecord else Record - let selfImmediateOptional = if meta.ParentType = Array then true else false - let selfPath = if meta.ParentType = Array then sprintf "%s.{}" meta.Path else meta.Path - let self = if meta.Type = Root then meta else { meta with Type = selfType; ParentType = meta.ParentType; Path = selfPath; ParentPath = meta.ParentPath; ImmediateOptional = selfImmediateOptional } - props - |> Array.map (fun (prop, value) -> - let type' = jsonValueToType value - let path = - match type' with - | Array -> sprintf "%s.[%s]" self.Path prop - | Record -> sprintf "%s.{%s}" self.Path prop - | Property -> sprintf "%s.%s" self.Path prop - | _ -> failwith (sprintf "should not happen %A" type') - - AST { self with Path = path; ParentPath = self.Path; Type = type'; ParentType = self.Type; ImmediateOptional = false } value - ) - |> Array.concat - |> Array.append [| self |] - - AST root jsonValue - -let diff example actual = - let example = JsonValue.Parse(example) |> AST |> Set.ofArray - //printfn "example: %A" example - let actual = JsonValue.Parse(actual) |> AST |> Set.ofArray - //printfn "actual: %A" actual - - let missing = - let allMissing = - example - actual - |> Seq.filter (fun meta -> meta.ImmediateOptional = false && meta.HistoricalOptional = false) - |> Set.ofSeq - //printfn "allMissing %A" allMissing - - let falsePositives = - allMissing - |> Seq.filter (fun meta -> - (meta.ImmediateOptional = true || meta.HistoricalOptional = true) - && actual |> Seq.exists (fun meta2 -> meta.ParentPath = meta2.ParentPath)) - |> Set.ofSeq - - //printfn "falsePositives %A" falsePositives - - allMissing - falsePositives - |> Seq.map (fun meta -> Missing meta.Path) - |> List.ofSeq - - let missingButWithSiblingsThatArent = - let optionalThatExistInActual = actual |> Seq.filter (fun meta -> (meta.ImmediateOptional = true || meta.HistoricalOptional = true)) - example - actual - |> Seq.filter (fun meta -> optionalThatExistInActual |> Seq.exists (fun meta2 -> meta.ParentPath = meta2.ParentPath)) - |> Seq.map (fun meta -> Missing meta.Path) - |> List.ofSeq - - let extra = - actual - example - |> Seq.map (fun meta -> Extra meta.Path) - |> List.ofSeq - - missing @ missingButWithSiblingsThatArent @ extra - -let person1 = """{ "first":"jane", "middle":"something", "last":"doe" } """ -let person2 = """{ "first":"jane", "last":"doe" } """ -let person3 = """{ "first":"jane", "middle":"something", "last":"doe", "phone":"800-555-5555" } """ - -let location1 = """{ "lat":4.0212, "long":12.102012, "people":[ 1, 2, 3 ] } """ -let location2 = """{ "lat":4.0212, "long":12.102012, "people":[ ] } """ - -let location3 = """{ "lat":4.0212, "long":12.102012, "people":[ { "first":"jane", "middle":"something", "last":"doe" } ] } """ -let location4 = """{ "lat":4.0212, "long":12.102012, "people":[ ] } """ -let location5 = """{ "lat":4.0212, "long":12.102012, "people":[ { "first":"jane", "last":"doe" } ] } """ -let location6 = """{ "lat":4.0212, "long":12.102012, "people":[ { "first":"jane", "middle":"something", "last":"doe", "phone":"800-555-5555" } ] } """ - -let location7 = """{ "lat":4.0212, "long":12.102012, "workers":[ { "first":"jane", "last":"doe" } ] } """ -let location8 = """{ "lat":4.0212, "long":12.102012, "people":[ { "first":"jane", "middle":"something", "last":"doe", "phone":"800-555-5555" } ] } """ - -let class1 = """{ "name":"bio 101", "building":"science", "location": { "lat":4.0212, "long":12.102012, "people": [ { "first":"jane", "middle":"something", "last":"doe" } ] } }""" -let class2 = """{ "name":"chem 101", "building":"science", "location": { "lat":4.0212, "lng":12.102012, "people": [ { "first":"jane", "last":"doe" } ] } }""" - -"two identical people have no differences" &&& fun _ -> - diff person1 person1 == [] - -"missing property is identified" &&& fun _ -> - diff person1 person2 == [ Missing "{root}.middle" ] - -"extra property is identified" &&& fun _ -> - diff person1 person3 == [ Extra "{root}.phone" ] - -"empty array is acceptable array of ints" &&& fun _ -> - diff location1 location2 == [ ] - -"empty array is acceptable array of records" &&& fun _ -> - diff location3 location4 == [ ] - -"missing fields on records in arrays recognized correctly" &&& fun _ -> - diff location3 location5 == [ Missing "{root}.[people].{}.middle" ] - -"extra fields on records in arrays recognized correctly" &&& fun _ -> - diff location3 location6 == [ Extra "{root}.[people].{}.phone" ] - -"renamed field with extra property shows" &&& fun _ -> - diff location7 location8 == - [ - Missing "{root}.[workers]" - - Extra "{root}.[people]" - Extra "{root}.[people].{}" - Extra "{root}.[people].{}.first" - Extra "{root}.[people].{}.last" - Extra "{root}.[people].{}.middle" - Extra "{root}.[people].{}.phone" - ] - -"nested objects with arrays reocgnized correctly" &&& fun _ -> - diff class1 class2 == - [ - Missing "{root}.{location}.long" - Missing "{root}.{location}.[people].{}.middle" - - Extra "{root}.{location}.lng" - ] - -run() - -clear() diff --git a/src/canopy/paket.references b/src/canopy/paket.references index 5ce8f2b6..f0c817ae 100644 --- a/src/canopy/paket.references +++ b/src/canopy/paket.references @@ -1,3 +1,2 @@ FSharp.Core -Selenium.WebDriver -FSharp.Data \ No newline at end of file +Selenium.WebDriver \ No newline at end of file diff --git a/src/sampleprojectstructure/sampleprojectstructure.fsproj b/src/sampleprojectstructure/sampleprojectstructure.fsproj index 6a5b59fc..da6b990b 100644 --- a/src/sampleprojectstructure/sampleprojectstructure.fsproj +++ b/src/sampleprojectstructure/sampleprojectstructure.fsproj @@ -85,16 +85,7 @@ --> - - - - ..\..\packages\FSharp.Core\lib\net35\FSharp.Core.dll - True - True - - - - + ..\..\packages\FSharp.Core\lib\net40\FSharp.Core.dll @@ -103,27 +94,9 @@ - - - - ..\..\packages\FSharp.Core\lib\portable-net45+sl5+netcore45+MonoAndroid1+MonoTouch1\FSharp.Core.dll - True - True - - - - - - - ..\..\packages\Selenium.WebDriver\lib\net35\WebDriver.dll - True - True - - - - + ..\..\packages\Selenium.WebDriver\lib\net40\WebDriver.dll diff --git a/tests/basictests/basictests.fsproj b/tests/basictests/basictests.fsproj index 2200f3c6..5084c9f6 100644 --- a/tests/basictests/basictests.fsproj +++ b/tests/basictests/basictests.fsproj @@ -71,6 +71,11 @@ + + canopy.integration + {4303ffac-759e-4764-89ad-ed6a73e2e16d} + True + canopy {63135cf6-70a9-4382-851d-4b679ee0cbf8} @@ -86,16 +91,7 @@ --> - - - - ..\..\packages\FSharp.Core\lib\net35\FSharp.Core.dll - True - True - - - - + ..\..\packages\FSharp.Core\lib\net40\FSharp.Core.dll @@ -104,27 +100,9 @@ - - - - ..\..\packages\FSharp.Core\lib\portable-net45+sl5+netcore45+MonoAndroid1+MonoTouch1\FSharp.Core.dll - True - True - - - - - - - ..\..\packages\Selenium.WebDriver\lib\net35\WebDriver.dll - True - True - - - - + ..\..\packages\Selenium.WebDriver\lib\net40\WebDriver.dll