)]}'
{"run_tests.sh":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"4a96a254cbc0ae926f59e715688c1b0425c81b90","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    exit"},{"line_number":127,"context_line":"fi"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"if [ $coverage -eq 1 ] ; then"},{"line_number":130,"context_line":"    $testrargs \u003d \"--coverage $testrargs\""},{"line_number":131,"context_line":"fi"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-sh","patch_set":3,"id":"AAAAUH%2F%2FKY8%3D","line":129,"updated":"2014-01-16 20:36:44.000000000","message":"This is fixed by a patch in progress:\nhttps://review.openstack.org/#/c/66475/","commit_id":"48fd1337be95538dba21761b8fbbda871ae15818"}],"tempest/tests/base.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"5341a6a209ed3ae01907c66506ebb4f99cdf0f26","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        self.mox \u003d mox_fixture.mox"},{"line_number":41,"context_line":"        self.stubs \u003d mox_fixture.stubs"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def patch(self, target, **kwargs):"},{"line_number":44,"context_line":"        \"\"\""},{"line_number":45,"context_line":"        Returns a started `mock.patch` object for the supplied target."},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BtqM%3D","line":43,"updated":"2014-01-22 21:59:52.000000000","message":"I\u0027m curious is there a reason you added this method instead of using the Patch fixture from oslo.","commit_id":"8fe53924e487dcccaa7f52f2b5515d75ca828869"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c6240325e641508217c31ace2187a623e66c265f","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        self.mox \u003d mox_fixture.mox"},{"line_number":41,"context_line":"        self.stubs \u003d mox_fixture.stubs"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def patch(self, target, **kwargs):"},{"line_number":44,"context_line":"        \"\"\""},{"line_number":45,"context_line":"        Returns a started `mock.patch` object for the supplied target."},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2Bl%2Fs%3D","line":43,"in_reply_to":"AAAAUH%2F%2BtqM%3D","updated":"2014-01-24 01:57:36.000000000","message":"LOL, because I wasn\u0027t aware of it :)\n\nThat said, I\u0027ve just looked at it, and I actually like this better... it returns the mock directly. If you used mockpatch.Patch() instead, you\u0027d need to grab the mock by doing:\n\n patch_fixture \u003d mockpatch.Patch(target)\n mock \u003d patch_fixture.mock\n\nor:\n\n mock \u003d mockpatch.Patch(target).mock\n\nI prefer the simpler:\n\n mock \u003d self.patch(target)","commit_id":"8fe53924e487dcccaa7f52f2b5515d75ca828869"}],"tempest/tests/test_ssh.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"5341a6a209ed3ae01907c66506ebb4f99cdf0f26","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            1004  # LOG.error() calls time.time()"},{"line_number":120,"context_line":"        ]"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        with testtools.ExpectedException(exceptions.SSHTimeout):"},{"line_number":123,"context_line":"            client._get_ssh_connection()"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def test_exec_command(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2Btn8%3D","line":122,"updated":"2014-01-22 21:59:52.000000000","message":"Why not do an self.assertRaises here instead?","commit_id":"8fe53924e487dcccaa7f52f2b5515d75ca828869"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c6240325e641508217c31ace2187a623e66c265f","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            1004  # LOG.error() calls time.time()"},{"line_number":120,"context_line":"        ]"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        with testtools.ExpectedException(exceptions.SSHTimeout):"},{"line_number":123,"context_line":"            client._get_ssh_connection()"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def test_exec_command(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2Bl%2Fc%3D","line":122,"in_reply_to":"AAAAUH%2F%2Btn8%3D","updated":"2014-01-24 01:57:36.000000000","message":"Just preference...","commit_id":"8fe53924e487dcccaa7f52f2b5515d75ca828869"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"5341a6a209ed3ae01907c66506ebb4f99cdf0f26","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        client_mock \u003d mock.MagicMock()"},{"line_number":131,"context_line":"        tran_mock \u003d mock.MagicMock()"},{"line_number":132,"context_line":"        chan_mock \u003d mock.MagicMock()"},{"line_number":133,"context_line":"        poll_mock \u003d mock.MagicMock()"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        def reset_mocks():"},{"line_number":136,"context_line":"            gsc_mock.reset_mock()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2Btp8%3D","line":133,"updated":"2014-01-22 21:59:52.000000000","message":"So much mocking....","commit_id":"8fe53924e487dcccaa7f52f2b5515d75ca828869"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c6240325e641508217c31ace2187a623e66c265f","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        client_mock \u003d mock.MagicMock()"},{"line_number":131,"context_line":"        tran_mock \u003d mock.MagicMock()"},{"line_number":132,"context_line":"        chan_mock \u003d mock.MagicMock()"},{"line_number":133,"context_line":"        poll_mock \u003d mock.MagicMock()"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        def reset_mocks():"},{"line_number":136,"context_line":"            gsc_mock.reset_mock()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2Bl%2FM%3D","line":133,"in_reply_to":"AAAAUH%2F%2Btp8%3D","updated":"2014-01-24 01:57:36.000000000","message":"Well, when testing the interactions of the exec_command() method, you want to test specific conditions are met. And to test that, you need to assert various mocked methods and objects are called in the expected fashion...\n\nThe alternative would be to create a faked out paramiko, but that would make masking over issues very easy and hard to debug...","commit_id":"8fe53924e487dcccaa7f52f2b5515d75ca828869"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"5341a6a209ed3ae01907c66506ebb4f99cdf0f26","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        # Test for a timeout condition immediately raised"},{"line_number":154,"context_line":"        client \u003d ssh.Client(\u0027localhost\u0027, \u0027root\u0027, timeout\u003d2)"},{"line_number":155,"context_line":"        with testtools.ExpectedException(exceptions.TimeoutException):"},{"line_number":156,"context_line":"            client.exec_command(\"test\")"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        chan_mock.fileno.assert_called_once_with()"},{"line_number":159,"context_line":"        chan_mock.exec_command.assert_called_once_with(\"test\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2Btpo%3D","line":156,"updated":"2014-01-22 21:59:52.000000000","message":"Why not do an self.assertRaises here instead?","commit_id":"8fe53924e487dcccaa7f52f2b5515d75ca828869"}]}
