public async Task <int> MakeUpdatePullRequests( IGitDriver git, RepositoryData repository, IReadOnlyCollection <PackageUpdateSet> updates, NuGetSources sources, SettingsContainer settings) { int totalCount = 0; try { var groups = UpdateConsolidator.Consolidate(updates, settings.UserSettings.ConsolidateUpdatesInSinglePullRequest); foreach (var updateSets in groups) { var updatesMade = await MakeUpdatePullRequests( git, repository, sources, settings, updateSets); totalCount += updatesMade; } } catch (Exception ex) { _logger.Error("Updates failed", ex); } return(totalCount); }
public void WhenOneItemIsNotConsolidated() { var items = PackageUpdates.MakeUpdateSet("foo") .InList(); var output = UpdateConsolidator.Consolidate(items, false); var listOfLists = output.ToList(); // one list, containing all the items Assert.That(listOfLists.Count, Is.EqualTo(1)); Assert.That(listOfLists[0].Count, Is.EqualTo(1)); }
public void WhenItemsAreConsolidated() { var items = new List <PackageUpdateSet> { PackageUpdates.MakeUpdateSet("foo"), PackageUpdates.MakeUpdateSet("bar") }; var output = UpdateConsolidator.Consolidate(items, true); var listOfLists = output.ToList(); // one list, containing all the items Assert.That(listOfLists.Count, Is.EqualTo(1)); Assert.That(listOfLists[0].Count, Is.EqualTo(2)); }
public async Task <int> MakeUpdatePullRequests( IGitDriver git, RepositoryData repository, IReadOnlyCollection <PackageUpdateSet> updates, NuGetSources sources, SettingsContainer settings) { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } if (git == null) { throw new ArgumentNullException(nameof(git)); } if (repository == null) { throw new ArgumentNullException(nameof(repository)); } int totalCount = 0; try { var groups = UpdateConsolidator.Consolidate(updates, settings.UserSettings.ConsolidateUpdatesInSinglePullRequest); foreach (var updateSets in groups) { var updatesMade = await MakeUpdatePullRequests( git, repository, sources, settings, updateSets); totalCount += updatesMade; } } #pragma warning disable CA1031 catch (Exception ex) #pragma warning restore CA1031 { _logger.Error("Updates failed", ex); } return(totalCount); }
public void WhenItemsAreNotConsolidated() { var items = new List <PackageUpdateSet> { PackageUpdates.MakeUpdateSet("foo"), PackageUpdates.MakeUpdateSet("bar") }; var output = UpdateConsolidator.Consolidate(items, false); var listOfLists = output.ToList(); // two lists, each containing 1 item Assert.That(listOfLists.Count, Is.EqualTo(2)); Assert.That(listOfLists.SelectMany(x => x).Count(), Is.EqualTo(2)); Assert.That(listOfLists[0].Count, Is.EqualTo(1)); Assert.That(listOfLists[1].Count, Is.EqualTo(1)); }
public async Task <(int UpdatesMade, bool ThresholdReached)> MakeUpdatePullRequests( IGitDriver git, RepositoryData repository, IReadOnlyCollection <PackageUpdateSet> updates, NuGetSources sources, SettingsContainer settings ) { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } if (git == null) { throw new ArgumentNullException(nameof(git)); } if (repository == null) { throw new ArgumentNullException(nameof(repository)); } var openPrs = await _collaborationFactory.CollaborationPlatform.GetNumberOfOpenPullRequests( repository.Pull.Owner, repository.Pull.Name ); var allowedPrs = settings.UserSettings.MaxOpenPullRequests; if (openPrs >= allowedPrs) { _logger.Normal("Number of open pull requests equals or exceeds allowed number of open pull requests."); return(0, true); } int totalCount = 0; var groups = UpdateConsolidator.Consolidate(updates, settings.UserSettings.ConsolidateUpdatesInSinglePullRequest); foreach (var updateSets in groups) { var(updatesMade, pullRequestCreated) = await MakeUpdatePullRequests( git, repository, sources, settings, updateSets); totalCount += updatesMade; if (pullRequestCreated) { openPrs++; } if (openPrs == allowedPrs) { return(totalCount, true); } } return(totalCount, false); }