public async Task PackagePreFetcher_NoInstallActionsInput() { using (var packagesFolderDir = TestDirectory.Create()) using (var globalPackagesFolder = TestDirectory.Create()) { // Arrange var actions = new List <NuGetProjectAction>(); var packagesFolder = new FolderNuGetProject(packagesFolderDir); var testSettings = new Configuration.NullSettings(); var logger = new TestLogger(); var target = new PackageIdentity("packageA", NuGetVersion.Parse("1.0.0")); var target2 = new PackageIdentity("packageB", NuGetVersion.Parse("1.0.0")); actions.Add(NuGetProjectAction.CreateUninstallProjectAction(target, packagesFolder)); actions.Add(NuGetProjectAction.CreateUninstallProjectAction(target2, packagesFolder)); // Act using (var cacheContext = new SourceCacheContext()) { var result = await PackagePreFetcher.GetPackagesAsync( actions, packagesFolder, new PackageDownloadContext(cacheContext), globalPackagesFolder, logger, CancellationToken.None); // Assert Assert.Equal(0, result.Count); } } }
public async Task PackagePreFetcher_NoActionsInput() { using (var packagesFolderDir = TestDirectory.Create()) using (var globalPackagesFolder = TestDirectory.Create()) { // Arrange var actions = new List <NuGetProjectAction>(); var packagesFolder = new FolderNuGetProject(packagesFolderDir); var testSettings = new Configuration.NullSettings(); var logger = new TestLogger(); // Act using (var cacheContext = new SourceCacheContext()) { var result = await PackagePreFetcher.GetPackagesAsync( actions, packagesFolder, new PackageDownloadContext(cacheContext), globalPackagesFolder, logger, CancellationToken.None); // Assert Assert.Equal(0, result.Count); } } }
private async Task <IEnumerable <NuGetProjectAction> > PacManCleanInstall(SourceRepositoryProvider sourceRepositoryProvider, PackageIdentity target) { // Arrange using (var testSolutionManager = new TestSolutionManager(true)) using (var randomPackagesConfigFolderPath = TestDirectory.Create()) { var testSettings = new Configuration.NullSettings(); var token = CancellationToken.None; var deleteOnRestartManger = new TestDeleteOnRestartManager(); var nuGetPackageManager = new NuGetPackageManager( sourceRepositoryProvider, testSettings, testSolutionManager, deleteOnRestartManger); var packagesFolderPath = PackagesFolderPathUtility.GetPackagesFolderPath(testSolutionManager, testSettings); var randomPackagesConfigPath = Path.Combine(randomPackagesConfigFolderPath, "packages.config"); var projectTargetFramework = NuGetFramework.Parse("net45"); var msBuildNuGetProjectSystem = new TestMSBuildNuGetProjectSystem(projectTargetFramework, new TestNuGetProjectContext()); var msBuildNuGetProject = new MSBuildNuGetProject(msBuildNuGetProjectSystem, packagesFolderPath, randomPackagesConfigFolderPath); // Act var nugetProjectActions = await nuGetPackageManager.PreviewInstallPackageAsync(msBuildNuGetProject, target, new ResolutionContext(), new TestNuGetProjectContext(), sourceRepositoryProvider.GetRepositories().First(), null, token); return(nugetProjectActions); } }
public async Task PackagePreFetcher_NoInstallActionsInput() { using (var packagesFolderDir = TestFileSystemUtility.CreateRandomTestFolder()) { // Arrange var actions = new List <NuGetProjectAction>(); var packagesFolder = new FolderNuGetProject(packagesFolderDir); var testSettings = new Configuration.NullSettings(); var logger = new TestLogger(); var target = new PackageIdentity("packageA", NuGetVersion.Parse("1.0.0")); var target2 = new PackageIdentity("packageB", NuGetVersion.Parse("1.0.0")); actions.Add(NuGetProjectAction.CreateUninstallProjectAction(target)); actions.Add(NuGetProjectAction.CreateUninstallProjectAction(target2)); // Act var result = await PackagePreFetcher.GetPackagesAsync( actions, packagesFolder, testSettings, logger, CancellationToken.None); // Assert Assert.Equal(0, result.Count); } }
public async Task UnzippedPackageInstall_Basic() { // Arrange var sourceRepositoryProvider = TestSourceRepositoryUtility.CreateV3OnlySourceRepositoryProvider(); using (var testSolutionManager = new TestSolutionManager(true)) using (var randomPackagesConfigFolderPath = TestDirectory.Create()) { var testSettings = new Configuration.NullSettings(); var deleteOnRestartManager = new TestDeleteOnRestartManager(); var nuGetPackageManager = new NuGetPackageManager( sourceRepositoryProvider, testSettings, testSolutionManager, deleteOnRestartManager); var packagesFolderPath = PackagesFolderPathUtility.GetPackagesFolderPath(testSolutionManager, testSettings); var randomPackagesConfigPath = Path.Combine(randomPackagesConfigFolderPath, "packages.config"); var token = CancellationToken.None; var projectTargetFramework = NuGetFramework.Parse("net45"); var msBuildNuGetProjectSystem = new TestMSBuildNuGetProjectSystem(projectTargetFramework, new TestNuGetProjectContext()); var msBuildNuGetProject = new MSBuildNuGetProject(msBuildNuGetProjectSystem, packagesFolderPath, randomPackagesConfigFolderPath); var packageIdentity = NoDependencyLibPackages[0]; // Pre-Assert // Check that the packages.config file does not exist Assert.False(File.Exists(randomPackagesConfigPath)); // Check that there are no packages returned by PackagesConfigProject var packagesInPackagesConfig = (await msBuildNuGetProject.PackagesConfigNuGetProject.GetInstalledPackagesAsync(token)).ToList(); Assert.Equal(0, packagesInPackagesConfig.Count); Assert.Equal(0, msBuildNuGetProjectSystem.References.Count); // Act await nuGetPackageManager.InstallPackageAsync(msBuildNuGetProject, packageIdentity, new ResolutionContext(), new TestNuGetProjectContext(), sourceRepositoryProvider.GetRepositories().First(), null, token); // Assert // Check that the packages.config file exists after the installation Assert.True(File.Exists(randomPackagesConfigPath)); // Check the number of packages and packages returned by PackagesConfigProject after the installation packagesInPackagesConfig = (await msBuildNuGetProject.PackagesConfigNuGetProject.GetInstalledPackagesAsync(token)).ToList(); Assert.Equal(1, packagesInPackagesConfig.Count); Assert.Equal(packageIdentity, packagesInPackagesConfig[0].PackageIdentity); Assert.Equal(projectTargetFramework, packagesInPackagesConfig[0].TargetFramework); } }
public async Task PackagePreFetcher_PackageAlreadyExistsReinstall() { using (var sourceDir = TestDirectory.Create()) using (var packagesFolderDir = TestDirectory.Create()) using (var globalPackagesFolder = TestDirectory.Create()) { // Arrange var actions = new List <NuGetProjectAction>(); var packagesFolder = new FolderNuGetProject(packagesFolderDir); var testSettings = new Configuration.NullSettings(); var logger = new TestLogger(); var target = new PackageIdentity("packageA", NuGetVersion.Parse("1.0.0")); var source = Repository.Factory.GetVisualStudio(new Configuration.PackageSource(sourceDir.Path)); // Add package AddToPackagesFolder(target, packagesFolderDir); actions.Add(NuGetProjectAction.CreateUninstallProjectAction(target, packagesFolder)); actions.Add(NuGetProjectAction.CreateInstallProjectAction(target, source, packagesFolder)); AddToSource(target, sourceDir); // Act using (var cacheContext = new SourceCacheContext()) { var result = await PackagePreFetcher.GetPackagesAsync( actions, packagesFolder, new PackageDownloadContext(cacheContext), globalPackagesFolder, logger, CancellationToken.None); var downloadResult = await result[target].GetResultAsync(); // Assert Assert.Equal(1, result.Count); Assert.False(result[target].InPackagesFolder); Assert.Equal(source.PackageSource, result[target].Source); Assert.Equal(target, result[target].Package); Assert.True(result[target].IsComplete); Assert.Equal(target, downloadResult.PackageReader.GetIdentity()); Assert.NotNull(downloadResult.PackageStream); Assert.Equal(DownloadResourceResultStatus.Available, downloadResult.Status); } } }
public async Task PackagePreFetcher_PackageDoesNotExistAnywhere() { using (var sourceDir = TestDirectory.Create()) using (var packagesFolderDir = TestDirectory.Create()) using (var globalPackagesFolder = TestDirectory.Create()) { // Arrange var actions = new List <NuGetProjectAction>(); var packagesFolder = new FolderNuGetProject(packagesFolderDir); var testSettings = new Configuration.NullSettings(); var logger = new TestLogger(); var target = new PackageIdentity("packageA", NuGetVersion.Parse("1.0.0")); var source = Repository.Factory.GetVisualStudio(new Configuration.PackageSource(sourceDir.Path)); actions.Add(NuGetProjectAction.CreateInstallProjectAction(target, source, packagesFolder)); // Act using (var cacheContext = new SourceCacheContext()) { var result = await PackagePreFetcher.GetPackagesAsync( actions, packagesFolder, new PackageDownloadContext(cacheContext), globalPackagesFolder, logger, CancellationToken.None); Exception exception = null; try { var downloadResult = await result[target].GetResultAsync(); Assert.True(false); } catch (Exception ex) { exception = ex; } // Assert Assert.StartsWith("Package 'packageA.1.0.0' is not found on source", exception.Message); } } }
public async Task PackagePreFetcher_PackageAlreadyExists_NonNormalizedVersionInput() { using (var sourceDir = TestFileSystemUtility.CreateRandomTestFolder()) using (var packagesFolderDir = TestFileSystemUtility.CreateRandomTestFolder()) { // Arrange var actions = new List <NuGetProjectAction>(); var packagesFolder = new FolderNuGetProject(packagesFolderDir); var testSettings = new Configuration.NullSettings(); var logger = new TestLogger(); var target = new PackageIdentity("packageA", NuGetVersion.Parse("1.0.0")); var targetNonNormalized = new PackageIdentity("packageA", NuGetVersion.Parse("1.0")); var source = Repository.Factory.GetVisualStudio(new Configuration.PackageSource(sourceDir.Path)); // Add package AddToPackagesFolder(target, packagesFolderDir); actions.Add(NuGetProjectAction.CreateInstallProjectAction(targetNonNormalized, source)); AddToSource(target, sourceDir); // Act var result = await PackagePreFetcher.GetPackagesAsync( actions, packagesFolder, testSettings, logger, CancellationToken.None); var downloadResult = await result[target].GetResultAsync(); // Assert Assert.Equal(1, result.Count); Assert.True(result[target].InPackagesFolder); Assert.Null(result[target].Source); Assert.Equal(target, result[target].Package); Assert.True(result[target].IsComplete); Assert.NotNull(downloadResult.PackageStream); Assert.Equal(DownloadResourceResultStatus.Available, downloadResult.Status); } }
public async Task PackagePreFetcher_NoActionsInput() { using (var packagesFolderDir = TestFileSystemUtility.CreateRandomTestFolder()) { // Arrange var actions = new List <NuGetProjectAction>(); var packagesFolder = new FolderNuGetProject(packagesFolderDir); var testSettings = new Configuration.NullSettings(); var logger = new TestLogger(); // Act var result = await PackagePreFetcher.GetPackagesAsync( actions, packagesFolder, testSettings, logger, CancellationToken.None); // Assert Assert.Equal(0, result.Count); } }
public async Task PackagePreFetcher_UpdateMultiplePackages() { using (var sourceDir = TestFileSystemUtility.CreateRandomTestFolder()) using (var packagesFolderDir = TestFileSystemUtility.CreateRandomTestFolder()) { // Arrange var actions = new List <NuGetProjectAction>(); var packagesFolder = new FolderNuGetProject(packagesFolderDir); var testSettings = new Configuration.NullSettings(); var logger = new TestLogger(); var targetA1 = new PackageIdentity("packageA", NuGetVersion.Parse("1.0.0")); var targetA2 = new PackageIdentity("packageA", NuGetVersion.Parse("2.0.0")); var targetB1 = new PackageIdentity("packageB", NuGetVersion.Parse("1.0.0")); var targetB2 = new PackageIdentity("packageB", NuGetVersion.Parse("2.0.0")); var targetC2 = new PackageIdentity("packageC", NuGetVersion.Parse("2.0.0")); var source = Repository.Factory.GetVisualStudio(new Configuration.PackageSource(sourceDir.Path)); // Add packages AddToPackagesFolder(targetA1, packagesFolderDir); AddToPackagesFolder(targetB1, packagesFolderDir); AddToPackagesFolder(targetA2, packagesFolderDir); // Update A and B, install C, A already exists actions.Add(NuGetProjectAction.CreateUninstallProjectAction(targetA1)); actions.Add(NuGetProjectAction.CreateUninstallProjectAction(targetB1)); actions.Add(NuGetProjectAction.CreateInstallProjectAction(targetC2, source)); actions.Add(NuGetProjectAction.CreateInstallProjectAction(targetB2, source)); actions.Add(NuGetProjectAction.CreateInstallProjectAction(targetA2, source)); AddToSource(targetA2, sourceDir); AddToSource(targetB2, sourceDir); AddToSource(targetC2, sourceDir); // Act var result = await PackagePreFetcher.GetPackagesAsync( actions, packagesFolder, testSettings, logger, CancellationToken.None); var resultA2 = await result[targetA2].GetResultAsync(); var resultB2 = await result[targetB2].GetResultAsync(); var resultC2 = await result[targetC2].GetResultAsync(); // Assert Assert.Equal(3, result.Count); Assert.True(result[targetA2].InPackagesFolder); Assert.Null(result[targetA2].Source); Assert.Equal(targetA2, result[targetA2].Package); Assert.True(result[targetA2].IsComplete); Assert.Equal(targetA2, resultA2.PackageReader.GetIdentity()); Assert.NotNull(resultA2.PackageStream); Assert.Equal(DownloadResourceResultStatus.Available, resultA2.Status); Assert.False(result[targetB2].InPackagesFolder); Assert.Equal(source.PackageSource, result[targetB2].Source); Assert.Equal(targetB2, result[targetB2].Package); Assert.True(result[targetB2].IsComplete); Assert.Equal(targetB2, resultB2.PackageReader.GetIdentity()); Assert.NotNull(resultB2.PackageStream); Assert.Equal(DownloadResourceResultStatus.Available, resultB2.Status); Assert.False(result[targetC2].InPackagesFolder); Assert.Equal(source.PackageSource, result[targetC2].Source); Assert.Equal(targetC2, result[targetC2].Package); Assert.True(result[targetC2].IsComplete); Assert.Equal(targetC2, resultC2.PackageReader.GetIdentity()); Assert.NotNull(resultC2.PackageStream); Assert.Equal(DownloadResourceResultStatus.Available, resultC2.Status); } }