public async Task GivenThatTheFeedHasMissingPackagesVerifyExistingPackagesAreDownloaded() { using (var packagesFolder = new TestFolder()) using (var target = new TestFolder()) using (var cache = new LocalCache()) using (var cache2 = new LocalCache()) using (var outputFolder = new TestFolder()) { var log = new TestLogger(); var fileSystem = new PhysicalFileSystem(cache, UriUtility.CreateUri(target.Root)); var fileSystem2 = new PhysicalFileSystem(cache2, UriUtility.CreateUri(target.Root)); var settings = new LocalSettings(); await InitCommand.RunAsync(settings, fileSystem, log); var expected = new List <string>(); for (var i = 0; i < 100; i++) { var package = new TestNupkg("a", $"{i}.0.0"); package.Save(packagesFolder); if (i != 50) { expected.Add($"a.{i}.0.0.nupkg"); } } await PushCommand.RunAsync(settings, fileSystem, new List <string>() { packagesFolder }, false, false, log); var root = new DirectoryInfo(target); foreach (var file in root.GetFiles("a.50.0.0*", SearchOption.AllDirectories)) { // Corrupt the feed file.Delete(); } var success = await DownloadCommand.RunAsync(settings, fileSystem2, outputFolder, false, log); var fileNames = Directory.GetFiles(outputFolder, "*.nupkg", SearchOption.AllDirectories) .Select(e => Path.GetFileName(e)) .OrderBy(e => e, StringComparer.OrdinalIgnoreCase) .ToArray(); success.ShouldBeEquivalentTo(false, "the feed is not valid"); fileNames.ShouldBeEquivalentTo(expected, "all files but the deleted one"); log.GetMessages().Should().NotContain("The feed does not contain any packages"); log.GetMessages().Should().Contain("Failed to download all packages!"); foreach (var file in expected) { log.GetMessages().Should().Contain(file); } } }
public void GivenThatTheFeedIsNotInitializedVerifyCommandFails() { using (var packagesFolder = new TestFolder()) using (var target = new TestFolder()) using (var cache = new LocalCache()) using (var outputFolder = new TestFolder()) { var log = new TestLogger(); var fileSystem = new PhysicalFileSystem(cache, UriUtility.CreateUri(target.Root)); var settings = new LocalSettings(); Func <Task> action = async() => await DownloadCommand.RunAsync(settings, fileSystem, outputFolder, false, log); action.ShouldThrow <InvalidOperationException>("the feed is not initialized"); } }
public async Task GivenThatTheFeedHasSymbolsPackagesVerifyDownloadCommandSucceeds() { using (var packagesFolder = new TestFolder()) using (var target = new TestFolder()) using (var cache = new LocalCache()) using (var cache2 = new LocalCache()) using (var outputFolder = new TestFolder()) { var log = new TestLogger(); var fileSystem = new PhysicalFileSystem(cache, UriUtility.CreateUri(target.Root)); var fileSystem2 = new PhysicalFileSystem(cache2, UriUtility.CreateUri(target.Root)); var settings = new LocalSettings(); var success = await InitCommand.RunAsync(settings, fileSystem, enableCatalog : false, enableSymbols : true, log : log, token : CancellationToken.None); var packageA = new TestNupkg("a", "1.0.0"); var packageASymbols = new TestNupkg("a", "1.0.0"); packageASymbols.Nuspec.IsSymbolPackage = true; packageA.Save(packagesFolder.Root); packageASymbols.Save(packagesFolder.Root); success &= await PushCommand.RunAsync(settings, fileSystem, new List <string>() { packagesFolder }, false, false, log); success &= await DownloadCommand.RunAsync(settings, fileSystem2, outputFolder, false, log); var fileNames = Directory.GetFiles(outputFolder, "*.nupkg", SearchOption.AllDirectories) .Select(e => Path.GetFileName(e)) .OrderBy(e => e, StringComparer.OrdinalIgnoreCase) .ToArray(); success.ShouldBeEquivalentTo(true, "the feed is valid"); fileNames.ShouldBeEquivalentTo(new[] { "a.1.0.0.nupkg", "a.1.0.0.symbols.nupkg" }); log.GetMessages().Should().NotContain("The feed does not contain any packages"); log.GetMessages().Should().Contain("a.1.0.0.nupkg"); log.GetMessages().Should().Contain("a.1.0.0.symbols.nupkg"); } }
public async Task GivenThatTheFeedIsEmptyVerifyDownloadCommandSucceeds() { using (var packagesFolder = new TestFolder()) using (var target = new TestFolder()) using (var cache = new LocalCache()) using (var cache2 = new LocalCache()) using (var outputFolder = new TestFolder()) { var log = new TestLogger(); var fileSystem = new PhysicalFileSystem(cache, UriUtility.CreateUri(target.Root)); var fileSystem2 = new PhysicalFileSystem(cache2, UriUtility.CreateUri(target.Root)); var settings = new LocalSettings(); await InitCommand.RunAsync(settings, fileSystem, log); var success = await DownloadCommand.RunAsync(settings, fileSystem2, outputFolder, false, log); success.ShouldBeEquivalentTo(true, "the feed is valid"); Directory.GetFiles(outputFolder, "*.nupkg", SearchOption.AllDirectories).Length.ShouldBeEquivalentTo(0, "the feed is empty"); log.GetMessages().Should().Contain("The feed does not contain any packages"); } }