Changeset 52239 in webkit


Ignore:
Timestamp:
Dec 16, 2009 11:40:27 PM (14 years ago)
Author:
abarth@webkit.org
Message:

2009-12-16 Eric Seidel <eric@webkit.org>

Reviewed by Adam Barth.

post-diff is failing with exception under guess_reviewer_from_bug
https://bugs.webkit.org/show_bug.cgi?id=32642

Also refactor output capturing code into
OutputCapture.assert_outputs to share more code between tests.

  • Scripts/modules/buildsteps.py:
    • Add the missing include.
    • Give guess_reviewer_from_bug a private underscore.
  • Scripts/modules/buildsteps_unittest.py: Added.
    • Test to make sure _guess_reviewer_from_bug works as expected.
  • Scripts/modules/commands/commandtest.py:
    • Custom code is now obsoleted by OutputCapture.assert_outputs
  • Scripts/modules/commands/queues_unittest.py:
    • ditto
  • Scripts/modules/credentials_unittest.py:
    • ditto
  • Scripts/modules/mock_bugzillatool.py:
    • fetch_reviewed_patches_from_bug can never return None
  • Scripts/modules/multicommandtool_unittest.py:
    • Custom code is now obsoleted by OutputCapture.assert_outputs
  • Scripts/modules/outputcapture.py:
    • Add assert_outputs to share more code between tests.
  • Scripts/run-webkit-unittests:
    • Add buildsteps_unittest.py
