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"); }
/// <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); }
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(); }