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