static async Task ProcessSolution(string solution, string?package) { if (Excluder.ShouldExclude(solution)) { Console.WriteLine($" Exclude: {solution}"); return; } Console.WriteLine($" {solution}"); await SolutionRestore.Run(solution); var solutionDirectory = Directory.GetParent(solution) !.FullName; foreach (var project in FileSystem.EnumerateFiles(solutionDirectory, "*.csproj")) { Console.WriteLine($" {project.Replace(solutionDirectory, "").Trim(Path.DirectorySeparatorChar)}"); foreach (var pending in await PendingUpdateReader.ReadPendingUpdates(project)) { if (package == null) { await Update(project, pending.Package, pending.Latest); continue; } if (string.Equals(package, pending.Package, StringComparison.OrdinalIgnoreCase)) { await Update(project, pending.Package, pending.Latest); } } } }
public async Task WhenThereAreNoSolutionsTheCommandIsNotCalled() { var cmd = Substitute.For <IFileRestoreCommand>(); var folder = Substitute.For <IFolder>(); var packages = new List <PackageUpdateSet>(); var solutionRestore = new SolutionRestore(cmd); await solutionRestore.CheckRestore(packages, folder, NuGetSources.GlobalFeed); await cmd.DidNotReceiveWithAnyArgs() .Invoke(Arg.Any <FileInfo>(), Arg.Any <NuGetSources>()); }
public async Task EmptyListCase() { var selection = Substitute.For <IUpdateSelection>(); var runner = Substitute.For <IUpdateRunner>(); var logger = Substitute.For <INuKeeperLogger>(); var folder = Substitute.For <IFolder>(); var restorer = new SolutionRestore(Substitute.For <IFileRestoreCommand>()); var updater = new LocalUpdater(selection, runner, restorer, logger); await updater.ApplyUpdates(new List <PackageUpdateSet>(), folder, NuGetSources.GlobalFeed, Settings()); await runner.Received(0) .Update(Arg.Any <PackageUpdateSet>(), Arg.Any <NuGetSources>()); }
public async Task WhenThereAreNoMatchingPackagesTheCommandIsNotCalled() { var packages = PackageUpdates.ForPackageRefType(PackageReferenceType.ProjectFile) .InList(); var sln = new FileInfo("foo.sln"); var cmd = Substitute.For <IFileRestoreCommand>(); var folder = Substitute.For <IFolder>(); folder.Find(Arg.Any <string>()).Returns(new[] { sln }); var solutionRestore = new SolutionRestore(cmd); await solutionRestore.CheckRestore(packages, folder, NuGetSources.GlobalFeed); await cmd.DidNotReceiveWithAnyArgs() .Invoke(Arg.Any <FileInfo>(), Arg.Any <NuGetSources>()); }
public async Task WhenThereIsOneSolutionsTheCommandIsCalled() { var packages = PackageUpdates.ForPackageRefType(PackageReferenceType.PackagesConfig) .InList(); var sln = new FileInfo("foo.sln"); var cmd = Substitute.For <IFileRestoreCommand>(); var folder = Substitute.For <IFolder>(); folder.Find(Arg.Any <string>()).Returns(new[] { sln }); var solutionRestore = new SolutionRestore(cmd); await solutionRestore.CheckRestore(packages, folder, NuGetSources.GlobalFeed); await cmd.Received(1).Invoke(Arg.Any <FileInfo>(), Arg.Any <NuGetSources>()); await cmd.Received().Invoke(sln, Arg.Any <NuGetSources>()); }
public async Task SingleItemCase() { var updates = PackageUpdates.MakeUpdateSet("foo") .InList(); var selection = Substitute.For <IUpdateSelection>(); FilterIsPassThrough(selection); var runner = Substitute.For <IUpdateRunner>(); var logger = Substitute.For <INuKeeperLogger>(); var folder = Substitute.For <IFolder>(); var restorer = new SolutionRestore(Substitute.For <IFileRestoreCommand>()); var updater = new LocalUpdater(selection, runner, restorer, logger); await updater.ApplyUpdates(updates, folder, NuGetSources.GlobalFeed, Settings()); await runner.Received(1) .Update(Arg.Any <PackageUpdateSet>(), Arg.Any <NuGetSources>()); }
public Task ThisSolution() { var file = Path.Combine(GitRepoDirectoryFinder.Find(), "src", "PackageUpdate.sln"); return(SolutionRestore.Run(file)); }