mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Refactor toward supporting multiple test data resolver types.
This commit is contained in:
+29
-15
@@ -9,24 +9,38 @@ class TestDataResolver(object):
|
||||
def __init__(self, env_var, environ=os.environ):
|
||||
file_dirs = environ.get(env_var, None)
|
||||
if file_dirs:
|
||||
self.file_dirs = LIST_SEP.split(file_dirs)
|
||||
self.resolvers = map(FileDataResolver, LIST_SEP.split(file_dirs))
|
||||
else:
|
||||
self.file_dirs = []
|
||||
self.resolvers = []
|
||||
|
||||
def get_filename(self, name):
|
||||
if not self.file_dirs:
|
||||
if not self.resolvers:
|
||||
filename = None
|
||||
else:
|
||||
filename = os.path.join(self.file_dirs[0], name)
|
||||
# For backward compat. returning first path if none
|
||||
# exist - though I don't know if this function is ever
|
||||
# actually used in a context where one should return
|
||||
# a file even if it doesn't exist (e.g. a prefix or
|
||||
# or something) - I am pretty sure it is not used in
|
||||
# such a fashion in the context of tool tests.
|
||||
if not os.path.exists(filename):
|
||||
for file_dir in self.file_dirs[1:]:
|
||||
query_filename = os.path.join(file_dir, name)
|
||||
if os.path.exists(query_filename):
|
||||
filename = query_filename
|
||||
resolver = self.resolvers[0]
|
||||
filename = resolver.path(name)
|
||||
if not resolver.exists(filename):
|
||||
for resolver in self.resolvers[1:]:
|
||||
if resolver.exists(name):
|
||||
filename = resolver.path(name)
|
||||
else:
|
||||
# For backward compat. returning first path if none
|
||||
# exist - though I don't know if this function is ever
|
||||
# actually used in a context where one should return
|
||||
# a file even if it doesn't exist (e.g. a prefix or
|
||||
# or something) - I am pretty sure it is not used in
|
||||
# such a fashion in the context of tool tests.
|
||||
filename = resolver.path(name)
|
||||
return os.path.abspath(filename)
|
||||
|
||||
|
||||
class FileDataResolver(object):
|
||||
|
||||
def __init__(self, file_dir):
|
||||
self.file_dir = file_dir
|
||||
|
||||
def exists(self, filename):
|
||||
return os.path.exists(self.path(filename))
|
||||
|
||||
def path(self, filename):
|
||||
return os.path.join(self.file_dir, filename)
|
||||
|
||||
Reference in New Issue
Block a user