diff --git a/src/Paket.Core/NuGetV2.fs b/src/Paket.Core/NuGetV2.fs index ef6a64a4ef..1bb79ea263 100644 --- a/src/Paket.Core/NuGetV2.fs +++ b/src/Paket.Core/NuGetV2.fs @@ -393,8 +393,19 @@ let ExtractPackage(fileName:string, targetFolder, packageName:PackageName, versi else Directory.CreateDirectory(targetFolder) |> ignore - fixArchive fileName - ZipFile.ExtractToDirectory(fileName, targetFolder) + try + fixArchive fileName + ZipFile.ExtractToDirectory(fileName, targetFolder) + with + | exn -> + let text = ref "" + try + text := File.ReadAllText(fileName) + with + | _ -> () + + let text = if !text = "" then "" else sprintf " Package contains text: %s%s" !text Environment.NewLine + failwithf "Error during extraction of %s.%s%s Message: %s" (Path.GetFullPath fileName) Environment.NewLine text exn.Message // cleanup folder structure let rec cleanup (dir : DirectoryInfo) = diff --git a/tests/Paket.Tests/ExtractPackageSpecs.fs b/tests/Paket.Tests/ExtractPackageSpecs.fs new file mode 100644 index 0000000000..ec38e6acf2 --- /dev/null +++ b/tests/Paket.Tests/ExtractPackageSpecs.fs @@ -0,0 +1,26 @@ +module Paket.ExtractPackageSpecs + +open System.IO +open Paket +open NUnit.Framework +open FsUnit +open System +open System.Net +open Domain + +[] +let ``should report blocked download``() = + let di = Path.Combine(Path.GetTempPath(),"PaketTests/Extract") + if Directory.Exists di then + Directory.Delete(di,true) + Directory.CreateDirectory(di) |> ignore + let fileName = Path.Combine(di,"FSharp.Data.nupkg") + File.Copy("Nuspec/FSharp.Data.nuspec",fileName) + + try + NuGetV2.ExtractPackage(fileName,di,PackageName "FSharp.Data",SemVer.Parse("0.1.1")) + |> Async.RunSynchronously + + with + | exn -> exn.Message + |> fun error -> error.Contains("Package contains text:") |> shouldEqual true \ No newline at end of file diff --git a/tests/Paket.Tests/Paket.Tests.fsproj b/tests/Paket.Tests/Paket.Tests.fsproj index ea36ef233c..0cd35a1af2 100644 --- a/tests/Paket.Tests/Paket.Tests.fsproj +++ b/tests/Paket.Tests/Paket.Tests.fsproj @@ -87,6 +87,7 @@ +