private async Task InitializeAsync()
 {
     _lazySettings        = new AsyncLazy <ISettings>(ServiceLocator.GetInstanceAsync <ISettings>, ThreadHelper.JoinableTaskFactory);
     _lazySolutionManager = new AsyncLazy <IVsSolutionManager>(ServiceLocator.GetInstanceAsync <IVsSolutionManager>, ThreadHelper.JoinableTaskFactory);
     _projectManagerServiceSharedState = new NuGetProjectManagerServiceState();
     _sharedServiceState = await SharedServiceState.CreateAsync(CancellationToken.None);
 }
Beispiel #2
0
        private NuGetPackageSearchService SetupSearchService()
        {
            ClearSearchCache();

            var packageSourceProvider = new Mock <IPackageSourceProvider>();

            packageSourceProvider.Setup(x => x.LoadPackageSources()).Returns(new List <PackageSource> {
                _sourceRepository.PackageSource
            });
            var sourceRepositoryProvider = new Mock <ISourceRepositoryProvider>();

            sourceRepositoryProvider.Setup(x => x.CreateRepository(It.IsAny <PackageSource>())).Returns(_sourceRepository);
            sourceRepositoryProvider.Setup(x => x.CreateRepository(It.IsAny <PackageSource>(), It.IsAny <FeedType>())).Returns(_sourceRepository);
            sourceRepositoryProvider.SetupGet(x => x.PackageSourceProvider).Returns(packageSourceProvider.Object);
            var solutionManager = new Mock <IVsSolutionManager>();

            solutionManager.SetupGet(x => x.SolutionDirectory).Returns("z:\\SomeRandomPath");
            var settings = new Mock <ISettings>();
            var deleteOnRestartManager = new Mock <IDeleteOnRestartManager>();

            _componentModel.Setup(x => x.GetService <IDeleteOnRestartManager>()).Returns(deleteOnRestartManager.Object);
            _componentModel.Setup(x => x.GetService <IVsSolutionManager>()).Returns(solutionManager.Object);
            _componentModel.Setup(x => x.GetService <ISolutionManager>()).Returns(solutionManager.Object);
            _componentModel.Setup(x => x.GetService <ISettings>()).Returns(settings.Object);
            _componentModel.Setup(x => x.GetService <ISourceRepositoryProvider>()).Returns(sourceRepositoryProvider.Object);
            _componentModel.Setup(x => x.GetService <INuGetProjectContext>()).Returns(new Mock <INuGetProjectContext>().Object);
            _componentModel.Setup(x => x.GetService <IRestoreProgressReporter>()).Returns(new Mock <IRestoreProgressReporter>().Object);

            var service = Package.GetGlobalService(typeof(SAsyncServiceProvider)) as IAsyncServiceProvider;

            ServiceLocator.InitializePackageServiceProvider(service);

            var serviceActivationOptions = default(ServiceActivationOptions);
            var serviceBroker            = new Mock <IServiceBroker>();
            var authorizationService     = new AuthorizationServiceClient(Mock.Of <IAuthorizationService>());

            var sharedState = new SharedServiceState(sourceRepositoryProvider.Object);

            var projectManagerService = new Mock <INuGetProjectManagerService>();

            projectManagerService.Setup(x => x.GetInstalledAndTransitivePackagesAsync(
                                            It.IsAny <IReadOnlyCollection <string> >(),
                                            It.IsAny <CancellationToken>()))
            .Returns(new ValueTask <IInstalledAndTransitivePackages>(new InstalledAndTransitivePackages(_installedPackages.ToList(), _transitivePackages.ToList())));
            projectManagerService.Setup(x => x.GetPackageFoldersAsync(
                                            It.IsAny <IReadOnlyCollection <string> >(),
                                            It.IsAny <CancellationToken>()))
            .Returns(new ValueTask <IReadOnlyCollection <string> >(Array.Empty <string>()));

#pragma warning disable ISB001 // Dispose of proxies
            serviceBroker.Setup(x => x.GetProxyAsync <INuGetProjectManagerService>(
                                    NuGetServices.ProjectManagerService,
                                    It.IsAny <ServiceActivationOptions>(),
                                    It.IsAny <CancellationToken>()))
            .Returns(new ValueTask <INuGetProjectManagerService>(projectManagerService.Object));
#pragma warning restore ISB001 // Dispose of proxies

            return(new NuGetPackageSearchService(serviceActivationOptions, serviceBroker.Object, authorizationService, sharedState));
        }
