示例#1
0
        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);
        }
示例#3
0
        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));
        }