Location:
trunk/WebKitTools
Files:
9 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/WebKitTools/ChangeLog

    r52238 r52239  
     12009-12-16  Eric Seidel  <eric@webkit.org>
     2
     3        Reviewed by Adam Barth.
     4
     5        post-diff is failing with exception under guess_reviewer_from_bug
     6        https://bugs.webkit.org/show_bug.cgi?id=32642
     7
     8        Also refactor output capturing code into
     9        OutputCapture.assert_outputs to share more code between tests.
     10
     11        * Scripts/modules/buildsteps.py:
     12         - Add the missing include.
     13         - Give guess_reviewer_from_bug a private underscore.
     14        * Scripts/modules/buildsteps_unittest.py: Added.
     15         - Test to make sure _guess_reviewer_from_bug works as expected.
     16        * Scripts/modules/commands/commandtest.py:
     17         - Custom code is now obsoleted by OutputCapture.assert_outputs
     18        * Scripts/modules/commands/queues_unittest.py:
     19         - ditto
     20        * Scripts/modules/credentials_unittest.py:
     21         - ditto
     22        * Scripts/modules/mock_bugzillatool.py:
     23         - fetch_reviewed_patches_from_bug can never return None
     24        * Scripts/modules/multicommandtool_unittest.py:
     25         - Custom code is now obsoleted by OutputCapture.assert_outputs
     26        * Scripts/modules/outputcapture.py:
     27         - Add assert_outputs to share more code between tests.
     28        * Scripts/run-webkit-unittests:
     29         - Add buildsteps_unittest.py
     30
    1312009-12-16  Adam Barth  <abarth@webkit.org>
    232
  • trunk/WebKitTools/Scripts/modules/buildsteps.py

    r52133 r52239  
    3232
    3333from modules.comments import bug_comment_from_commit_text
     34from modules.grammar import pluralize
    3435from modules.logging import log, error
    3536from modules.webkitport import WebKitPort
     
    231232        ]
    232233
    233     def guess_reviewer_from_bug(self, bug_id):
     234    def _guess_reviewer_from_bug(self, bug_id):
    234235        patches = self._tool.bugs.fetch_reviewed_patches_from_bug(bug_id)
    235236        if len(patches) != 1:
     
    248249                log("No bug id provided and --reviewer= not provided.  Not updating ChangeLogs with reviewer.")
    249250                return
    250             reviewer = self.guess_reviewer_from_bug(bug_id)
     251            reviewer = self._guess_reviewer_from_bug(bug_id)
    251252
    252253        if not reviewer:
  • trunk/WebKitTools/Scripts/modules/buildsteps_unittest.py

    r52238 r52239  
    2929import unittest
    3030
    31 from modules.mock import Mock
     31from modules.buildsteps import UpdateChangelogsWithReviewerStep
    3232from modules.mock_bugzillatool import MockBugzillaTool
    3333from modules.outputcapture import OutputCapture
    3434
    35 class CommandsTest(unittest.TestCase):
    36     def assert_execute_outputs(self, command, args, expected_stdout="", expected_stderr="", options=Mock(), tool=MockBugzillaTool()):
     35class UpdateChangelogsWithReviewerStepTest(unittest.TestCase):
     36    def test_guess_reviewer_from_bug(self):
    3737        capture = OutputCapture()
    38         capture.capture_output()
    39         command.execute(options, args, tool)
    40         (stdout_string, stderr_string) = capture.restore_output()
    41         self.assertEqual(stdout_string, expected_stdout)
    42         self.assertEqual(stderr_string, expected_stderr)
     38        step = UpdateChangelogsWithReviewerStep(MockBugzillaTool(), [])
     39        expected_stderr = "0 reviewed patches on bug 1, cannot infer reviewer.\n"
     40        capture.assert_outputs(self, step._guess_reviewer_from_bug, [1], expected_stderr=expected_stderr)
  • trunk/WebKitTools/Scripts/modules/commands/commandtest.py

    r52025 r52239  
    3535class CommandsTest(unittest.TestCase):
    3636    def assert_execute_outputs(self, command, args, expected_stdout="", expected_stderr="", options=Mock(), tool=MockBugzillaTool()):
    37         capture = OutputCapture()
    38         capture.capture_output()
    39         command.execute(options, args, tool)
    40         (stdout_string, stderr_string) = capture.restore_output()
    41         self.assertEqual(stdout_string, expected_stdout)
    42         self.assertEqual(stderr_string, expected_stderr)
     37        OutputCapture().assert_outputs(self, command.execute, [options, args, tool], expected_stdout=expected_stdout, expected_stderr=expected_stderr)
  • trunk/WebKitTools/Scripts/modules/commands/queues_unittest.py

    r52145 r52239  
    4040
    4141class AbstractQueueTest(CommandsTest):
    42     def _assert_output(self, function, args, expected_stdout="", expected_stderr=""):
    43         capture = OutputCapture()
    44         capture.capture_output()
    45         function(*args)
    46         (stdout_string, stderr_string) = capture.restore_output()
    47         self.assertEqual(stdout_string, expected_stdout)
    48         self.assertEqual(stderr_string, expected_stderr)
    49 
    5042    def _assert_log_progress_output(self, patch_ids, progress_output):
    51         self._assert_output(TestQueue().log_progress, [patch_ids], expected_stderr=progress_output)
     43        OutputCapture().assert_outputs(self, TestQueue().log_progress, [patch_ids], expected_stderr=progress_output)
    5244
    5345    def test_log_progress(self):
  • trunk/WebKitTools/Scripts/modules/credentials_unittest.py

    r52135 r52239  
    7676        credentials = Credentials("example.com", executive=executive_mock)
    7777
    78         output = OutputCapture()
    79         output.capture_output()
    80         credentials._run_security_tool(username)
    81         (stdout_output, stderr_output) = output.restore_output()
    82         self.assertEqual(stdout_output, "")
    83         self.assertEqual(stderr_output, "Reading Keychain for example.com account and password.  Click \"Allow\" to continue...\n")
     78        expected_stderr = "Reading Keychain for example.com account and password.  Click \"Allow\" to continue...\n"
     79        OutputCapture().assert_outputs(self, credentials._run_security_tool, [username], expected_stderr=expected_stderr)
    8480
    8581        security_args = ["/usr/bin/security", "find-internet-password", "-g", "-s", "example.com"]
  • trunk/WebKitTools/Scripts/modules/mock_bugzillatool.py

    r52145 r52239  
    6767        if bug_id == 42:
    6868            return [self.patch1, self.patch2]
    69         return None
     69        return []
    7070
    7171    def fetch_attachments_from_bug(self, bug_id):
  • trunk/WebKitTools/Scripts/modules/multicommandtool_unittest.py

    r51403 r52239  
    6464    def test_required_arguments(self):
    6565        two_required_arguments = TrivialCommand(argument_names="ARG1 ARG2 [ARG3]")
    66         capture = OutputCapture()
    67         capture.capture_output()
    68         exit_code = two_required_arguments.check_arguments_and_execute(["foo"], TrivialTool())
    69         (stdout_string, stderr_string) = capture.restore_output()
    7066        expected_missing_args_error = "2 arguments required, 1 argument provided.  Provided: 'foo'  Required: ARG1 ARG2\nSee 'trivial-tool help trivial' for usage.\n"
     67        exit_code = OutputCapture().assert_outputs(self, two_required_arguments.check_arguments_and_execute, [["foo"], TrivialTool()], expected_stderr=expected_missing_args_error)
    7168        self.assertEqual(exit_code, 1)
    72         self.assertEqual(stdout_string, "")
    73         self.assertEqual(stderr_string, expected_missing_args_error)
    7469
    7570
     
    109104        self.assertEqual(tool.command_by_name("bar"), None)
    110105
    111     def _assert_tool_main_outputs(self, tool, main_args, expected_stdout, expected_stderr = "", exit_code=0):
    112         capture = OutputCapture()
    113         capture.capture_output()
    114         exit_code = tool.main(main_args)
    115         (stdout_string, stderr_string) = capture.restore_output()
    116         self.assertEqual(stdout_string, expected_stdout)
    117         self.assertEqual(expected_stderr, expected_stderr)
     106    def _assert_tool_main_outputs(self, tool, main_args, expected_stdout, expected_stderr = "", expected_exit_code=0):
     107        exit_code = OutputCapture().assert_outputs(self, tool.main, [main_args], expected_stdout=expected_stdout, expected_stderr=expected_stderr)
     108        self.assertEqual(exit_code, expected_exit_code)
    118109
    119110    def test_global_help(self):
  • trunk/WebKitTools/Scripts/modules/outputcapture.py

    r51381 r52239  
    5252    def restore_output(self):
    5353        return (self._restore_output_with_name("stdout"), self._restore_output_with_name("stderr"))
     54
     55    def assert_outputs(self, testcase, function, args=[], kwargs={}, expected_stdout="", expected_stderr=""):
     56        self.capture_output()
     57        return_value = function(*args, **kwargs)
     58        (stdout_string, stderr_string) = self.restore_output()
     59        testcase.assertEqual(stdout_string, expected_stdout)
     60        testcase.assertEqual(stderr_string, expected_stderr)
     61        # This is a little strange, but I don't know where else to return this information.
     62        return return_value
  • trunk/WebKitTools/Scripts/run-webkit-unittests

    r52232 r52239  
    3333from modules.bugzilla_unittest import *
    3434from modules.buildbot_unittest import *
     35from modules.buildsteps_unittest import *
    3536from modules.changelogs_unittest import *
    3637from modules.commands.download_unittest import *
Note: See TracChangeset for help on using the changeset viewer.