diff --git a/src/Paket.Core/Versioning/PackageSources.fs b/src/Paket.Core/Versioning/PackageSources.fs index 3d5925105a..71dc1d49c4 100644 --- a/src/Paket.Core/Versioning/PackageSources.fs +++ b/src/Paket.Core/Versioning/PackageSources.fs @@ -150,7 +150,7 @@ type PackageSource = #endif LocalNuGet(source,None) else - if String.endsWithIgnoreCase "v3/index.json" source then + if Regex("/v3(?:/[-\w]+)?/index.json$").IsMatch source then NuGetV3 { Url = source; Authentication = auth } else NuGetV2 { Url = source; Authentication = auth } diff --git a/tests/Paket.Tests/Paket.Tests.fsproj b/tests/Paket.Tests/Paket.Tests.fsproj index 241fa7fa90..19a579cdff 100644 --- a/tests/Paket.Tests/Paket.Tests.fsproj +++ b/tests/Paket.Tests/Paket.Tests.fsproj @@ -76,6 +76,7 @@ True FsUnit.fs + diff --git a/tests/Paket.Tests/Versioning/PackageSourceSpecs.fs b/tests/Paket.Tests/Versioning/PackageSourceSpecs.fs new file mode 100644 index 0000000000..982e80a473 --- /dev/null +++ b/tests/Paket.Tests/Versioning/PackageSourceSpecs.fs @@ -0,0 +1,40 @@ +module Paket.PackageSourceSpecs + +open Paket +open NUnit.Framework +open FsUnit +open Paket.Domain +open Paket.PackageSources + +[] +[] +[] +[] +[] +[] +let ``should parse known nuget2 source``(feed : string) = + let line = sprintf "source %s" feed + match PackageSource.Parse(line) with + | NuGetV2 { Url = source; Authentication = _ } -> + let quoted = sprintf "source \"%s\"" feed + match PackageSource.Parse(quoted) with + | NuGetV2 { Url = qsource; Authentication = _ } -> + source |> shouldEqual qsource + | _ -> failwith quoted + | _ -> failwith feed + +[] +[] +[] +[] +[] +let ``should parse known nuget3 source``(feed : string) = + let line = sprintf "source %s" feed + match PackageSource.Parse(line) with + | NuGetV3 { Url = source; Authentication = _ } -> + let quoted = sprintf "source \"%s\"" feed + match PackageSource.Parse(quoted) with + | NuGetV3 { Url = qsource; Authentication = _ } -> + source |> shouldEqual qsource + | _ -> failwith quoted + | _ -> failwith feed \ No newline at end of file