public void ParseValidJson()
        {
            EnvScannerPropertiesProvider provider = new EnvScannerPropertiesProvider("{ \"sonar.host.url\": \"http://myhost\"}");

            Assert.AreEqual(provider.GetAllProperties().First().Id, "sonar.host.url");
            Assert.AreEqual(provider.GetAllProperties().First().Value, "http://myhost");
            Assert.AreEqual(1, provider.GetAllProperties().Count());
        }
        public void ParseValidJson()
        {
            var provider = new EnvScannerPropertiesProvider("{ \"sonar.host.url\": \"http://myhost\"}");

            provider.GetAllProperties().Should().HaveCount(1);
            provider.GetAllProperties().First().Id.Should().Be("sonar.host.url");
            provider.GetAllProperties().First().Value.Should().Be("http://myhost");
        }
Exemplo n.º 3
0
        /// <summary>
        /// Attempts to process the supplied command line arguments and
        /// reports any errors using the logger.
        /// Returns null unless all of the properties are valid.
        /// </summary>
        public static ProcessedArgs TryProcessArgs(string[] commandLineArgs, ILogger logger)
        {
            if (logger == null)
            {
                throw new ArgumentNullException("logger");
            }

            ProcessedArgs processed = null;
            IEnumerable <ArgumentInstance> arguments;

            // This call will fail if there are duplicate, missing, or unrecognized arguments
            CommandLineParser parser = new CommandLineParser(Descriptors, false /* don't allow unrecognized */);
            bool parsedOk            = parser.ParseArguments(commandLineArgs, logger, out arguments);

            // Handle the /install: command line only argument
            bool installLoaderTargets;

            parsedOk &= TryGetInstallTargetsEnabled(arguments, logger, out installLoaderTargets);

            // Handler for command line analysis properties
            IAnalysisPropertyProvider cmdLineProperties;

            parsedOk &= CmdLineArgPropertyProvider.TryCreateProvider(arguments, logger, out cmdLineProperties);

            // Handler for scanner environment properties
            IAnalysisPropertyProvider scannerEnvProperties;

            parsedOk &= EnvScannerPropertiesProvider.TryCreateProvider(logger, out scannerEnvProperties);

            // Handler for property file
            IAnalysisPropertyProvider globalFileProperties;
            string asmPath = Path.GetDirectoryName(typeof(PreProcessor.ArgumentProcessor).Assembly.Location);

            parsedOk &= FilePropertyProvider.TryCreateProvider(arguments, asmPath, logger, out globalFileProperties);

            if (parsedOk)
            {
                Debug.Assert(cmdLineProperties != null);
                Debug.Assert(globalFileProperties != null);

                processed = new ProcessedArgs(
                    GetArgumentValue(KeywordIds.ProjectKey, arguments),
                    GetArgumentValue(KeywordIds.ProjectName, arguments),
                    GetArgumentValue(KeywordIds.ProjectVersion, arguments),
                    GetArgumentValue(KeywordIds.Organization, arguments),
                    installLoaderTargets,
                    cmdLineProperties,
                    globalFileProperties,
                    scannerEnvProperties);

                if (!AreParsedArgumentsValid(processed, logger))
                {
                    processed = null;
                }
            }

            return(processed);
        }
Exemplo n.º 4
0
        public void ParseInvalidJson()
        {
            var logger = new TestLogger();

            Environment.SetEnvironmentVariable("SONARQUBE_SCANNER_PARAMS", "trash");
            var result = EnvScannerPropertiesProvider.TryCreateProvider(logger, out IAnalysisPropertyProvider provider);

            Assert.IsFalse(result);
            logger.AssertErrorLogged("Failed to parse properties from the environment variable 'SONARQUBE_SCANNER_PARAMS'");
        }
        public void ParseInvalidJson()
        {
            var logger = new TestLogger();

            // Make sure the test isn't affected by the hosting environment and
            // does not affect the hosting environment
            // The SonarCloud VSTS extension sets additional properties in an environment variable that
            // would affect the test.
            using (var scope = new EnvironmentVariableScope())
            {
                scope.SetVariable("SONARQUBE_SCANNER_PARAMS", "trash");
                var result = EnvScannerPropertiesProvider.TryCreateProvider(logger, out var provider);
                result.Should().BeFalse();
                logger.AssertErrorLogged("Failed to parse properties from the environment variable 'SONARQUBE_SCANNER_PARAMS'");
            }
        }
        public void NonExistingEnvVar()
        {
            EnvScannerPropertiesProvider provider = new EnvScannerPropertiesProvider(null);

            Assert.AreEqual(0, provider.GetAllProperties().Count());
        }
        public void NonExistingEnvVar()
        {
            var provider = new EnvScannerPropertiesProvider(null);

            provider.GetAllProperties().Should().BeEmpty();
        }