)]}'
{"test/unit/common/middleware/crypto/test_decrypter.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8b1b4804a4d2e3e445a36e79efa0c89c4d99d379","unresolved":true,"context_lines":[{"line_number":1186,"context_line":"        self.assertEqual(2, len(actual_listing))"},{"line_number":1187,"context_line":"        self.assertEqual("},{"line_number":1188,"context_line":"            [\u0027\u003cunknown\u003e\u0027, \u0027\u003cunknown\u003e\u0027],"},{"line_number":1189,"context_line":"            [x[\u0027hash\u0027] for x in json.loads(resp.body)])"},{"line_number":1190,"context_line":"        error_lines \u003d self.decrypter.logger.get_lines_for_level(\u0027error\u0027)"},{"line_number":1191,"context_line":"        self.assertEqual(2, len(error_lines))"},{"line_number":1192,"context_line":"        self.assertIn(\"invalid continuation byte\", error_lines[0])"}],"source_content_type":"text/x-python","patch_set":1,"id":"67634be2_dd0254b3","line":1189,"range":{"start_line":1189,"start_character":32,"end_line":1189,"end_character":53},"updated":"2026-07-14 21:26:07.000000000","message":"We could switch this to `actual_listing`","commit_id":"e43ec808453bbe5530a24e91e301cdb59cf52822"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"39c359b9d26f101fac3d32172a1ed6acdce6574b","unresolved":true,"context_lines":[{"line_number":1186,"context_line":"        self.assertEqual(2, len(actual_listing))"},{"line_number":1187,"context_line":"        self.assertEqual("},{"line_number":1188,"context_line":"            [\u0027\u003cunknown\u003e\u0027, \u0027\u003cunknown\u003e\u0027],"},{"line_number":1189,"context_line":"            [x[\u0027hash\u0027] for x in json.loads(resp.body)])"},{"line_number":1190,"context_line":"        error_lines \u003d self.decrypter.logger.get_lines_for_level(\u0027error\u0027)"},{"line_number":1191,"context_line":"        self.assertEqual(2, len(error_lines))"},{"line_number":1192,"context_line":"        self.assertIn(\"invalid continuation byte\", error_lines[0])"}],"source_content_type":"text/x-python","patch_set":1,"id":"f94da4a8_23bd9f3d","line":1189,"range":{"start_line":1189,"start_character":32,"end_line":1189,"end_character":53},"in_reply_to":"67634be2_dd0254b3","updated":"2026-07-15 09:13:08.000000000","message":"yep","commit_id":"e43ec808453bbe5530a24e91e301cdb59cf52822"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8b1b4804a4d2e3e445a36e79efa0c89c4d99d379","unresolved":true,"context_lines":[{"line_number":1191,"context_line":"        self.assertEqual(2, len(error_lines))"},{"line_number":1192,"context_line":"        self.assertIn(\"invalid continuation byte\", error_lines[0])"},{"line_number":1193,"context_line":"        self.assertIn(\"Error decrypting container listing for \""},{"line_number":1194,"context_line":"                      \"/v1/a/c//testfile1 with key {\u0027path\u0027: \u0027/a/c/testfile1\u0027}\","},{"line_number":1195,"context_line":"                      error_lines[0])"},{"line_number":1196,"context_line":"        self.assertIn(\"invalid continuation byte\", error_lines[1])"},{"line_number":1197,"context_line":"        self.assertIn(\"Error decrypting container listing for \""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a99a95c_88866343","line":1194,"range":{"start_line":1194,"start_character":30,"end_line":1194,"end_character":32},"updated":"2026-07-14 21:26:07.000000000","message":"Huh. Why the double slash? Oh, `{req.path_info}/{obj_dict[\u0027name\u0027]}`... oughta have an `rstrip(\u0027/\u0027)` in there.\n\n#willfix","commit_id":"e43ec808453bbe5530a24e91e301cdb59cf52822"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"39c359b9d26f101fac3d32172a1ed6acdce6574b","unresolved":true,"context_lines":[{"line_number":1191,"context_line":"        self.assertEqual(2, len(error_lines))"},{"line_number":1192,"context_line":"        self.assertIn(\"invalid continuation byte\", error_lines[0])"},{"line_number":1193,"context_line":"        self.assertIn(\"Error decrypting container listing for \""},{"line_number":1194,"context_line":"                      \"/v1/a/c//testfile1 with key {\u0027path\u0027: \u0027/a/c/testfile1\u0027}\","},{"line_number":1195,"context_line":"                      error_lines[0])"},{"line_number":1196,"context_line":"        self.assertIn(\"invalid continuation byte\", error_lines[1])"},{"line_number":1197,"context_line":"        self.assertIn(\"Error decrypting container listing for \""}],"source_content_type":"text/x-python","patch_set":1,"id":"f2d343af_7508475d","line":1194,"range":{"start_line":1194,"start_character":30,"end_line":1194,"end_character":32},"in_reply_to":"9a99a95c_88866343","updated":"2026-07-15 09:13:08.000000000","message":"ooh, I hadn\u0027t noticed that!","commit_id":"e43ec808453bbe5530a24e91e301cdb59cf52822"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8b1b4804a4d2e3e445a36e79efa0c89c4d99d379","unresolved":true,"context_lines":[{"line_number":1196,"context_line":"        self.assertIn(\"invalid continuation byte\", error_lines[1])"},{"line_number":1197,"context_line":"        self.assertIn(\"Error decrypting container listing for \""},{"line_number":1198,"context_line":"                      \"/v1/a/c//testfile2 with key {\u0027path\u0027: \u0027/a/c/testfile2\u0027}\","},{"line_number":1199,"context_line":"                      error_lines[1])"},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"    def test_cont_get_json_req_with_unknown_secret_id(self):"},{"line_number":1202,"context_line":"        bad_crypto_meta \u003d fake_get_crypto_meta()"}],"source_content_type":"text/x-python","patch_set":1,"id":"983fa1ac_405281fc","line":1199,"updated":"2026-07-14 21:26:07.000000000","message":"WDYT about reducing the duplication with something like\n```\n        for error_line, item in zip(error_lines, actual_listing):\n            self.assertIn(\"invalid continuation byte\", error_line)\n            self.assertIn(\n                \"Error decrypting container listing for /v1/a/c/{0} \"\n                \"with key {{\u0027path\u0027: \u0027/a/c/{0}\u0027}}\".format(item[\u0027name\u0027]),\n                error_line)\n```\n?","commit_id":"e43ec808453bbe5530a24e91e301cdb59cf52822"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"39c359b9d26f101fac3d32172a1ed6acdce6574b","unresolved":true,"context_lines":[{"line_number":1196,"context_line":"        self.assertIn(\"invalid continuation byte\", error_lines[1])"},{"line_number":1197,"context_line":"        self.assertIn(\"Error decrypting container listing for \""},{"line_number":1198,"context_line":"                      \"/v1/a/c//testfile2 with key {\u0027path\u0027: \u0027/a/c/testfile2\u0027}\","},{"line_number":1199,"context_line":"                      error_lines[1])"},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"    def test_cont_get_json_req_with_unknown_secret_id(self):"},{"line_number":1202,"context_line":"        bad_crypto_meta \u003d fake_get_crypto_meta()"}],"source_content_type":"text/x-python","patch_set":1,"id":"0283362f_722a4df5","line":1199,"in_reply_to":"983fa1ac_405281fc","updated":"2026-07-15 09:13:08.000000000","message":"yep","commit_id":"e43ec808453bbe5530a24e91e301cdb59cf52822"}]}
