)]}'
{"swift/obj/updater.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"af665b884ef392bac2f7e390cbb0c035196e168a","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                          \u0027, %(fail)s failures\u0027),"},{"line_number":106,"context_line":"                        {\u0027device\u0027: device, \u0027elapsed\u0027: elapsed,"},{"line_number":107,"context_line":"                         \u0027success\u0027: self.successes,"},{"line_number":108,"context_line":"                         \u0027fail\u0027: self.failures})"},{"line_number":109,"context_line":"                    sys.exit()"},{"line_number":110,"context_line":"            while pids:"},{"line_number":111,"context_line":"                pids.remove(os.wait()[0])"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_1aae00e8","line":108,"updated":"2014-11-19 15:52:41.000000000","message":"unnecessary change","commit_id":"e07e3fd1a2c8c2c02e41684875fda9aaf9d495d1"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"47bb691cf81a91bca8f75d4d4f5a19a708588ab2","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                          \u0027, %(fail)s failures\u0027),"},{"line_number":106,"context_line":"                        {\u0027device\u0027: device, \u0027elapsed\u0027: elapsed,"},{"line_number":107,"context_line":"                         \u0027success\u0027: self.successes,"},{"line_number":108,"context_line":"                         \u0027fail\u0027: self.failures})"},{"line_number":109,"context_line":"                    sys.exit()"},{"line_number":110,"context_line":"            while pids:"},{"line_number":111,"context_line":"                pids.remove(os.wait()[0])"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_86a8a5dc","line":108,"in_reply_to":"5a890539_1aae00e8","updated":"2014-11-20 19:55:05.000000000","message":"Done","commit_id":"e07e3fd1a2c8c2c02e41684875fda9aaf9d495d1"}],"test/unit/obj/test_updater.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"af665b884ef392bac2f7e390cbb0c035196e168a","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        }"},{"line_number":105,"context_line":"        daemon \u003d object_updater.ObjectUpdater(conf)"},{"line_number":106,"context_line":"        daemon.logger \u003d FakeLogger()"},{"line_number":107,"context_line":"        daemon._listdir(\u0027foo/bar\u0027)"},{"line_number":108,"context_line":"        log_lines \u003d daemon.logger.get_lines_for_level(\u0027error\u0027)"},{"line_number":109,"context_line":"        msg \u003d (\u0027ERROR: Unable to access foo/bar: permission_denied\u0027)"},{"line_number":110,"context_line":"        self.assertEqual(log_lines[0], msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_9a03d075","line":107,"updated":"2014-11-19 15:52:41.000000000","message":"for completeness:\n\n paths \u003d daemon._listdir(\u0027foo/bar\u0027)\n self.assertEqual([], paths)","commit_id":"e07e3fd1a2c8c2c02e41684875fda9aaf9d495d1"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"47bb691cf81a91bca8f75d4d4f5a19a708588ab2","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        }"},{"line_number":105,"context_line":"        daemon \u003d object_updater.ObjectUpdater(conf)"},{"line_number":106,"context_line":"        daemon.logger \u003d FakeLogger()"},{"line_number":107,"context_line":"        daemon._listdir(\u0027foo/bar\u0027)"},{"line_number":108,"context_line":"        log_lines \u003d daemon.logger.get_lines_for_level(\u0027error\u0027)"},{"line_number":109,"context_line":"        msg \u003d (\u0027ERROR: Unable to access foo/bar: permission_denied\u0027)"},{"line_number":110,"context_line":"        self.assertEqual(log_lines[0], msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_46d31d5f","line":107,"in_reply_to":"5a890539_9a03d075","updated":"2014-11-20 19:55:05.000000000","message":"Done","commit_id":"e07e3fd1a2c8c2c02e41684875fda9aaf9d495d1"},{"author":{"_account_id":13777,"name":"Nicolas Trangez","email":"ikke@nicolast.be","username":"nicolast"},"change_message_id":"5b3f22caecfca27d3d9a4399662d6c743e5388ae","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        msg \u003d (\u0027ERROR: Unable to access foo/bar: permission_denied\u0027)"},{"line_number":110,"context_line":"        self.assertEqual(log_lines[0], msg)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @mock.patch(\u0027os.listdir\u0027, return_value\u003d\u0027bar/\u0027)"},{"line_number":113,"context_line":"    def test_listdir_without_exception(self, mock_listdir):"},{"line_number":114,"context_line":"        # setup updater"},{"line_number":115,"context_line":"        conf \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_6467f04d","line":112,"updated":"2014-11-14 14:40:49.000000000","message":"This confuses me a bit. Isn\u0027t `os.listdir` supposed to return a list of strings? I\u0027m aware this doesn\u0027t really impact the actual test, but still.","commit_id":"e07e3fd1a2c8c2c02e41684875fda9aaf9d495d1"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"47bb691cf81a91bca8f75d4d4f5a19a708588ab2","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        msg \u003d (\u0027ERROR: Unable to access foo/bar: permission_denied\u0027)"},{"line_number":110,"context_line":"        self.assertEqual(log_lines[0], msg)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @mock.patch(\u0027os.listdir\u0027, return_value\u003d\u0027bar/\u0027)"},{"line_number":113,"context_line":"    def test_listdir_without_exception(self, mock_listdir):"},{"line_number":114,"context_line":"        # setup updater"},{"line_number":115,"context_line":"        conf \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_061595e4","line":112,"in_reply_to":"5a890539_6467f04d","updated":"2014-11-20 19:55:05.000000000","message":"Done","commit_id":"e07e3fd1a2c8c2c02e41684875fda9aaf9d495d1"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"8ca319cd55815e57bfa2c4c9507f955cd9b14262","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        msg \u003d (\u0027ERROR: Unable to access foo/bar: permission_denied\u0027)"},{"line_number":110,"context_line":"        self.assertEqual(log_lines[0], msg)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @mock.patch(\u0027os.listdir\u0027, return_value\u003d\u0027bar/\u0027)"},{"line_number":113,"context_line":"    def test_listdir_without_exception(self, mock_listdir):"},{"line_number":114,"context_line":"        # setup updater"},{"line_number":115,"context_line":"        conf \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_96b40e83","line":112,"in_reply_to":"5a890539_6467f04d","updated":"2014-11-14 17:09:22.000000000","message":"In this case it is a list of one.  :-)  I can make it an actual list if you prefer though.","commit_id":"e07e3fd1a2c8c2c02e41684875fda9aaf9d495d1"}]}
