)]}'
{"watcher/applier/action_plan/default.py":[{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"fd72a67e02859c916bc3a4bc4fa67c61830696ac","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                        ap_objects.State.ONGOING)"},{"line_number":55,"context_line":"            applier \u003d default.DefaultApplier(self.ctx, self.applier_manager)"},{"line_number":56,"context_line":"            applier.execute(self.action_plan_uuid)"},{"line_number":57,"context_line":"            status \u003d ap_objects.State.SUCCEEDED"},{"line_number":58,"context_line":"        except Exception as e:"},{"line_number":59,"context_line":"            LOG.exception(e)"},{"line_number":60,"context_line":"            status \u003d ap_objects.State.FAILED"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_454e3c97","line":57,"range":{"start_line":57,"start_character":12,"end_line":57,"end_character":18},"updated":"2016-02-25 08:19:49.000000000","message":"nit: it\u0027s not a status but a state","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"b36221cfdcc4476fda768a56b2c9bdbf21984bb6","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                        ap_objects.State.ONGOING)"},{"line_number":55,"context_line":"            applier \u003d default.DefaultApplier(self.ctx, self.applier_manager)"},{"line_number":56,"context_line":"            applier.execute(self.action_plan_uuid)"},{"line_number":57,"context_line":"            status \u003d ap_objects.State.SUCCEEDED"},{"line_number":58,"context_line":"        except Exception as e:"},{"line_number":59,"context_line":"            LOG.exception(e)"},{"line_number":60,"context_line":"            status \u003d ap_objects.State.FAILED"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_ade584a9","line":57,"range":{"start_line":57,"start_character":12,"end_line":57,"end_character":18},"in_reply_to":"bae84128_454e3c97","updated":"2016-02-25 21:19:48.000000000","message":"Done","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"0991c504df6d9b407a14c5d32eb5212bba39b446","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                        ap_objects.State.ONGOING)"},{"line_number":55,"context_line":"            applier \u003d default.DefaultApplier(self.ctx, self.applier_manager)"},{"line_number":56,"context_line":"            applier.execute(self.action_plan_uuid)"},{"line_number":57,"context_line":"            status \u003d ap_objects.State.SUCCEEDED"},{"line_number":58,"context_line":"        except Exception as e:"},{"line_number":59,"context_line":"            LOG.exception(e)"},{"line_number":60,"context_line":"            status \u003d ap_objects.State.FAILED"},{"line_number":61,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_c55a4c50","line":58,"range":{"start_line":57,"start_character":47,"end_line":58,"end_character":8},"updated":"2016-02-25 08:04:12.000000000","message":"Why was the empty line got removed? They make the codebase more readable","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"b36221cfdcc4476fda768a56b2c9bdbf21984bb6","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                        ap_objects.State.ONGOING)"},{"line_number":55,"context_line":"            applier \u003d default.DefaultApplier(self.ctx, self.applier_manager)"},{"line_number":56,"context_line":"            applier.execute(self.action_plan_uuid)"},{"line_number":57,"context_line":"            status \u003d ap_objects.State.SUCCEEDED"},{"line_number":58,"context_line":"        except Exception as e:"},{"line_number":59,"context_line":"            LOG.exception(e)"},{"line_number":60,"context_line":"            status \u003d ap_objects.State.FAILED"},{"line_number":61,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_ad93c4f9","line":58,"range":{"start_line":57,"start_character":47,"end_line":58,"end_character":8},"in_reply_to":"bae84128_c55a4c50","updated":"2016-02-25 21:19:48.000000000","message":"There was no line removed from the original code - I can add a newline, but I thought the indentation was adequate.","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"}],"watcher/applier/workflow_engine/default.py":[{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"0991c504df6d9b407a14c5d32eb5212bba39b446","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                else:"},{"line_number":68,"context_line":"                    # decider \u003d\u003d guard (UML)"},{"line_number":69,"context_line":"                    flow.link(previous, task, decider\u003dself.decider)"},{"line_number":70,"context_line":"                    previous \u003d task"},{"line_number":71,"context_line":"            e \u003d engines.load(flow)"},{"line_number":72,"context_line":"            e.run()"},{"line_number":73,"context_line":"        except Exception as e:"},{"line_number":74,"context_line":"            LOG.exception(e)"},{"line_number":75,"context_line":"            raise"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_85d5e4ba","line":73,"range":{"start_line":70,"start_character":20,"end_line":73,"end_character":4},"updated":"2016-02-25 08:04:12.000000000","message":"Why are the empty lines got removed?","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"b36221cfdcc4476fda768a56b2c9bdbf21984bb6","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                else:"},{"line_number":68,"context_line":"                    # decider \u003d\u003d guard (UML)"},{"line_number":69,"context_line":"                    flow.link(previous, task, decider\u003dself.decider)"},{"line_number":70,"context_line":"                    previous \u003d task"},{"line_number":71,"context_line":"            e \u003d engines.load(flow)"},{"line_number":72,"context_line":"            e.run()"},{"line_number":73,"context_line":"        except Exception as e:"},{"line_number":74,"context_line":"            LOG.exception(e)"},{"line_number":75,"context_line":"            raise"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_2dd174ce","line":73,"range":{"start_line":70,"start_character":20,"end_line":73,"end_character":4},"in_reply_to":"bae84128_85d5e4ba","updated":"2016-02-25 21:19:48.000000000","message":"I\u0027ll re-add the line after previous\u003dtask, but there wasn\u0027t any newline before or after except statement.  I will add a blank line before.","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"0991c504df6d9b407a14c5d32eb5212bba39b446","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            e.run()"},{"line_number":73,"context_line":"        except Exception as e:"},{"line_number":74,"context_line":"            LOG.exception(e)"},{"line_number":75,"context_line":"            raise"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"class TaskFlowActionContainer(task.Task):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_85168453","line":75,"range":{"start_line":75,"start_character":11,"end_line":75,"end_character":17},"updated":"2016-02-25 08:04:12.000000000","message":"Maybe we should raise a more specific exception","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"cc438da7f8380910f3c4154c68be9e33e254dffd","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            e.run()"},{"line_number":73,"context_line":"        except Exception as e:"},{"line_number":74,"context_line":"            LOG.exception(e)"},{"line_number":75,"context_line":"            raise"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"class TaskFlowActionContainer(task.Task):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_e42139b6","line":75,"range":{"start_line":75,"start_character":11,"end_line":75,"end_character":17},"in_reply_to":"bae84128_85168453","updated":"2016-02-25 15:04:40.000000000","message":"Is there a specific exception we should raise here?  Or would creating a new exception, say WorkflowExecutionException work?  I agree that will clean up the unit test a bit as PEP8 complains expecting Exception being too broad.","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"78b3fc49731c46c773c5423268b91ae00962781a","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            e.run()"},{"line_number":73,"context_line":"        except Exception as e:"},{"line_number":74,"context_line":"            LOG.exception(e)"},{"line_number":75,"context_line":"            raise"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"class TaskFlowActionContainer(task.Task):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_a422a7b7","line":75,"range":{"start_line":75,"start_character":11,"end_line":75,"end_character":17},"in_reply_to":"bae84128_e42139b6","updated":"2016-02-26 08:25:00.000000000","message":"A new exception like the one you propose seems to be a good solution. Do not forget to wrap the exception message with a _() for i18n.","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"ace5f7df751bdcccace0112be189e476c0077526","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            e.run()"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        except Exception as e:"},{"line_number":77,"context_line":"            LOG.exception(e)"},{"line_number":78,"context_line":"            raise exception.WorkflowExecutionException(e)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_b07b44bd","line":77,"updated":"2016-03-04 08:56:29.000000000","message":"Seems like we should probably remove this as line 123 is going to end up logging the wrapped exception as well?","commit_id":"e75f1fd7e388c84702df02d69f06ec81df2ced56"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"d479b81ec3be3ec7d3dea21266bddf8544f9588d","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            e.run()"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        except Exception as e:"},{"line_number":77,"context_line":"            LOG.exception(e)"},{"line_number":78,"context_line":"            raise exception.WorkflowExecutionException(e)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_fb1484a0","line":77,"in_reply_to":"7af24918_b07b44bd","updated":"2016-03-05 07:25:50.000000000","message":"Done","commit_id":"e75f1fd7e388c84702df02d69f06ec81df2ced56"}],"watcher/common/exception.py":[{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"ace5f7df751bdcccace0112be189e476c0077526","unresolved":false,"context_lines":[{"line_number":235,"context_line":"# decision engine"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"class WorkflowExecutionException(WatcherException):"},{"line_number":238,"context_line":"    msg_fmt \u003d _(\u0027Workflow execution error\u0027)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"class IllegalArgumentException(WatcherException):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_5011205c","line":238,"updated":"2016-03-04 08:56:29.000000000","message":"Include ability to inject what the error was?\n\n\u0027Workflow execution error: %(error)s\u0027","commit_id":"e75f1fd7e388c84702df02d69f06ec81df2ced56"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"d479b81ec3be3ec7d3dea21266bddf8544f9588d","unresolved":false,"context_lines":[{"line_number":235,"context_line":"# decision engine"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"class WorkflowExecutionException(WatcherException):"},{"line_number":238,"context_line":"    msg_fmt \u003d _(\u0027Workflow execution error\u0027)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"class IllegalArgumentException(WatcherException):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_365ff776","line":238,"in_reply_to":"7af24918_5011205c","updated":"2016-03-05 07:25:50.000000000","message":"Done","commit_id":"e75f1fd7e388c84702df02d69f06ec81df2ced56"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"a0d193f44c9a709ecf8313cf2ff0ea6d02933939","unresolved":false,"context_lines":[{"line_number":235,"context_line":"# decision engine"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"class WorkflowExecutionException(WatcherException):"},{"line_number":238,"context_line":"    msg_fmt \u003d _(\u0027Workflow execution error: %(error)s\u0027)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"class IllegalArgumentException(WatcherException):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_b35a7528","line":238,"updated":"2016-03-09 16:01:12.000000000","message":"nit: can you run the \u0027python setup.py extract_messages\u0027 please? This is to re-generate the .pot for i18n","commit_id":"04e92e6b3cfda989e39b1f8a43f872b5838532e2"}],"watcher/tests/applier/workflow_engine/test_default_workflow_engine.py":[{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"0991c504df6d9b407a14c5d32eb5212bba39b446","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            applier_manager\u003dmock.MagicMock())"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def test_execute(self):"},{"line_number":68,"context_line":"        actions \u003d mock.MagicMock()"},{"line_number":69,"context_line":"        self.engine.execute(actions)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def create_action(self, action_type, parameters, next):"},{"line_number":72,"context_line":"        action \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_659420e8","line":69,"range":{"start_line":68,"start_character":7,"end_line":69,"end_character":36},"updated":"2016-02-25 08:04:12.000000000","message":"In this way, the test are meaningless. You should check how are these kind of method call tested","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"fd72a67e02859c916bc3a4bc4fa67c61830696ac","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def test_execute(self):"},{"line_number":68,"context_line":"        actions \u003d mock.MagicMock()"},{"line_number":69,"context_line":"        self.engine.execute(actions)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def create_action(self, action_type, parameters, next):"},{"line_number":72,"context_line":"        action \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_304b745b","line":69,"range":{"start_line":69,"start_character":8,"end_line":69,"end_character":36},"updated":"2016-02-25 08:19:49.000000000","message":"It\u0027s not really your test in the first place but I agree with Gábor: it would be nice of you to mock the taskflow \"graph_flow\" and make sure the flow.link() action gets called with your \"actions\" mock object.\n\nAlso to make it more legible, I would this call into a a try+except+fail like this:\n\ntry:\n    self.engine.execute(actions)\nexcept Exception as exc:\n    self.fail(exc)\n# other assertions [...]","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"fd72a67e02859c916bc3a4bc4fa67c61830696ac","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            self.check_action_state(a, expected_state)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_execute_with_no_actions(self):"},{"line_number":95,"context_line":"        actions \u003d []"},{"line_number":96,"context_line":"        self.engine.execute(actions)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_execute_with_one_action(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_f0010c3b","line":95,"range":{"start_line":95,"start_character":8,"end_line":95,"end_character":20},"updated":"2016-02-25 08:19:49.000000000","message":"So following the comment made above, I would check the the flow.link() doesn\u0027t get called at all even though the engines.load() is being called once.","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"0991c504df6d9b407a14c5d32eb5212bba39b446","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_execute_with_no_actions(self):"},{"line_number":95,"context_line":"        actions \u003d []"},{"line_number":96,"context_line":"        self.engine.execute(actions)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_execute_with_one_action(self):"},{"line_number":99,"context_line":"        actions \u003d [self.create_action(\"nop\", {\u0027message\u0027: \u0027test\u0027}, None)]"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_e58830c9","line":96,"range":{"start_line":96,"start_character":7,"end_line":96,"end_character":36},"updated":"2016-02-25 08:04:12.000000000","message":"Same here","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"fd72a67e02859c916bc3a4bc4fa67c61830696ac","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_execute_with_no_actions(self):"},{"line_number":95,"context_line":"        actions \u003d []"},{"line_number":96,"context_line":"        self.engine.execute(actions)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_execute_with_one_action(self):"},{"line_number":99,"context_line":"        actions \u003d [self.create_action(\"nop\", {\u0027message\u0027: \u0027test\u0027}, None)]"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_f0958c88","line":96,"range":{"start_line":96,"start_character":8,"end_line":96,"end_character":36},"updated":"2016-02-25 08:19:49.000000000","message":"ditto on the try+except+fail","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"0991c504df6d9b407a14c5d32eb5212bba39b446","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_execute_with_one_action(self):"},{"line_number":99,"context_line":"        actions \u003d [self.create_action(\"nop\", {\u0027message\u0027: \u0027test\u0027}, None)]"},{"line_number":100,"context_line":"        self.engine.execute(actions)"},{"line_number":101,"context_line":"        self.check_actions_state(actions, objects.action.State.SUCCEEDED)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def test_execute_with_two_actions(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_0590b4eb","line":100,"range":{"start_line":100,"start_character":7,"end_line":100,"end_character":36},"updated":"2016-02-25 08:04:12.000000000","message":"Same here","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"6df7d90c5232ffe0334528b085c004529a9b1b14","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_execute_with_one_action(self):"},{"line_number":99,"context_line":"        actions \u003d [self.create_action(\"nop\", {\u0027message\u0027: \u0027test\u0027}, None)]"},{"line_number":100,"context_line":"        self.engine.execute(actions)"},{"line_number":101,"context_line":"        self.check_actions_state(actions, objects.action.State.SUCCEEDED)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def test_execute_with_two_actions(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_ab541921","line":100,"range":{"start_line":100,"start_character":7,"end_line":100,"end_character":36},"in_reply_to":"9aed3d3a_600fd02e","updated":"2016-02-26 15:37:42.000000000","message":"IMHO, the try+except+fail would the main check here. To me, the check_actions_state() is just a double check to make sure there is actually no action state issue.","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"9579ce5e677e7b04afa6a7ace61f99c0efe411b7","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_execute_with_one_action(self):"},{"line_number":99,"context_line":"        actions \u003d [self.create_action(\"nop\", {\u0027message\u0027: \u0027test\u0027}, None)]"},{"line_number":100,"context_line":"        self.engine.execute(actions)"},{"line_number":101,"context_line":"        self.check_actions_state(actions, objects.action.State.SUCCEEDED)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def test_execute_with_two_actions(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_600fd02e","line":100,"range":{"start_line":100,"start_character":7,"end_line":100,"end_character":36},"in_reply_to":"bae84128_0590b4eb","updated":"2016-02-26 15:08:37.000000000","message":"Not sure if we need additional check aside from try+except+fail for these ones as we already do a .check_actions_state() after.    If the code did not get exercise, it should fail on next line.","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"0991c504df6d9b407a14c5d32eb5212bba39b446","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        actions.append(first)"},{"line_number":109,"context_line":"        actions.append(next)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        self.engine.execute(actions)"},{"line_number":112,"context_line":"        self.check_actions_state(actions, objects.action.State.SUCCEEDED)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def test_execute_with_three_actions(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_85ba046d","line":111,"range":{"start_line":111,"start_character":7,"end_line":111,"end_character":36},"updated":"2016-02-25 08:04:12.000000000","message":"Same here","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"0991c504df6d9b407a14c5d32eb5212bba39b446","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        actions.append(next)"},{"line_number":125,"context_line":"        actions.append(next2)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        self.engine.execute(actions)"},{"line_number":128,"context_line":"        self.check_actions_state(actions, objects.action.State.SUCCEEDED)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def test_execute_with_exception(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_65626018","line":127,"range":{"start_line":127,"start_character":8,"end_line":127,"end_character":36},"updated":"2016-02-25 08:04:12.000000000","message":"Same here","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"fd72a67e02859c916bc3a4bc4fa67c61830696ac","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        self.assertRaises(exception.LoadingError, self.engine.execute, actions)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        self.check_action_state(first, objects.action.State.SUCCEEDED)"},{"line_number":146,"context_line":"        self.check_action_state(next, objects.action.State.SUCCEEDED)"},{"line_number":147,"context_line":"        self.check_action_state(next2, objects.action.State.FAILED)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    @mock.patch(\"watcher.common.loader.default.DriverManager\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_b0402409","line":146,"range":{"start_line":146,"start_character":32,"end_line":146,"end_character":36},"updated":"2016-02-25 08:19:49.000000000","message":"nit: can you rename this variable like \"next_\" so it doesn\u0027t use any builtin keyword.","commit_id":"23853542afcc7e903feed304d31a1158f1b370e7"}]}
