|
5 | 5 | using System.Threading.Tasks; |
6 | 6 | using FluentAssertions; |
7 | 7 | using Newtonsoft.Json.Linq; |
| 8 | +using NuGet.Packaging.Core; |
8 | 9 | using NuGet.Test.Helpers; |
| 10 | +using NuGet.Versioning; |
9 | 11 | using Sleet; |
10 | 12 | using Xunit; |
11 | 13 |
|
@@ -219,6 +221,59 @@ public async Task VerifyRecreateKeepsExternalSearch() |
219 | 221 | } |
220 | 222 | } |
221 | 223 |
|
| 224 | + [Fact] |
| 225 | + public async Task VerifyPushKeepsExternalSearch() |
| 226 | + { |
| 227 | + using (var tmpFolder = new TestFolder()) |
| 228 | + using (var packagesFolder = new TestFolder()) |
| 229 | + using (var target = new TestFolder()) |
| 230 | + using (var cache = new LocalCache()) |
| 231 | + using (var outputFolder = new TestFolder()) |
| 232 | + { |
| 233 | + var log = new TestLogger(); |
| 234 | + var fileSystem = new PhysicalFileSystem(cache, UriUtility.CreateUri(target.Root)); |
| 235 | + var settings = new LocalSettings(); |
| 236 | + |
| 237 | + var context = new SleetContext() |
| 238 | + { |
| 239 | + Token = CancellationToken.None, |
| 240 | + LocalSettings = settings, |
| 241 | + Log = log, |
| 242 | + Source = fileSystem, |
| 243 | + SourceSettings = new FeedSettings() |
| 244 | + }; |
| 245 | + |
| 246 | + var success = await InitCommand.RunAsync(settings, fileSystem, log); |
| 247 | + |
| 248 | + success &= await FeedSettingsCommand.RunAsync( |
| 249 | + settings, |
| 250 | + fileSystem, |
| 251 | + unsetAll: false, |
| 252 | + getAll: false, |
| 253 | + getSettings: Array.Empty<string>(), |
| 254 | + unsetSettings: Array.Empty<string>(), |
| 255 | + setSettings: new string[] { "externalsearch:https://example.org/search/query" }, |
| 256 | + log: log, |
| 257 | + token: context.Token); |
| 258 | + |
| 259 | + // Push a package |
| 260 | + var testPackage = new TestNupkg("packageA", "1.0.0"); |
| 261 | + var packageIdentity = new PackageIdentity(testPackage.Nuspec.Id, NuGetVersion.Parse(testPackage.Nuspec.Version)); |
| 262 | + var zipFile = testPackage.Save(packagesFolder.Root); |
| 263 | + |
| 264 | + await PushCommand.RunAsync(context.LocalSettings, context.Source, new List<string>() { zipFile.FullName }, false, false, context.Log); |
| 265 | + var validateOutput = await ValidateCommand.RunAsync(context.LocalSettings, context.Source, context.Log); |
| 266 | + |
| 267 | + success.Should().BeTrue(); |
| 268 | + |
| 269 | + var indexJsonPath = Path.Combine(target.RootDirectory.FullName, "index.json"); |
| 270 | + var entry = GetSearchEntry(indexJsonPath); |
| 271 | + var value = entry["@id"].ToObject<string>(); |
| 272 | + |
| 273 | + value.Should().Be("https://example.org/search/query"); |
| 274 | + } |
| 275 | + } |
| 276 | + |
222 | 277 | private JObject GetSearchEntry(string indexJsonPath) |
223 | 278 | { |
224 | 279 | var json = JObject.Parse(File.ReadAllText(indexJsonPath)); |
|
0 commit comments