public void CollectingConstraint() { CollectingConstraint c = new CollectingConstraint(); Assertion.Assert(c.Eval("test")); Assertion.AssertEquals("test", c.Parameter); Assertion.Assert("eval should always be true", c.Eval(null)); Assertion.AssertNull(c.Parameter); }
public void SendScheduleToCruiseManager() { CollectingConstraint projectNameConstraint = new CollectingConstraint(); CollectingConstraint scheduleConstraint = new CollectingConstraint(); RemotingMock cc = new RemotingMock(typeof(ICruiseManager)); cc.Expect("Run", projectNameConstraint, scheduleConstraint); using (MockServer server = new MockServer(cc.MarshalByRefInstance, new TcpChannel(2334), "MockCruise.rem")) { Runner runner = new Runner(); runner.Url = "tcp://localhost:2334/MockCruise.rem"; runner.Run("myProject"); } AssertEquals("myProject", projectNameConstraint.Parameter); AssertEquals(new Schedule(), scheduleConstraint.Parameter); cc.Verify(); }
private void CheckBaseDirectory(IIntegrationResult integrationResult, string expectedBaseDirectory) { ProcessResult returnVal = SuccessfulProcessResult(); CollectingConstraint constraint = new CollectingConstraint(); mockProcessExecutor.ExpectAndReturn("Execute", returnVal, new object[] { constraint }); builder.Run(integrationResult); ProcessInfo info = (ProcessInfo)constraint.Parameter; Assert.AreEqual(expectedBaseDirectory, info.WorkingDirectory); }
public void ShouldPassSuccessExitCodesToProcessExecutor() { CollectingConstraint constraint = new CollectingConstraint(); mockProcessExecutor.ExpectAndReturn("Execute", SuccessfulProcessResult(), new object[] { constraint }); IntegrationResult result = (IntegrationResult)IntegrationResult(); result.Label = "1.0"; result.BuildCondition = BuildCondition.ForceBuild; result.WorkingDirectory = @"c:\workingdir\"; result.ArtifactDirectory = @"c:\artifactdir\"; task.SuccessExitCodes = "0,1,3,5"; task.Run(result); ProcessInfo info = (ProcessInfo)constraint.Parameter; Assert.IsTrue(info.ProcessSuccessful(0)); Assert.IsTrue(info.ProcessSuccessful(1)); Assert.IsFalse(info.ProcessSuccessful(2)); Assert.IsTrue(info.ProcessSuccessful(3)); Assert.IsFalse(info.ProcessSuccessful(4)); Assert.IsTrue(info.ProcessSuccessful(5)); Assert.IsFalse(info.ProcessSuccessful(6)); Verify(); }
public void ShouldPassSpecifiedPropertiesAsProcessInfoArgumentsToProcessExecutor() { CollectingConstraint constraint = new CollectingConstraint(); mockProcessExecutor.ExpectAndReturn("Execute", SuccessfulProcessResult(), new object[] {constraint }); IntegrationResult result = (IntegrationResult) IntegrationResult(); result.Label = "1.0"; result.BuildCondition = BuildCondition.ForceBuild; result.WorkingDirectory = @"c:\workingdir\"; result.ArtifactDirectory = @"c:\artifactdir\"; task.Executable = "test-exe"; task.BuildArgs = "test-args"; task.BuildTimeoutSeconds = 222; task.Run(result); ProcessInfo info = (ProcessInfo) constraint.Parameter; Assert.AreEqual("test-exe", info.FileName); Assert.AreEqual(222000, info.TimeOut); Assert.AreEqual("test-args", info.Arguments); Assert.AreEqual("1.0", info.EnvironmentVariables["CCNetLabel"]); Assert.AreEqual("ForceBuild", info.EnvironmentVariables["CCNetBuildCondition"]); Assert.AreEqual(@"c:\workingdir\", info.EnvironmentVariables["CCNetWorkingDirectory"]); Assert.AreEqual(@"c:\artifactdir\", info.EnvironmentVariables["CCNetArtifactDirectory"]); Verify(); }
public void ShouldSetOutputAndIntegrationStatusToFailedOnFailedBuild() { ProcessResult processResult = new ProcessResult(@"Documents\WindowsPowerShell\MyScript.ps1' is not recognized as a cmdlet", string.Empty, 1, false); CollectingConstraint constraint = new CollectingConstraint(); mockProcessExecutor.ExpectAndReturn("Execute", processResult, new object[] { constraint }); mytask.Executable = POWERSHELL_PATH; mytask.Script = "MyScript.ps1"; mytask.ConfiguredScriptsDirectory = @"D:\CruiseControl"; IIntegrationResult result = Integration("myProject", @"D:\CruiseControl", "myArtifactDirectory"); mytask.Run(result); ProcessInfo info = (ProcessInfo)constraint.Parameter; Assert.AreEqual(@"D:\CruiseControl", info.WorkingDirectory); Assert.AreEqual(IntegrationStatus.Failure, result.Status); CustomAssertion.AssertMatches(@"(\.|\n)*is not recognized as a cmdlet", result.TaskOutput); }
public void VerifyPowerShellProcessInfoBasic() { CollectingConstraint constraint = new CollectingConstraint(); ProcessResult processResult = new ProcessResult("output", "error", 0, false); mockProcessExecutor.ExpectAndReturn("Execute", processResult, new object[] { constraint }); mytask.Executable = POWERSHELL_PATH; mytask.Script = "MyScipt.ps1"; mytask.Run(IntegrationResult()); ProcessInfo info = (ProcessInfo)constraint.Parameter; Assert.AreEqual(POWERSHELL_PATH, info.FileName); Assert.AreEqual(PowerShellTask.DefaultBuildTimeOut * 1000, info.TimeOut); CustomAssertion.AssertContains(mytask.Script, info.Arguments); }
public void VerifyPowerShellProcessInfoWithScriptsDirectoryConfigured() { CollectingConstraint constraint = new CollectingConstraint(); ProcessResult processResult = new ProcessResult("output", "error", 0, false); mockProcessExecutor.ExpectAndReturn("Execute", processResult, new object[] { constraint }); mytask.Executable = POWERSHELL_PATH; mytask.Script = "MyScript.ps1"; mytask.ConfiguredScriptsDirectory = @"D:\CruiseControl"; mytask.Run(IntegrationResult()); ProcessInfo info = (ProcessInfo)constraint.Parameter; Assert.AreEqual(POWERSHELL_PATH, info.FileName); Assert.AreEqual(PowerShellTask.DefaultBuildTimeOut * 1000, info.TimeOut); CustomAssertion.AssertStartsWith(@"-nologo -NoProfile -NonInteractive -file ""D:\CruiseControl\MyScript.ps1""", info.Arguments); }
public void SilentAndQuietOptionShouldOnlyAddSilentArgument() { CollectingConstraint constraint = new CollectingConstraint(); mockProcessExecutor.ExpectAndReturn("Execute", SuccessfulProcessResult(), new object[] { constraint }); builder.Silent = true; builder.Quiet = true; builder.Run(result); ProcessInfo info = (ProcessInfo)constraint.Parameter; Assert.AreEqual("--silent", info.Arguments); }
public void ShouldRunWithMultipleTargetsSpecified() { CollectingConstraint constraint = new CollectingConstraint(); mockProcessExecutor.ExpectAndReturn("Execute", SuccessfulProcessResult(), new object[] { constraint }); builder.Targets = new string[] { "targeta", "targetb", "targetc" }; builder.Run(result); ProcessInfo info = (ProcessInfo)constraint.Parameter; Assert.AreEqual("targeta targetb targetc", info.Arguments); }
public void ShouldPassSpecifiedPropertiesAsProcessInfoArgumentsToProcessExecutor() { CollectingConstraint constraint = new CollectingConstraint(); mockProcessExecutor.ExpectAndReturn("Execute", SuccessfulProcessResult(), new object[] { constraint }); IntegrationResult integrationResult = (IntegrationResult)IntegrationResult(); integrationResult.ProjectName = "test"; integrationResult.Label = "1.0"; integrationResult.BuildCondition = BuildCondition.ForceBuild; integrationResult.WorkingDirectory = DefaultWorkingDirectory; integrationResult.ArtifactDirectory = DefaultWorkingDirectory; builder.Executable = "rake"; builder.BuildArgs = "myargs"; builder.BuildTimeoutSeconds = 222; builder.Run(integrationResult); ProcessInfo info = (ProcessInfo)constraint.Parameter; Assert.AreEqual("rake", info.FileName); Assert.AreEqual(222000, info.TimeOut); Assert.AreEqual("myargs", info.Arguments); Assert.AreEqual("1.0", info.EnvironmentVariables["CCNetLabel"]); Assert.AreEqual("ForceBuild", info.EnvironmentVariables["CCNetBuildCondition"]); Assert.AreEqual(DefaultWorkingDirectory, info.EnvironmentVariables["CCNetWorkingDirectory"]); Assert.AreEqual(DefaultWorkingDirectory, info.EnvironmentVariables["CCNetArtifactDirectory"]); }
public void ShouldSetOutputAndIntegrationStatusToFailedOnFailedBuild() { ProcessResult processResult = new ProcessResult(@"D:\dev\ccnet\ccnet\project\nosolution.sln could not be found and will not be loaded", string.Empty, 1, false); CollectingConstraint constraint = new CollectingConstraint(); mockProcessExecutor.ExpectAndReturn("Execute", processResult, new object[] {constraint}); task.Executable = DEVENV_PATH; task.SolutionFile = @"D:\dev\ccnet\ccnet\project\nosolution.sln"; task.Configuration = CONFIGURATION; IIntegrationResult result = Integration("myProject", "myWorkingDirectory", "myArtifactDirectory"); task.Run(result); ProcessInfo info = (ProcessInfo) constraint.Parameter; Assert.AreEqual("myWorkingDirectory", info.WorkingDirectory); Assert.AreEqual(IntegrationStatus.Failure, result.Status); AssertMatches(@"(\.|\n)*could not be found and will not be loaded", result.TaskOutput); }
public void VerifyDevenvProcessInfoWithProjectDefined() { CollectingConstraint constraint = new CollectingConstraint(); ProcessResult processResult = new ProcessResult("output", "error", 0, false); mockProcessExecutor.ExpectAndReturn("Execute", processResult, new object[] {constraint}); task.Executable = DEVENV_PATH; task.SolutionFile = "mySolution.sln"; task.Configuration = "\"Debug\""; task.Project = "myProject"; task.Run(IntegrationResult()); ProcessInfo info = (ProcessInfo) constraint.Parameter; Assert.AreEqual(DEVENV_PATH, info.FileName); Assert.AreEqual(DevenvTask.DEFAULT_BUILD_TIMEOUT*1000, info.TimeOut); AssertStartsWith("\"mySolution.sln\" /rebuild \"Debug\" /project \"myProject\"", info.Arguments); }