예제 #1
0
    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'
            )