internal static /* for testing purposes */ IBindingProcess CreateBindingProcess(IHost host, BindCommandArgs bindingArgs)
        {
            // Choose the type of binding
            var configProvider = host.GetService <IConfigurationProvider>();

            configProvider.AssertLocalServiceIsNotNull();

            var currentConfiguration = configProvider.GetConfiguration();

            SonarLintMode          modeToBind;
            INuGetBindingOperation nugetBindingOp;

            // If we are currently in standalone then the project is being bound for the first time.
            // Otherwise, we are updating an existing binding
            var isFirstBinding = currentConfiguration.Mode == SonarLintMode.Standalone;

            if (currentConfiguration.Mode == SonarLintMode.LegacyConnected)
            {
                host.Logger.WriteLine(Strings.Bind_UpdatingLegacyBinding);
                modeToBind     = SonarLintMode.LegacyConnected;
                nugetBindingOp = new NuGetBindingOperation(host, host.Logger);
            }
            else
            {
                host.Logger.WriteLine(
                    isFirstBinding ?
                    Strings.Bind_FirstTimeBinding :
                    Strings.Bind_UpdatingNewStyleBinding);

                modeToBind     = SonarLintMode.Connected;
                nugetBindingOp = new NoOpNuGetBindingOperation(host.Logger);
            }

            var solutionBindingOp = new SolutionBindingOperation(
                host,
                bindingArgs.Connection,
                bindingArgs.ProjectKey,
                bindingArgs.ProjectName,
                modeToBind,
                host.Logger);

            var unboundProjectFinder = new UnboundProjectFinder(host);

            var dotNetConfigProvider = new DotNetBindingConfigProvider(host.SonarQubeService, nugetBindingOp,
                                                                       bindingArgs.Connection.ServerUri.ToString(), bindingArgs.ProjectName,
                                                                       host.Logger);

            var cppConfigProvider  = new CFamilyBindingConfigProvider(host.SonarQubeService, host.Logger);
            var ruleConfigProvider = new CompositeBindingConfigProvider(dotNetConfigProvider, cppConfigProvider);

            var bindingProcess = new BindingProcessImpl(host, bindingArgs, solutionBindingOp, nugetBindingOp, unboundProjectFinder, ruleConfigProvider, isFirstBinding);

            return(bindingProcess);
        }
            public UnboundProjectFinder CreateTestSubject()
            {
                var projectSystemHelper = new Mock <IProjectSystemHelper>();

                projectSystemHelper.Setup(x => x.GetFilteredSolutionProjects()).Returns(projects);

                var configProviderMock = new Mock <IConfigurationProviderService>();

                configProviderMock.Setup(x => x.GetConfiguration()).Returns(bindingConfiguration);

                var sp = new ConfigurableServiceProvider();

                sp.RegisterService(typeof(IProjectSystemHelper), projectSystemHelper.Object);
                sp.RegisterService(typeof(IConfigurationProviderService), configProviderMock.Object);

                var testSubject = new UnboundProjectFinder(sp, projectBinderFactoryMock.Object);

                return(testSubject);
            }
Esempio n. 3
0
            public UnboundProjectFinder CreateTestSubject()
            {
                var projectSystemHelper = new Mock <IProjectSystemHelper>();

                projectSystemHelper.Setup(x => x.GetFilteredSolutionProjects()).Returns(projects);

                var configProviderMock = new Mock <IConfigurationProvider>();

                configProviderMock.Setup(x => x.GetConfiguration())
                .Returns(new BindingConfiguration(
                             new BoundSonarQubeProject(new Uri("http://localhost:8888"), sqProjectKey, "anySQProjectName"), mode));

                var sp = new ConfigurableServiceProvider();

                sp.RegisterService(typeof(ISolutionRuleSetsInformationProvider), ruleSetsInfoProvider.Object);
                sp.RegisterService(typeof(IProjectSystemHelper), projectSystemHelper.Object);
                sp.RegisterService(typeof(IConfigurationProvider), configProviderMock.Object);
                sp.RegisterService(typeof(IRuleSetSerializer), ruleSetSerializerMock.Object);

                var testSubject = new UnboundProjectFinder(sp, fileMock.Object);

                return(testSubject);
            }