def test_get_plugin_file(self): with mock.patch('compose.plugin_manager.request.urlretrieve') as mock_urlretrieve, \ mock.patch('compose.plugin_manager.os.path.isfile') as mock_isfile, \ mock.patch('compose.plugin_manager.os.path.realpath') as mock_realpath, \ mock.patch('os.mkdir') as mock_mkdir: plugin_manager = PluginManager('plugin_dir') self.assertEquals( plugin_manager._get_plugin_file('plugin_name'), 'plugin_dir/.downloads/plugin_name' ) mock_urlretrieve.side_effect = ValueError() mock_isfile.return_value = False mock_mkdir.return_value = True with self.assertRaises(InvalidPluginError) as e: plugin_manager._get_plugin_file('no_plugin') self.assertEqual(str(e.exception), "Invalid plugin url or file given.") mock_isfile.return_value = True mock_realpath.return_value = '/real/path/to/plugin/plugin_name' self.assertEquals( plugin_manager._get_plugin_file('plugin_name'), '/real/path/to/plugin/plugin_name' )