mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
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.
100 lines
4.5 KiB
Python
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()
|
|
|