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