diff --git a/test/base/test_data.py b/test/base/test_data.py index 44640cd3866..255ff47cd51 100644 --- a/test/base/test_data.py +++ b/test/base/test_data.py @@ -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)