Exemple #1
0
    def test_last_green_revision(self):
        buildbot = BuildBot()

        def mock_builds_from_builders():
            return self._fake_builds_at_index(0)

        # Revision, is_green
        # Ordered from newest (highest number) to oldest.
        fake_builder1 = Builder("Fake Builder 1", None)
        fake_builder1.revisions = [(1, True), (3, False), (5, True),
                                   (10, True), (12, False)]
        fake_builder2 = Builder("Fake Builder 2", None)
        fake_builder2.revisions = [(1, True), (3, False), (7, True), (9, True),
                                   (12, False)]
        some_builder = Builder("Some Builder", None)
        some_builder.revisions = [(1, True), (3, True), (7, True), (11, False),
                                  (12, True)]

        buildbot.builders = lambda: [
            fake_builder1, fake_builder2, some_builder
        ]
        buildbot._revisions_for_builder = lambda builder: builder.revisions
        buildbot._latest_builds_from_builders = mock_builds_from_builders
        self.assertEqual(
            buildbot.last_green_revision(''),
            "The last known green revision is 7\nFake Builder 1: 10\nFake Builder 2: 9\nSome Builder: 12\n"
        )

        some_builder.revisions = [(1, False), (3, False)]
        self.assertEqual(
            buildbot.last_green_revision(''),
            "Fake Builder 1: 10\nFake Builder 2: 9\nSome Builder has had no green revision in the last 2 runs\n"
        )
Exemple #2
0
 def test_rollout_reason(self):
     sheriff = Sheriff(MockTool(), MockSheriffBot())
     builders = [
         Builder("Foo", None),
         Builder("Bar", None),
     ]
     reason = "Caused builders Foo and Bar to fail."
     self.assertEquals(sheriff._rollout_reason(builders), reason)
Exemple #3
0
    def test_revisions_for_builder(self):
        buildbot = BuildBot()
        buildbot._fetch_builder_page = lambda builder: builder.page
        builder_with_success = Builder('Some builder', None)
        builder_with_success.page = self._fake_builder_page
        self.assertEqual(buildbot._revisions_for_builder(builder_with_success), [(104643, False), (104636, False), (104635, True), (104633, False)])

        builder_without_success = Builder('Some builder', None)
        builder_without_success.page = self._fake_builder_page_without_success
        self.assertEqual(buildbot._revisions_for_builder(builder_without_success), [(104643, False), (104636, False), (104635, False), (104633, False)])
Exemple #4
0
 def test_post_blame_comment_on_bug(self):
     sheriff = Sheriff(MockTool(), MockSheriffBot())
     builders = [
         Builder("Foo", None),
         Builder("Bar", None),
     ]
     commit_info = Mock()
     commit_info.bug_id = lambda: None
     commit_info.revision = lambda: 4321
     commit_info.committer = lambda: None
     commit_info.committer_email = lambda: "*****@*****.**"
     commit_info.reviewer = lambda: None
     commit_info.author = lambda: None
     sheriff.post_automatic_rollout_patch(commit_info, builders)
Exemple #5
0
 def test_layout_test_results(self):
     buildbot = BuildBot()
     builder = Builder(u"Foo Builder (test)", buildbot)
     builder._fetch_file_from_results = lambda results_url, file_name: None
     build = Build(builder, None, None, None)
     # Test that layout_test_results() returns None if the fetch fails.
     self.assertEqual(build.layout_test_results(), None)
Exemple #6
0
 def run():
     sheriff = Sheriff(MockTool(), MockSheriffBot())
     builders = [
         Builder("Foo", None),
         Builder("Bar", None),
     ]
     commit_info = Mock()
     commit_info.bug_id = lambda: None
     commit_info.revision = lambda: 4321
     # Should do nothing with no bug_id
     sheriff.post_blame_comment_on_bug(commit_info, builders, [])
     sheriff.post_blame_comment_on_bug(commit_info, builders, ["mock-test-1", "mock-test-2"])
     # Should try to post a comment to the bug, but MockTool.bugs does nothing.
     commit_info.bug_id = lambda: 1234
     sheriff.post_blame_comment_on_bug(commit_info, builders, [])
     sheriff.post_blame_comment_on_bug(commit_info, builders, ["mock-test-1"])
     sheriff.post_blame_comment_on_bug(commit_info, builders, ["mock-test-1", "mock-test-2"])
    def setUp(self):
        self.buildbot = BuildBot()
        self.builder = Builder(u"Test Builder \u2661", self.buildbot)

        def _mock_fetch_build(build_number):
            build = Build(builder=self.builder,
                          build_number=build_number,
                          revision=build_number + 1000,
                          is_green=build_number < 4)
            return build

        self.builder._fetch_build = _mock_fetch_build
Exemple #8
0
    def test_fetch_build(self):
        buildbot = BuildBot()
        builder = Builder(u"Test Builder \u2661", buildbot)

        def mock_fetch_build_dictionary(self, build_number):
            build_dictionary = {
                "sourceStamp": {
                    "revision": None,  # revision=None means a trunk build started from the force-build button on the builder page.
                    },
                "number": int(build_number),
                # Intentionally missing the 'results' key, meaning it's a "pass" build.
            }
            return build_dictionary
        buildbot._fetch_build_dictionary = mock_fetch_build_dictionary
        self.assertNotEqual(builder._fetch_build(1), None)
Exemple #9
0
 def setUp(self):
     self.buildbot = BuildBot()
     self.builder = Builder(u"Test Builder \u2661", self.buildbot)
     self._install_fetch_build(lambda build_number: ["test1", "test2"])
Exemple #10
0
 def test_latest_cached_build(self):
     b = Builder('builder', BuildBot())
     b._fetch_build = self._fetch_build
     b._fetch_revision_to_build_map = self._fetch_revision_to_build_map
     self.assertEqual("correct build", b.latest_cached_build())
 def test_results(self):
     builder = Builder('builder', BuildBot())
     b = Build(builder, 123, 123, True)
     self.assertTrue(b.results())