Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Use locked version as prefered version when resolver strategy is min
  • Loading branch information
mrinaldi committed Oct 15, 2015
commit df4b736b319b9e90c45ce59636b62582909712d1
3 changes: 1 addition & 2 deletions src/Paket.Core/DependencyChangeDetection.fs
Original file line number Diff line number Diff line change
Expand Up @@ -151,8 +151,7 @@ let findRemoteFileChangesInDependenciesFile(dependenciesFile:DependenciesFile,lo
|> Seq.concat
|> Set.ofSeq

let GetPreferredNuGetVersions (oldLockFile:LockFile) (changedDependencies:Set<GroupName*PackageName>) =
let GetPreferredNuGetVersions (oldLockFile:LockFile) =
oldLockFile.GetGroupedResolution()
|> Seq.filter (fun kv -> not <| changedDependencies.Contains(kv.Key))
|> Seq.map (fun kv -> kv.Key, kv.Value.Version)
|> Map.ofSeq
17 changes: 9 additions & 8 deletions src/Paket.Core/UpdateProcess.fs
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,12 @@ let selectiveUpdate force getSha1 getSortedVersionsF getPackageDetailsF (lockFil
|> List.toSeq


let getPreferredVersionsF preferredVersions sources resolverStrategy groupName packageName =
let getPreferredVersionsF preferredVersions changedDependencies sources resolverStrategy groupName packageName =
seq {
match preferredVersions |> Map.tryFind (groupName, packageName) with
| Some v -> yield v
| None -> ()
match preferredVersions |> Map.tryFind (groupName, packageName), resolverStrategy, changedDependencies |> Set.exists ((=) (groupName, packageName)) with
| Some v, ResolverStrategy.Min, _
| Some v, _, false -> yield v
| _ -> ()
yield! getSortedAndCachedVersionsF sources resolverStrategy groupName packageName
}

Expand Down Expand Up @@ -73,7 +74,7 @@ let selectiveUpdate force getSha1 getSortedVersionsF getPackageDetailsF (lockFil
|> Seq.groupBy fst
|> Map.ofSeq

let preferredVersions = DependencyChangeDetection.GetPreferredNuGetVersions lockFile nuGetChanges
let preferredVersions = DependencyChangeDetection.GetPreferredNuGetVersions lockFile

let hasNuGetChanges groupName =
match nuGetChangesPerGroup |> Map.tryFind groupName with
Expand Down Expand Up @@ -103,19 +104,19 @@ let selectiveUpdate force getSha1 getSortedVersionsF getPackageDetailsF (lockFil
dependenciesFile.Groups
|> Map.filter hasChanges

(getPreferredVersionsF preferredVersions),groups
(getPreferredVersionsF preferredVersions nuGetChanges),groups
| UpdatePackage(groupName,packageName) ->
let changes =
lockFile.GetAllNormalizedDependenciesOf(groupName,packageName)
|> Set.ofSeq

let preferredVersions = DependencyChangeDetection.GetPreferredNuGetVersions lockFile changes
let preferredVersions = DependencyChangeDetection.GetPreferredNuGetVersions lockFile

let groups =
dependenciesFile.Groups
|> Map.filter (fun key _ -> key = groupName)

(getPreferredVersionsF preferredVersions),groups
(getPreferredVersionsF preferredVersions changes),groups

let resolution = dependenciesFile.Resolve(force, getSha1, getVersionsF, getPackageDetailsF, groupsToUpdate, updateMode)

Expand Down
12 changes: 8 additions & 4 deletions tests/Paket.Tests/DependenciesFile/DependencyChangesSpecs.fs
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,9 @@ nuget Castle.Windsor-log4net"""
let lockFile = LockFile.Parse("",toLines lockFileData)

let changedDependencies = DependencyChangeDetection.findNuGetChangesInDependenciesFile(cfg,lockFile)
let newDependencies = DependencyChangeDetection.GetPreferredNuGetVersions lockFile changedDependencies
let newDependencies = DependencyChangeDetection.GetPreferredNuGetVersions lockFile
newDependencies
|> Map.filter (fun k v -> not <| changedDependencies.Contains(k))
|> shouldEqual Map.empty

[<Test>]
Expand Down Expand Up @@ -73,7 +74,7 @@ nuget NUnit"""
let lockFile = LockFile.Parse("",toLines lockFileData)
let changedDependencies = DependencyChangeDetection.findNuGetChangesInDependenciesFile(cfg,lockFile)

let newDependencies = DependencyChangeDetection.GetPreferredNuGetVersions lockFile changedDependencies
let newDependencies = DependencyChangeDetection.GetPreferredNuGetVersions lockFile
let expected =
Map.ofList
[(Constants.MainDependencyGroup,PackageName "Castle.Core"), (SemVer.Parse "3.3.3");
Expand All @@ -85,6 +86,7 @@ nuget NUnit"""


newDependencies
|> Map.filter (fun k v -> not <| changedDependencies.Contains(k))
|> shouldEqual expected

[<Test>]
Expand Down Expand Up @@ -119,7 +121,7 @@ nuget Castle.Windsor-log4net >= 3.3.0"""
let lockFile = LockFile.Parse("",toLines lockFileData)
let changedDependencies = DependencyChangeDetection.findNuGetChangesInDependenciesFile(cfg,lockFile)

let newDependencies = DependencyChangeDetection.GetPreferredNuGetVersions lockFile changedDependencies
let newDependencies = DependencyChangeDetection.GetPreferredNuGetVersions lockFile
let expected =
Map.ofList
([(Constants.MainDependencyGroup,PackageName "Castle.Core"), (SemVer.Parse "3.3.3");
Expand All @@ -130,6 +132,7 @@ nuget Castle.Windsor-log4net >= 3.3.0"""
(Constants.MainDependencyGroup,PackageName "log4net"), (SemVer.Parse "1.2.10")])

newDependencies
|> Map.filter (fun k v -> not <| changedDependencies.Contains(k))
|> shouldEqual expected

[<Test>]
Expand Down Expand Up @@ -164,8 +167,9 @@ nuget Castle.Windsor-log4net >= 3.4.0"""
let lockFile = LockFile.Parse("",toLines lockFileData)
let changedDependencies = DependencyChangeDetection.findNuGetChangesInDependenciesFile(cfg,lockFile)

let newDependencies = DependencyChangeDetection.GetPreferredNuGetVersions lockFile changedDependencies
let newDependencies = DependencyChangeDetection.GetPreferredNuGetVersions lockFile
newDependencies
|> Map.filter (fun k v -> not <| changedDependencies.Contains(k))
|> shouldEqual Map.empty

[<Test>]
Expand Down