public void SonarRunner_CmdLineArgsOrdering() { // Check that user arguments are passed through to the wrapper and that they appear first // Arrange TestLogger logger = new TestLogger(); string exePath = CreateDummarySonarRunnerBatchFile(); string propertiesFilePath = CreateDummySonarRunnerPropertiesFile(); string[] userArgs = new string[] { "-Dsonar.login=me", "-Dsonar.password=my.pwd" }; // Act bool success = SonarRunnerWrapper.ExecuteJavaRunner(new AnalysisConfig(), userArgs, logger, exePath, propertiesFilePath); Assert.IsTrue(success, "Expecting execution to succeed"); string actualCmdLineArgs = CheckStandardArgsPassed(logger, propertiesFilePath); int loginIndex = CheckArgExists("-Dsonar.login=me", actualCmdLineArgs); int pwdIndex = CheckArgExists("-Dsonar.password=my.pwd", actualCmdLineArgs); int standardArgsIndex = CheckArgExists(SonarRunnerWrapper.StandardAdditionalRunnerArguments, actualCmdLineArgs); int propertiesFileIndex = CheckArgExists(SonarRunnerWrapper.ProjectSettingsFileArgName, actualCmdLineArgs); Assert.IsTrue(loginIndex < standardArgsIndex && loginIndex < propertiesFileIndex, "User arguments should appear first"); Assert.IsTrue(pwdIndex < standardArgsIndex && pwdIndex < propertiesFileIndex, "User arguments should appear first"); }
public void SonarRunner_SensitiveArgsPassedOnCommandLine() { // Check that sensitive arguments from the config are passed on the command line // Arrange TestLogger logger = new TestLogger(); string testDir = TestUtils.CreateTestSpecificFolder(this.TestContext); string exePath = CreateDummarySonarRunnerBatchFile(); string propertiesFilePath = CreateDummySonarRunnerPropertiesFile(); string[] userArgs = new string[] { "-Dxxx=yyy", "-Dsonar.password=cmdline.password" }; // Create a config file containing sensitive arguments AnalysisProperties fileSettings = new AnalysisProperties(); fileSettings.Add(new Property() { Id = SonarProperties.DbPassword, Value = "file db pwd" }); fileSettings.Add(new Property() { Id = SonarProperties.SonarPassword, Value = "file.password - should not be returned" }); fileSettings.Add(new Property() { Id = "file.not.sensitive.key", Value = "not sensitive value" }); string settingsFilePath = Path.Combine(testDir, "fileSettings.txt"); fileSettings.Save(settingsFilePath); AnalysisConfig config = new AnalysisConfig() { SonarRunnerWorkingDirectory = this.TestContext.DeploymentDirectory }; config.SetSettingsFilePath(settingsFilePath); // Act bool success = SonarRunnerWrapper.ExecuteJavaRunner(config, userArgs, logger, exePath, propertiesFilePath); // Assert VerifyProcessRunOutcome(logger, this.TestContext.DeploymentDirectory, success, true); string actualCmdLineArgs = CheckStandardArgsPassed(logger, propertiesFilePath); // Non-sensitive values from the file should not be passed on the command line CheckArgDoesNotExist("file.not.sensitive.key", actualCmdLineArgs); int dbPwdIndex = CheckArgExists("-Dsonar.jdbc.password=file db pwd", actualCmdLineArgs); // sensitive value from file int userPwdIndex = CheckArgExists("-Dsonar.password=cmdline.password", actualCmdLineArgs); // sensitive value from cmd line: overrides file value int standardArgsIndex = CheckArgExists(SonarRunnerWrapper.StandardAdditionalRunnerArguments, actualCmdLineArgs); int propertiesFileIndex = CheckArgExists(SonarRunnerWrapper.ProjectSettingsFileArgName, actualCmdLineArgs); Assert.IsTrue(dbPwdIndex < standardArgsIndex && dbPwdIndex < propertiesFileIndex, "User arguments should appear first"); Assert.IsTrue(userPwdIndex < standardArgsIndex && userPwdIndex < propertiesFileIndex, "User arguments should appear first"); }
public void SonarRunner_StandardAdditionalArgumentsPassed() { // Arrange TestLogger logger = new TestLogger(); string exePath = CreateDummarySonarRunnerBatchFile(); string propertiesFilePath = CreateDummySonarRunnerPropertiesFile(); // Act bool success = SonarRunnerWrapper.ExecuteJavaRunner(new AnalysisConfig(), Enumerable.Empty <string>(), logger, exePath, propertiesFilePath); Assert.IsTrue(success, "Expecting execution to succeed"); CheckStandardArgsPassed(logger, propertiesFilePath); }
public void SonarRunner_StandardAdditionalArgumentsPassed() { // Arrange TestLogger logger = new TestLogger(); string exePath = CreateDummarySonarRunnerBatchFile(); string propertiesFilePath = CreateDummySonarRunnerPropertiesFile(); AnalysisConfig config = new AnalysisConfig() { SonarRunnerWorkingDirectory = this.TestContext.DeploymentDirectory }; // Act bool success = SonarRunnerWrapper.ExecuteJavaRunner(config, Enumerable.Empty <string>(), logger, exePath, propertiesFilePath); // Assert VerifyProcessRunOutcome(logger, this.TestContext.DeploymentDirectory, success, true); }
private void TestWrapperErrorHandling(int?exitCode, bool addMessageToStdErr, bool expectedOutcome) { // Arrange TestLogger logger = new TestLogger(); string exePath = CreateDummarySonarRunnerBatchFile(addMessageToStdErr, exitCode); string propertiesFilePath = CreateDummySonarRunnerPropertiesFile(); AnalysisConfig config = new AnalysisConfig() { SonarRunnerWorkingDirectory = this.TestContext.DeploymentDirectory }; // Act bool success = SonarRunnerWrapper.ExecuteJavaRunner(config, Enumerable.Empty <string>(), logger, exePath, propertiesFilePath); // Assert VerifyProcessRunOutcome(logger, this.TestContext.DeploymentDirectory, success, expectedOutcome); }
public void SonarRunnerHome_MessageLoggedIfAlreadySet() { using (EnvironmentVariableScope scope = new EnvironmentVariableScope()) { scope.SetVariable(SonarRunnerWrapper.SonarRunnerHomeVariableName, "some_path"); // Arrange TestLogger testLogger = new TestLogger(); string exePath = CreateDummarySonarRunnerBatchFile(); string propertiesFilePath = CreateDummySonarRunnerPropertiesFile(); // Act bool success = SonarRunnerWrapper.ExecuteJavaRunner(new AnalysisConfig(), Enumerable.Empty <string>(), testLogger, exePath, propertiesFilePath); // Assert Assert.IsTrue(success, "Expecting execution to succeed"); testLogger.AssertInfoMessageExists(SonarRunner.Shim.Resources.MSG_SonarRunnerHomeIsSet); } }
public void SonarRunnerHome_MessageLoggedIfAlreadySet() { using (EnvironmentVariableScope scope = new EnvironmentVariableScope()) { scope.SetVariable(SonarRunnerWrapper.SonarRunnerHomeVariableName, "some_path"); // Arrange TestLogger testLogger = new TestLogger(); string exePath = CreateDummarySonarRunnerBatchFile(); string propertiesFilePath = CreateDummySonarRunnerPropertiesFile(); AnalysisConfig config = new AnalysisConfig() { SonarRunnerWorkingDirectory = this.TestContext.DeploymentDirectory }; // Act bool success = SonarRunnerWrapper.ExecuteJavaRunner(config, Enumerable.Empty <string>(), testLogger, exePath, propertiesFilePath); // Assert VerifyProcessRunOutcome(testLogger, this.TestContext.DeploymentDirectory, success, true); } }
public void SonarRunnerHome_NoMessageIfNotAlreadySet() { // Arrange TestLogger testLogger = new TestLogger(); string exePath = CreateDummarySonarRunnerBatchFile(); string propertiesFilePath = CreateDummySonarRunnerPropertiesFile(); using (EnvironmentVariableScope scope = new EnvironmentVariableScope()) { scope.SetVariable(SonarRunnerWrapper.SonarRunnerHomeVariableName, null); AnalysisConfig config = new AnalysisConfig() { SonarRunnerWorkingDirectory = this.TestContext.DeploymentDirectory }; // Act bool success = SonarRunnerWrapper.ExecuteJavaRunner(config, Enumerable.Empty <string>(), testLogger, exePath, propertiesFilePath); // Assert VerifySuccessfullRun(testLogger, success, this.TestContext.DeploymentDirectory); testLogger.AssertMessageNotLogged(SonarRunner.Shim.Resources.MSG_SonarRunnerHomeIsSet); } }