)]}'
{"swift/obj/auditor.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"45afa4574cb4f840675801e5f66114f09919fb2c","unresolved":false,"context_lines":[{"line_number":265,"context_line":"            self.logger.error(_(\u0027ERROR Object %(obj)s failed audit and was\u0027"},{"line_number":266,"context_line":"                                \u0027 quarantined: %(err)s\u0027),"},{"line_number":267,"context_line":"                              {\u0027obj\u0027: location, \u0027err\u0027: err})"},{"line_number":268,"context_line":"        except DiskFileExpired:"},{"line_number":269,"context_line":"            pass  # ignore expired objects"},{"line_number":270,"context_line":"        except DiskFileDeleted:"},{"line_number":271,"context_line":"            # If there is a reclaimable tombstone, we\u0027ll invalidate the hash"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5da102_67a635af","line":268,"updated":"2016-11-03 16:58:07.000000000","message":"yes exactly what i was thinking of when I was reading the bug report","commit_id":"a4d77d918d99dfa8a1e7f1b0561769a17ba64932"}],"test/unit/obj/test_auditor.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"45afa4574cb4f840675801e5f66114f09919fb2c","unresolved":false,"context_lines":[{"line_number":909,"context_line":"        write_diskfile(self.disk_file, Timestamp(now - 20),"},{"line_number":910,"context_line":"                       extra_metadata\u003d{\u0027X-Delete-At\u0027: now - 10})"},{"line_number":911,"context_line":"        files \u003d os.listdir(self.disk_file._datadir)"},{"line_number":912,"context_line":"        self.assertTrue([f for f in files if f.endswith(\u0027.data\u0027)])  # sanity"},{"line_number":913,"context_line":"        with mock.patch.object(auditor, \u0027dump_recon_cache\u0027):"},{"line_number":914,"context_line":"            audit.run_audit(mode\u003d\u0027once\u0027, zero_byte_fps\u003dzero_byte_fps)"},{"line_number":915,"context_line":"        self.assertTrue(os.path.exists(self.disk_file._datadir))"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5da102_8787c9b3","line":912,"updated":"2016-11-03 16:58:07.000000000","message":"I think this would be a much stronger assertion:\n\n    diff --git a/test/unit/obj/test_auditor.py b/test/unit/obj/test_auditor.py\n    index 3924d22..e7f8f49 100644\n    --- a/test/unit/obj/test_auditor.py\n    +++ b/test/unit/obj/test_auditor.py\n    @@ -909,7 +909,7 @@ class TestAuditor(unittest.TestCase):\n             write_diskfile(self.disk_file, Timestamp(now - 20),\n                            extra_metadata\u003d{\u0027X-Delete-At\u0027: now - 10})\n             files \u003d os.listdir(self.disk_file._datadir)\n    -        self.assertTrue([f for f in files if f.endswith(\u0027.data\u0027)])  # sanity\n    +        self.assertTrue(all(f.endswith(\u0027.data\u0027) for f in files))  # sanity\n             with mock.patch.object(auditor, \u0027dump_recon_cache\u0027):\n                 audit.run_audit(mode\u003d\u0027once\u0027, zero_byte_fps\u003dzero_byte_fps)\n             self.assertTrue(os.path.exists(self.disk_file._datadir))","commit_id":"a4d77d918d99dfa8a1e7f1b0561769a17ba64932"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"45afa4574cb4f840675801e5f66114f09919fb2c","unresolved":false,"context_lines":[{"line_number":916,"context_line":"        part_dir \u003d dirname(dirname(self.disk_file._datadir))"},{"line_number":917,"context_line":"        self.assertFalse(os.path.exists("},{"line_number":918,"context_line":"            os.path.join(part_dir, HASH_INVALIDATIONS_FILE)))"},{"line_number":919,"context_line":"        self.assertEqual(files, os.listdir(self.disk_file._datadir))"},{"line_number":920,"context_line":"        self.assertFalse(audit.logger.get_lines_for_level(\u0027error\u0027))"},{"line_number":921,"context_line":"        self.assertFalse(audit.logger.get_lines_for_level(\u0027warning\u0027))"},{"line_number":922,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5da102_47b85175","line":919,"updated":"2016-11-03 16:58:07.000000000","message":"This is the most significiant assertion here","commit_id":"a4d77d918d99dfa8a1e7f1b0561769a17ba64932"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"45afa4574cb4f840675801e5f66114f09919fb2c","unresolved":false,"context_lines":[{"line_number":917,"context_line":"        self.assertFalse(os.path.exists("},{"line_number":918,"context_line":"            os.path.join(part_dir, HASH_INVALIDATIONS_FILE)))"},{"line_number":919,"context_line":"        self.assertEqual(files, os.listdir(self.disk_file._datadir))"},{"line_number":920,"context_line":"        self.assertFalse(audit.logger.get_lines_for_level(\u0027error\u0027))"},{"line_number":921,"context_line":"        self.assertFalse(audit.logger.get_lines_for_level(\u0027warning\u0027))"},{"line_number":922,"context_line":""},{"line_number":923,"context_line":"    def test_expired_object_is_ignored(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5da102_677ab5be","line":920,"updated":"2016-11-03 16:58:07.000000000","message":"and this is the one that fails with the old code","commit_id":"a4d77d918d99dfa8a1e7f1b0561769a17ba64932"}]}
