Don't construct a DatatypesRegistry just for tests in galaxy.model.

Construct the model in the tests, this should cause galaxy.model to import much faster.
This commit is contained in:
John Chilton
2016-01-21 14:31:41 +00:00
parent ba0d06f6ba
commit 3217bc7832
3 changed files with 19 additions and 9 deletions
+12 -8
View File
@@ -50,9 +50,7 @@ from galaxy.web.form_builder import (AddressField, CheckboxField, HistoryField,
log = logging.getLogger( __name__ )
_datatypes_registry = galaxy.datatypes.registry.Registry()
# Default Value Required for unit tests
_datatypes_registry.load_datatypes()
_datatypes_registry = None
# When constructing filters with in for a fixed set of ids, maximum
# number of items to place in the IN statement. Different databases
@@ -80,6 +78,12 @@ class ConverterDependencyException(Exception):
return repr(self.value)
def _get_datatypes_registry():
if _datatypes_registry is None:
raise Exception("galaxy.model.set_datatypes_registry must be called before performing certain DatasetInstance operations.")
return _datatypes_registry
def set_datatypes_registry( d_registry ):
"""
Set up datatypes_registry
@@ -1858,7 +1862,7 @@ class DatasetInstance( object ):
@property
def datatype( self ):
return _datatypes_registry.get_datatype_by_extension( self.extension )
return _get_datatypes_registry().get_datatype_by_extension( self.extension )
def get_metadata( self ):
# using weakref to store parent (to prevent circ ref),
@@ -1892,7 +1896,7 @@ class DatasetInstance( object ):
def change_datatype( self, new_ext ):
self.clear_associated_files()
_datatypes_registry.change_datatype( self, new_ext )
_get_datatypes_registry().change_datatype( self, new_ext )
def get_size( self, nice_size=False ):
"""Returns the size of the data on disk"""
@@ -1929,7 +1933,7 @@ class DatasetInstance( object ):
def get_mime( self ):
"""Returns the mime type of the data"""
try:
return _datatypes_registry.get_mimetype_by_extension( self.extension.lower() )
return _get_datatypes_registry().get_mimetype_by_extension( self.extension.lower() )
except AttributeError:
# extension is None
return 'data'
@@ -2054,14 +2058,14 @@ class DatasetInstance( object ):
return None
def get_converter_types(self):
return self.datatype.get_converter_types( self, _datatypes_registry )
return self.datatype.get_converter_types( self, _get_datatypes_registry() )
def can_convert_to(self, format):
return format in self.get_converter_types()
def find_conversion_destination( self, accepted_formats, **kwd ):
"""Returns ( target_ext, existing converted dataset )"""
return self.datatype.find_conversion_destination( self, accepted_formats, _datatypes_registry, **kwd )
return self.datatype.find_conversion_destination( self, accepted_formats, _get_datatypes_registry(), **kwd )
def add_validation_error( self, validation_error ):
self.validation_errors.append( validation_error )
+2 -1
View File
@@ -5,6 +5,7 @@ test_select_parameters.py.
from galaxy.util import bunch
from galaxy import model
from .test_parameter_parsing import BaseParameterTestCase
from tools_support import datatypes_registry
class DataColumnParameterTestCase( BaseParameterTestCase ):
@@ -99,6 +100,6 @@ class DataColumnParameterTestCase( BaseParameterTestCase ):
template_xml = '''<param name="my_name" type="%s" %s %s %s %s></param>'''
param_str = template_xml % ( self.type, data_ref_text, multi_text, optional_text, self.other_attributes )
self._param = self._parameter_for( xml=param_str )
self._param.ref_input = bunch.Bunch(formats=[model.datatypes_registry.get_datatype_by_extension("tabular")])
self._param.ref_input = bunch.Bunch(formats=[datatypes_registry.get_datatype_by_extension("tabular")])
return self._param
+5
View File
@@ -18,6 +18,11 @@ from galaxy.util.dbkeys import GenomeBuilds
from galaxy.jobs import NoopQueue
from galaxy.tools.parser import get_tool_source
from galaxy.tools.deps.containers import NullContainerFinder
import galaxy.datatypes.registry
datatypes_registry = galaxy.datatypes.registry.Registry()
datatypes_registry.load_datatypes()
galaxy.model.set_datatypes_registry(datatypes_registry)
class UsesApp( object ):