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.
129 lines
5.3 KiB
Python
129 lines
5.3 KiB
Python
"""
|
|
"""
|
|
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 PageServingPluginManager
|
|
|
|
import mock
|
|
|
|
# ----------------------------------------------------------------------------- globals
|
|
contents1 = """${what} ${you} ${say}"""
|
|
|
|
# -----------------------------------------------------------------------------
|
|
class PageServingPluginManager_TestCase( unittest.TestCase ):
|
|
|
|
def test_plugin_load( self ):
|
|
"""should attempt load if criteria met"""
|
|
mock_app_dir = mock.MockDir({
|
|
'plugins' : {
|
|
'plugin1' : {
|
|
'templates' : {},
|
|
'static' : {}
|
|
},
|
|
'plugin2' : {
|
|
'static' : {}
|
|
},
|
|
'plugin3' : {
|
|
'templates' : {}
|
|
},
|
|
'not_a_plugin1' : 'blerbler',
|
|
'not_a_plugin2' : {},
|
|
}
|
|
})
|
|
mock_app = mock.MockApp( mock_app_dir.root_path )
|
|
plugin_mgr = PageServingPluginManager( mock_app, 'test', directories_setting='plugins' )
|
|
|
|
app_path = mock_app_dir.root_path
|
|
expected_plugins_path = os.path.join( app_path, 'plugins' )
|
|
|
|
self.assertEqual( plugin_mgr.base_url, 'test' )
|
|
self.assertItemsEqual( plugin_mgr.directories, [ expected_plugins_path ] )
|
|
self.assertItemsEqual( plugin_mgr.plugins.keys(), [ 'plugin1', 'plugin2', 'plugin3' ] )
|
|
|
|
plugin1 = plugin_mgr.plugins[ 'plugin1' ]
|
|
self.assertEqual( plugin1.name, 'plugin1' )
|
|
self.assertEqual( plugin1.path, os.path.join( expected_plugins_path, 'plugin1' ) )
|
|
self.assertEqual( plugin1.base_url, '/'.join([ plugin_mgr.base_url, plugin1.name ]) )
|
|
self.assertTrue( plugin1.serves_static )
|
|
self.assertEqual( plugin1.static_path, os.path.join( plugin1.path, 'static' ) )
|
|
self.assertEqual( plugin1.static_url, '/'.join([ plugin1.base_url, 'static' ]) )
|
|
self.assertTrue( plugin1.serves_templates )
|
|
self.assertEqual( plugin1.template_path, os.path.join( plugin1.path, 'templates' ) )
|
|
self.assertEqual( plugin1.template_lookup.__class__.__name__, 'TemplateLookup' )
|
|
|
|
plugin2 = plugin_mgr.plugins[ 'plugin2' ]
|
|
self.assertEqual( plugin2.name, 'plugin2' )
|
|
self.assertEqual( plugin2.path, os.path.join( expected_plugins_path, 'plugin2' ) )
|
|
self.assertEqual( plugin2.base_url, '/'.join([ plugin_mgr.base_url, plugin2.name ]) )
|
|
self.assertTrue( plugin2.serves_static )
|
|
self.assertEqual( plugin2.static_path, os.path.join( plugin2.path, 'static' ) )
|
|
self.assertEqual( plugin2.static_url, '/'.join([ plugin2.base_url, 'static' ]) )
|
|
self.assertFalse( plugin2.serves_templates )
|
|
|
|
plugin3 = plugin_mgr.plugins[ 'plugin3' ]
|
|
self.assertEqual( plugin3.name, 'plugin3' )
|
|
self.assertEqual( plugin3.path, os.path.join( expected_plugins_path, 'plugin3' ) )
|
|
self.assertEqual( plugin3.base_url, '/'.join([ plugin_mgr.base_url, plugin3.name ]) )
|
|
self.assertFalse( plugin3.serves_static )
|
|
self.assertTrue( plugin3.serves_templates )
|
|
self.assertEqual( plugin1.template_path, os.path.join( plugin1.path, 'templates' ) )
|
|
self.assertEqual( plugin1.template_lookup.__class__.__name__, 'TemplateLookup' )
|
|
|
|
mock_app_dir.remove()
|
|
|
|
def test_plugin_static_map( self ):
|
|
""""""
|
|
mock_app_dir = mock.MockDir({
|
|
'plugins' : {
|
|
'plugin1' : {
|
|
'templates' : {},
|
|
'static' : {}
|
|
}
|
|
}
|
|
})
|
|
mock_app = mock.MockApp( mock_app_dir.root_path )
|
|
plugin_mgr = PageServingPluginManager( mock_app, 'test', directories_setting='plugins' )
|
|
|
|
app_path = mock_app_dir.root_path
|
|
expected_plugins_path = os.path.join( app_path, 'plugins' )
|
|
self.assertItemsEqual( plugin_mgr.plugins.keys(), [ 'plugin1' ] )
|
|
plugin = plugin_mgr.plugins[ 'plugin1' ]
|
|
self.assertEqual( plugin_mgr.get_static_urls_and_paths(), [( plugin.static_url, plugin.static_path )] )
|
|
|
|
mock_app_dir.remove()
|
|
|
|
def test_plugin_templates( self ):
|
|
""""""
|
|
mock_app_dir = mock.MockDir({
|
|
'plugins' : {
|
|
'plugin1' : {
|
|
'templates' : {
|
|
'test.mako' : contents1
|
|
},
|
|
}
|
|
}
|
|
})
|
|
mock_app = mock.MockApp( mock_app_dir.root_path )
|
|
plugin_mgr = PageServingPluginManager( mock_app, 'test', directories_setting='plugins' )
|
|
|
|
app_path = mock_app_dir.root_path
|
|
expected_plugins_path = os.path.join( app_path, 'plugins' )
|
|
self.assertItemsEqual( plugin_mgr.plugins.keys(), [ 'plugin1' ] )
|
|
|
|
plugin = plugin_mgr.plugins[ 'plugin1' ]
|
|
rendered = plugin_mgr.fill_template( mock.MockTrans(), plugin, 'test.mako',
|
|
what='Hey', you='Ho', say='HeyHey HoHo' )
|
|
self.assertEqual( rendered, 'Hey Ho HeyHey HoHo' )
|
|
|
|
mock_app_dir.remove()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|