)]}'
{"tempest/tests/test_tempest_plugin.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"32d9fea54856832814de0b594f315f1ab22b30ff","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from tempest.tests import base"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class FakePlugin(plugins.TempestPlugin):"},{"line_number":23,"context_line":"    expected_load_test \u003d [\"my/test/path\", \"/home/dir\"]"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def load_tests(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_0c63d5dd","line":22,"updated":"2015-08-27 12:11:02.000000000","message":"I guess, it would be correct to simulate plugin pulling having \"fake\" plugin in separate module.","commit_id":"515bd22f0b91a253445f65603b0e8dc13ca26ff0"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"32d9fea54856832814de0b594f315f1ab22b30ff","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class TestPluginDiscovery(base.TestCase):"},{"line_number":41,"context_line":"    @mock.patch(\u0027stevedore.ExtensionManager\u0027)"},{"line_number":42,"context_line":"    def test_get_plugin_load_tests_tuple(self, mock):"},{"line_number":43,"context_line":"        mock.return_value \u003d [FakeStevedoreObj()]"},{"line_number":44,"context_line":"        manager \u003d plugins.TempestTestPluginManager()"},{"line_number":45,"context_line":"        result \u003d manager.get_plugin_load_tests_tuple()"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_29048b15","line":42,"updated":"2015-08-27 12:11:02.000000000","message":"It is redefinition of module \"mock\". Please, rename it. For example, to \"mock_extension_manager\".","commit_id":"515bd22f0b91a253445f65603b0e8dc13ca26ff0"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"32d9fea54856832814de0b594f315f1ab22b30ff","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    def test_get_plugin_load_tests_tuple(self, mock):"},{"line_number":43,"context_line":"        mock.return_value \u003d [FakeStevedoreObj()]"},{"line_number":44,"context_line":"        manager \u003d plugins.TempestTestPluginManager()"},{"line_number":45,"context_line":"        result \u003d manager.get_plugin_load_tests_tuple()"},{"line_number":46,"context_line":"        self.assertEqual(FakePlugin.expected_load_test,"},{"line_number":47,"context_line":"                         result[FakeStevedoreObj.name])"},{"line_number":48,"context_line":"        self.assertTrue(mock.called)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_ec2b0181","line":45,"updated":"2015-08-27 12:11:02.000000000","message":"Would be great to see empty lines before and after tested operation.","commit_id":"515bd22f0b91a253445f65603b0e8dc13ca26ff0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9a3653ff2d2adfd047fe20b820a3e552f3893f4d","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class TestPluginDiscovery(base.TestCase):"},{"line_number":22,"context_line":"    def test_load_tests_with_one_plugin(self):"},{"line_number":23,"context_line":"        # we can\u0027t mock stevedore since it\u0027s a singleton and already executed"},{"line_number":24,"context_line":"        # during test discovery. So basically this test covers the plugin loop"},{"line_number":25,"context_line":"        # and the abstract plugin interface."}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_2350fad3","line":22,"updated":"2015-09-10 08:34:45.000000000","message":"We can add unit test for nonexistent plugin case which a project doesn\u0027t support external plugin interface yet. but it is fine to add it later.","commit_id":"173fc0646163acd534f8c8ec11794509904489fc"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"1d6bc30019652657515b3c845924e04bf6f2e3a8","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def test_load_tests_with_one_plugin(self):"},{"line_number":23,"context_line":"        # we can\u0027t mock stevedore since it\u0027s a singleton and already executed"},{"line_number":24,"context_line":"        # during test discovery. So basically this test covers the plugin loop"},{"line_number":25,"context_line":"        # and the abstract plugin interface."},{"line_number":26,"context_line":"        manager \u003d plugins.TempestTestPluginManager()"},{"line_number":27,"context_line":"        fake_obj \u003d fake_plugin.FakeStevedoreObj()"},{"line_number":28,"context_line":"        manager.ext_plugins \u003d [fake_obj]"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_d41a0817","line":25,"updated":"2015-09-03 14:26:51.000000000","message":"The unit tests use a different discover path, so is TempestPluginManager still getting inited when we are running unit tests? I guess something like tempest.config is also initing it, although I would have assumed we properly mocked that or something.","commit_id":"173fc0646163acd534f8c8ec11794509904489fc"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"f53ead8e43c05fe1507199309ff6892bc71efeb2","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def test_load_tests_with_one_plugin(self):"},{"line_number":23,"context_line":"        # we can\u0027t mock stevedore since it\u0027s a singleton and already executed"},{"line_number":24,"context_line":"        # during test discovery. So basically this test covers the plugin loop"},{"line_number":25,"context_line":"        # and the abstract plugin interface."},{"line_number":26,"context_line":"        manager \u003d plugins.TempestTestPluginManager()"},{"line_number":27,"context_line":"        fake_obj \u003d fake_plugin.FakeStevedoreObj()"},{"line_number":28,"context_line":"        manager.ext_plugins \u003d [fake_obj]"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_140a5c79","line":25,"in_reply_to":"da20952f_d41a0817","updated":"2015-09-07 06:15:47.000000000","message":"Yeah the PluginManager is already instantiated somewhere. I can have a look why this is the case and try to get rid of it.","commit_id":"173fc0646163acd534f8c8ec11794509904489fc"}]}
