-
Notifications
You must be signed in to change notification settings - Fork 519
/
TestHelpers.fs
71 lines (56 loc) · 2.75 KB
/
TestHelpers.fs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
module Paket.TestHelpers
open Paket
open System
open Paket.Requirements
open Paket.PackageSources
open PackageResolver
open System.Xml
open System.IO
open Paket.Domain
let PackageDetailsFromGraph (graph : seq<string * string * (string * VersionRequirement) list>) sources (package:PackageName) (version:SemVerInfo) =
let name,dependencies =
graph
|> Seq.filter (fun (p, v, _) -> NormalizedPackageName (PackageName p) = NormalizedPackageName package && SemVer.Parse v = version)
|> Seq.map (fun (n, _, d) -> PackageName n,d |> List.map (fun (x,y) -> PackageName x,y,[]))
|> Seq.head
{ Name = name
Source = Seq.head sources
DownloadLink = ""
LicenseUrl = ""
Unlisted = false
DirectDependencies = Set.ofList dependencies }
let VersionsFromGraph (graph : seq<string * string * (string * VersionRequirement) list>) (sources, package : PackageName) =
graph
|> Seq.filter (fun (p, _, _) -> NormalizedPackageName (PackageName p) = NormalizedPackageName package)
|> Seq.map (fun (_, v, _) -> SemVer.Parse v)
|> Seq.toList
let safeResolve graph (dependencies : (string * VersionRange) list) =
let packages =
dependencies |> List.map (fun (n, v) ->
{ Name = PackageName n
VersionRequirement = VersionRequirement(v,PreReleaseStatus.No)
Sources = [ PackageSource.NugetSource "" ]
Parent = PackageRequirementSource.DependenciesFile ""
Settings = InstallSettings.Default
ResolverStrategy = ResolverStrategy.Max })
PackageResolver.Resolve(VersionsFromGraph graph, PackageDetailsFromGraph graph, [], packages)
let resolve graph dependencies = (safeResolve graph dependencies).GetModelOrFail()
let getVersion (resolved:ResolvedPackage) = resolved.Version.ToString()
let getSource (resolved:ResolvedPackage) = resolved.Source
let normalizeLineEndings (text : string) =
text.Replace("\r\n", "\n").Replace("\r", "\n").Replace("\n", Environment.NewLine)
let removeLineEndings (text : string) =
text.Replace("\r\n", "").Replace("\r", "").Replace("\n", "")
let toLines (text : string) = text.Replace("\r\n", "\n").Replace("\r", "\n").Split('\n')
let noSha1 owner repo branch = failwith "no github configured"
let fakeSha1 owner repo branch = "12345"
let normalizeXml(text:string) =
let doc = new XmlDocument()
doc.LoadXml(text)
use stringWriter = new StringWriter()
let settings = XmlWriterSettings()
settings.Indent <- true
use xmlTextWriter = XmlWriter.Create(stringWriter, settings)
doc.WriteTo(xmlTextWriter)
xmlTextWriter.Flush()
stringWriter.GetStringBuilder().ToString()