Files
galaxy/test/unit/web/base/test_PluginManager.py
T
John Chilton 962a53e544 Allow run_unit_tests.sh to execute all unit tests in test/unit.
Basically adds __init__.py files to each subdirectory so nose detects these as Python module directories. Also modify dynamic loading of modules in Carl's test cases so the test case can be run with any cwd - including the Galaxy root directory as run_unit_tests.sh will use.

This should roughly double the number of unit tests buildbot runs.
2013-12-04 11:46:32 -06:00

100 lines
4.5 KiB
Python

"""
Unit tests for ``galaxy.web.base.pluginframework.PluginManager``
"""
import os
import imp
import unittest
utility = imp.load_source( 'utility', os.path.join( os.path.dirname( __file__ ), '../../util/utility.py' ) )
log = utility.set_up_filelogger( __name__ + '.log' )
utility.add_galaxy_lib_to_path( 'test/unit/web/base' )
from galaxy.web.base.pluginframework import PluginManager
import mock
class PluginManager_TestCase( unittest.TestCase ):
def test_rel_path_search( self ):
"""should be able to search given rel. path"""
mock_app_dir = mock.MockDir({
'plugins' : {
'plugin1' : {},
'plugin2' : {},
'file1' : 'blerbler'
}
})
mock_app = mock.MockApp( mock_app_dir.root_path )
plugin_mgr = PluginManager( mock_app, directories_setting='plugins' )
app_path = mock_app_dir.root_path
expected_plugins_path = os.path.join( app_path, 'plugins' )
self.assertItemsEqual( plugin_mgr.directories, [ expected_plugins_path ] )
self.assertItemsEqual( plugin_mgr.plugins.keys(), [ 'plugin1', 'plugin2' ] )
self.assertEqual( plugin_mgr.plugins[ 'plugin1' ].name, 'plugin1' )
self.assertEqual( plugin_mgr.plugins[ 'plugin1' ].path, os.path.join( expected_plugins_path, 'plugin1' ) )
self.assertEqual( plugin_mgr.plugins[ 'plugin2' ].name, 'plugin2' )
self.assertEqual( plugin_mgr.plugins[ 'plugin2' ].path, os.path.join( expected_plugins_path, 'plugin2' ) )
mock_app_dir.remove()
def test_abs_path_search( self ):
"""should be able to search given abs. path"""
mock_app_dir = mock.MockDir({})
mock_plugin_dir = mock.MockDir({
'plugin1' : {},
'plugin2' : {},
'file1' : 'blerbler'
})
mock_app = mock.MockApp( mock_app_dir.root_path )
plugin_mgr = PluginManager( mock_app, directories_setting=mock_plugin_dir.root_path )
app_path = mock_app_dir.root_path
expected_plugins_path = mock_plugin_dir.root_path
self.assertItemsEqual( plugin_mgr.directories, [ expected_plugins_path ] )
self.assertItemsEqual( plugin_mgr.plugins.keys(), [ 'plugin1', 'plugin2' ] )
self.assertEqual( plugin_mgr.plugins[ 'plugin1' ].name, 'plugin1' )
self.assertEqual( plugin_mgr.plugins[ 'plugin1' ].path, os.path.join( expected_plugins_path, 'plugin1' ) )
self.assertEqual( plugin_mgr.plugins[ 'plugin2' ].name, 'plugin2' )
self.assertEqual( plugin_mgr.plugins[ 'plugin2' ].path, os.path.join( expected_plugins_path, 'plugin2' ) )
def test_multiple_dirs( self ):
"""should search in multiple directories"""
mock_app_dir = mock.MockDir({
'plugins' : {
'plugin1' : {},
'plugin2' : {},
'file1' : 'blerbler'
}
})
mock_abs_plugin_dir = mock.MockDir({
'plugin3' : {},
'plugin4' : {},
'file2' : 'blerbler'
})
mock_app = mock.MockApp( mock_app_dir.root_path )
directories_setting=','.join([ 'plugins', mock_abs_plugin_dir.root_path ])
plugin_mgr = PluginManager( mock_app, directories_setting=directories_setting )
app_path = mock_app_dir.root_path
expected_plugins_rel_path = os.path.join( app_path, 'plugins' )
expected_plugins_abs_path = mock_abs_plugin_dir.root_path
self.assertItemsEqual( plugin_mgr.directories, [ expected_plugins_rel_path, expected_plugins_abs_path ] )
self.assertItemsEqual( plugin_mgr.plugins.keys(), [ 'plugin1', 'plugin2', 'plugin3', 'plugin4' ] )
self.assertEqual( plugin_mgr.plugins[ 'plugin1' ].name, 'plugin1' )
self.assertEqual( plugin_mgr.plugins[ 'plugin1' ].path, os.path.join( expected_plugins_rel_path, 'plugin1' ) )
self.assertEqual( plugin_mgr.plugins[ 'plugin2' ].name, 'plugin2' )
self.assertEqual( plugin_mgr.plugins[ 'plugin2' ].path, os.path.join( expected_plugins_rel_path, 'plugin2' ) )
self.assertEqual( plugin_mgr.plugins[ 'plugin3' ].name, 'plugin3' )
self.assertEqual( plugin_mgr.plugins[ 'plugin3' ].path, os.path.join( expected_plugins_abs_path, 'plugin3' ) )
self.assertEqual( plugin_mgr.plugins[ 'plugin4' ].name, 'plugin4' )
self.assertEqual( plugin_mgr.plugins[ 'plugin4' ].path, os.path.join( expected_plugins_abs_path, 'plugin4' ) )
if __name__ == '__main__':
unittest.main()