Beispiel #3
0
        public async Task GetPackageManagerAsync_Always_ReturnsNewInstance()
        {
            using (SharedServiceState state = await SharedServiceState.CreateAsync(CancellationToken.None))
            {
                NuGetPackageManager packageManager0 = await state.GetPackageManagerAsync(CancellationToken.None);

                NuGetPackageManager packageManager1 = await state.GetPackageManagerAsync(CancellationToken.None);

                NuGetPackageManager packageManager2 = await state.GetPackageManagerAsync(CancellationToken.None);

                Assert.NotNull(packageManager0);
                Assert.NotNull(packageManager1);
                Assert.NotNull(packageManager2);

                Assert.NotSame(packageManager0, packageManager1);
                Assert.NotSame(packageManager0, packageManager2);
            }
        }
        public async Task GetTotalCountAsync_WithGreaterThanOrEqualToMaxCountResults_ReturnsMaxCount()
        {
            var source1 = new PackageSource("https://dotnet.myget.org/F/nuget-volatile/api/v3/index.json", "NuGetVolatile");
            var source2 = new PackageSource("https://api.nuget.org/v3/index.json", "NuGet.org");
            var sources = new List <PackageSource> {
                source1, source2
            };
            var sourceRepository = TestSourceRepositoryUtility.CreateSourceRepositoryProvider(new[] { source1, source2 });

            var solutionManager = new Mock <IVsSolutionManager>();

            solutionManager.SetupGet(x => x.SolutionDirectory).Returns("z:\\SomeRandomPath");
            var settings = new Mock <ISettings>();
            var deleteOnRestartManager = new Mock <IDeleteOnRestartManager>();

            AddService <IDeleteOnRestartManager>(Task.FromResult <object>(deleteOnRestartManager.Object));
            AddService <IVsSolutionManager>(Task.FromResult <object>(solutionManager.Object));
            AddService <ISettings>(Task.FromResult <object>(settings.Object));
            AddService <ISourceRepositoryProvider>(Task.FromResult <object>(sourceRepository));

            var serviceActivationOptions = default(ServiceActivationOptions);
            var serviceBroker            = new Mock <IServiceBroker>();
            var authorizationService     = new AuthorizationServiceClient(Mock.Of <IAuthorizationService>());

            var sharedState = new SharedServiceState(sourceRepository);

            var projectManagerService = new Mock <INuGetProjectManagerService>();

            var installedPackages = new List <IPackageReferenceContextInfo>();
            var projects          = new List <IProjectContextInfo>
            {
                new ProjectContextInfo(
                    Guid.NewGuid().ToString(),
                    ProjectModel.ProjectStyle.PackageReference,
                    NuGetProjectKind.PackageReference)
            };

            projectManagerService.Setup(x => x.GetInstalledPackagesAsync(
                                            It.IsAny <IReadOnlyCollection <string> >(),
                                            It.IsAny <CancellationToken>()))
            .Returns(new ValueTask <IReadOnlyCollection <IPackageReferenceContextInfo> >(installedPackages));

#pragma warning disable ISB001 // Dispose of proxies
            serviceBroker.Setup(x => x.GetProxyAsync <INuGetProjectManagerService>(
                                    NuGetServices.ProjectManagerService,
                                    It.IsAny <ServiceActivationOptions>(),
                                    It.IsAny <CancellationToken>()))
            .Returns(new ValueTask <INuGetProjectManagerService>(projectManagerService.Object));
#pragma warning restore ISB001 // Dispose of proxies

            using (var searchService = new NuGetPackageSearchService(
                       serviceActivationOptions,
                       serviceBroker.Object,
                       authorizationService,
                       sharedState))
            {
                const int MaxCount = 100;

                int totalCount = await searchService.GetTotalCountAsync(
                    MaxCount,
                    projects,
                    sources.Select(s => PackageSourceContextInfo.Create(s)).ToList(),
                    targetFrameworks : new List <string>()
                {
                    "net45", "net5.0"
                },
                    new SearchFilter(includePrerelease : true),
                    NuGet.VisualStudio.Internal.Contracts.ItemFilter.All,
                    CancellationToken.None);

                Assert.Equal(MaxCount, totalCount);
            }
        }