)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"0f9c3798a8855d461554089bf6087ea0198553dd","unresolved":false,"context_lines":[{"line_number":11,"context_line":" will solve it."},{"line_number":12,"context_line":"Fixes: AttributeError: \u0027generator\u0027 object has no"},{"line_number":13,"context_line":"attribute \u0027next\u0027"},{"line_number":14,"context_line":"Python3 it is __next__()"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ib2cbdfbbedb86f6e01239d2ee991677727b0548b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a6eadb0_2b5a1f84","line":14,"updated":"2016-12-12 22:18:06.000000000","message":"Is the test_manager the only place in Swift we use file and next in this way.. Because the commit message makes me think it must be. \n\nThe commit message needs to be a little more scoped:\n\n  Py3: Make test_manager py3 compatable\n\n  Fixes: NameError: name \u0027file\u0027 is not defined\n  file() is removed in python3.x using open()\n  ...","commit_id":"de72485b21388a878f2e6121c87901059cf5d1eb"}],"test/unit/common/test_manager.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4be3569e807bfdd2df3dd8295a6d14a69f5ce395","unresolved":false,"context_lines":[{"line_number":614,"context_line":"            if six.PY3:"},{"line_number":615,"context_line":"                self.assertRaises(StopIteration, iter.__next__)"},{"line_number":616,"context_line":"            else:"},{"line_number":617,"context_line":"                self.assertRaises(StopIteration, iter.next)"},{"line_number":618,"context_line":"            # test invalid value in pid file"},{"line_number":619,"context_line":"            server \u003d manager.Server(\u0027auth\u0027, run_dir\u003dt)"},{"line_number":620,"context_line":"            pid_file, pid \u003d next(server.iter_pid_files())"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_d891169b","line":617,"updated":"2016-09-06 21:39:28.000000000","message":"Would it be better to just say\n\n self.assertRaises(StopIteration, next, iter)\n\n? Ditto below.\n\n(Note to self: we should stop shadowing the built-in iter.)","commit_id":"acee001341235ec6103e5fc49f9d003d3130d00b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4be3569e807bfdd2df3dd8295a6d14a69f5ce395","unresolved":false,"context_lines":[{"line_number":1138,"context_line":"                    proc \u003d server.procs[2]"},{"line_number":1139,"context_line":"                    # assert stdout is /dev/null"},{"line_number":1140,"context_line":"                    if six.PY3:"},{"line_number":1141,"context_line":"                        f \u003d open(\u0027/dev/null\u0027, \u0027wb+\u0027)"},{"line_number":1142,"context_line":"                        self.assertTrue(isinstance(proc.stdout, type(f)))"},{"line_number":1143,"context_line":"                    else:"},{"line_number":1144,"context_line":"                        self.assertTrue(isinstance(proc.stdout, file))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_f81c1ac3","line":1141,"updated":"2016-09-06 21:39:28.000000000","message":"Shouldn\u0027t we close this at some point?","commit_id":"acee001341235ec6103e5fc49f9d003d3130d00b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4be3569e807bfdd2df3dd8295a6d14a69f5ce395","unresolved":false,"context_lines":[{"line_number":1139,"context_line":"                    # assert stdout is /dev/null"},{"line_number":1140,"context_line":"                    if six.PY3:"},{"line_number":1141,"context_line":"                        f \u003d open(\u0027/dev/null\u0027, \u0027wb+\u0027)"},{"line_number":1142,"context_line":"                        self.assertTrue(isinstance(proc.stdout, type(f)))"},{"line_number":1143,"context_line":"                    else:"},{"line_number":1144,"context_line":"                        self.assertTrue(isinstance(proc.stdout, file))"},{"line_number":1145,"context_line":"                    self.assertEqual(proc.stdout.name, os.devnull)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_58b186e0","line":1142,"updated":"2016-09-06 21:39:28.000000000","message":"We could use this assertion on py2 as well, right?","commit_id":"acee001341235ec6103e5fc49f9d003d3130d00b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4be3569e807bfdd2df3dd8295a6d14a69f5ce395","unresolved":false,"context_lines":[{"line_number":1146,"context_line":"                    if six.PY3:"},{"line_number":1147,"context_line":"                        self.assertEqual(proc.stdout.mode, \u0027rb+\u0027)"},{"line_number":1148,"context_line":"                    else:"},{"line_number":1149,"context_line":"                        self.assertEqual(proc.stdout.mode, \u0027w+b\u0027)"},{"line_number":1150,"context_line":"                    self.assertEqual(proc.stderr, proc.stdout)"},{"line_number":1151,"context_line":"                    # test not daemon over-rides wait"},{"line_number":1152,"context_line":"                    server.spawn(conf4, wait\u003dFalse, daemon\u003dFalse, once\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_589a6664","line":1149,"updated":"2016-09-06 21:39:28.000000000","message":"Huh. So what does it mean to truncate stdout?\n\nCome to think of it, how much do we care about the specific mode? Would it be better to have something like\n\n self.assertIn(\u0027b\u0027, proc.stdout.mode)\n self.assertTrue(any(x in proc.stdout.mode for x in \u0027wa+\u0027),\n                 \u0027mode must be writable, not %r\u0027 % proc.stdout.mode)\n\n?","commit_id":"acee001341235ec6103e5fc49f9d003d3130d00b"}]}
