1
+ module Paket.Resolver.GlobalKeepLatestPatchStrategySpecs
2
+
3
+ open Paket
4
+ open NUnit.Framework
5
+ open FsUnit
6
+ open TestHelpers
7
+ open Paket.Domain
8
+ open Paket.PackageResolver
9
+
10
+ let resolve graph updateMode ( cfg : DependenciesFile ) =
11
+ let groups = [ Constants.MainDependencyGroup, None ] |> Map.ofSeq
12
+ cfg.Resolve( true , noSha1, VersionsFromGraphAsSeq graph, ( fun _ _ -> []), PackageDetailsFromGraph graph,( fun _ _ _ -> None), groups, updateMode).[ Constants.MainDependencyGroup]. ResolvedPackages.GetModelOrFail()
13
+
14
+ let graph =
15
+ OfSimpleGraph [
16
+ " Nancy.Bootstrappers.Windsor" , " 0.23" ,[ " Castle.Windsor" , VersionRequirement( VersionRange.AtLeast " 3.2.1" , PreReleaseStatus.No)]
17
+ " Castle.Windsor" , " 3.2.1" ,[]
18
+ " Castle.Windsor" , " 3.2.2" ,[]
19
+ " Castle.Windsor" , " 3.3.0" ,[]
20
+ " Castle.Windsor" , " 4.1.0" ,[]
21
+ ]
22
+
23
+ let config1 = sprintf """
24
+ strategy %s
25
+ source http://www.nuget.org/api/v2
26
+
27
+ nuget Nancy.Bootstrappers.Windsor ~> 0.23
28
+ """
29
+
30
+ [<Test>]
31
+ let ``should resolve simple config1 with latest - patch`` () =
32
+ let resolved =
33
+ DependenciesFile.FromSource( config1 " latest-patch" )
34
+ |> resolve graph UpdateMode.UpdateAll
35
+ getVersion resolved.[ PackageName " Castle.Windsor" ] |> shouldEqual " 3.2.2"
36
+ getVersion resolved.[ PackageName " Nancy.Bootstrappers.Windsor" ] |> shouldEqual " 0.23"
37
+
38
+
39
+ [<Test>]
40
+ let ``should resolve simple config1 with latest - minor`` () =
41
+ let resolved =
42
+ DependenciesFile.FromSource( config1 " latest-minor" )
43
+ |> resolve graph UpdateMode.UpdateAll
44
+ getVersion resolved.[ PackageName " Castle.Windsor" ] |> shouldEqual " 3.3.0"
45
+ getVersion resolved.[ PackageName " Nancy.Bootstrappers.Windsor" ] |> shouldEqual " 0.23"
46
+
47
+ let config2 = sprintf """
48
+ strategy %s
49
+ source http://www.nuget.org/api/v2
50
+
51
+ nuget Castle.Windsor
52
+ nuget Nancy.Bootstrappers.Windsor ~> 0.23
53
+ """
54
+
55
+ [<Test>]
56
+ let ``should resolve simple config2 with latest - patch`` () =
57
+ let resolved =
58
+ DependenciesFile.FromSource( config2 " latest-patch" )
59
+ |> resolve graph UpdateMode.UpdateAll
60
+ getVersion resolved.[ PackageName " Castle.Windsor" ] |> shouldEqual " 3.2.2"
61
+ getVersion resolved.[ PackageName " Nancy.Bootstrappers.Windsor" ] |> shouldEqual " 0.23"
62
+
63
+
64
+ [<Test>]
65
+ let ``should resolve simple config2 with latest - minor`` () =
66
+ let resolved =
67
+ DependenciesFile.FromSource( config2 " latest-minor" )
68
+ |> resolve graph UpdateMode.UpdateAll
69
+ getVersion resolved.[ PackageName " Castle.Windsor" ] |> shouldEqual " 3.3.0"
70
+ getVersion resolved.[ PackageName " Nancy.Bootstrappers.Windsor" ] |> shouldEqual " 0.23"
71
+
72
+ let config3 = sprintf """
73
+ strategy %s
74
+ source http://www.nuget.org/api/v2
75
+
76
+ nuget Nancy.Bootstrappers.Windsor ~> 0.23
77
+ nuget Castle.Windsor
78
+ """
79
+
80
+ [<Test>]
81
+ let ``should resolve simple config3 with latest - patch`` () =
82
+ let resolved =
83
+ DependenciesFile.FromSource( config3 " latest-patch" )
84
+ |> resolve graph UpdateMode.UpdateAll
85
+ getVersion resolved.[ PackageName " Castle.Windsor" ] |> shouldEqual " 3.2.2"
86
+ getVersion resolved.[ PackageName " Nancy.Bootstrappers.Windsor" ] |> shouldEqual " 0.23"
87
+
88
+
89
+ [<Test>]
90
+ let ``should resolve simple config3 with latest - minor`` () =
91
+ let resolved =
92
+ DependenciesFile.FromSource( config3 " latest-minor" )
93
+ |> resolve graph UpdateMode.UpdateAll
94
+ getVersion resolved.[ PackageName " Castle.Windsor" ] |> shouldEqual " 3.3.0"
95
+ getVersion resolved.[ PackageName " Nancy.Bootstrappers.Windsor" ] |> shouldEqual " 0.23"
96
+
97
+ let graph2 =
98
+ OfSimpleGraph [
99
+ " Nancy.Bootstrappers.Windsor" , " 0.23" ,[ " Castle.Windsor" , VersionRequirement( VersionRange.AtLeast " 3.2.1" , PreReleaseStatus.No)]
100
+ " Castle.Windsor" , " 3.2.0" ,[ " Castle.Core" , VersionRequirement( VersionRange.AtLeast " 3.2.0" , PreReleaseStatus.No)]
101
+ " Castle.Windsor" , " 3.2.1" ,[ " Castle.Core" , VersionRequirement( VersionRange.AtLeast " 3.2.0" , PreReleaseStatus.No)]
102
+ " Castle.Windsor" , " 3.3.0" ,[ " Castle.Core" , VersionRequirement( VersionRange.AtLeast " 3.3.0" , PreReleaseStatus.No)]
103
+ " Castle.Windsor-NLog" , " 3.2.0.1" ,[ " Castle.Core-NLog" , VersionRequirement( VersionRange.AtLeast " 3.2.0" , PreReleaseStatus.No)]
104
+ " Castle.Windsor-NLog" , " 3.3.0" ,[ " Castle.Core-NLog" , VersionRequirement( VersionRange.AtLeast " 3.3.0" , PreReleaseStatus.No)]
105
+ " Castle.Core-NLog" , " 3.2.0" ,[ " Castle.Core" , VersionRequirement( VersionRange.AtLeast " 3.2.0" , PreReleaseStatus.No)]
106
+ " Castle.Core-NLog" , " 3.3.0" ,[ " Castle.Core" , VersionRequirement( VersionRange.AtLeast " 3.3.0" , PreReleaseStatus.No)]
107
+ " Castle.Core-NLog" , " 3.3.1" ,[ " Castle.Core" , VersionRequirement( VersionRange.AtLeast " 3.3.1" , PreReleaseStatus.No)]
108
+ " Castle.Core" , " 3.2.0" ,[]
109
+ " Castle.Core" , " 3.2.1" ,[]
110
+ " Castle.Core" , " 3.2.2" ,[]
111
+ " Castle.Core" , " 3.3.0" ,[]
112
+ " Castle.Core" , " 3.3.1" ,[]
113
+ ]
114
+
115
+ let config5 = sprintf """
116
+ strategy %s
117
+ source http://www.nuget.org/api/v2
118
+
119
+ nuget Nancy.Bootstrappers.Windsor !~> 0.23
120
+ """
121
+
122
+ [<Test>]
123
+ let ``should override global strategy with latest - patch`` () =
124
+ let resolved =
125
+ DependenciesFile.FromSource( config5 " latest-patch" )
126
+ |> resolve graph2 UpdateMode.UpdateAll
127
+ getVersion resolved.[ PackageName " Castle.Windsor" ] |> shouldEqual " 3.2.1"
128
+ getVersion resolved.[ PackageName " Nancy.Bootstrappers.Windsor" ] |> shouldEqual " 0.23"
0 commit comments