private async Task <int> DoTargetUpdates( IGitDriver git, RepositoryData repository, IReadOnlyCollection <PackageUpdateSet> targetUpdates, NuGetSources sources, SettingsContainer settings) { if (targetUpdates.Count == 0) { _logger.Minimal("No updates can be applied. Exiting."); return(0); } await _solutionsRestore.CheckRestore(targetUpdates, settings.WorkingFolder ?? git.WorkingFolder, sources); var updatesDone = await _packageUpdater.MakeUpdatePullRequests(git, repository, targetUpdates, sources, settings); if (updatesDone < targetUpdates.Count) { _logger.Minimal($"Attempted {targetUpdates.Count} updates and did {updatesDone}"); } else { _logger.Normal($"Done {updatesDone} updates"); } return(updatesDone); }
private (IRepositoryUpdater repositoryUpdater, IPackageUpdater packageUpdater) MakeRepositoryUpdater( IPackageUpdateSelection updateSelection, List <PackageUpdateSet> updates, IPackageUpdater packageUpdater = null) { var sources = Substitute.For <INuGetSourcesReader>(); var updateFinder = Substitute.For <IUpdateFinder>(); var fileRestore = Substitute.For <IFileRestoreCommand>(); var reporter = Substitute.For <IAvailableUpdatesReporter>(); updateFinder.FindPackageUpdateSets( Arg.Any <IFolder>(), Arg.Any <NuGetSources>(), Arg.Any <VersionChange>()) .Returns(updates); if (packageUpdater == null) { packageUpdater = Substitute.For <IPackageUpdater>(); packageUpdater.MakeUpdatePullRequests( Arg.Any <IGitDriver>(), Arg.Any <RepositoryData>(), Arg.Any <IReadOnlyCollection <PackageUpdateSet> >(), Arg.Any <NuGetSources>(), Arg.Any <SettingsContainer>()) .Returns(1); } var repoUpdater = new RepositoryUpdater( sources, updateFinder, updateSelection, packageUpdater, Substitute.For <INuKeeperLogger>(), new SolutionsRestore(fileRestore), reporter); return(repoUpdater, packageUpdater); }
private async Task <(int UpdatesMade, bool?ThresholdReached)> DoTargetUpdates( IGitDriver git, RepositoryData repository, IReadOnlyCollection <PackageUpdateSet> targetUpdates, NuGetSources sources, SettingsContainer settings ) { if (targetUpdates.Count == 0) { return(0, null); } await _solutionRestore.CheckRestore(targetUpdates, settings.WorkingFolder ?? git.WorkingFolder, sources); var(updatesDone, thresholdReached) = await _packageUpdater.MakeUpdatePullRequests(git, repository, targetUpdates, sources, settings); if (updatesDone < targetUpdates.Count) { _logger.Minimal($"Attempted {targetUpdates.Count} updates and did {updatesDone}"); } else { _logger.Normal($"Done {updatesDone} updates"); } return(updatesDone, thresholdReached); }
public async Task Run_TwoUpdatesOneExistingPrAndMaxOpenPrIsGreaterThanOne_CreatesPrForSecondUpdate() { _packagesToReturn.Add(MakePackageUpdateSet("foo.bar", "1.0.0")); _packagesToReturn.Add(MakePackageUpdateSet("notfoo.bar", "2.0.0")); _packageUpdater .MakeUpdatePullRequests( Arg.Any <IGitDriver>(), Arg.Any <RepositoryData>(), Arg.Any <IReadOnlyCollection <PackageUpdateSet> >(), Arg.Any <NuGetSources>(), Arg.Any <SettingsContainer>() ) .Returns((0, false), (1, false)); var repoData = MakeRepositoryData(); var settings = MakeSettings(); settings.UserSettings.MaxOpenPullRequests = 2; settings.PackageFilters.MaxPackageUpdates = 1; var sut = MakeRepositoryUpdater(); var result = await sut.Run(Substitute.For <IGitDriver>(), repoData, settings); Assert.That(result, Is.EqualTo(1)); }