コード例 #1
0
        public void Integration_Execute_Should_GetOriginalBreakerForSubseqFailedBuild()
        {
            string keeperFileName = @"c:\build\tools.buildkeeper.state.xml";
            string requestorEmail = "*****@*****.**";
            string requestorDisplayName = "Stanislav Dvoychenko";
            string dateFormat = "dd-MMM-yyyTHH:mm:ss";

            // First lets have a good build
            BuildGateKeeper keeper = new BuildGateKeeper
            {
                BuildStatus = "Success",
                RequestorDisplayName = requestorDisplayName,
                RequestorMailAddress = requestorEmail,
                DateFormat = dateFormat,
                StateFilePath = keeperFileName
            };
            keeper.Execute();

            // Second, lets have a failed build
            requestorDisplayName = "Stanislav TheBad";
            requestorEmail = "*****@*****.**";
            keeper = new BuildGateKeeper
            {
                BuildStatus = "Failure",
                RequestorDisplayName = requestorDisplayName,
                RequestorMailAddress = requestorEmail,
                DateFormat = dateFormat,
                StateFilePath = keeperFileName
            };
            keeper.Execute();
            // Third, lets have a failed build again
            requestorDisplayName = "Stanislav Undetermined";
            requestorEmail = "*****@*****.**";
            keeper = new BuildGateKeeper
            {
                BuildStatus = "Failure",
                RequestorDisplayName = requestorDisplayName,
                RequestorMailAddress = requestorEmail,
                DateFormat = dateFormat,
                StateFilePath = keeperFileName
            };
            keeper.Execute();

            Assert.AreEqual("*****@*****.**", keeper.BreakerMailAddress);
            Assert.AreEqual("Stanislav TheBad", keeper.BreakerDisplayName);
        }
コード例 #2
0
        private void UnitTestHelper(string status, Action<IStatePersistor, string> expectationSetup,
            Action<BuildGateKeeper> validateKeeper)
        {
            // Set values.
            string keeperFileName = @"c:\build\tools.buildkeeper.state.xml";
            string requestorEmail = "*****@*****.**";
            string requestorDisplayName = "Stanislav Dvoychenko";
            DateTime expectedTimeStamp = DateTime.Now;
            string dateFormat = "dd-MMM-yyyTHH:mm:ss";
            string expectedRecord = String.Format("{0};{1};{2};{3}",
                expectedTimeStamp.ToString(dateFormat), requestorDisplayName, requestorEmail, status);
            // Create date provider and state provider stubs/mocks
            MockRepository mocks = new MockRepository();

            IDateProvider dateProvider = mocks.Stub<IDateProvider>();
            IStatePersistor statePersistor = mocks.DynamicMock<IStatePersistor>();
            // Set up stubbed/mocked methods
            dateProvider.Stub<IDateProvider>((p) => p.GetTimeStamp()).Return(expectedTimeStamp);

            using (mocks.Record())
            {
                expectationSetup(statePersistor, expectedRecord);
            }

            // Create task instance
            BuildGateKeeper keeper = new BuildGateKeeper();
            // Setup properties.
            keeper.BuildStatus = status;
            keeper.StateFilePath = keeperFileName;
            keeper.RequestorMailAddress = requestorEmail;
            keeper.RequestorDisplayName = requestorDisplayName;
            // Assert input properties are set alright.
            Assert.AreEqual(keeperFileName, keeper.StateFilePath);
            Assert.AreEqual(status, keeper.BuildStatus);
            // Prepare a string builder to hold the keeper output
            StringBuilder sb = new StringBuilder();

            using (StringWriter writer = new StringWriter(sb))
            {
                using (mocks.Playback())
                {

                    keeper.StatePersistor = statePersistor;
                    keeper.DateProvider = dateProvider;

                    keeper.Execute();
                }
            }

            validateKeeper(keeper);
        }