public void Serialization_WhenDeserializing_Succeeds()
        {
            NuGetSettings expectedSettings = CreateNuGetSettings();

            var serializer = new NuGetSettingsSerializer();

            using (var stream = new MemoryStream())
            {
                serializer.Serialize(stream, expectedSettings);

                Assert.NotEqual(0, stream.Length);

                stream.Seek(offset: 0, loc: SeekOrigin.Begin);

                NuGetSettings actualSettings = serializer.Deserialize(stream);

                Assert.NotSame(expectedSettings, actualSettings);
                AssertAreEquivalent(expectedSettings, actualSettings);
            }
        }
示例#2
0
        private static void DownloadPackages(string packagesDirectory, List <string> sources)
        {
            var settings      = new InMemorySettings();
            var nuGetSettings = new NuGetSettings(settings);

            nuGetSettings.GlobalPackagesFolder = packagesDirectory;

            var packageRangeDownloader = new PackageRangeDownloader(nuGetSettings);

            var alignedVersionDownloader = new AlignedVersionsDownloader(packageRangeDownloader);

            using (var sourceCacheContext = new SourceCacheContext())
            {
                var downloadTask = DownloadAsync(
                    sources,
                    alignedVersionDownloader,
                    sourceCacheContext,
                    new ConsoleLogger());

                downloadTask.Wait();
            }
        }
        private static void AssertAreEquivalent(NuGetSettings expectedSettings, NuGetSettings actualSettings)
        {
            Assert.Equal(expectedSettings.WindowSettings.Count, actualSettings.WindowSettings.Count);

            IReadOnlyList <PropertyInfo> properties = GetSerializableProperties <UserSettings>();

            foreach (string key in expectedSettings.WindowSettings.Keys)
            {
                Assert.True(actualSettings.WindowSettings.ContainsKey(key));

                UserSettings expectedUserSettings = expectedSettings.WindowSettings[key];
                UserSettings actualUserSettings   = actualSettings.WindowSettings[key];

                foreach (PropertyInfo property in properties)
                {
                    object expectedValue = property.GetValue(expectedUserSettings);
                    object actualValue   = property.GetValue(actualUserSettings);

                    Assert.Equal(expectedValue, actualValue);
                }
            }
        }
        private static NuGetSettings CreateNuGetSettings()
        {
            var settings = new NuGetSettings();

            var userSettings = new UserSettings()
            {
                SourceRepository              = "a",
                ShowPreviewWindow             = true,
                ShowDeprecatedFrameworkWindow = false,
                RemoveDependencies            = true,
                ForceRemove        = false,
                IncludePrerelease  = true,
                SelectedFilter     = ItemFilter.Installed,
                DependencyBehavior = Resolver.DependencyBehavior.HighestMinor,
                FileConflictAction = ProjectManagement.FileConflictAction.Overwrite,
                OptionsExpanded    = true,
                SortPropertyName   = "b",
                SortDirection      = System.ComponentModel.ListSortDirection.Descending
            };

            settings.WindowSettings.Add("c", userSettings);

            return(settings);
        }
示例#5
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddSingleton(serviceProvider =>
            {
                var hostingEnvironment = serviceProvider.GetService <IHostingEnvironment>();

                var settings      = new InMemorySettings();
                var nuGetSettings = new NuGetSettings(settings);
                nuGetSettings.GlobalPackagesFolder = Path.Combine(hostingEnvironment.ContentRootPath, "packages");

                return(nuGetSettings);
            });

            services.AddLogging(builder =>
            {
                builder.AddConsole();
                builder.AddDebug();
            });

            services.AddApplicationInsightsTelemetry();

            services.AddTransient <IAlignedVersionsDownloader, AlignedVersionsDownloader>();
            services.AddTransient <IAssemblyLoader, AssemblyLoader>();
            services.AddTransient <IFrameworkEnumerator <Framework>, FrameworkEnumerator>();
            services.AddTransient <IFrameworkList, FrameworkList <Framework> >();
            services.AddTransient <IPackageLoader, PackageLoader>();
            services.AddTransient <IPackageRangeDownloader, PackageRangeDownloader>();

            services.AddSingleton <IToolsFactory, ToolsFactory>();

            try
            {
                // Try to construct the reflection-based tools factory.
                var serviceProvider = services.BuildServiceProvider();
                var toolsFactory    = serviceProvider.GetRequiredService <IToolsFactory>();

                var versions = toolsFactory.GetAvailableVersionsAsync(CancellationToken.None).Result;

                if (!versions.Any())
                {
                    throw new InvalidOperationException("At least one version is required.");
                }
            }
            catch
            {
                // Fallback to using the NuGet version directly referenced by this project.
                var serviceDescriptor = services.First(x => x.ImplementationType == typeof(ToolsFactory));
                services.Remove(serviceDescriptor);

                services.AddTransient <IFrameworkLogic <Framework>, FrameworkLogic>();
                services.AddTransient <IVersionLogic <Version>, VersionLogic>();
                services.AddTransient <IVersionRangeLogic <Version, VersionRange>, VersionRangeLogic>();

                var clientVersion = NuGet.Versioning.NuGetVersion.Parse(ClientVersionUtility.GetNuGetAssemblyVersion()).ToNormalizedString();

                services.AddTransient <IToolsService>(serviceProvider =>
                {
                    return(new ToolsService <Framework, Version, VersionRange>(
                               clientVersion,
                               serviceProvider.GetRequiredService <IFrameworkLogic <Framework> >(),
                               serviceProvider.GetRequiredService <IVersionLogic <Version> >(),
                               serviceProvider.GetRequiredService <IVersionRangeLogic <Version, VersionRange> >()));
                });

                services.AddTransient <IFrameworkPrecedenceService>(serviceProvider =>
                {
                    return(new FrameworkPrecedenceService <Framework>(
                               clientVersion,
                               serviceProvider.GetRequiredService <IFrameworkList>(),
                               serviceProvider.GetRequiredService <IFrameworkLogic <Framework> >()));
                });

                services.AddSingleton <IToolsFactory, SingletonToolsFactory>();
            }

            services.AddMvc();
        }