1dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# Copyright (C) 2010 Google Inc. All rights reserved.
2dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#
3dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# Redistribution and use in source and binary forms, with or without
4dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# modification, are permitted provided that the following conditions are
5dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# met:
6dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#
7dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#    * Redistributions of source code must retain the above copyright
8dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# notice, this list of conditions and the following disclaimer.
9dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#    * Redistributions in binary form must reproduce the above
10dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# copyright notice, this list of conditions and the following disclaimer
11dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# in the documentation and/or other materials provided with the
12dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# distribution.
13dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#    * Neither the name of Google Inc. nor the names of its
14dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# contributors may be used to endorse or promote products derived from
15dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# this software without specific prior written permission.
16dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#
17dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
29dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockimport os
30dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockimport unittest
31dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
32dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockfrom webkitpy.common.net.buildbot import Builder
33dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockfrom webkitpy.common.system.outputcapture import OutputCapture
34dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockfrom webkitpy.thirdparty.mock import Mock
35dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockfrom webkitpy.tool.bot.sheriff import Sheriff
366c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenfrom webkitpy.tool.mocktool import MockTool
37dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
38dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
39dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass MockSheriffBot(object):
40dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    name = "mock-sheriff-bot"
41dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    watchers = [
42dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        "watcher@example.com",
43dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    ]
44dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
45dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    def run_webkit_patch(self, args):
46dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        return "Created bug https://bugs.webkit.org/show_bug.cgi?id=36936\n"
47dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
48dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
49dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass SheriffTest(unittest.TestCase):
50dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    def test_post_blame_comment_on_bug(self):
51dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        def run():
52dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block            sheriff = Sheriff(MockTool(), MockSheriffBot())
53dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block            builders = [
54dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block                Builder("Foo", None),
55dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block                Builder("Bar", None),
56dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block            ]
57dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block            commit_info = Mock()
58dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block            commit_info.bug_id = lambda: None
59dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block            commit_info.revision = lambda: 4321
60dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block            # Should do nothing with no bug_id
61dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block            sheriff.post_blame_comment_on_bug(commit_info, builders, [])
62a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            sheriff.post_blame_comment_on_bug(commit_info, builders, ["mock-test-1", "mock-test-2"])
63dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block            # Should try to post a comment to the bug, but MockTool.bugs does nothing.
64dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block            commit_info.bug_id = lambda: 1234
65dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block            sheriff.post_blame_comment_on_bug(commit_info, builders, [])
66a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            sheriff.post_blame_comment_on_bug(commit_info, builders, ["mock-test-1"])
67a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            sheriff.post_blame_comment_on_bug(commit_info, builders, ["mock-test-1", "mock-test-2"])
68dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
69a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        expected_stderr = u"""MOCK bug comment: bug_id=1234, cc=['watcher@example.com']
70a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch--- Begin comment ---
71a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochhttp://trac.webkit.org/changeset/4321 might have broken Foo and Bar
72a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch--- End comment ---
73dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
74a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochMOCK bug comment: bug_id=1234, cc=['watcher@example.com']
75a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch--- Begin comment ---
76a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochhttp://trac.webkit.org/changeset/4321 might have broken Foo and Bar
77a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochThe following tests are not passing:
78a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochmock-test-1
79a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch--- End comment ---
80dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
81a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochMOCK bug comment: bug_id=1234, cc=['watcher@example.com']
82a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch--- Begin comment ---
83a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochhttp://trac.webkit.org/changeset/4321 might have broken Foo and Bar
84a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochThe following tests are not passing:
85a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochmock-test-1
86a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochmock-test-2
87a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch--- End comment ---
88dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
89a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch"""
90a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        OutputCapture().assert_outputs(self, run, expected_stderr=expected_stderr)
91