)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":18573,"name":"Petri Kemppainen","email":"petri.kemppainen@nokia.com","username":"petrkemp"},"change_message_id":"49dd63c22a15e9089ef1b161939f611b4e0a8164","unresolved":false,"context_lines":[{"line_number":11,"context_line":"The correct way is to use assertIsInstance(A, B) provided by testtools."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"[1] also points that prefer specific assertions like assert(Not)IsInstance,"},{"line_number":14,"context_line":"for they can raise more meaningful errors then generic ones."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[1] http://goo.gl/N491Eo"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa69d971_b640bf08","line":14,"range":{"start_line":14,"start_character":42,"end_line":14,"end_character":46},"updated":"2016-01-08 12:38:46.000000000","message":"than?","commit_id":"d5377f9b25753c50d4bf775d618828cd5c464538"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"2bee309ce72893cc4c3f51397cc28b31e704605a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"The correct way is to use assertIsInstance(A, B) provided by testtools."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"[1] also points that prefer specific assertions like assert(Not)IsInstance,"},{"line_number":14,"context_line":"for they can raise more meaningful errors then generic ones."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[1] http://goo.gl/N491Eo"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa69d971_68e33b06","line":14,"range":{"start_line":14,"start_character":42,"end_line":14,"end_character":46},"in_reply_to":"fa69d971_b640bf08","updated":"2016-01-08 16:26:25.000000000","message":"Done","commit_id":"d5377f9b25753c50d4bf775d618828cd5c464538"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"aac2f399d8ab4c23aa2390ff348c5ea7a557d636","unresolved":false,"context_lines":[{"line_number":13,"context_line":"[1] also points that prefer specific assertions like assert(Not)IsInstance,"},{"line_number":14,"context_line":"for they can raise more meaningful errors than generic ones."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[1] http://goo.gl/N491Eo"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I56278b1a74108e2765a8a740658f33954f5404c7"},{"line_number":19,"context_line":"Closes-bug: #1268480"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa69d971_601336b9","line":16,"updated":"2016-01-09 05:06:22.000000000","message":"maybe i\u0027m doing somethign wrong but when i click on this link i go to:\nhttp://docs.openstack.org/developer/neutron/devref/effective_neutron.html#scoping-your-patch-appropriately\n\nbut it seems like you really want:\nhttp://docs.openstack.org/developer/neutron/devref/effective_neutron.html#mocking-and-testing\n\nstill I don\u0027t think its a good idea to put a link external to gerrit in the commit message because eventually that page will change and the link won\u0027t make sense when reading in history.","commit_id":"04c0c927efe5a2a33514af839e6979008fc7e973"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"b4ea9db1f52dcb412a23eb6e41fb4c1cf67a6865","unresolved":false,"context_lines":[{"line_number":13,"context_line":"[1] also points that prefer specific assertions like assert(Not)IsInstance,"},{"line_number":14,"context_line":"for they can raise more meaningful errors than generic ones."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[1] http://goo.gl/N491Eo"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I56278b1a74108e2765a8a740658f33954f5404c7"},{"line_number":19,"context_line":"Closes-bug: #1268480"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa69d971_375d7447","line":16,"in_reply_to":"fa69d971_601336b9","updated":"2016-01-11 05:31:11.000000000","message":"Sorry for my previous mistake.\nI just want to make it be a good reason for explain assertIsInstance is better to be used.\nBut consider again, I think you\u0027re right, put that link here is not a good way.","commit_id":"04c0c927efe5a2a33514af839e6979008fc7e973"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"0c99088b6a2ef3ce880066b026a1f425dbcab32b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some of tests use different methods to assert observed type, such as"},{"line_number":10,"context_line":"assertTrue(isinstance(A, B)) or assertEqual(A, type(B))."},{"line_number":11,"context_line":"The correct way is to use assertIsInstance(A, B) provided by testtools."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Prefer specific assertions such as assert(Not)IsInstance over generic ones"},{"line_number":14,"context_line":"(assertTrue/False, assertEqual) because they raise more meaningful errors."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa69d971_257af0bd","line":11,"range":{"start_line":11,"start_character":45,"end_line":11,"end_character":46},"updated":"2016-01-11 20:40:36.000000000","message":"In general, it\u0027s false as both assertions are not equivalent!","commit_id":"0543ca623a1c0e88f05e8ace4f05a808d0a8589b"}],"neutron/hacking/checks.py":[{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"8b520fab34ec3ea5b584fb87026cba6b04d7bb4b","unresolved":false,"context_lines":[{"line_number":232,"context_line":"            yield (0, msg)"},{"line_number":233,"context_line":"        if re.search(r\"assertEqual\\(\\s*type\\(\\s*[^,]*\\),\\s*[^,]*\\)\\)\","},{"line_number":234,"context_line":"                     logical_line):"},{"line_number":235,"context_line":"            msg \u003d (\"N331: Use assertIsInstance(oberseved, type) instead \""},{"line_number":236,"context_line":"                   \"of assertEqual(type, type(observed))\")"},{"line_number":237,"context_line":"            yield (0, msg)"},{"line_number":238,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_8a5fae74","line":235,"range":{"start_line":235,"start_character":47,"end_line":235,"end_character":56},"updated":"2016-01-08 05:05:57.000000000","message":"oberseved -\u003eobserved","commit_id":"e440d551d81d117bc3d879d6f9f5187877249766"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"80d98d08df857ad03f311095a3058db64b5e96d8","unresolved":false,"context_lines":[{"line_number":232,"context_line":"            yield (0, msg)"},{"line_number":233,"context_line":"        if re.search(r\"assertEqual\\(\\s*type\\(\\s*[^,]*\\),\\s*[^,]*\\)\\)\","},{"line_number":234,"context_line":"                     logical_line):"},{"line_number":235,"context_line":"            msg \u003d (\"N331: Use assertIsInstance(oberseved, type) instead \""},{"line_number":236,"context_line":"                   \"of assertEqual(type, type(observed))\")"},{"line_number":237,"context_line":"            yield (0, msg)"},{"line_number":238,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_923a84cc","line":235,"range":{"start_line":235,"start_character":47,"end_line":235,"end_character":56},"in_reply_to":"fa69d971_8a5fae74","updated":"2016-01-08 05:34:51.000000000","message":"Done","commit_id":"e440d551d81d117bc3d879d6f9f5187877249766"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"8b520fab34ec3ea5b584fb87026cba6b04d7bb4b","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        if re.search(r\"assertEqual\\(\\s*type\\(\\s*[^,]*\\),\\s*[^,]*\\)\\)\","},{"line_number":234,"context_line":"                     logical_line):"},{"line_number":235,"context_line":"            msg \u003d (\"N331: Use assertIsInstance(oberseved, type) instead \""},{"line_number":236,"context_line":"                   \"of assertEqual(type, type(observed))\")"},{"line_number":237,"context_line":"            yield (0, msg)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_2a86c2b9","line":236,"range":{"start_line":236,"start_character":45,"end_line":236,"end_character":46},"updated":"2016-01-08 05:05:57.000000000","message":"It would be assertEqual(type(observed), type)","commit_id":"e440d551d81d117bc3d879d6f9f5187877249766"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"80d98d08df857ad03f311095a3058db64b5e96d8","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        if re.search(r\"assertEqual\\(\\s*type\\(\\s*[^,]*\\),\\s*[^,]*\\)\\)\","},{"line_number":234,"context_line":"                     logical_line):"},{"line_number":235,"context_line":"            msg \u003d (\"N331: Use assertIsInstance(oberseved, type) instead \""},{"line_number":236,"context_line":"                   \"of assertEqual(type, type(observed))\")"},{"line_number":237,"context_line":"            yield (0, msg)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_129bf4ca","line":236,"range":{"start_line":236,"start_character":45,"end_line":236,"end_character":46},"in_reply_to":"fa69d971_2a86c2b9","updated":"2016-01-08 05:34:51.000000000","message":"Thanks for your close insight :)","commit_id":"e440d551d81d117bc3d879d6f9f5187877249766"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"0c99088b6a2ef3ce880066b026a1f425dbcab32b","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            yield (0, msg)"},{"line_number":229,"context_line":"        if re.search(r\"assertEqual\\(\\s*[^,]*,\\s*type\\(\\s*[^,]*\\)\\)\","},{"line_number":230,"context_line":"                     logical_line):"},{"line_number":231,"context_line":"            msg \u003d (\"N331: Use assertIsInstance(observed, type) instead \""},{"line_number":232,"context_line":"                   \"of assertEqual(type, type(observed))\")"},{"line_number":233,"context_line":"            yield (0, msg)"},{"line_number":234,"context_line":"        if re.search(r\"assertEqual\\(\\s*type\\(\\s*[^,]*\\),\\s*[^,]*\\)\\)\","}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_85e87cb4","line":231,"updated":"2016-01-11 20:40:36.000000000","message":"the following:\n\n self.assertEqual(clazz, type(instance))\n\nis not equivalent to:\n\n self.assertIsInstance(instance, clazz)\n\nThe 1st checks if the type of instance is clazz where the 2nd checks if the type of instance is a subclass of clazz","commit_id":"0543ca623a1c0e88f05e8ace4f05a808d0a8589b"}],"neutron/tests/unit/agent/linux/test_daemon.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"0c99088b6a2ef3ce880066b026a1f425dbcab32b","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            self.assertEqual(2, len(logger.handlers))"},{"line_number":48,"context_line":"            logger.handlers.remove(stream_handler)"},{"line_number":49,"context_line":"            observed \u003d logger.handlers[0]"},{"line_number":50,"context_line":"            self.assertIsInstance(observed, logging.FileHandler)"},{"line_number":51,"context_line":"            self.assertEqual(\u0027/tmp/filename1\u0027, observed.baseFilename)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_a5c90028","line":50,"updated":"2016-01-11 20:40:36.000000000","message":"The aim of this test is to verify that WatchedFileHandlers are replaced by FileHandlers by unwatch_log but the proposed assertion is verified if observed is a WatchedFileHandler or a FileHandler!!!","commit_id":"0543ca623a1c0e88f05e8ace4f05a808d0a8589b"}]}
