def test_parse_event_mismatching_history_breaks_failed(self): bmail = b'Subject: Stage [my_pipeline/2/stage/1] \r\n is broken\r\n\r\n' previous_states = {'my_pipeline/stage': gocd.BuildStateFailure()} msg = gocd.Message(bmail, previous_states=previous_states) self.assertEqual(gocd.Event.BREAKS, msg['event']) self.assertEqual('my_pipeline', msg['pipeline']) self.assertEqual(previous_states['my_pipeline/stage'], gocd.BuildStateFailure())
def test_parse_event_mismatching_history_passed_fixed(self): bmail = b'Subject: Stage [my_pipeline/2/stage/1] \r\n passed\r\n\r\n' previous_states = {'my_pipeline/stage': gocd.BuildStateFailure()} msg = gocd.Message(bmail, previous_states=previous_states) self.assertEqual(gocd.Event.FIXED, msg['event']) self.assertEqual('my_pipeline', msg['pipeline']) self.assertEqual(previous_states['my_pipeline/stage'], gocd.BuildStateSuccess())
def test_get_state_from_lastBuildStatus_failure(self): self.assertEqual(gocd.build_state_factory(last_build_status='Failure'), gocd.BuildStateFailure())
def test_get_state_from_event_breaks(self): self.assertEqual(gocd.build_state_factory(event=gocd.Event.BREAKS), gocd.BuildStateFailure())
def test_get_state_from_event_fails(self): self.assertEqual(gocd.build_state_factory(event=gocd.Event.FAILS), gocd.BuildStateFailure())
def test_unknown_to_red(self): self.assertEqual( gocd.BuildStateFailure().after(gocd.BuildStateUnknown()), gocd.Event.BREAKS)
def test_red_to_red(self): self.assertEqual( gocd.BuildStateFailure().after(gocd.BuildStateFailure()), gocd.Event.FAILS)
def test_green_to_red(self): self.assertEqual( gocd.BuildStateFailure().after(gocd.BuildStateSuccess()), gocd.Event.BREAKS)
def test_red_to_green(self): self.assertEqual( gocd.BuildStateSuccess().after(gocd.BuildStateFailure()), gocd.Event.FIXED)
def test_parse_cctray(self): xml = """<?xml version="1.0" encoding="utf-8"?> <Projects> <Project name="p1 :: build" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="22" lastBuildTime="2017-05-29T13:27:55" webUrl="http://go.pagero.local/go/pipelines/p1/22/build/1" /> <Project name="p1 :: build :: defaultJob" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="22" lastBuildTime="2017-05-29T13:27:55" webUrl="http://go.pagero.local/go/tab/build/detail/p1/22/build/1/defaultJob" /> <Project name="p2 :: build" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="6" lastBuildTime="2017-05-24T10:11:07" webUrl="http://go.pagero.local/go/pipelines/p2/6/build/1" /> <Project name="p2 :: build :: defaultJob" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="6" lastBuildTime="2017-05-24T10:11:07" webUrl="http://go.pagero.local/go/tab/build/detail/p2/6/build/1/defaultJob" /> <Project name="p2 :: test" activity="Sleeping" lastBuildStatus="Failure" lastBuildLabel="6" lastBuildTime="2017-05-24T10:20:57" webUrl="http://go.pagero.local/go/pipelines/p2/6/test/1" /> <Project name="p2 :: test :: EJB_Integration_Tests" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="6" lastBuildTime="2017-05-24T10:20:57" webUrl="http://go.pagero.local/go/tab/build/detail/p2/6/test/1/EJB_Integration_Tests" /> <Project name="p2 :: test :: REST-API_Integration_tests" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="6" lastBuildTime="2017-05-24T10:16:16" webUrl="http://go.pagero.local/go/tab/build/detail/p2/6/test/1/REST-API_Integration_tests" /> </Projects>""" mgr = gocd.Manager({}) mgr.parse_cctray(Et.fromstring(xml)) self.assertEqual(mgr.previous_pipeline_state['p1/build'], gocd.BuildStateSuccess()) self.assertEqual(mgr.previous_pipeline_state['p2/build'], gocd.BuildStateSuccess()) self.assertEqual(mgr.previous_pipeline_state['p2/test'], gocd.BuildStateFailure())