)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"f2b745f776cc78cd8c3101904308f3b39fee3330","unresolved":false,"context_lines":[{"line_number":13,"context_line":"covered by unittests, so adding them."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Iebfb49d6e89fb55cee888e2966335630a972427a"},{"line_number":16,"context_line":"Closes-bug: https://storyboard.openstack.org/?#!/story/2000698"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3ac371cc_26bb0b10","line":16,"updated":"2016-08-16 16:04:47.000000000","message":"I think the normal syntax for this is Story: 2000698","commit_id":"2fc6b1810361dbe7ab3814fadc7fff31f9ae64f0"}],"subunit2sql/tests/test_shell.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"f2b745f776cc78cd8c3101904308f3b39fee3330","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        cfg.CONF.set_override(name\u003d\u0027artifacts\u0027, override\u003dNone)"},{"line_number":230,"context_line":"        cfg.CONF.set_override(name\u003d\u0027run_id\u0027, override\u003dNone)"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    @mock.patch(\u0027subunit2sql.db.api.get_session\u0027)"},{"line_number":233,"context_line":"    @mock.patch(\u0027subunit2sql.db.api.create_run\u0027)"},{"line_number":234,"context_line":"    @mock.patch(\u0027subunit2sql.shell.get_run_totals\u0027)"},{"line_number":235,"context_line":"    @mock.patch(\u0027subunit2sql.db.api.add_run_metadata\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3ac371cc_c6831703","line":232,"updated":"2016-08-16 16:04:47.000000000","message":"Can\u0027t you just mock the module? I mean this is fine, but I wonder if it would be easier to use a single API module mock","commit_id":"2fc6b1810361dbe7ab3814fadc7fff31f9ae64f0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"201318581547487d844a3dbf44c302975897d6e7","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                               return_value\u003dself.fake_totals)).mock"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def test_process_results_no_results(self):"},{"line_number":244,"context_line":"        fake_run_time \u003d \u0027run time\u0027"},{"line_number":245,"context_line":"        fake_results \u003d dict(run_time\u003dfake_run_time)"},{"line_number":246,"context_line":"        fake_db_run_id \u003d \u0027run id\u0027"},{"line_number":247,"context_line":"        fake_db_run \u003d mock.Mock(name\u003d\u0027db run\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_20f2619a","line":244,"range":{"start_line":244,"start_character":8,"end_line":244,"end_character":21},"updated":"2016-08-23 22:48:57.000000000","message":"This value is always \u0027run time\u0027, so it would be nice to define cls value.","commit_id":"9dca0f271607985514089605a37455463df7868e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"201318581547487d844a3dbf44c302975897d6e7","unresolved":false,"context_lines":[{"line_number":530,"context_line":"        # Setup the metadata prefix configuration"},{"line_number":531,"context_line":"        cfg.CONF.set_override(name\u003d\u0027test_attr_prefix\u0027,"},{"line_number":532,"context_line":"                              override\u003d\u0027\u0027)"},{"line_number":533,"context_line":"        fake_run_time \u003d \u0027run time\u0027"},{"line_number":534,"context_line":"        # Setup a common fake DB test"},{"line_number":535,"context_line":"        fake_db_test \u003d mock.Mock(name\u003d\u0027db test\u0027)"},{"line_number":536,"context_line":"        fake_db_test.id \u003d \u0027test id\u0027"},{"line_number":537,"context_line":"        fake_db_test.run_count \u003d 3"},{"line_number":538,"context_line":"        fake_db_test.success \u003d 2"},{"line_number":539,"context_line":"        fake_db_test.failure \u003d 1"},{"line_number":540,"context_line":"        # Setup results"},{"line_number":541,"context_line":"        expected_metadata_list \u003d [\u0027a\u0027, \u0027b\u0027, \u0027c\u0027]"},{"line_number":542,"context_line":"        fake_results \u003d dict("}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_bb496033","line":539,"range":{"start_line":533,"start_character":8,"end_line":539,"end_character":32},"updated":"2016-08-23 22:48:57.000000000","message":"Here is the same as test_process_result_test_run_attachments","commit_id":"9dca0f271607985514089605a37455463df7868e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"201318581547487d844a3dbf44c302975897d6e7","unresolved":false,"context_lines":[{"line_number":543,"context_line":"            test1\u003d{\u0027status\u0027: \u0027fail\u0027, \u0027start_time\u0027: 0, \u0027end_time\u0027: 1,"},{"line_number":544,"context_line":"                   \u0027metadata\u0027: {\u0027attrs\u0027: \u0027,\u0027.join(expected_metadata_list)},"},{"line_number":545,"context_line":"                   \u0027attachments\u0027: None})"},{"line_number":546,"context_line":"        fake_results_all \u003d copy.deepcopy(fake_results)"},{"line_number":547,"context_line":"        fake_results_all[\u0027run_time\u0027] \u003d fake_run_time"},{"line_number":548,"context_line":"        # Mock create run"},{"line_number":549,"context_line":"        fake_db_run_id \u003d \u0027run id\u0027"},{"line_number":550,"context_line":"        fake_db_run \u003d mock.Mock(name\u003d\u0027db run\u0027)"},{"line_number":551,"context_line":"        fake_db_run.id \u003d fake_db_run_id"},{"line_number":552,"context_line":"        self.db_api_mock.create_run.return_value \u003d fake_db_run"},{"line_number":553,"context_line":"        # Mock create test run"},{"line_number":554,"context_line":"        fake_db_test_run_id \u003d \u0027test run id\u0027"},{"line_number":555,"context_line":"        fake_db_test_run \u003d mock.Mock(name\u003d\u0027db test run\u0027)"},{"line_number":556,"context_line":"        fake_db_test_run.id \u003d fake_db_test_run_id"},{"line_number":557,"context_line":"        self.db_api_mock.create_test_run.return_value \u003d fake_db_test_run"},{"line_number":558,"context_line":"        # Tests are found in the DB"},{"line_number":559,"context_line":"        self.db_api_mock.get_test_by_test_id.return_value \u003d fake_db_test"},{"line_number":560,"context_line":"        # Run process_results"},{"line_number":561,"context_line":"        shell.process_results(fake_results_all)"},{"line_number":562,"context_line":"        # Check test metadata is not added"},{"line_number":563,"context_line":"        self.db_api_mock.add_test_metadata.assert_not_called()"},{"line_number":564,"context_line":"        # Check all metadata is added to test_run_metadata"},{"line_number":565,"context_line":"        self.db_api_mock.add_test_run_metadata.assert_has_calls(["},{"line_number":566,"context_line":"            mock.call(fake_results[\u0027test1\u0027][\u0027metadata\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_5b2f8c3e","line":563,"range":{"start_line":546,"start_character":8,"end_line":563,"end_character":62},"updated":"2016-08-23 22:48:57.000000000","message":"Here also is the same as test_process_result_test_run_attachments.\n\nSo I am thinking we can create an internal method for avoid duplicated code for clarifying the test purpose more.","commit_id":"9dca0f271607985514089605a37455463df7868e"}]}
