From 7f1e1e9918d77958ab7fa5e142883869dbf8dd79 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Thu, 18 Jun 2009 22:17:41 +0000 Subject: Add path module tests. --- repoze/bfg/path.py | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'repoze/bfg/path.py') diff --git a/repoze/bfg/path.py b/repoze/bfg/path.py index c3d914208..6fee43791 100644 --- a/repoze/bfg/path.py +++ b/repoze/bfg/path.py @@ -1,19 +1,24 @@ import os import sys -def caller_path(path, level=2): +def caller_path(path, level=2, package_globals=None): # package_globals==testing if not os.path.isabs(path): - package_globals = sys._getframe(level).f_globals - if '__bfg_abspath__' not in package_globals: - # this is actually kinda expensive so we memoize the result - package_name = package_globals['__name__'] - package = sys.modules[package_name] - prefix = package_path(package) - try: - package_globals['__bfg_abspath__'] = prefix - except: - pass - prefix = package_globals['__bfg_abspath__'] + + if package_globals is None: + package_globals = sys._getframe(level).f_globals + + if '__bfg_abspath__' in package_globals: + return os.path.join(package_globals['__bfg_abspath__'], path) + + # computing the abspath is actually kinda expensive so we + # memoize the result + package_name = package_globals['__name__'] + package = sys.modules[package_name] + prefix = package_path(package) + try: + package_globals['__bfg_abspath__'] = prefix + except: + pass path = os.path.join(prefix, path) return path -- cgit v1.2.3