)]}'
{"HACKING.rst":[{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"97159e4caef9ef1ef4d59c3c98b2a31179ddb910","unresolved":false,"context_lines":[{"line_number":11,"context_line":"- [T301] LOG.warn() is not allowed. Use LOG.warning()"},{"line_number":12,"context_line":"- [T302] Deprecated library function os.popen()"},{"line_number":13,"context_line":"- [T303] Check for assertTrue(isinstance(a, b)) sentences"},{"line_number":14,"context_line":"- [T304] Check for assertEqual(type(A), B) sentences"},{"line_number":15,"context_line":"- [T305] Check for assertEqual(A in B, True), assertEqual(True, A in B),"},{"line_number":16,"context_line":"assertEqual(A in B, False) or assertEqual(False, A in B) sentences"},{"line_number":17,"context_line":"- [T306] Check for assertEqual(A, None) or assertEqual(None, A) sentences"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_1032545f","line":14,"range":{"start_line":14,"start_character":9,"end_line":14,"end_character":52},"updated":"2016-02-22 19:30:57.000000000","message":"You could very well also add the one with parameters swapped.","commit_id":"a30a61accb2d282958374628a0566c71bbd6a9ab"},{"author":{"_account_id":18549,"name":"Kairo Araujo","email":"kairo@kairo.eti.br","username":"kairo"},"change_message_id":"1655bac8d7e5c1cf3d0c90c52d31c1f3fffb752a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"- [T301] LOG.warn() is not allowed. Use LOG.warning()"},{"line_number":12,"context_line":"- [T302] Deprecated library function os.popen()"},{"line_number":13,"context_line":"- [T303] Check for assertTrue(isinstance(a, b)) sentences"},{"line_number":14,"context_line":"- [T304] Check for assertEqual(type(A), B) sentences"},{"line_number":15,"context_line":"- [T305] Check for assertEqual(A in B, True), assertEqual(True, A in B),"},{"line_number":16,"context_line":"assertEqual(A in B, False) or assertEqual(False, A in B) sentences"},{"line_number":17,"context_line":"- [T306] Check for assertEqual(A, None) or assertEqual(None, A) sentences"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_e66a8fb2","line":14,"range":{"start_line":14,"start_character":9,"end_line":14,"end_character":52},"in_reply_to":"bae84128_1032545f","updated":"2016-02-23 01:01:17.000000000","message":"Done","commit_id":"a30a61accb2d282958374628a0566c71bbd6a9ab"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"e64a2ec05b4fa928e6c9c6da70a09424ebb2b0b6","unresolved":false,"context_lines":[{"line_number":24,"context_line":"submitted bug fix does have a unit test, be sure to add a new one that fails"},{"line_number":25,"context_line":"without the patch and passes with the patch."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"All unittest classes must ultimately inherit from testtools.TestCase."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"All setUp and tearDown methods must upcall using the super() method."},{"line_number":30,"context_line":"tearDown methods should be avoided and addCleanup calls should be preferred."}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_505a1c2b","line":27,"range":{"start_line":27,"start_character":50,"end_line":27,"end_character":68},"updated":"2016-02-22 19:19:12.000000000","message":"It should be \u0027trove_testtools.TestCase\u0027. Trove has some things we need to do before every tests.","commit_id":"a30a61accb2d282958374628a0566c71bbd6a9ab"},{"author":{"_account_id":18549,"name":"Kairo Araujo","email":"kairo@kairo.eti.br","username":"kairo"},"change_message_id":"1655bac8d7e5c1cf3d0c90c52d31c1f3fffb752a","unresolved":false,"context_lines":[{"line_number":24,"context_line":"submitted bug fix does have a unit test, be sure to add a new one that fails"},{"line_number":25,"context_line":"without the patch and passes with the patch."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"All unittest classes must ultimately inherit from testtools.TestCase."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"All setUp and tearDown methods must upcall using the super() method."},{"line_number":30,"context_line":"tearDown methods should be avoided and addCleanup calls should be preferred."}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_f09d3067","line":27,"range":{"start_line":27,"start_character":50,"end_line":27,"end_character":68},"in_reply_to":"bae84128_505a1c2b","updated":"2016-02-23 01:01:17.000000000","message":"Done","commit_id":"a30a61accb2d282958374628a0566c71bbd6a9ab"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"82d2e3535f227c32ce05fed55e3d17892a3de3ef","unresolved":false,"context_lines":[{"line_number":11,"context_line":"- [T301] LOG.warn() is not allowed. Use LOG.warning()"},{"line_number":12,"context_line":"- [T302] Deprecated library function os.popen()"},{"line_number":13,"context_line":"- [T303] Check for assertTrue(isinstance(a, b)) sentences"},{"line_number":14,"context_line":"- [T304] Check for assertEqual(type(A), B) sentences"},{"line_number":15,"context_line":"- [T305] Check for assertEqual(A in B, True), assertEqual(True, A in B),"},{"line_number":16,"context_line":"assertEqual(A in B, False) or assertEqual(False, A in B) sentences"},{"line_number":17,"context_line":"- [T306] Check for assertEqual(A, None) or assertEqual(None, A) sentences"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bae84128_015e7d11","line":14,"range":{"start_line":14,"start_character":9,"end_line":14,"end_character":52},"updated":"2016-02-23 01:51:14.000000000","message":"(+0) I see you added the code for this, maybe include it in the description (as you did for T305):\n\n  Check for assertEqual(type(A), B), assertEqual(B, type(A)) sentences","commit_id":"160bba1bf9b65a6993ab4f029bc20f920e5a115a"},{"author":{"_account_id":18549,"name":"Kairo Araujo","email":"kairo@kairo.eti.br","username":"kairo"},"change_message_id":"6f82f44d56b354725c9fcdf6711a0e31b4124c38","unresolved":false,"context_lines":[{"line_number":11,"context_line":"- [T301] LOG.warn() is not allowed. Use LOG.warning()"},{"line_number":12,"context_line":"- [T302] Deprecated library function os.popen()"},{"line_number":13,"context_line":"- [T303] Check for assertTrue(isinstance(a, b)) sentences"},{"line_number":14,"context_line":"- [T304] Check for assertEqual(type(A), B) sentences"},{"line_number":15,"context_line":"- [T305] Check for assertEqual(A in B, True), assertEqual(True, A in B),"},{"line_number":16,"context_line":"assertEqual(A in B, False) or assertEqual(False, A in B) sentences"},{"line_number":17,"context_line":"- [T306] Check for assertEqual(A, None) or assertEqual(None, A) sentences"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bae84128_2247404c","line":14,"range":{"start_line":14,"start_character":9,"end_line":14,"end_character":52},"in_reply_to":"bae84128_015e7d11","updated":"2016-02-23 02:54:29.000000000","message":"Done","commit_id":"160bba1bf9b65a6993ab4f029bc20f920e5a115a"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"82d2e3535f227c32ce05fed55e3d17892a3de3ef","unresolved":false,"context_lines":[{"line_number":24,"context_line":"submitted bug fix does have a unit test, be sure to add a new one that fails"},{"line_number":25,"context_line":"without the patch and passes with the patch."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"All unittest classes must ultimately inherit from testtools.TestCase."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"All setUp and tearDown methods must upcall using the super() method."},{"line_number":30,"context_line":"tearDown methods should be avoided and addCleanup calls should be preferred."}],"source_content_type":"text/x-rst","patch_set":2,"id":"bae84128_a15511fb","line":27,"range":{"start_line":27,"start_character":50,"end_line":27,"end_character":68},"updated":"2016-02-23 01:51:14.000000000","message":"(-1) You missed fixing this.  Maybe something like:\n\n  All unittest classes must inherit from trove_testtools.TestCase (which is derived from testtools.TestCase).","commit_id":"160bba1bf9b65a6993ab4f029bc20f920e5a115a"},{"author":{"_account_id":18549,"name":"Kairo Araujo","email":"kairo@kairo.eti.br","username":"kairo"},"change_message_id":"6f82f44d56b354725c9fcdf6711a0e31b4124c38","unresolved":false,"context_lines":[{"line_number":24,"context_line":"submitted bug fix does have a unit test, be sure to add a new one that fails"},{"line_number":25,"context_line":"without the patch and passes with the patch."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"All unittest classes must ultimately inherit from testtools.TestCase."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"All setUp and tearDown methods must upcall using the super() method."},{"line_number":30,"context_line":"tearDown methods should be avoided and addCleanup calls should be preferred."}],"source_content_type":"text/x-rst","patch_set":2,"id":"bae84128_e26718e7","line":27,"range":{"start_line":27,"start_character":50,"end_line":27,"end_character":68},"in_reply_to":"bae84128_a15511fb","updated":"2016-02-23 02:54:29.000000000","message":"Done. (Sorry for my neglect.)","commit_id":"160bba1bf9b65a6993ab4f029bc20f920e5a115a"}],"trove/hacking/checks.py":[{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"82d2e3535f227c32ce05fed55e3d17892a3de3ef","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2016 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_01c4bd5c","line":1,"range":{"start_line":1,"start_character":21,"end_line":1,"end_character":41},"updated":"2016-02-23 01:51:14.000000000","message":"(+0) Nit - Unless you work for the OpenStack Foundation, you shouldn\u0027t put their name in the copyright.  See https://wiki.openstack.org/wiki/LegalIssuesFAQ#OpenStack_Foundation_Copyright_Headers\n\nIf you\u0027re not affiliated with a company, I suppose you could put your name there ;)  or just leave it blank.","commit_id":"160bba1bf9b65a6993ab4f029bc20f920e5a115a"},{"author":{"_account_id":18549,"name":"Kairo Araujo","email":"kairo@kairo.eti.br","username":"kairo"},"change_message_id":"6f82f44d56b354725c9fcdf6711a0e31b4124c38","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2016 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_c2a3f4fe","line":1,"range":{"start_line":1,"start_character":21,"end_line":1,"end_character":41},"in_reply_to":"bae84128_01c4bd5c","updated":"2016-02-23 02:54:29.000000000","message":"Done","commit_id":"160bba1bf9b65a6993ab4f029bc20f920e5a115a"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"7f56d86ce26e51829545ee69ffa4c89c2ef02720","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"bae84128_54e65315","updated":"2016-02-23 19:23:21.000000000","message":"Why are these checks Trove specific?","commit_id":"675b0c7759d0fd5a0414913c2b65f92c3fa83102"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"a63a8d10769531106a7624d67c7b41858500167d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"bae84128_7d3413fb","in_reply_to":"bae84128_0f9cb85b","updated":"2016-02-23 23:15:58.000000000","message":"I think Amrith is asking \"Shouldn\u0027t these checks be placed in common \u0027hacking\u0027 module since none of them are Trove specific?\" - valid question ... is there a specific reason they\u0027re not addressed there?","commit_id":"675b0c7759d0fd5a0414913c2b65f92c3fa83102"},{"author":{"_account_id":18549,"name":"Kairo Araujo","email":"kairo@kairo.eti.br","username":"kairo"},"change_message_id":"75aad6f1a4e468df9f123cf10c3ee25c6b041e7b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"bae84128_0f9cb85b","in_reply_to":"bae84128_54e65315","updated":"2016-02-23 19:46:54.000000000","message":"Because these checks could prevent the mistakes in future code.\n\nSome example is the mentioned bugs:\n#1508442, #1529836 and #1445131\n\nThe hack is mentioned on bug #1445131\n\nI based this hack from other OpenStack projects (neutro, nova, nova-powervm, etc).","commit_id":"675b0c7759d0fd5a0414913c2b65f92c3fa83102"}]}
