|
30 | 30 | using NuGet.Packaging; |
31 | 31 | using NuGet.Protocol; |
32 | 32 | using NuGet.Protocol.Core.Types; |
| 33 | +using NuGet.Versioning; |
33 | 34 |
|
34 | 35 | using NUnit.Framework; |
35 | 36 |
|
@@ -57,19 +58,40 @@ protected async Task FetchPackage(string packageName, string version, string sou |
57 | 58 |
|
58 | 59 | ILogger logger = NullLogger.Instance; |
59 | 60 | CancellationToken cancellationToken = CancellationToken.None; |
60 | | - using var packageStream = File.OpenRead(Path.Combine(Roundtrip.RoundtripAssembly.TestDir, "nuget", $"{packageName}-{version}.nupkg")); |
61 | | - |
62 | | - using PackageArchiveReader packageReader = new PackageArchiveReader(packageStream); |
63 | | - NuspecReader nuspecReader = await packageReader.GetNuspecReaderAsync(cancellationToken).ConfigureAwait(false); |
64 | | - |
65 | | - var files = (await packageReader.GetFilesAsync(cancellationToken).ConfigureAwait(false)).ToArray(); |
66 | | - files = files.Where(f => f.StartsWith(sourcePath, StringComparison.OrdinalIgnoreCase)).ToArray(); |
67 | | - await packageReader.CopyFilesAsync(outputPath, files, |
68 | | - (sourceFile, targetPath, fileStream) => { |
69 | | - fileStream.CopyToFile(targetPath); |
70 | | - return targetPath; |
71 | | - }, |
72 | | - logger, cancellationToken).ConfigureAwait(false); |
| 61 | + string pathToPackage = Path.Combine(Roundtrip.RoundtripAssembly.TestDir, "nuget", $"{packageName}-{version}.nupkg"); |
| 62 | + Stream packageStream; |
| 63 | + if (File.Exists(pathToPackage)) |
| 64 | + { |
| 65 | + packageStream = File.OpenRead(pathToPackage); |
| 66 | + } |
| 67 | + else |
| 68 | + { |
| 69 | + packageStream = new MemoryStream(); |
| 70 | + |
| 71 | + await resource.CopyNupkgToStreamAsync( |
| 72 | + packageName, |
| 73 | + NuGetVersion.Parse(version), |
| 74 | + packageStream, |
| 75 | + cache, |
| 76 | + logger, |
| 77 | + cancellationToken).ConfigureAwait(false); |
| 78 | + |
| 79 | + packageStream.Position = 0; |
| 80 | + } |
| 81 | + using (packageStream) |
| 82 | + { |
| 83 | + using PackageArchiveReader packageReader = new PackageArchiveReader(packageStream); |
| 84 | + NuspecReader nuspecReader = await packageReader.GetNuspecReaderAsync(cancellationToken).ConfigureAwait(false); |
| 85 | + |
| 86 | + var files = (await packageReader.GetFilesAsync(cancellationToken).ConfigureAwait(false)).ToArray(); |
| 87 | + files = files.Where(f => f.StartsWith(sourcePath, StringComparison.OrdinalIgnoreCase)).ToArray(); |
| 88 | + await packageReader.CopyFilesAsync(outputPath, files, |
| 89 | + (sourceFile, targetPath, fileStream) => { |
| 90 | + fileStream.CopyToFile(targetPath); |
| 91 | + return targetPath; |
| 92 | + }, |
| 93 | + logger, cancellationToken).ConfigureAwait(false); |
| 94 | + } |
73 | 95 | } |
74 | 96 | } |
75 | 97 |
|
|
0 commit comments