)]}'
{"swift/common/middleware/s3api/s3request.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"92a3f9503a45c9d549e995e41d6899f862f87a27","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        return chunk"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def close(self):"},{"line_number":139,"context_line":"        close_if_possible(self._input)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"class SigV4Mixin(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_15962696","line":139,"updated":"2019-03-19 18:54:54.000000000","message":"I like this guy!  His tests are awesome.","commit_id":"3a8f5dbf9c49fdf1cf2d0b7ba35b82f25f88e634"}],"test/unit/common/middleware/s3api/test_obj.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"92a3f9503a45c9d549e995e41d6899f862f87a27","unresolved":false,"context_lines":[{"line_number":519,"context_line":"        req.date \u003d datetime.now()"},{"line_number":520,"context_line":"        req.content_type \u003d \u0027text/plain\u0027"},{"line_number":521,"context_line":"        status, headers, body \u003d self.call_s3api(req)"},{"line_number":522,"context_line":"        self.assertEqual(status.split()[0], \u0027400\u0027)"},{"line_number":523,"context_line":"        print(body)"},{"line_number":524,"context_line":"        self.assertEqual(self._get_error_code(body), \u0027BadDigest\u0027)"},{"line_number":525,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_d5e41e3f","line":522,"updated":"2019-03-19 18:54:54.000000000","message":"WFM!\n\nwith changes reverted:\n\n\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\tFAIL: test_object_PUT_v4_bad_hash (test.unit.common.middleware.s3api.test_obj.TestS3ApiObj)\n\t----------------------------------------------------------------------\n\tTraceback (most recent call last):\n\t  File \"/home/vagrant/swift/test/unit/common/middleware/s3api/test_s3_acl.py\", line 78, in s3acl_decorator\n\t    call_func()\n\t  File \"/home/vagrant/swift/test/unit/common/middleware/s3api/test_s3_acl.py\", line 73, in call_func\n\t    raise exc_type(message)\n\tAssertionError: \n\t  File \"/home/vagrant/swift/test/unit/common/middleware/s3api/test_s3_acl.py\", line 63, in call_func\n\t    func(*args, **kwargs)\n\t  File \"/home/vagrant/swift/test/unit/common/middleware/s3api/test_obj.py\", line 522, in test_object_PUT_v4_bad_hash\n\t    self.assertEqual(status.split()[0], \u0027400\u0027)\n\t  File \"/usr/lib/python2.7/unittest/case.py\", line 513, in assertEqual\n\t    assertion_func(first, second, msg\u003dmsg)\n\t  File \"/usr/lib/python2.7/unittest/case.py\", line 506, in _baseAssertEqual\n\t    raise self.failureException(msg)\n\n\tAssertionError:\n\t\u0027200\u0027 !\u003d \u0027400\u0027","commit_id":"3a8f5dbf9c49fdf1cf2d0b7ba35b82f25f88e634"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"92a3f9503a45c9d549e995e41d6899f862f87a27","unresolved":false,"context_lines":[{"line_number":520,"context_line":"        req.content_type \u003d \u0027text/plain\u0027"},{"line_number":521,"context_line":"        status, headers, body \u003d self.call_s3api(req)"},{"line_number":522,"context_line":"        self.assertEqual(status.split()[0], \u0027400\u0027)"},{"line_number":523,"context_line":"        print(body)"},{"line_number":524,"context_line":"        self.assertEqual(self._get_error_code(body), \u0027BadDigest\u0027)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"    def test_object_PUT_headers(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_95d0d655","line":523,"updated":"2019-03-19 18:54:54.000000000","message":"did you want to remove this print?  I think it\u0027s fine.","commit_id":"3a8f5dbf9c49fdf1cf2d0b7ba35b82f25f88e634"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fdade64c37e55947e07542ce9d50ef05e0bbbf3c","unresolved":false,"context_lines":[{"line_number":520,"context_line":"        req.content_type \u003d \u0027text/plain\u0027"},{"line_number":521,"context_line":"        status, headers, body \u003d self.call_s3api(req)"},{"line_number":522,"context_line":"        self.assertEqual(status.split()[0], \u0027400\u0027)"},{"line_number":523,"context_line":"        print(body)"},{"line_number":524,"context_line":"        self.assertEqual(self._get_error_code(body), \u0027BadDigest\u0027)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"    def test_object_PUT_headers(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_e7bbabc1","line":523,"in_reply_to":"5fc1f717_95d0d655","updated":"2019-03-19 21:43:15.000000000","message":"I did; oops.","commit_id":"3a8f5dbf9c49fdf1cf2d0b7ba35b82f25f88e634"}],"test/unit/common/middleware/s3api/test_s3request.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"92a3f9503a45c9d549e995e41d6899f862f87a27","unresolved":false,"context_lines":[{"line_number":859,"context_line":"    def test_bad_hash(self):"},{"line_number":860,"context_line":"        raw \u003d b\u0027123456789\u0027"},{"line_number":861,"context_line":"        wrapped \u003d HashingInput(BytesIO(raw), 9, hashlib.sha256,"},{"line_number":862,"context_line":"                               hashlib.md5(raw).hexdigest())"},{"line_number":863,"context_line":"        self.assertEqual(b\u00271234\u0027, wrapped.read(4))"},{"line_number":864,"context_line":"        self.assertEqual(b\u00275678\u0027, wrapped.read(4))"},{"line_number":865,"context_line":"        with self.assertRaises(swob.Response) as raised:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_f5b35a4c","line":862,"updated":"2019-03-19 18:54:54.000000000","message":"the sha256 vs md5 was a little subtle for me","commit_id":"3a8f5dbf9c49fdf1cf2d0b7ba35b82f25f88e634"}]}
