Skip to content

Commit 3f71e6c

Browse files
committed
Fixes for #4183
1 parent eac93a4 commit 3f71e6c

File tree

11 files changed

+705
-13
lines changed

11 files changed

+705
-13
lines changed

global.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"sdk": {
3-
"version": "6.0.301"
3+
"version": "6.0.301",
4+
"rollForward": "latestMinor"
45
}
56
}

integrationtests/Paket.IntegrationTests/PackSpecs.fs

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,7 +1012,7 @@ let private scrapeDeps (nuspecPath: string) =
10121012
doc.LoadXml text
10131013

10141014
allDeps doc
1015-
|> Map.ofSeq
1015+
10161016

10171017
[<Test>]
10181018
let ``#2883 writes warning for missing direct dependencies``() =
@@ -1041,14 +1041,54 @@ let ``#2883 writes ranges for floating deps``() =
10411041

10421042
let inputNuspecPath = Path.Combine(scenarioRoot, "before.nuspec")
10431043
let inputDeps = scrapeDeps inputNuspecPath
1044+
10441045
let dispose, messages = paket (sprintf "fix-nuspecs files %s project-file %s" inputNuspecPath fsprojPath) scenario
10451046
use __ = dispose
10461047
let outputDeps = scrapeDeps inputNuspecPath
10471048

1048-
match outputDeps |> Map.tryFind "FSharp.Compiler.Service" with
1049+
match outputDeps |> Map |> Map.tryFind "FSharp.Compiler.Service" with
10491050
| Some "[35.0.0,36.0.0)" -> ()
10501051
| _ ->
10511052
failwithf "Expected to modify deps for FSharp.Compiler.Service package with floating version constraint.\nBefore:\t%A\nAfter:\t%A\nMessages:\t%A"
10521053
inputDeps
10531054
outputDeps
10541055
messages
1056+
1057+
[<Test>]
1058+
let ``#4183 writes ranges for floating deps``() =
1059+
let scenario = "i004183-apply-with-multiple-groups"
1060+
use __ = prepareSdk scenario
1061+
let scenarioRoot = scenarioTempPath scenario
1062+
let fsprojPath = Path.Combine(scenarioRoot, "before.fsproj")
1063+
1064+
let inputNuspecPath = Path.Combine(scenarioRoot, "before.nuspec")
1065+
let refFile = Path.Combine(scenarioRoot, "paket.references")
1066+
let inputDeps = scrapeDeps inputNuspecPath
1067+
1068+
let dispose, messages = paket (sprintf "fix-nuspecs files %s project-file %s" inputNuspecPath fsprojPath) scenario
1069+
use __ = dispose
1070+
let outputDeps = scrapeDeps inputNuspecPath
1071+
1072+
let actualPackages = outputDeps |> Seq.filter (fst>>(=)"FSharp.Core")
1073+
let expectedVersionRanges =
1074+
[
1075+
"[4.7.2,5.0.0)"
1076+
"[7.0.0,8.0.0)"
1077+
]
1078+
|> Set.ofSeq
1079+
1080+
let actualVersionRanges =
1081+
actualPackages
1082+
|> Seq.map snd
1083+
|> Set.ofSeq
1084+
1085+
let diff = Set.difference expectedVersionRanges actualVersionRanges
1086+
1087+
1088+
if diff |> Seq.length = 0 then ()
1089+
else
1090+
1091+
failwithf "Expected to modify deps for FSharp.Core package with floating version constraint.\nBefore:\t%A\nAfter:\t%A\nMessages:\t%A"
1092+
inputDeps
1093+
outputDeps
1094+
messages

integrationtests/scenarios/i004183-apply-with-multiple-groups/before/.paket/Paket.Restore.targets

Lines changed: 557 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
namespace before
2+
3+
module Say =
4+
let hello name =
5+
printfn "Hello %s" name
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project Sdk="Microsoft.NET.Sdk">
3+
<PropertyGroup>
4+
<TargetFrameworks>netstandard2.0; netstandard2.1</TargetFrameworks>
5+
</PropertyGroup>
6+
<ItemGroup>
7+
<Compile Include="Library.fs" />
8+
</ItemGroup>
9+
<Import Project=".paket\Paket.Restore.targets" />
10+
</Project>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
3+
<metadata>
4+
<id>before</id>
5+
<version>1.0.0</version>
6+
<authors>before</authors>
7+
<description>Package Description</description>
8+
<dependencies>
9+
<group targetFramework=".NETStandard2.0">
10+
<dependency id="FSharp.Core" version="4.7.2" exclude="Build,Analyzers" />
11+
</group>
12+
<group targetFramework=".NETStandard2.1">
13+
<dependency id="FSharp.Core" version="7.0.0" exclude="Build,Analyzers" />
14+
</group>
15+
</dependencies>
16+
</metadata>
17+
</package>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
2+
group testGroup1
3+
source https://api.nuget.org/v3/index.json
4+
storage: none
5+
nuget FSharp.Core ~> 4
6+
framework: netstandard2.0
7+
condition: netstandard2_0
8+
9+
group testGroup2
10+
source https://api.nuget.org/v3/index.json
11+
storage: none
12+
nuget FSharp.Core ~> 7
13+
framework: netstandard2.1
14+
condition: netstandard2_1
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
3+
GROUP testGroup1
4+
STORAGE: NONE
5+
CONDITION: NETSTANDARD2_0
6+
RESTRICTION: == netstandard2.0
7+
NUGET
8+
remote: https://api.nuget.org/v3/index.json
9+
FSharp.Core (4.7.2)
10+
11+
GROUP testGroup2
12+
STORAGE: NONE
13+
CONDITION: NETSTANDARD2_1
14+
RESTRICTION: == netstandard2.1
15+
NUGET
16+
remote: https://api.nuget.org/v3/index.json
17+
FSharp.Core (7.0)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
group testGroup1
2+
FSharp.Core
3+
4+
group testGroup2
5+
FSharp.Core

src/Paket.Core/PaketConfigFiles/LockFile.fs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -846,6 +846,7 @@ type LockFile (fileName:string, groups: Map<GroupName,LockFileGroup>) =
846846
| exn ->
847847
raise (Exception (sprintf "Error during parsing of '%s'." lockFileName, exn))
848848

849+
849850
member this.GetPackageHull(referencesFile:ReferencesFile) =
850851
let usedPackages = Dictionary<_,_>()
851852

@@ -854,7 +855,7 @@ type LockFile (fileName:string, groups: Map<GroupName,LockFileGroup>) =
854855
for p in g.Value.NugetPackages do
855856
let k = g.Key,p.Name
856857
if usedPackages.ContainsKey k |> not then
857-
usedPackages.Add(k,p)
858+
usedPackages.Add(k,{p with Settings = lockGroup.Options.Settings})
858859

859860
for r in g.Value.RemoteFiles do
860861
let lockRemote = findRemoteFile referencesFile.FileName lockGroup.RemoteFiles r.Name

0 commit comments

Comments
 (0)