diff --git a/src/Paket.Core/PublicAPI.fs b/src/Paket.Core/PublicAPI.fs index f8c0ca248f..ecd525c958 100644 --- a/src/Paket.Core/PublicAPI.fs +++ b/src/Paket.Core/PublicAPI.fs @@ -673,6 +673,10 @@ type Dependencies(dependenciesFileName: string) = |> Async.map (FSharp.Core.Result.mapError (fun err -> s.Url, err)) | LocalNuGet(s,_) -> async { + let s = + match Utils.normalizeLocalPath s with + | Utils.AbsolutePath path -> path + | Utils.RelativePath path -> path return Fake.Globbing.search s (sprintf "**/*%s*" searchTerm) |> List.distinctBy (fun s -> diff --git a/tests/Paket.Tests/UtilsSpecs.fs b/tests/Paket.Tests/UtilsSpecs.fs index d878d6e781..d64bbefe42 100644 --- a/tests/Paket.Tests/UtilsSpecs.fs +++ b/tests/Paket.Tests/UtilsSpecs.fs @@ -2,6 +2,7 @@ open System.IO open Paket +open Paket.PackageSources open NUnit.Framework open FsUnit open System @@ -380,3 +381,34 @@ let ``FindAllFiles should not descend into dot folders``() = finally if Directory.Exists(root) then Directory.Delete(root, true) + +[] +let ``FindPackagesByName expands home directory (~) for local NuGet feed``() = + let home = GetHomeDirectory() + let feedDir = Path.Combine(home, "paket_test_feed_" + Guid.NewGuid().ToString("N")) + try + Directory.CreateDirectory feedDir |> ignore + let nupkgPath = Path.Combine(feedDir, "MyTestPackage.1.0.0.nupkg") + do + use zipStream = new FileStream(nupkgPath, FileMode.Create) + use archive = new System.IO.Compression.ZipArchive(zipStream, System.IO.Compression.ZipArchiveMode.Create) + let nuspecEntry = archive.CreateEntry("MyTestPackage.nuspec") + use entryStream = nuspecEntry.Open() + use writer = new StreamWriter(entryStream) + writer.Write(""" + + + MyTestPackage + 1.0.0 + Test + Test + +""") + + let source = PackageSource.Parse("source ~/" + Path.GetFileName feedDir) + let result = Dependencies.FindPackagesByName([source], "MyTestPackage") + + result |> shouldContain "MyTestPackage" + finally + if Directory.Exists(feedDir) then + Directory.Delete(feedDir, true)