)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"17a0bcfe72421d64b907e892a451caabbc5a6c4b","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    fixtures.Fixture.useFixture"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"[2] neutron.tests.tools"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I875934e8dde321a450c83fb95d175affd1f3bb83"},{"line_number":21,"context_line":"Related-Bug: #1456353"},{"line_number":22,"context_line":"Related-Bug: #1456370"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3afb71cf_bd5afe4e","line":19,"updated":"2015-06-11 20:59:11.000000000","message":"Can you report a bug on Neutron please? You can use the example of a full stack environment.wait_until_env_is_up failing and not cleaning up the Neutron server.","commit_id":"8713808eb67cb5824d87fb35aa62e472a528d97f"}],"neutron/tests/functional/test_tools.py":[{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"16737304d2b2ac112d8db7375fa0baba33fae9f3","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.assertTrue(fixture.called)"},{"line_number":68,"context_line":"        self.assertFalse(fixture.cleaned)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def test_error_after_root_setup(self):"},{"line_number":71,"context_line":"        fixture \u003d ErrorAfterFixtureSetup()"},{"line_number":72,"context_line":"        self.assertRaises(ValueError, self.parent.useFixture, fixture)"},{"line_number":73,"context_line":"        self.assertTrue(fixture.cleaned)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1af86dd1_68bba00f","line":70,"updated":"2015-06-12 14:40:08.000000000","message":"\"root\" is a bit misleading, maybe test_error_after_super_setup ? or just remove it test_error_after_setup","commit_id":"1fe0829be15ab463935614c2a31a107880cb456d"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"f3a67e88700a4dccd00560eb015d8b949e4966fd","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.assertTrue(fixture.called)"},{"line_number":68,"context_line":"        self.assertFalse(fixture.cleaned)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def test_error_after_root_setup(self):"},{"line_number":71,"context_line":"        fixture \u003d ErrorAfterFixtureSetup()"},{"line_number":72,"context_line":"        self.assertRaises(ValueError, self.parent.useFixture, fixture)"},{"line_number":73,"context_line":"        self.assertTrue(fixture.cleaned)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1af86dd1_07141a42","line":70,"in_reply_to":"1af86dd1_68bba00f","updated":"2015-06-12 15:20:27.000000000","message":"root_setup refers to Fixture.setUp as it\u0027s the one required to call other fixture methods","commit_id":"1fe0829be15ab463935614c2a31a107880cb456d"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"2378bab146322c07f42c0b3c74db79cddc84870f","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            self.parent \u003d self"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def test_no_error(self):"},{"line_number":66,"context_line":"        fixture \u003d NoErrorFixture()"},{"line_number":67,"context_line":"        self.parent.useFixture(fixture)"},{"line_number":68,"context_line":"        self.assertTrue(fixture.called)"},{"line_number":69,"context_line":"        self.assertFalse(fixture.cleaned)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_7a71e10b","line":66,"updated":"2015-06-27 01:13:55.000000000","message":"(No action required) I think it makes sense to localize simple class definitions if they are only used in the scope of a given test.","commit_id":"4b4cedaf853664535c05d47c99c920e74d1deb3a"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"2378bab146322c07f42c0b3c74db79cddc84870f","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def test_error_after_root_setup(self):"},{"line_number":72,"context_line":"        fixture \u003d ErrorAfterFixtureSetup()"},{"line_number":73,"context_line":"        self.assertRaises(ValueError, self.parent.useFixture, fixture)"},{"line_number":74,"context_line":"        self.assertTrue(fixture.cleaned)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def test_error_before_root_setup(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_1a78d5f7","line":73,"updated":"2015-06-27 01:13:55.000000000","message":"(No action required) \n\nwith testtools.ExpectedException(ValueError):\n   self.parent.useFixture(fixture)","commit_id":"4b4cedaf853664535c05d47c99c920e74d1deb3a"}],"neutron/tests/tools.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"dc0bd2f4603521fe2fe7e7560c30e5af320e194d","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        # fixtures don\u0027t call super.__init__"},{"line_number":31,"context_line":"        obj \u003d super(SafeFixture, cls).__new__(cls, *args, **kwargs)"},{"line_number":32,"context_line":"        unsafe_setup \u003d obj.setUp"},{"line_number":33,"context_line":"        obj.setUp \u003d lambda: obj.safe_setUp(unsafe_setup)"},{"line_number":34,"context_line":"        return obj"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def safe_setUp(self, unsafe_setup):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_a50b0a2b","line":33,"updated":"2015-06-11 20:40:44.000000000","message":"This reduces subclass code rewrite","commit_id":"8713808eb67cb5824d87fb35aa62e472a528d97f"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"217703d1e7b0bb5eddd06822760a342b791b09c2","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        try:"},{"line_number":42,"context_line":"            unsafe_setup()"},{"line_number":43,"context_line":"        except Exception:"},{"line_number":44,"context_line":"            self.safe_cleanUp()"},{"line_number":45,"context_line":"            raise"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def safe_cleanUp(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_40437142","line":44,"updated":"2015-06-23 21:54:31.000000000","message":"Should \u0027excutils.save_and_reraise_exception()\u0027 be used in case safe_cleanUp() raises an exception?  Or is cleanUp() guaranteed not to raise?","commit_id":"d531f7067b4e3c2f555a3adb2040eb78898b4bdd"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"2b5e47173b87e0edfb2884e552aaacd6898d99dc","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        try:"},{"line_number":42,"context_line":"            unsafe_setup()"},{"line_number":43,"context_line":"        except Exception:"},{"line_number":44,"context_line":"            self.safe_cleanUp()"},{"line_number":45,"context_line":"            raise"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def safe_cleanUp(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_b4f02efe","line":44,"in_reply_to":"fa32b979_00c24934","updated":"2015-06-25 13:01:28.000000000","message":"Done","commit_id":"d531f7067b4e3c2f555a3adb2040eb78898b4bdd"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"9ede9c62be84b6822403fd179d1f160048cacfd2","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        try:"},{"line_number":42,"context_line":"            unsafe_setup()"},{"line_number":43,"context_line":"        except Exception:"},{"line_number":44,"context_line":"            self.safe_cleanUp()"},{"line_number":45,"context_line":"            raise"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def safe_cleanUp(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_00c24934","line":44,"in_reply_to":"fa32b979_40437142","updated":"2015-06-23 22:11:58.000000000","message":"self.cleanUp reraises errors raised (if any) by each cleanup","commit_id":"d531f7067b4e3c2f555a3adb2040eb78898b4bdd"}]}
