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 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 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"]);
        }
        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 TraceOptionShouldAddTraceArgument()
        {
            CollectingConstraint constraint = new CollectingConstraint();

            mockProcessExecutor.ExpectAndReturn("Execute", SuccessfulProcessResult(), new object[] { constraint });
            builder.Trace = true;
            builder.Run(result);
            ProcessInfo info = (ProcessInfo)constraint.Parameter;

            Assert.AreEqual("--trace", 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 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);
        }
Beispiel #8
0
        public void VerifyDevenvProcessInfo()
        {
            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.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\"", 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 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();
        }
Beispiel #11
0
        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 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);
        }